Patch from open source community for CryptoPkg to allow it to build for ARM using...
authorqlong <qlong@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 19 Apr 2011 16:25:31 +0000 (16:25 +0000)
committerqlong <qlong@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 19 Apr 2011 16:25:31 +0000 (16:25 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11565 6f19259b-4bc3-4df7-8a09-765794883524

CryptoPkg/CryptoPkg.dsc
CryptoPkg/Include/OpenSslSupport.h
CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c
CryptoPkg/Library/OpensslLib/OpensslLib.inf

index 8df9e30..f88b4f8 100644 (file)
@@ -23,7 +23,7 @@
   PLATFORM_VERSION               = 0.91\r
   DSC_SPECIFICATION              = 0x00010005\r
   OUTPUT_DIRECTORY               = Build/CryptoPkg\r
-  SUPPORTED_ARCHITECTURES        = IA32|X64|IPF|EBC\r
+  SUPPORTED_ARCHITECTURES        = IA32|X64|IPF|EBC|ARM\r
   BUILD_TARGETS                  = DEBUG|RELEASE\r
   SKUID_IDENTIFIER               = DEFAULT\r
 \r
   IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf\r
   OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf\r
 \r
+[LibraryClasses.ARM]\r
+  #\r
+  # It is not possible to prevent the ARM compiler for generic intrinsic functions.\r
+  # This library provides the instrinsic functions generate by a given compiler.\r
+  # [LibraryClasses.ARM] and NULL mean link this library into all ARM images.\r
+  #\r
+  NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf\r
+\r
 [LibraryClasses.common.PEIM]\r
   BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf\r
 \r
index 5715115..258854b 100644 (file)
@@ -30,10 +30,18 @@ typedef VOID  *FILE;
 //\r
 // Map all va_xxxx elements to VA_xxx defined in MdePkg/Include/Base.h\r
 //\r
+#if !defined(__CC_ARM) // if va_list is not already defined\r
 #define va_list   VA_LIST\r
 #define va_arg    VA_ARG\r
 #define va_start  VA_START\r
 #define va_end    VA_END\r
+#else // __CC_ARM\r
+#define va_start(Marker, Parameter)   __va_start(Marker, Parameter)\r
+#define va_arg(Marker, TYPE)          __va_arg(Marker, TYPE)\r
+#define va_end(Marker)                ((void)0)\r
+#endif\r
+\r
+\r
 \r
 //\r
 // #defines from EFI Application Toolkit required to buiild Open SSL\r
@@ -211,9 +219,9 @@ __sighandler_t *signal     (int, __sighandler_t *);
 //\r
 // Global variables from EFI Application Toolkit required to buiild Open SSL\r
 //\r
-FILE  *stderr;\r
-FILE  *stdin;\r
-FILE  *stdout;\r
+static FILE  *stderr;\r
+static FILE  *stdin;\r
+static FILE  *stdout;\r
 \r
 //\r
 // Macros that directly map functions to BaseLib, BaseMemoryLib, and DebugLib functions\r
index b9daaee..46574dc 100644 (file)
@@ -15,6 +15,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #include <OpenSslSupport.h>\r
 \r
+int errno = 0;\r
+\r
 typedef\r
 INTN\r
 (*SORT_COMPARE)(\r
@@ -298,3 +300,113 @@ void *UI_OpenSSL(void)
 {\r
   return NULL;\r
 }\r
+\r
+int X509_load_cert_file (VOID *ctx, const char *file, int type)\r
+{\r
+  return 0;\r
+}\r
+\r
+int X509_load_crl_file (VOID *ctx, const char *file, int type)\r
+{\r
+  return 0;\r
+}\r
+\r
+int chmod (const char *c, mode_t m)\r
+{\r
+  return -1;\r
+}\r
+\r
+int close (int f)\r
+{\r
+  return -1;\r
+}\r
+\r
+void closelog (void)\r
+{\r
+\r
+}\r
+\r
+void exit (int e)\r
+{\r
+\r
+}\r
+\r
+int fclose (FILE *f)\r
+{\r
+  return 0;\r
+}\r
+\r
+FILE *fopen (const char *c, const char *m)\r
+{\r
+  return NULL;\r
+}\r
+\r
+size_t fread (void *b, size_t c, size_t i, FILE *f)\r
+{\r
+  return 0;\r
+}\r
+\r
+int fprintf (FILE *f, const char *s, ...)\r
+{\r
+  return 0;\r
+}\r
+\r
+uid_t getuid (void)\r
+{\r
+  return 0;\r
+}\r
+\r
+uid_t geteuid (void)\r
+{\r
+  return 0;\r
+}\r
+\r
+gid_t getgid (void)\r
+{\r
+  return 0;\r
+}\r
+\r
+gid_t getegid (void)\r
+{\r
+  return 0;\r
+}\r
+\r
+off_t lseek (int a, off_t o, int d)\r
+{\r
+  return 0;\r
+}\r
+\r
+void openlog (const char *c, int a, int b)\r
+{\r
+\r
+}\r
+\r
+ssize_t read (int f, void *b, size_t c)\r
+{\r
+  return 0;\r
+}\r
+\r
+int stat (const char *c, struct stat *s)\r
+{\r
+  return -1;\r
+}\r
+\r
+int strcasecmp (const char *c, const char *s)\r
+{\r
+  return 0;\r
+}\r
+\r
+int strncasecmp (const char *c, const char *s, size_t l)\r
+{\r
+  return 0;\r
+}\r
+\r
+void syslog (int a, const char *c, ...)\r
+{\r
+\r
+}\r
+\r
+ssize_t write (int f, const void *b, size_t l)\r
+{\r
+  return 0;\r
+}\r
index 27547f3..7968275 100644 (file)
@@ -51,7 +51,7 @@
 #\r
   \r
 #\r
-#  VALID_ARCHITECTURES           = IA32 X64 IPF\r
+#  VALID_ARCHITECTURES           = IA32 X64 IPF ARM\r
 #\r
 \r
 [Sources]\r
    MSFT:RELEASE_*_IPF_CC_FLAGS            == /nologo /c /WX /GS- /X /EHs-c- /GR- /Gy /Os /GL /FIAutoGen.h /QIPF_fr32 -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) $(OPENSSL_EXFLAGS) /w\r
   INTEL:*_*_*_CC_FLAGS                    = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) $(OPENSSL_EXFLAGS) /w\r
     GCC:*_*_*_CC_FLAGS                    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) $(OPENSSL_EXFLAGS) -w\r
+   RVCT:DEBUG_*_*_CC_FLAGS                = $(OPENSSL_FLAGS) $(OPENSSL_EXFLAGS) --library_interface=aeabi_clib99 --fpu=vfpv3\r
+   RVCT:RELEASE_*_*_CC_FLAGS              = $(OPENSSL_FLAGS) $(OPENSSL_EXFLAGS) --library_interface=aeabi_clib99 --fpu=vfpv3\r
+\r
+   \r