OpenSsl and secureboot compilation. Don't know if it works.

This commit is contained in:
jief666 2024-01-10 14:08:21 +01:00
parent 1863704f68
commit bac4bac33a
36 changed files with 776 additions and 554 deletions

View File

@ -2015,7 +2015,7 @@ DEFINE GCC_X64_RC_FLAGS = -I binary -O elf64-x86-64 -B i386 --re
DEFINE GCC_ARM_RC_FLAGS = -I binary -O elf32-littlearm -B arm --rename-section .data=.hii DEFINE GCC_ARM_RC_FLAGS = -I binary -O elf32-littlearm -B arm --rename-section .data=.hii
DEFINE GCC_AARCH64_RC_FLAGS = -I binary -O elf64-littleaarch64 -B aarch64 --rename-section .data=.hii DEFINE GCC_AARCH64_RC_FLAGS = -I binary -O elf64-littleaarch64 -B aarch64 --rename-section .data=.hii
DEFINE GCC48_ALL_CC_FLAGS = -fshort-wchar -fno-builtin -Wall -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -nostdinc -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -DNO_MSABI_VA_FUNCS -fno-strict-aliasing DEFINE GCC48_ALL_CC_FLAGS = -fshort-wchar -fno-builtin -Wall -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -DNO_MSABI_VA_FUNCS -fno-strict-aliasing
DEFINE GCC48_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x20 DEFINE GCC48_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x20
DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables -Wno-address DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables -Wno-address
DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64 -fno-stack-protector -mabi=ms "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -mcmodel=small -fpie -fno-asynchronous-unwind-tables DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64 -fno-stack-protector -mabi=ms "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -mcmodel=small -fpie -fno-asynchronous-unwind-tables
@ -2673,7 +2673,7 @@ RELEASE_XCODE5_X64_ASM_FLAGS = -arch x86_64
# $(PLATFORM_FLAGS) # $(PLATFORM_FLAGS)
RELEASE_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -Wno-unused-parameter -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -DNO_MSABI_VA_FUNCS RELEASE_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -Wno-unused-parameter -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -DNO_MSABI_VA_FUNCS
RELEASE_XCODE5_X64_CXX_FLAGS = -target x86_64-pc-win32-macho -nostdinc -c -Os -Wall -Werror -Wextra -include AutoGen.h -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -Wno-unused-parameter -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -DNO_MSABI_VA_FUNCS -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings RELEASE_XCODE5_X64_CXX_FLAGS = -target x86_64-pc-win32-macho -c -Os -Wall -Werror -Wextra -include AutoGen.h -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -Wno-unused-parameter -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -DNO_MSABI_VA_FUNCS -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
# -mno-implicit-float # -mno-implicit-float
# -Wno-varargs # -Wno-varargs
# -Wno-unused-const-variable # -Wno-unused-const-variable
@ -2746,7 +2746,7 @@ RELEASEMACOS_XCODE8_X64_DLINK_FLAGS = -arch x86_64 -nostdlib -Wl,-u,_$(IMAG
# -Wno-varargs # -Wno-varargs
# -Wno-unused-const-variable # -Wno-unused-const-variable
DEFINE XCODE8_COMMON_FLAGS = -nostdinc -c -Wall -Wextra -include AutoGen.h -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -mno-red-zone -fno-common -fdata-sections -ffreestanding -ffunction-sections -fno-asynchronous-unwind-tables -m64 -mcmodel=small -DNO_MSABI_VA_FUNCS -fno-strict-aliasing -Wno-unused-parameter DEFINE XCODE8_COMMON_FLAGS = -c -Wall -Wextra -include AutoGen.h -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -mno-red-zone -fno-common -fdata-sections -ffreestanding -ffunction-sections -fno-asynchronous-unwind-tables -m64 -mcmodel=small -DNO_MSABI_VA_FUNCS -fno-strict-aliasing -Wno-unused-parameter
@ -2823,7 +2823,7 @@ RELEASEMACOS_XCODE14_X64_DLINK_FLAGS = -arch x86_64 -nostdlib -Wl,-u,_$(IMA
# -Wno-varargs # -Wno-varargs
# -Wno-unused-const-variable # -Wno-unused-const-variable
DEFINE XCODE14_COMMON_FLAGS = -nostdinc -c -Wall -Wextra -include AutoGen.h -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -mno-red-zone -fno-common -fdata-sections -ffreestanding -ffunction-sections -fno-asynchronous-unwind-tables -m64 -mcmodel=small -DNO_MSABI_VA_FUNCS -fno-strict-aliasing -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-deprecated-non-prototype DEFINE XCODE14_COMMON_FLAGS = -c -Wall -Wextra -include AutoGen.h -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -mno-red-zone -fno-common -fdata-sections -ffreestanding -ffunction-sections -fno-asynchronous-unwind-tables -m64 -mcmodel=small -DNO_MSABI_VA_FUNCS -fno-strict-aliasing -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-deprecated-non-prototype
@ -2900,7 +2900,7 @@ RELEASEMACOS_XCODE15_X64_DLINK_FLAGS = -arch x86_64 -nostdlib -Wl,-u,_$(IMA
# -Wno-varargs # -Wno-varargs
# -Wno-unused-const-variable # -Wno-unused-const-variable
DEFINE XCODE15_COMMON_FLAGS = -nostdinc -c -Wall -Wextra -include AutoGen.h -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -mno-red-zone -fno-common -fdata-sections -ffreestanding -ffunction-sections -fno-asynchronous-unwind-tables -m64 -mcmodel=small -DNO_MSABI_VA_FUNCS -fno-strict-aliasing -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-deprecated-non-prototype -Wno-unused-command-line-argument DEFINE XCODE15_COMMON_FLAGS = -c -Wall -Wextra -include AutoGen.h -fno-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mms-bitfields -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -mno-red-zone -fno-common -fdata-sections -ffreestanding -ffunction-sections -fno-asynchronous-unwind-tables -m64 -mcmodel=small -DNO_MSABI_VA_FUNCS -fno-strict-aliasing -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-deprecated-non-prototype -Wno-unused-command-line-argument

View File

@ -23,7 +23,7 @@ gPlatformOtherPcds = {}
gActivePlatform = None gActivePlatform = None
gCommandLineDefines = {} gCommandLineDefines = {}
gEdkGlobal = {} gEdkGlobal = {}
gCommandMaxLength = 4096 gCommandMaxLength = 13684
# for debug trace purpose when problem occurs # for debug trace purpose when problem occurs
gProcessingFile = '' gProcessingFile = ''
gBuildingModule = '' gBuildingModule = ''

View File

@ -28,10 +28,6 @@
FLASH_DEFINITION = Clover.fdf FLASH_DEFINITION = Clover.fdf
!endif !endif
!ifndef OPENSSL_VERSION
DEFINE OPENSSL_VERSION = 1.0.1e
!endif
!include MdePkg/MdeLibs.dsc.inc !include MdePkg/MdeLibs.dsc.inc
################################################################################ ################################################################################
@ -92,7 +88,9 @@
SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
UefiCpuLib|CloverEFI/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf UefiCpuLib|CloverEFI/UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf
!ifdef ENABLE_SECURE_BOOT !ifdef ENABLE_SECURE_BOOT
OpensslLib|Library/OpensslLib/openssl-$(OPENSSL_VERSION)/OpensslLib.inf #RngLib|MdePkg/Library/BaseRngLib/BaseRngLib.inf
RngLib|OpenCorePkg/Library/OcRngLib/OcRngLib.inf
OpensslLib|Library/OpensslLib/OpensslLib.inf
IntrinsicLib|Library/IntrinsicLib/IntrinsicLib.inf IntrinsicLib|Library/IntrinsicLib/IntrinsicLib.inf
!else !else
OpensslLib|Library/OpensslLib/OpensslLibNull.inf OpensslLib|Library/OpensslLib/OpensslLibNull.inf

View File

@ -20,12 +20,12 @@
PACKAGE_NAME = CloverPkg PACKAGE_NAME = CloverPkg
PACKAGE_GUID = C10BE46B-35C3-4B0B-9B9C-3F02051D782F PACKAGE_GUID = C10BE46B-35C3-4B0B-9B9C-3F02051D782F
PACKAGE_VERSION = 0.4 PACKAGE_VERSION = 0.4
DEFINE OPENSSL_VERSION = 1.0.1e
[Includes] [Includes]
Include Include
rEFIt_UEFI/PlatformEFI/posix
#Library/OpensslLib/Include #Library/OpensslLib/Include
#Library/OpensslLib/openssl-$(OPENSSL_VERSION)/include #Library/OpensslLib/openssl/include
[LibraryClasses] [LibraryClasses]
## @libraryclass Provides MsgLog service ## @libraryclass Provides MsgLog service

View File

@ -5,7 +5,7 @@
#ifndef __MEMLOG_LIB_H__ #ifndef __MEMLOG_LIB_H__
#define __MEMLOG_LIB_H__ #define __MEMLOG_LIB_H__
#include <Uefi/UefiBaseType.h> // for EFI_STATUS
// //
// Mem log sizes // Mem log sizes
// //

View File

@ -27,7 +27,7 @@ extern "C" {
typedef UINT32 char32_t; typedef UINT32 char32_t;
typedef UINT16 char16_t; typedef UINT16 char16_t;
typedef UINT32 uint32_t; typedef UINT32 uint32_t;
#define PRIu32 d #define PRIu32 "u"
#endif #endif
#ifdef _MSC_VER #ifdef _MSC_VER

View File

@ -28,7 +28,7 @@ typedef struct {
/* Allocates memory blocks */ /* Allocates memory blocks */
void * void *
malloc ( CryptoPkg_BaseMemAllocation_malloc (
size_t size size_t size
) )
{ {
@ -61,7 +61,7 @@ malloc (
/* Reallocate memory blocks */ /* Reallocate memory blocks */
void * void *
realloc ( CryptoPkg_BaseMemAllocation_realloc (
void *ptr, void *ptr,
size_t size size_t size
) )
@ -104,7 +104,7 @@ realloc (
/* De-allocates or frees a memory block */ /* De-allocates or frees a memory block */
void void
free ( CryptoPkg_BaseMemAllocation_free (
void *ptr void *ptr
) )
{ {

View File

@ -111,69 +111,70 @@ QuickSortWorker (
// Standard C Run-time Library Interface Wrapper // Standard C Run-time Library Interface Wrapper
// --------------------------------------------------------- // ---------------------------------------------------------
// Jief : functions we already have are commented out
// //
// -- String Manipulation Routines -- // -- String Manipulation Routines --
// //
char * //char *
strchr ( //strchr (
const char *str, // const char *str,
int ch // int ch
) // )
{ //{
return ScanMem8 (str, AsciiStrSize (str), (UINT8)ch); // return ScanMem8 (str, AsciiStrSize (str), (UINT8)ch);
} //}
//
/* Scan a string for the last occurrence of a character */ ///* Scan a string for the last occurrence of a character */
char * //char *
strrchr ( //strrchr (
const char *str, // const char *str,
int c // int c
) // )
{ //{
char *save; // char *save;
//
for (save = NULL; ; ++str) { // for (save = NULL; ; ++str) {
if (*str == c) { // if (*str == c) {
save = (char *)str; // save = (char *)str;
} // }
//
if (*str == 0) { // if (*str == 0) {
return (save); // return (save);
} // }
} // }
} //}
//
/* Compare first n bytes of string s1 with string s2, ignoring case */ ///* Compare first n bytes of string s1 with string s2, ignoring case */
int //int
strncasecmp ( //strncasecmp (
const char *s1, // const char *s1,
const char *s2, // const char *s2,
size_t n // size_t n
) // )
{ //{
int Val; // int Val;
//
ASSERT (s1 != NULL); // ASSERT (s1 != NULL);
ASSERT (s2 != NULL); // ASSERT (s2 != NULL);
//
if (n != 0) { // if (n != 0) {
do { // do {
Val = tolower (*s1) - tolower (*s2); // Val = tolower (*s1) - tolower (*s2);
if (Val != 0) { // if (Val != 0) {
return Val; // return Val;
} // }
//
++s1; // ++s1;
++s2; // ++s2;
if (*s1 == '\0') { // if (*s1 == '\0') {
break; // break;
} // }
} while (--n != 0); // } while (--n != 0);
} // }
//
return 0; // return 0;
} //}
/* Read formatted data from a string */ /* Read formatted data from a string */
int int
@ -199,120 +200,120 @@ strerror (
return NULL; return NULL;
} }
/* Computes the length of the maximum initial segment of the string pointed to by s1 ///* Computes the length of the maximum initial segment of the string pointed to by s1
which consists entirely of characters from the string pointed to by s2. */ // which consists entirely of characters from the string pointed to by s2. */
size_t //size_t
strspn ( //strspn (
const char *s1, // const char *s1,
const char *s2 // const char *s2
) // )
{ //{
UINT8 Map[32]; // UINT8 Map[32];
UINT32 Index; // UINT32 Index;
size_t Count; // size_t Count;
for (Index = 0; Index < 32; Index++) {
Map[Index] = 0;
}
while (*s2) {
Map[*s2 >> 3] |= (1 << (*s2 & 7));
s2++;
}
if (*s1) {
Count = 0;
while (Map[*s1 >> 3] & (1 << (*s1 & 7))) {
Count++;
s1++;
}
return Count;
}
return 0;
}
/* Computes the length of the maximum initial segment of the string pointed to by s1
which consists entirely of characters not from the string pointed to by s2. */
size_t
strcspn (
const char *s1,
const char *s2
)
{
UINT8 Map[32];
UINT32 Index;
size_t Count;
for (Index = 0; Index < 32; Index++) {
Map[Index] = 0;
}
while (*s2) {
Map[*s2 >> 3] |= (1 << (*s2 & 7));
s2++;
}
Map[0] |= 1;
Count = 0;
while (!(Map[*s1 >> 3] & (1 << (*s1 & 7)))) {
Count++;
s1++;
}
return Count;
}
char *
strcpy (
char *strDest,
const char *strSource
)
{
AsciiStrCpyS (strDest, MAX_STRING_SIZE, strSource);
return strDest;
}
int
strcmp (
const char *s1,
const char *s2
)
{
return (int)AsciiStrCmp (s1, s2);
}
// //
// -- Character Classification Routines -- // for (Index = 0; Index < 32; Index++) {
// Map[Index] = 0;
// }
// //
// while (*s2) {
/* Determines if a particular character is a decimal-digit character */ // Map[*s2 >> 3] |= (1 << (*s2 & 7));
int // s2++;
isdigit ( // }
int c //
) // if (*s1) {
{ // Count = 0;
// // while (Map[*s1 >> 3] & (1 << (*s1 & 7))) {
// <digit> ::= [0-9] // Count++;
// // s1++;
return (('0' <= (c)) && ((c) <= '9')); // }
} //
// return Count;
/* Determine if an integer represents character that is a hex digit */ // }
int //
isxdigit ( // return 0;
int c //}
) //
{ ///* Computes the length of the maximum initial segment of the string pointed to by s1
// // which consists entirely of characters not from the string pointed to by s2. */
// <hexdigit> ::= [0-9] | [a-f] | [A-F] //size_t
// //strcspn (
return ((('0' <= (c)) && ((c) <= '9')) || // const char *s1,
(('a' <= (c)) && ((c) <= 'f')) || // const char *s2
(('A' <= (c)) && ((c) <= 'F'))); // )
} //{
// UINT8 Map[32];
// UINT32 Index;
// size_t Count;
//
// for (Index = 0; Index < 32; Index++) {
// Map[Index] = 0;
// }
//
// while (*s2) {
// Map[*s2 >> 3] |= (1 << (*s2 & 7));
// s2++;
// }
//
// Map[0] |= 1;
//
// Count = 0;
// while (!(Map[*s1 >> 3] & (1 << (*s1 & 7)))) {
// Count++;
// s1++;
// }
//
// return Count;
//}
//
//char *
//strcpy (
// char *strDest,
// const char *strSource
// )
//{
// AsciiStrCpyS (strDest, MAX_STRING_SIZE, strSource);
// return strDest;
//}
//
//int
//strcmp (
// const char *s1,
// const char *s2
// )
//{
// return (int)AsciiStrCmp (s1, s2);
//}
//
////
//// -- Character Classification Routines --
////
//
///* Determines if a particular character is a decimal-digit character */
//int
//isdigit (
// int c
// )
//{
// //
// // <digit> ::= [0-9]
// //
// return (('0' <= (c)) && ((c) <= '9'));
//}
//
///* Determine if an integer represents character that is a hex digit */
//int
//isxdigit (
// int c
// )
//{
// //
// // <hexdigit> ::= [0-9] | [a-f] | [A-F]
// //
// return ((('0' <= (c)) && ((c) <= '9')) ||
// (('a' <= (c)) && ((c) <= 'f')) ||
// (('A' <= (c)) && ((c) <= 'F')));
//}
/* Determines if a particular character represents a space character */ /* Determines if a particular character represents a space character */
int int
@ -326,31 +327,31 @@ isspace (
return ((c) == ' '); return ((c) == ' ');
} }
/* Determine if a particular character is an alphanumeric character */ ///* Determine if a particular character is an alphanumeric character */
int //int
isalnum ( //isalnum (
int c // int c
) // )
{ //{
// // //
// <alnum> ::= [0-9] | [a-z] | [A-Z] // // <alnum> ::= [0-9] | [a-z] | [A-Z]
// // //
return ((('0' <= (c)) && ((c) <= '9')) || // return ((('0' <= (c)) && ((c) <= '9')) ||
(('a' <= (c)) && ((c) <= 'z')) || // (('a' <= (c)) && ((c) <= 'z')) ||
(('A' <= (c)) && ((c) <= 'Z'))); // (('A' <= (c)) && ((c) <= 'Z')));
} //}
//
/* Determines if a particular character is in upper case */ ///* Determines if a particular character is in upper case */
int //int
isupper ( //isupper (
int c // int c
) // )
{ //{
// // //
// <uppercase letter> := [A-Z] // // <uppercase letter> := [A-Z]
// // //
return (('A' <= (c)) && ((c) <= 'Z')); // return (('A' <= (c)) && ((c) <= 'Z'));
} //}
// //
// -- Data Conversion Routines -- // -- Data Conversion Routines --
@ -386,18 +387,18 @@ strtoul (
return 0; return 0;
} }
/* Convert character to lowercase */ ///* Convert character to lowercase */
int //int
tolower ( //tolower (
int c // int c
) // )
{ //{
if (('A' <= (c)) && ((c) <= 'Z')) { // if (('A' <= (c)) && ((c) <= 'Z')) {
return (c - ('A' - 'a')); // return (c - ('A' - 'a'));
} // }
//
return (c); // return (c);
} //}
// //
// -- Searching and Sorting Routines -- // -- Searching and Sorting Routines --
@ -420,7 +421,7 @@ qsort (
// //
// Use CRT-style malloc to cover BS and RT memory allocation. // Use CRT-style malloc to cover BS and RT memory allocation.
// //
Buffer = malloc (width); Buffer = CryptoPkg_BaseMemAllocation_malloc (width);
ASSERT (Buffer != NULL); ASSERT (Buffer != NULL);
// //
@ -428,7 +429,7 @@ qsort (
// //
QuickSortWorker (base, (UINTN)num, (UINTN)width, (SORT_COMPARE)compare, Buffer); QuickSortWorker (base, (UINTN)num, (UINTN)width, (SORT_COMPARE)compare, Buffer);
free (Buffer); CryptoPkg_BaseMemAllocation_free (Buffer);
return; return;
} }
@ -449,144 +450,144 @@ getenv (
return NULL; return NULL;
} }
/* Get a value from the current environment */ ///* Get a value from the current environment */
char * //char *
secure_getenv ( //secure_getenv (
const char *varname // const char *varname
) // )
{ //{
// // //
// Null secure_getenv() function implementation to satisfy the linker, since // // Null secure_getenv() function implementation to satisfy the linker, since
// there is no direct functionality logic dependency in present UEFI cases. // // there is no direct functionality logic dependency in present UEFI cases.
// // //
// From the secure_getenv() manual: 'just like getenv() except that it // // From the secure_getenv() manual: 'just like getenv() except that it
// returns NULL in cases where "secure execution" is required'. // // returns NULL in cases where "secure execution" is required'.
// // //
return NULL; // return NULL;
} //}
// //
// -- Stream I/O Routines -- ////
//// -- Stream I/O Routines --
////
// //
///* Write data to a stream */
/* Write data to a stream */ //size_t
size_t //fwrite (
fwrite ( // const void *buffer,
const void *buffer, // size_t size,
size_t size, // size_t count,
size_t count, // FILE *stream
FILE *stream // )
) //{
{ // return 0;
return 0; //}
} //
//#ifdef __GNUC__
#ifdef __GNUC__ //
//typedef
typedef //VOID
VOID //(EFIAPI *NoReturnFuncPtr)(
(EFIAPI *NoReturnFuncPtr)( // VOID
VOID // ) __attribute__ ((__noreturn__));
) __attribute__ ((__noreturn__)); //
//STATIC
STATIC //VOID
VOID //EFIAPI
EFIAPI //NopFunction (
NopFunction ( // VOID
VOID // )
) //{
{ //}
} //
//void
void //abort (
abort ( // void
void // )
) //{
{ // NoReturnFuncPtr NoReturnFunc;
NoReturnFuncPtr NoReturnFunc; //
// NoReturnFunc = (NoReturnFuncPtr)NopFunction;
NoReturnFunc = (NoReturnFuncPtr)NopFunction; //
// NoReturnFunc ();
NoReturnFunc (); //}
} //
//#else
#else //
//void
void //abort (
abort ( // void
void // )
) //{
{ // // Do nothing
// Do nothing //}
} //
//#endif
#endif //
//int
int //fclose (
fclose ( // FILE *f
FILE *f // )
) //{
{ // return 0;
return 0; //}
} //
//FILE *
FILE * //fopen (
fopen ( // const char *c,
const char *c, // const char *m
const char *m // )
) //{
{ // return NULL;
return NULL; //}
} //
//size_t
size_t //fread (
fread ( // void *b,
void *b, // size_t c,
size_t c, // size_t i,
size_t i, // FILE *f
FILE *f // )
) //{
{ // return 0;
return 0; //}
} //
//uid_t
uid_t //getuid (
getuid ( // void
void // )
) //{
{ // return 0;
return 0; //}
} //
//uid_t
uid_t //geteuid (
geteuid ( // void
void // )
) //{
{ // return 0;
return 0; //}
} //
//gid_t
gid_t //getgid (
getgid ( // void
void // )
) //{
{ // return 0;
return 0; //}
} //
//gid_t
gid_t //getegid (
getegid ( // void
void // )
) //{
{ // return 0;
return 0; //}
} //
//int
int //printf (
printf ( // char const *fmt,
char const *fmt, // ...
... // )
) //{
{ // return 0;
return 0; //}
}

View File

@ -8,10 +8,10 @@ Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved
SPDX-License-Identifier: BSD-2-Clause-Patent SPDX-License-Identifier: BSD-2-Clause-Patent
**/ **/
#ifndef __CRT_LIB_SUPPORT_H__ #ifndef __CRT_LIB_SUPPORT_H__
#define __CRT_LIB_SUPPORT_H__ #define __CRT_LIB_SUPPORT_H__
#include "../../../rEFIt_UEFI/PlatformEFI/posix/posix.h"
#include <Library/BaseLib.h> #include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h> #include <Library/BaseMemoryLib.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
@ -65,10 +65,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
// Map all va_xxxx elements to VA_xxx defined in MdePkg/Include/Base.h // Map all va_xxxx elements to VA_xxx defined in MdePkg/Include/Base.h
// //
#if !defined (__CC_ARM) // if va_list is not already defined #if !defined (__CC_ARM) // if va_list is not already defined
#define va_list VA_LIST //#define va_list VA_LIST
#define va_arg VA_ARG //#define va_arg VA_ARG
#define va_start VA_START //#define va_start VA_START
#define va_end VA_END //#define va_end VA_END
#else // __CC_ARM #else // __CC_ARM
#define va_start(Marker, Parameter) __va_start(Marker, Parameter) #define va_start(Marker, Parameter) __va_start(Marker, Parameter)
#define va_arg(Marker, TYPE) __va_arg(Marker, TYPE) #define va_arg(Marker, TYPE) __va_arg(Marker, TYPE)
@ -80,14 +80,16 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
// //
#define EINVAL 22 /* Invalid argument */ #define EINVAL 22 /* Invalid argument */
#define EAFNOSUPPORT 47 /* Address family not supported by protocol family */ #define EAFNOSUPPORT 47 /* Address family not supported by protocol family */
#define INT_MAX 0x7FFFFFFF /* Maximum (signed) int value */ //#define INT_MAX 0x7FFFFFFF /* Maximum (signed) int value */
#define INT_MIN (-INT_MAX-1) /* Minimum (signed) int value */ //#define INT_MIN (-INT_MAX-1) /* Minimum (signed) int value */
#define LONG_MAX 0X7FFFFFFFL /* max value for a long */ //#define LONG_MAX 0X7FFFFFFFL /* max value for a long */
#define LONG_MIN (-LONG_MAX-1) /* min value for a long */ //#define LONG_MIN (-LONG_MAX-1) /* min value for a long */
#define UINT_MAX 0xFFFFFFFF /* Maximum unsigned int value */ //#define UINT_MAX 0xFFFFFFFF /* Maximum unsigned int value */
#define ULONG_MAX 0xFFFFFFFF /* Maximum unsigned long value */ //#define ULONG_MAX 0xFFFFFFFF /* Maximum unsigned long value */
#define CHAR_BIT 8 /* Number of bits in a char */ #define CHAR_BIT 8 /* Number of bits in a char */
#ifndef SIZE_MAX
#define SIZE_MAX 0xFFFFFFFF /* Maximum unsigned size_t */ #define SIZE_MAX 0xFFFFFFFF /* Maximum unsigned size_t */
#endif
// //
// Address families. // Address families.
@ -105,7 +107,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
// //
// Basic types mapping // Basic types mapping
// //
typedef UINTN size_t; //typedef UINTN size_t;
typedef UINTN off_t; typedef UINTN off_t;
typedef UINTN u_int; typedef UINTN u_int;
typedef INTN ptrdiff_t; typedef INTN ptrdiff_t;
@ -116,7 +118,7 @@ typedef UINT8 sa_family_t;
typedef UINT8 u_char; typedef UINT8 u_char;
typedef UINT32 uid_t; typedef UINT32 uid_t;
typedef UINT32 gid_t; typedef UINT32 gid_t;
typedef CHAR16 wchar_t; //typedef CHAR16 wchar_t;
// //
// File operations are not required for EFI building, // File operations are not required for EFI building,
@ -158,38 +160,42 @@ struct sockaddr {
extern int errno; extern int errno;
extern FILE *stderr; extern FILE *stderr;
#ifdef __cplusplus
extern "C" {
#endif
// //
// Function prototypes of CRT Library routines // Function prototypes of CRT Library routines
// //
// Jief : need to comment out prototypes that we already have because ours are inlines. These prototypes make the compiler link for a non inline version that we don't have.
void * void *
malloc ( CryptoPkg_BaseMemAllocation_malloc (
size_t size_t
); );
void * void *
realloc ( CryptoPkg_BaseMemAllocation_realloc (
void *, void *,
size_t size_t
); );
void void
free ( CryptoPkg_BaseMemAllocation_free (
void * void *
); );
void * //void *
memset ( //memset (
void *, // void *,
int, // int,
size_t // size_t
); // );
//
int //int
memcmp ( //memcmp (
const void *, // const void *,
const void *, // const void *,
size_t // size_t
); // );
int int
isdigit ( isdigit (
@ -221,30 +227,30 @@ tolower (
int int
); );
int //int
strcmp ( //strcmp (
const char *, // const char *,
const char * // const char *
); // );
//
int //int
strncasecmp ( //strncasecmp (
const char *, // const char *,
const char *, // const char *,
size_t // size_t
); // );
//
char * //char *
strchr ( //strchr (
const char *, // const char *,
int // int
); // );
//
char * //char *
strrchr ( //strrchr (
const char *, // const char *,
int // int
); // );
unsigned long unsigned long
strtoul ( strtoul (
@ -265,17 +271,17 @@ strerror (
int int
); );
size_t //size_t
strspn ( //strspn (
const char *, // const char *,
const char * // const char *
); // );
//
size_t //size_t
strcspn ( //strcspn (
const char *, // const char *,
const char * // const char *
); // );
int int
printf ( printf (
@ -403,25 +409,31 @@ strcpy (
const char *strSource const char *strSource
); );
int snprintf(char* str, size_t size, const char* format, ...);
// //
// Macros that directly map functions to BaseLib, BaseMemoryLib, and DebugLib functions // Macros that directly map functions to BaseLib, BaseMemoryLib, and DebugLib functions
// //
#define memcpy(dest, source, count) CopyMem(dest,source,(UINTN)(count)) // Jief : comment out macro we already have
#define memset(dest, ch, count) SetMem(dest,(UINTN)(count),(UINT8)(ch)) //#define memcpy(dest, source, count) CopyMem(dest,source,(UINTN)(count))
//#define memset(dest, ch, count) SetMem(dest,(UINTN)(count),(UINT8)(ch))
#define memchr(buf, ch, count) ScanMem8(buf,(UINTN)(count),(UINT8)ch) #define memchr(buf, ch, count) ScanMem8(buf,(UINTN)(count),(UINT8)ch)
#define memcmp(buf1, buf2, count) (int)(CompareMem(buf1,buf2,(UINTN)(count))) //#define memcmp(buf1, buf2, count) (int)(CompareMem(buf1,buf2,(UINTN)(count)))
#define memmove(dest, source, count) CopyMem(dest,source,(UINTN)(count)) //#define memmove(dest, source, count) CopyMem(dest,source,(UINTN)(count))
#define strlen(str) (size_t)(AsciiStrnLenS(str,MAX_STRING_SIZE)) //#define strlen(str) (size_t)(AsciiStrnLenS(str,MAX_STRING_SIZE))
#define strncpy(strDest, strSource, count) AsciiStrnCpyS(strDest,MAX_STRING_SIZE,strSource,(UINTN)count) //#define strncpy(strDest, strSource, count) AsciiStrnCpyS(strDest,MAX_STRING_SIZE,strSource,(UINTN)count)
#define strcat(strDest, strSource) AsciiStrCatS(strDest,MAX_STRING_SIZE,strSource) //#define strcat(strDest, strSource) AsciiStrCatS(strDest,MAX_STRING_SIZE,strSource)
#define strncmp(string1, string2, count) (int)(AsciiStrnCmp(string1,string2,(UINTN)(count))) //#define strncmp(string1, string2, count) (int)(AsciiStrnCmp(string1,string2,(UINTN)(count)))
#define strcasecmp(str1, str2) (int)AsciiStriCmp(str1,str2) //#define strcasecmp(str1, str2) (int)AsciiStriCmp(str1,str2)
#define strstr(s1, s2) AsciiStrStr(s1,s2) //#define strstr(s1, s2) AsciiStrStr(s1,s2)
#define sprintf(buf, ...) AsciiSPrint(buf,MAX_STRING_SIZE,__VA_ARGS__) //#define sprintf(buf, ...) AsciiSPrint(buf,MAX_STRING_SIZE,__VA_ARGS__)
#define localtime(timer) NULL #define localtime(timer) NULL
#define assert(expression) //#define assert(expression)
#define offsetof(type, member) OFFSET_OF(type,member) #define offsetof(type, member) OFFSET_OF(type,member)
#define atoi(nptr) AsciiStrDecimalToUintn(nptr) #define atoi(nptr) AsciiStrDecimalToUintn(nptr)
#define gettimeofday(tvp, tz) do { (tvp)->tv_sec = time(NULL); (tvp)->tv_usec = 0; } while (0) #define gettimeofday(tvp, tz) do { (tvp)->tv_sec = time(NULL); (tvp)->tv_usec = 0; } while (0)
#ifdef __cplusplus
}
#endif
#endif #endif

View File

@ -1,19 +0,0 @@
/** @file
Include file to support building the third-party cryptographic library.
Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <CrtLibSupport.h>
typedef INT8 int8_t;
typedef UINT8 uint8_t;
typedef INT16 int16_t;
typedef UINT16 uint16_t;
typedef INT32 int32_t;
typedef UINT32 uint32_t;
typedef INT64 int64_t;
typedef UINT64 uint64_t;
typedef UINTN uintptr_t;

View File

@ -0,0 +1,19 @@
/** @file
Include file to support building the third-party cryptographic library.
Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <CrtLibSupport.h>
//typedef INT8 int8_t;
//typedef UINT8 uint8_t;
//typedef INT16 int16_t;
//typedef UINT16 uint16_t;
//typedef INT32 int32_t;
//typedef UINT32 uint32_t;
//typedef INT64 int64_t;
//typedef UINT64 uint64_t;
//typedef UINTN uintptr_t;

View File

@ -148,7 +148,7 @@ gmtime (
return NULL; return NULL;
} }
GmTime = malloc (sizeof (struct tm)); GmTime = CryptoPkg_BaseMemAllocation_malloc (sizeof (struct tm));
if (GmTime == NULL) { if (GmTime == NULL) {
return NULL; return NULL;
} }

View File

@ -0,0 +1,32 @@
## @file MdePkg.dec
# This Package provides all definitions, library classes and libraries instances.
#
# It also provides the definitions(including PPIs/PROTOCOLs/GUIDs) of
# EFI1.10/UEFI2.7/PI1.7 and some Industry Standards.
#
# Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>
# Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
# (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
[Defines]
DEC_SPECIFICATION = 0x00010005
PACKAGE_NAME = Openssl
PACKAGE_GUID = A303B781-8C0D-432F-849E-B36B6CCDBE55
PACKAGE_VERSION = 1
[Includes]
openssl/include
openssl/providers/common/include
openssl/providers/implementations/include
OpensslGen/include
OpensslGen/providers/common/include
CryptoPkg/Include
../../rEFIt_UEFI/PlatformEFI/posix
../../Include

View File

@ -20,7 +20,7 @@
DEFINE OPENSSL_PATH = openssl DEFINE OPENSSL_PATH = openssl
DEFINE OPENSSL_GEN_PATH = OpensslGen DEFINE OPENSSL_GEN_PATH = OpensslGen
DEFINE OPENSSL_FLAGS = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DEDK2_OPENSSL_NOEC=1 -DOPENSSL_NO_ASM DEFINE OPENSSL_FLAGS = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DEDK2_OPENSSL_NOEC=1 -DOPENSSL_NO_ASM -D__STDC_NO_ATOMICS__
DEFINE OPENSSL_FLAGS_NOASM = DEFINE OPENSSL_FLAGS_NOASM =
# #
@ -656,10 +656,14 @@
OpensslStub/SslStatServNull.c OpensslStub/SslStatServNull.c
OpensslStub/SslExtServNull.c OpensslStub/SslExtServNull.c
OpensslStub/Pkcs12Null.c OpensslStub/Pkcs12Null.c
CryptoPkg/CrtWrapper.c
CryptoPkg/TimerWrapper.c
CryptoPkg/BaseMemAllocation.c
[Packages] [Packages]
MdePkg/MdePkg.dec MdePkg/MdePkg.dec
CryptoPkg/CryptoPkg.dec Library/OpensslLib/OpensslLib.dec
# CryptoPkg/CryptoPkg.dec
[LibraryClasses] [LibraryClasses]
BaseLib BaseLib

View File

@ -408,7 +408,7 @@ int NCONF_dump_bio(const CONF *conf, BIO *out)
*/ */
OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void) OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void)
{ {
OPENSSL_INIT_SETTINGS *ret = malloc(sizeof(*ret)); OPENSSL_INIT_SETTINGS *ret = CryptoPkg_BaseMemAllocation_malloc(sizeof(*ret));
if (ret == NULL) if (ret == NULL)
return NULL; return NULL;
@ -464,7 +464,7 @@ int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings,
void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings) void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings)
{ {
free(settings->filename); CryptoPkg_BaseMemAllocation_free(settings->filename);
free(settings->appname); CryptoPkg_BaseMemAllocation_free(settings->appname);
free(settings); CryptoPkg_BaseMemAllocation_free(settings);
} }

View File

@ -187,7 +187,7 @@ void *CRYPTO_malloc(size_t num, const char *file, int line)
allow_customize = 0; allow_customize = 0;
} }
return malloc(num); return CryptoPkg_BaseMemAllocation_malloc(num);
} }
void *CRYPTO_zalloc(size_t num, const char *file, int line) void *CRYPTO_zalloc(size_t num, const char *file, int line)
@ -217,7 +217,7 @@ void *CRYPTO_realloc(void *str, size_t num, const char *file, int line)
return NULL; return NULL;
} }
return realloc(str, num); return CryptoPkg_BaseMemAllocation_realloc(str, num);
} }
void *CRYPTO_clear_realloc(void *str, size_t old_len, size_t num, void *CRYPTO_clear_realloc(void *str, size_t old_len, size_t num,
@ -255,7 +255,7 @@ void CRYPTO_free(void *str, const char *file, int line)
return; return;
} }
free(str); CryptoPkg_BaseMemAllocation_free(str);
} }
void CRYPTO_clear_free(void *str, size_t num, const char *file, int line) void CRYPTO_clear_free(void *str, size_t num, const char *file, int line)

