]> git.proxmox.com Git - mirror_edk2.git/blobdiff - CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c
Add new interfaces to support PKCS7#7 signed data and authenticode signature. Update...
[mirror_edk2.git] / CryptoPkg / Library / BaseCryptLib / SysCall / CrtWrapper.c
index 79957cc89f780ce45a5fb11b4e15750e1f9b1989..fb446b677044c35764c9e86bf1c7e8782ced1901 100644 (file)
@@ -18,7 +18,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 int errno = 0;\r
 \r
 FILE  *stderr = NULL;\r
 int errno = 0;\r
 \r
 FILE  *stderr = NULL;\r
-FILE  *stdin = NULL;\r
+FILE  *stdin  = NULL;\r
 FILE  *stdout = NULL;\r
 \r
 typedef\r
 FILE  *stdout = NULL;\r
 \r
 typedef\r
@@ -244,7 +244,10 @@ void qsort (void *base, size_t num, size_t width, int (*compare)(const void *, c
   ASSERT (base    != NULL);\r
   ASSERT (compare != NULL);\r
 \r
   ASSERT (base    != NULL);\r
   ASSERT (compare != NULL);\r
 \r
-  Buffer = AllocatePool (width);\r
+  //\r
+  // Use CRT-style malloc to cover BS and RT memory allocation.\r
+  //\r
+  Buffer = malloc (width);\r
   ASSERT (Buffer != NULL);\r
 \r
   //\r
   ASSERT (Buffer != NULL);\r
 \r
   //\r
@@ -252,7 +255,7 @@ void qsort (void *base, size_t num, size_t width, int (*compare)(const void *, c
   //\r
   QuickSortWorker (base, (UINTN)num, (UINTN)width, (SORT_COMPARE)compare, Buffer);\r
 \r
   //\r
   QuickSortWorker (base, (UINTN)num, (UINTN)width, (SORT_COMPARE)compare, Buffer);\r
 \r
-  FreePool (Buffer);\r
+  free (Buffer);\r
   return;\r
 }\r
 \r
   return;\r
 }\r
 \r
@@ -330,11 +333,42 @@ void closelog (void)
 \r
 }\r
 \r
 \r
 }\r
 \r
+#ifdef __GNUC__\r
+\r
+typedef\r
+VOID\r
+(EFIAPI *NoReturnFuncPtr)(\r
+  VOID\r
+  ) __attribute__((__noreturn__));\r
+\r
+\r
+STATIC\r
+VOID\r
+EFIAPI\r
+NopFunction (\r
+  VOID\r
+  )\r
+{\r
+}\r
+\r
+\r
 void exit (int e)\r
 {\r
 void exit (int e)\r
 {\r
+  NoReturnFuncPtr NoReturnFunc;\r
+\r
+  NoReturnFunc = (NoReturnFuncPtr) NopFunction;\r
+\r
+  NoReturnFunc ();\r
+}\r
+\r
+#else\r
 \r
 \r
+void exit (int e)\r
+{\r
 }\r
 \r
 }\r
 \r
+#endif\r
+\r
 int fclose (FILE *f)\r
 {\r
   return 0;\r
 int fclose (FILE *f)\r
 {\r
   return 0;\r