View File

@ -49,6 +49,7 @@
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \
&& !defined(__STDC_NO_ATOMICS__) && !defined(__STDC_NO_ATOMICS__)
# include <stdint.h>
# include <stdatomic.h> # include <stdatomic.h>
# if defined(ATOMIC_POINTER_LOCK_FREE) \ # if defined(ATOMIC_POINTER_LOCK_FREE) \

View File

@ -220,14 +220,15 @@ extern "C" {
# define OPENSSL_NO_INTTYPES_H # define OPENSSL_NO_INTTYPES_H
# define OPENSSL_NO_STDINT_H # define OPENSSL_NO_STDINT_H
# if defined(OPENSSL_SYS_UEFI) # if defined(OPENSSL_SYS_UEFI)
typedef INT8 int8_t; //typedef INT8 int8_t;
typedef UINT8 uint8_t; //typedef UINT8 uint8_t;
typedef INT16 int16_t; //typedef INT16 int16_t;
typedef UINT16 uint16_t; //typedef UINT16 uint16_t;
typedef INT32 int32_t; //typedef INT32 int32_t;
typedef UINT32 uint32_t; //typedef UINT32 uint32_t;
typedef INT64 int64_t; //typedef INT64 int64_t;
typedef UINT64 uint64_t; //typedef UINT64 uint64_t;
#include <stdint.h>
# elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ # elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
defined(__osf__) || defined(__sgi) || defined(__hpux) || \ defined(__osf__) || defined(__sgi) || defined(__hpux) || \
defined(OPENSSL_SYS_VMS) || defined (__OpenBSD__) defined(OPENSSL_SYS_VMS) || defined (__OpenBSD__)

View File

@ -5526,13 +5526,13 @@ static int nss_keylog_int(const char *prefix,
*cursor++ = ' '; *cursor++ = ' ';
for (i = 0; i < parameter_1_len; i++) { for (i = 0; i < parameter_1_len; i++) {
sprintf(cursor, "%02x", parameter_1[i]); snprintf(cursor, out_len, "%02x", parameter_1[i]);
cursor += 2; cursor += 2;
} }
*cursor++ = ' '; *cursor++ = ' ';
for (i = 0; i < parameter_2_len; i++) { for (i = 0; i < parameter_2_len; i++) {
sprintf(cursor, "%02x", parameter_2[i]); snprintf(cursor, out_len, "%02x", parameter_2[i]);
cursor += 2; cursor += 2;
} }
*cursor = '\0'; *cursor = '\0';

@ -1 +1 @@
Subproject commit 0fcc050a44f6fa06788b349e65b4e10fcdabde67 Subproject commit 8270a6fb81b95abf957d2b7acd945fcc039ffde6

View File

@ -4,7 +4,7 @@
* Created by Slice on 03.10.2016. * Created by Slice on 03.10.2016.
* *
*/ */
/*
#include <Library/BaseLib.h> #include <Library/BaseLib.h>
#include <Library/UefiLib.h> #include <Library/UefiLib.h>
#include <Library/UefiBootServicesTableLib.h> #include <Library/UefiBootServicesTableLib.h>
@ -16,8 +16,7 @@
#include <Library/MemLogLib.h> #include <Library/MemLogLib.h>
#include <Protocol/AppleSMC.h> #include <Protocol/AppleSMC.h>
*/
#include "SmcHelper.h"
// DBG_TO: 0=no debug, 1=serial, 2=console 3=log // DBG_TO: 0=no debug, 1=serial, 2=console 3=log
// serial requires // serial requires

View File

@ -142,13 +142,3 @@ void panic(void)
{ {
panic(nullptr); panic(nullptr);
} }
void _assert(bool b, const char* format, ...)
{
if ( !b ) {
VA_LIST va;
VA_START(va, format);
panic_(format, va); // panic doesn't return
}
}

View File

@ -5,9 +5,7 @@
# define __attribute__(x) # define __attribute__(x)
#endif #endif
#ifndef __cplusplus // C doesn't know bool #include "stdbool.h" // C doesn't know bool, in case this header is included by a C source
#define bool unsigned char
#endif
extern bool stop_at_panic; extern bool stop_at_panic;
extern bool i_have_panicked; extern bool i_have_panicked;
@ -36,15 +34,6 @@ void panic(const char* format, ...) __attribute__((__format__(__printf__, 1, 2))
void log_technical_bug(const char* format, ...) __attribute__((__format__(__printf__, 1, 2))); void log_technical_bug(const char* format, ...) __attribute__((__format__(__printf__, 1, 2)));
#ifdef _MSC_VER
# define assert(expr) _assert(expr, "Expression \"%s\" failed in %s", #expr, __FUNCSIG__)
#else
# define assert(expr) _assert(expr, "Expression \"%s\" failed in %s", #expr, __PRETTY_FUNCTION__)
#endif
#define assertf(...) _assert(__VA_ARGS__)
void _assert(bool b, const char* format, ...) __attribute__((__format__(__printf__, 2, 3)));
#ifdef __cplusplus #ifdef __cplusplus
class DontStopAtPanic class DontStopAtPanic
{ {

View File

@ -0,0 +1,15 @@
#include <Platform.h> // Only use angled for Platform, else, xcode project won't compile
#include "assert.h"
#include "abort.h"
void _assert(bool b, const char* format, ...)
{
if ( !b ) {
VA_LIST va;
VA_START(va, format);
log_technical_bug(format, va); // panic doesn't return
}
}

View File

@ -0,0 +1,24 @@
#ifndef __ASSERT_H__
#define __ASSERT_H__
#include "stdbool.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _MSC_VER
# define assert(expr) _assert(expr, "Expression \"%s\" failed in %s", #expr, __FUNCSIG__)
#else
# define assert(expr) _assert(expr, "Expression \"%s\" failed in %s", #expr, __PRETTY_FUNCTION__)
#endif
#define assertf(...) _assert(__VA_ARGS__)
void _assert(bool b, const char* format, ...) __attribute__((__format__(__printf__, 2, 3)));
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,37 +1,97 @@
//#define UINT_MAX //#define UINT_MAX
#define SIZE_T_MAX MAX_UINTN #define SIZE_T_MAX MAX_UINTN
#ifndef INT8_MIN
#define INT8_MIN (-128) #define INT8_MIN (-128)
#endif
#ifndef INT16_MIN
#ifndef INT16_MIN
#endif
#define INT16_MIN (-32768) #define INT16_MIN (-32768)
#endif
#ifndef INT32_MIN
#define INT32_MIN (-2147483647 - 1) #define INT32_MIN (-2147483647 - 1)
#endif
#ifndef INT64_MIN
#define INT64_MIN (-9223372036854775807LL - 1) #define INT64_MIN (-9223372036854775807LL - 1)
#endif
#ifndef INT8_MAX
#define INT8_MAX 127 #define INT8_MAX 127
#endif
#ifndef INT16_MAX
#define INT16_MAX 32767 #define INT16_MAX 32767
#endif
#ifndef INT32_MAX
#define INT32_MAX 2147483647 #define INT32_MAX 2147483647
#endif
#ifndef INT64_MAX
#define INT64_MAX 9223372036854775807LL #define INT64_MAX 9223372036854775807LL
#endif
#ifndef UINT8_MAX
#define UINT8_MAX 0xff /* 255U */ #define UINT8_MAX 0xff /* 255U */
#endif
#ifndef UINT16_MAX
#define UINT16_MAX 0xffff /* 65535U */ #define UINT16_MAX 0xffff /* 65535U */
#endif
#ifndef UINT32_MAX
#define UINT32_MAX 0xffffffff /* 4294967295U */ #define UINT32_MAX 0xffffffff /* 4294967295U */
#endif
#ifndef UINT64_MAX
#define UINT64_MAX 0xffffffffffffffffULL /* 18446744073709551615ULL */ #define UINT64_MAX 0xffffffffffffffffULL /* 18446744073709551615ULL */
#endif
#ifndef CHAR_MIN
#define CHAR_MIN (-128) #define CHAR_MIN (-128)
#endif
#ifndef SCHAR_MIN
#define SCHAR_MIN (-128) #define SCHAR_MIN (-128)
#endif
#ifndef SHRT_MIN
#define SHRT_MIN (-32768) #define SHRT_MIN (-32768)
#endif
#ifndef INT_MIN
#define INT_MIN INT32_MIN #define INT_MIN INT32_MIN
#endif
#ifndef LONG_MIN
#define LONG_MIN INT64_MIN #define LONG_MIN INT64_MIN
#endif
#ifndef LLONG_MIN
#define LLONG_MIN INT64_MIN #define LLONG_MIN INT64_MIN
#endif
#ifndef CHAR_MAX
#define CHAR_MAX 127 #define CHAR_MAX 127
#endif
#ifndef SCHAR_MAX
#define SCHAR_MAX 127 #define SCHAR_MAX 127
#endif
#ifndef SHRT_MAX
#define SHRT_MAX 32767 #define SHRT_MAX 32767
#endif
#ifndef INT_MAX
#define INT_MAX INT32_MAX #define INT_MAX INT32_MAX
#endif
#ifndef LONG_MAX
#define LONG_MAX INT64_MAX #define LONG_MAX INT64_MAX
#endif
#ifndef LLONG_MAX
#define LLONG_MAX INT64_MAX #define LLONG_MAX INT64_MAX
#endif
#ifndef UCHAR_MAX
#define UCHAR_MAX 255 #define UCHAR_MAX 255
#endif
#ifndef USHRT_MAX
#define USHRT_MAX 65535 #define USHRT_MAX 65535
#endif
#ifndef UINT_MAX
#define UINT_MAX UINT32_MAX #define UINT_MAX UINT32_MAX
#endif
#ifndef ULONG_MAX
#define ULONG_MAX UINT64_MAX #define ULONG_MAX UINT64_MAX
#endif
#ifndef ULLONG_MAX
#define ULLONG_MAX UINT64_MAX #define ULLONG_MAX UINT64_MAX
#endif

View File

@ -18,6 +18,7 @@
#include "strings.h" #include "strings.h"
#include "wchar.h" #include "wchar.h"
#include "abort.h" #include "abort.h"
#include "assert.h"
#include "posix_additions.h" #include "posix_additions.h"
// //
// Macros that directly map functions to BaseLib, BaseMemoryLib, and DebugLib functions // Macros that directly map functions to BaseLib, BaseMemoryLib, and DebugLib functions
@ -48,7 +49,7 @@ void abort(void);
#endif #endif
inline float fabsf(float x) { static inline __attribute__((always_inline)) float fabsf(float x) {
if (x < 0.f) return -x; if (x < 0.f) return -x;
return x; return x;
} }

View File

@ -13,6 +13,14 @@ static_assert(sizeof(long long) == 8, "sizeof(long long) != 8");
static_assert(true, "true"); static_assert(true, "true");
#endif #endif
////#if defined(OPENSSL_SMALL_FOOTPRINT) && defined(__clang__)
//// let's include the one from the compiler. Except for uintptr_t because it's define as a long and we prefer long long for microsoft compatibility. It's same on macos.
//// It's currently (Jan 2024) only needed when you compile with OpenSsl and xcode because of the inclusion of stdatomic
//#define _UINTPTR_T // for clang to avoid to declare uintptr_t
//#undef __UINTPTR_TYPE__
//#include_next <stdint.h>
////#endif
typedef UINT8 uint8_t; typedef UINT8 uint8_t;
typedef UINT16 uint16_t; typedef UINT16 uint16_t;

View File

@ -1,6 +1,7 @@
#ifndef __CLOVER_STDLIB_H__ #ifndef __CLOVER_STDLIB_H__
#define __CLOVER_STDLIB_H__ #define __CLOVER_STDLIB_H__
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@ -18,28 +19,37 @@ extern "C" {
extern "C" { extern "C" {
#endif #endif
void abort(void);
inline void* malloc(size_t size) void abort(void); // abort() is defined in stdlib.h
#ifndef OPENSSL_SMALL_FOOTPRINT
// can't use these memory function with OpenSslLib
static inline __attribute__((always_inline)) void* malloc(size_t size)
{ {
void* ptr = AllocatePool(size); void* ptr = AllocatePool(size);
// MemLogf(false, 0, "malloc(%zd) %llx\n", size, uintptr_t(ptr)); // MemLogf(false, 0, "malloc(%zd) %llx\n", size, uintptr_t(ptr));
return ptr; return ptr;
} }
inline void* reallocWithOldSize(void *ptr, size_t newsize, size_t oldsize) // not the posix realloc. For EFI we need oldsize static inline __attribute__((always_inline)) void* reallocWithOldSize(void *ptr, size_t newsize, size_t oldsize) // not the posix realloc. For EFI we need oldsize
{ {
void* newptr = ReallocatePool(oldsize, newsize, ptr); void* newptr = ReallocatePool(oldsize, newsize, ptr);
// MemLogf(false, 0, "reallocWithOldSize(%llx %zd %zd) %llx\n", uintptr_t(ptr), newsize, oldsize, uintptr_t(newptr)); // MemLogf(false, 0, "reallocWithOldSize(%llx %zd %zd) %llx\n", uintptr_t(ptr), newsize, oldsize, uintptr_t(newptr));
return newptr; return newptr;
} }
inline void free(void *ptr) static inline __attribute__((always_inline)) void free(void *ptr)
{ {
// MemLogf(false, 0, "free(%llx)\n", uintptr_t(ptr)); // MemLogf(false, 0, "free(%llx)\n", uintptr_t(ptr));
FreePool(ptr); FreePool(ptr);
} }
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -175,4 +175,81 @@ char* strstr(const char *haystack, const char *needle)
} }
/* Computes the length of the maximum initial segment of the string pointed to by s1
which consists entirely of characters from the string pointed to by s2. */
size_t strspn(const char *s1, const char *s2)
{
UINT8 Map[32];
UINT32 Index;
size_t Count;
for (Index = 0; Index < 32; Index++) {
Map[Index] = 0;
}
while (*s2) {
Map[*s2 >> 3] |= (1 << (*s2 & 7));
s2++;
}
if (*s1) {
Count = 0;
while (Map[*s1 >> 3] & (1 << (*s1 & 7))) {
Count++;
s1++;
}
return Count;
}
return 0;
}
/* Computes the length of the maximum initial segment of the string pointed to by s1
which consists entirely of characters not from the string pointed to by s2. */
size_t strcspn(const char *s1, const char *s2)
{
UINT8 Map[32];
UINT32 Index;
size_t Count;
for (Index = 0; Index < 32; Index++) {
Map[Index] = 0;
}
while (*s2) {
Map[*s2 >> 3] |= (1 << (*s2 & 7));
s2++;
}
Map[0] |= 1;
Count = 0;
while (!(Map[*s1 >> 3] & (1 << (*s1 & 7)))) {
Count++;
s1++;
}
return Count;
}
/* Scan a string for the last occurrence of a character */
char* strrchr(const char *str, int c)
{
char *save;
for (save = NULL; ; ++str) {
if (*str == c) {
save = (char *)str;
}
if (*str == 0) {
return (save);
}
}
}
#endif #endif

View File

@ -17,14 +17,14 @@ void* memcpy(void *dst, const void *src, size_t len) __attribute__ ((used));
#endif #endif
inline void* memmove(void *dst, const void *src, size_t len) static inline __attribute__((always_inline)) void* memmove(void *dst, const void *src, size_t len)
{ {
return CopyMem(dst, (void*)(src), len); return CopyMem(dst, (void*)(src), len);
} }
void* memcpy(void *dst, const void *src, size_t len); void* memcpy(void *dst, const void *src, size_t len);
//inline void* memcpy(void *dst, const void *src, size_t len) //static inline __attribute__((always_inline)) void* memcpy(void *dst, const void *src, size_t len)
//{ //{
// return CopyMem(dst,src,len); // return CopyMem(dst,src,len);
//} //}
@ -33,7 +33,7 @@ int memcmp(const void *s1, const void *s2, size_t n);
size_t strlen(const char *str); size_t strlen(const char *str);
inline char* strcat(char* s1, const char* s2) static inline __attribute__((always_inline)) char* strcat(char* s1, const char* s2)
{ {
AsciiStrCatS(s1, AsciiStrLen(s1)+1, s2); AsciiStrCatS(s1, AsciiStrLen(s1)+1, s2);
return s1; return s1;
@ -42,13 +42,13 @@ inline char* strcat(char* s1, const char* s2)
char* strncat(char* s1, const char* s2, size_t n); char* strncat(char* s1, const char* s2, size_t n);
inline char* strcpy(char* dst, const char* src) static inline __attribute__((always_inline)) char* strcpy(char* dst, const char* src)
{ {
AsciiStrCpyS(dst,AsciiStrLen(src)+1,src); AsciiStrCpyS(dst,AsciiStrLen(src)+1,src);
return dst; return dst;
} }
inline char* strncpy(char * dst, const char * src, size_t len) static inline __attribute__((always_inline)) char* strncpy(char * dst, const char * src, size_t len)
{ {
AsciiStrnCpyS(dst,(UINTN)len+1,src,(UINTN)len); AsciiStrnCpyS(dst,(UINTN)len+1,src,(UINTN)len);
return dst; return dst;
@ -60,20 +60,36 @@ int strncmp(const char* s1, const char* s2, size_t n);
int strncmp(const char *s1, const char *s2, size_t n); int strncmp(const char *s1, const char *s2, size_t n);
extern void* memset(void *b, int c, size_t len); // memset is defined in cpp_util/memory.cpp because it is required by c++ void* memset(void *b, int c, size_t len); // memset is defined in cpp_util/memory.cpp because it is required by c++
//inline void* memset(void *b, int c, size_t len) //static inline __attribute__((always_inline)) void* memset(void *b, int c, size_t len)
//{ //{
// SetMem(b, len, c); // SetMem(b, len, c);
// return b; // return b;
//} //}
//inline char* strncat(char *restrict s1, const char *restrict s2, size_t n) //static inline __attribute__((always_inline)) char* strncat(char *restrict s1, const char *restrict s2, size_t n)
//{ //{
// return AsciiStrCatS(s1, AsciiStrLen(strDest)+1,strSource) // return AsciiStrCatS(s1, AsciiStrLen(strDest)+1,strSource)
//} //}
// //
char* strstr(const char *haystack, const char *needle); static inline __attribute__((always_inline)) char* strchr(const char *s, int c)
{
return (char*)ScanMem8((void *)(s),AsciiStrSize(s),(UINT8)c);
}
/* Scan a string for the last occurrence of a character */
char* strrchr (const char *str, int c);
char* strstr(const char *haystack, const char *needle);
/* Computes the length of the maximum initial segment of the string pointed to by s1
which consists entirely of characters from the string pointed to by s2. */
size_t strspn(const char *s1, const char *s2);
/* Computes the length of the maximum initial segment of the string pointed to by s1
which consists entirely of characters not from the string pointed to by s2. */
size_t strcspn(const char *s1, const char *s2);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -8,8 +8,7 @@
#ifndef strings_h #ifndef strings_h
#define strings_h #define strings_h
//#include <stdio.h> #include "stddef.h"
#include <stddef.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {

View File

@ -39,7 +39,7 @@
#include <Platform.h> #include <Platform.h>
#include "entry_scan.h" #include "entry_scan.h"
#include "../../Library/OpensslLib/openssl-1.0.1e/include/openssl/sha.h" #include <openssl/sha.h>
#include <Guid/ImageAuthentication.h> #include <Guid/ImageAuthentication.h>
#include <IndustryStandard/PeImage.h> #include <IndustryStandard/PeImage.h>
//#include <IndustryStandard/PeImage2.h> //#include <IndustryStandard/PeImage2.h>

View File

@ -45,11 +45,14 @@
#include "securebootkeys.h" #include "securebootkeys.h"
#include "../../Library/OpensslLib/Include/OpenSslSupport.h" #include <openssl/configuration.h>
#include "../../Library/OpensslLib/openssl-1.0.1e/include/openssl/err.h" #undef OPENSSL_NO_DEPRECATED
#include "../../Library/OpensslLib/openssl-1.0.1e/include/openssl/pem.h"
#include "../../Library/OpensslLib/openssl-1.0.1e/include/openssl/sha.h" #include <openssl/types.h>
#include "../../Library/OpensslLib/openssl-1.0.1e/include/openssl/bio.h" #include <openssl/pkcs7.h>
#include <openssl/err.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
#ifndef DEBUG_ALL #ifndef DEBUG_ALL
#define DEBUG_SECURE_VARS 1 #define DEBUG_SECURE_VARS 1

View File

@ -1,20 +0,0 @@
//#ifndef SMC_HELPER_H
//#define SMC_HELPER_H
#include <Library/BaseLib.h>
#include <Library/UefiLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/DebugLib.h>
#include <Library/PrintLib.h>
#include <Library/MemLogLib.h>
#include <Protocol/AppleSMC.h>
EFI_STATUS SMCHelperInstall(EFI_HANDLE* Handle);
//#endif

View File

@ -162,8 +162,7 @@
include/QuirksCodes.h include/QuirksCodes.h
include/remove_ref.h include/remove_ref.h
include/rename_helper.h include/rename_helper.h
include/SmcHelper.h include/syslinux_mbr.h
include/syslinux_mbr.h
include/TagTypes.h include/TagTypes.h
include/VolumeTypes.h include/VolumeTypes.h
libeg/AppleImageCodec.cpp libeg/AppleImageCodec.cpp
@ -342,6 +341,8 @@
PlatformEFI/include/printf_lite-test-cpp_conf.h PlatformEFI/include/printf_lite-test-cpp_conf.h
PlatformEFI/include/printlib-test-cpp_conf.h PlatformEFI/include/printlib-test-cpp_conf.h
PlatformEFI/include/XToolsConf.h PlatformEFI/include/XToolsConf.h
PlatformEFI/posix/assert.cpp
PlatformEFI/posix/assert.h
PlatformEFI/posix/abort.cpp PlatformEFI/posix/abort.cpp
PlatformEFI/posix/abort.h PlatformEFI/posix/abort.h
PlatformEFI/posix/limits.h PlatformEFI/posix/limits.h
@ -417,8 +418,8 @@
IntelFrameworkPkg/IntelFrameworkPkg.dec IntelFrameworkPkg/IntelFrameworkPkg.dec
IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
UefiCpuPkg/UefiCpuPkg.dec UefiCpuPkg/UefiCpuPkg.dec
# Library/OpensslLib/openssl-1.0.1e/OpensslLib.dec
OpenCorePkg/OpenCorePkg.dec # put this at this end of Packages list to avoid conflict with some includes OpenCorePkg/OpenCorePkg.dec # put this at this end of Packages list to avoid conflict with some includes
Library/OpensslLib/OpensslLib.dec # for secureboot. If secureboot is not enabled, OpensslLib = OpensslLibNull
[LibraryClasses] [LibraryClasses]
UefiApplicationEntryPoint UefiApplicationEntryPoint
@ -429,17 +430,18 @@
BaseLib BaseLib
DevicePathLib DevicePathLib
DxeServicesTableLib # for gDS DxeServicesTableLib # for gDS
DxeServicesLib
HdaDevicesLib HdaDevicesLib
HobLib HobLib
IoLib IoLib
MemLogLib MemLogLib
VideoBiosPatchLib VideoBiosPatchLib
# OpensslLib # for secureboot, I think
WaveLib WaveLib
OcMainLib OcMainLib
DebugLib DebugLib
OcDebugLogLibOc2Clover OcDebugLogLibOc2Clover
CppMemLib CppMemLib
OpensslLib # for secureboot. If secureboot is not enabled, OpensslLib = OpensslLibNull
[Guids] [Guids]
gEfiAcpiTableGuid gEfiAcpiTableGuid