From 28b76c3df7d5350670ceaa02a849a464ef6bb178 Mon Sep 17 00:00:00 2001 From: vit9696 Date: Mon, 13 May 2019 22:00:33 +0300 Subject: [PATCH] OcSmbiosLib: Debugging cleanup and Auto mode removal --- Include/Library/OcSmbiosLib.h | 8 +- Library/OcSmbiosLib/SmbiosPatch.c | 78 ++++++++++------- Tests/SmbiosTest/SmbiosTest.c | 2 +- TestsUser/DiskImage/DiskImage.c | 4 - TestsUser/Include/Base.h | 139 ++++++++++++++++-------------- TestsUser/Props/Props.c | 4 - TestsUser/Smbios/Smbios.c | 8 +- 7 files changed, 129 insertions(+), 114 deletions(-) diff --git a/Include/Library/OcSmbiosLib.h b/Include/Library/OcSmbiosLib.h index 225be861..a28af47f 100644 --- a/Include/Library/OcSmbiosLib.h +++ b/Include/Library/OcSmbiosLib.h @@ -103,7 +103,7 @@ typedef enum OC_SMBIOS_UPDATE_MODE_ { // OcSmbiosUpdateOverwrite if new size is <= than the page-aligned original and // there are no issues with legacy region unlock. OcSmbiosUpdateCreate otherwise. // - OcSmbiosUpdateAuto = 0, + OcSmbiosUpdateTryOverwrite = 0, // // Replace the tables with newly allocated. Normally it is in EfiRuntimeData (EDK 2), but // boot.efi relocates EfiRuntimeData unless AptioMemoryFix is used, so it is incorrect. @@ -117,19 +117,19 @@ typedef enum OC_SMBIOS_UPDATE_MODE_ { // UEFI 2.7A specification (page 166). // * We allocate EfiReservedMemoryType at AllocateMaxAddress without any fallbacks. // - OcSmbiosUpdateCreate = 1, + OcSmbiosUpdateCreate = 1, // // Overwrite existing gEfiSmbiosTableGuid and gEfiSmbiosTable3Guid data if it fits new size. // Abort with unspecified state otherwise. // - OcSmbiosUpdateOverwrite = 2, + OcSmbiosUpdateOverwrite = 2, // // Writes first SMBIOS table (gEfiSmbiosTableGuid) to gOcCustomSmbiosTableGuid to workaround // firmwares overwriting SMBIOS contents at ExitBootServices. Otherwise equivalent to // OcSmbiosUpdateCreate. Requires patching AppleSmbios.kext and AppleACPIPlatform.kext to read // from another GUID: "EB9D2D31" -> "EB9D2D35" (in ASCII). // - OcSmbiosUpdateCustom = 3, + OcSmbiosUpdateCustom = 3, } OC_SMBIOS_UPDATE_MODE; EFI_STATUS diff --git a/Library/OcSmbiosLib/SmbiosPatch.c b/Library/OcSmbiosLib/SmbiosPatch.c index 8fd4a13c..b7217247 100755 --- a/Library/OcSmbiosLib/SmbiosPatch.c +++ b/Library/OcSmbiosLib/SmbiosPatch.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -405,7 +406,9 @@ PatchCacheInformation ( NumberEntries = SmbiosGetOriginalStructureCount (SMBIOS_TYPE_CACHE_INFORMATION); - for (EntryNo = 1; EntryNo <= NumberEntries; EntryNo++) { + DEBUG ((DEBUG_INFO, "OCSMB: Number of CPU cache entries is %u\n", (UINT32) NumberEntries)); + + for (EntryNo = 1; EntryNo <= NumberEntries; ++EntryNo) { Original = SmbiosGetOriginalStructure (SMBIOS_TYPE_CACHE_INFORMATION, EntryNo); if (Original.Raw == NULL || !SMBIOS_ACCESSIBLE (Original, Standard.Type7->CacheConfiguration)) { continue; @@ -790,7 +793,7 @@ PatchMemoryMappedAddress ( // // The value is reasonably large enough for this to never happen, yet just in case. // - DEBUG ((DEBUG_WARN, "OC_SMBIOS_MAX_MAPPING exceeded\n")); + DEBUG ((DEBUG_WARN, "OCSMB: OC_SMBIOS_MAX_MAPPING exceeded\n")); } SmbiosFinaliseStruct (Table); @@ -1091,7 +1094,7 @@ SmbiosHandleLegacyRegion ( ); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_INFO, "LegacyRegionUnlock DMI anchor failure - %r\n", Status)); + DEBUG ((DEBUG_INFO, "OCSMB: LegacyRegionUnlock DMI anchor failure - %r\n", Status)); return Status; } } @@ -1106,7 +1109,7 @@ SmbiosHandleLegacyRegion ( ); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_INFO, "LegacyRegionUnlock DMI table failure - %r\n", Status)); + DEBUG ((DEBUG_INFO, "OCSMB: LegacyRegionUnlock DMI table failure - %r\n", Status)); return Status; } } @@ -1121,7 +1124,7 @@ SmbiosHandleLegacyRegion ( ); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_INFO, "LegacyRegionLock DMI table failure - %r\n", Status)); + DEBUG ((DEBUG_INFO, "OCSMB: LegacyRegionLock DMI table failure - %r\n", Status)); return Status; } } @@ -1136,7 +1139,7 @@ SmbiosHandleLegacyRegion ( ); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_INFO, "LegacyRegionLock DMI anchor failure - %r\n", Status)); + DEBUG ((DEBUG_INFO, "OCSMB: LegacyRegionLock DMI anchor failure - %r\n", Status)); return Status; } } @@ -1178,7 +1181,7 @@ SmbiosPrepareTable ( // if (!EFI_ERROR (Status)) { if (mOriginalSmbios->EntryPointLength < sizeof (SMBIOS_TABLE_ENTRY_POINT)) { - DEBUG ((DEBUG_WARN, "SmbiosLookupHost entry is too small - %u/%u bytes\n", + DEBUG ((DEBUG_WARN, "OCSMB: SmbiosLookupHost entry is too small - %u/%u bytes\n", mOriginalSmbios->EntryPointLength, (UINT32) sizeof (SMBIOS_TABLE_ENTRY_POINT))); mOriginalSmbios = NULL; } else if (mOriginalSmbios->TableAddress == 0 || mOriginalSmbios->TableLength == 0) { @@ -1187,12 +1190,12 @@ SmbiosPrepareTable ( && SMBIOS_TABLE_MAX_LENGTH == MAX_UINT16, "mOriginalTable->TableLength may exceed SMBIOS_TABLE_MAX_LENGTH" ); - DEBUG ((DEBUG_WARN, "SmbiosLookupHost entry has invalid table - %08X of %u bytes\n", + DEBUG ((DEBUG_WARN, "OCSMB: SmbiosLookupHost entry has invalid table - %08X of %u bytes\n", mOriginalSmbios->TableAddress, mOriginalSmbios->TableLength)); mOriginalSmbios = NULL; } } else { - DEBUG ((DEBUG_WARN, "SmbiosLookupHost failed to lookup SMBIOSv1 - %r\n", Status)); + DEBUG ((DEBUG_WARN, "OCSMB: SmbiosLookupHost failed to lookup SMBIOSv1 - %r\n", Status)); } // @@ -1205,7 +1208,7 @@ SmbiosPrepareTable ( if (!EFI_ERROR (Status)) { if (mOriginalSmbios3->EntryPointLength < sizeof (SMBIOS_TABLE_3_0_ENTRY_POINT)) { - DEBUG ((DEBUG_INFO, "SmbiosLookupHost v3 entry is too small - %u/%u bytes\n", + DEBUG ((DEBUG_INFO, "OCSMB: SmbiosLookupHost v3 entry is too small - %u/%u bytes\n", mOriginalSmbios3->EntryPointLength, (UINT32) sizeof (SMBIOS_TABLE_3_0_ENTRY_POINT))); mOriginalSmbios3 = NULL; } else if (mOriginalSmbios3->TableAddress == 0 || mOriginalSmbios3->TableMaximumSize == 0) { @@ -1214,21 +1217,18 @@ SmbiosPrepareTable ( && SMBIOS_3_0_TABLE_MAX_LENGTH == MAX_UINT32, "mOriginalSmbios3->TableMaximumSize may exceed SMBIOS_3_0_TABLE_MAX_LENGTH" ); - DEBUG ((DEBUG_INFO, "SmbiosLookupHost v3 entry has invalid table - %016LX of %u bytes\n", + DEBUG ((DEBUG_INFO, "OCSMB: SmbiosLookupHost v3 entry has invalid table - %016LX of %u bytes\n", mOriginalSmbios3->TableAddress, mOriginalSmbios3->TableMaximumSize)); mOriginalSmbios3 = NULL; } } else { - DEBUG ((DEBUG_INFO, "SmbiosLookupHost failed to lookup SMBIOSv3 - %r\n", Status)); + DEBUG ((DEBUG_INFO, "OCSMB: SmbiosLookupHost failed to lookup SMBIOSv3 - %r\n", Status)); } // // TODO: I think we may want to try harder. // - // - // Pad the table length to a page and calculate byte size. - // if (mOriginalSmbios != NULL) { mOriginalTableSize = mOriginalSmbios->TableLength; mOriginalTable.Raw = (UINT8 *)(UINTN) mOriginalSmbios->TableAddress; @@ -1240,7 +1240,7 @@ SmbiosPrepareTable ( if (mOriginalSmbios != NULL) { DEBUG (( DEBUG_INFO, - "Found DMI Anchor %08LX v%u.%u Table Address %08LX Length %04X\n", + "OCSMB: Found DMI Anchor %08LX v%u.%u Table Address %08LX Length %04X\n", (UINT64) mOriginalSmbios, mOriginalSmbios->MajorVersion, mOriginalSmbios->MinorVersion, @@ -1252,7 +1252,7 @@ SmbiosPrepareTable ( if (mOriginalSmbios3 != NULL) { DEBUG (( DEBUG_INFO, - "Found DMI Anchor %08LX v%u.%u Table Address %08LX Length %04X\n", + "OCSMB: Found DMI Anchor %08LX v%u.%u Table Address %08LX Length %04X\n", (UINT64) mOriginalSmbios3, mOriginalSmbios3->MajorVersion, mOriginalSmbios3->MinorVersion, @@ -1263,7 +1263,7 @@ SmbiosPrepareTable ( Status = SmbiosExtendTable (SmbiosTable, 1); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_VERBOSE, "SmbiosLookupHost failed to initialise smbios table - %r\n", Status)); + DEBUG ((DEBUG_VERBOSE, "OCSMB: SmbiosLookupHost failed to initialise smbios table - %r\n", Status)); } return Status; @@ -1309,8 +1309,8 @@ SmbiosTableAllocate ( } if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_WARN, "SmbiosTableAllocate aborts as it cannot allocate SMBIOS pages with %d %d %d\n", - *TableEntryPoint != NULL, *TableAddress != NULL, *TableEntryPoint3 != NULL)); + DEBUG ((DEBUG_WARN, "OCSMB: SmbiosTableAllocate aborts as it cannot allocate SMBIOS pages with %d %d %d - %r\n", + *TableEntryPoint != NULL, *TableAddress != NULL, *TableEntryPoint3 != NULL, Status)); if (*TableEntryPoint != NULL) { FreePages (*TableEntryPoint, 1); } @@ -1349,7 +1349,7 @@ SmbiosTableApply ( ASSERT (Mode == OcSmbiosUpdateCreate || Mode == OcSmbiosUpdateOverwrite || Mode == OcSmbiosUpdateCustom - || Mode == OcSmbiosUpdateAuto + || Mode == OcSmbiosUpdateTryOverwrite ); // @@ -1357,11 +1357,24 @@ SmbiosTableApply ( // TableLength = (UINT16) (SmbiosTable->CurrentPtr.Raw - SmbiosTable->Table); - if (Mode == OcSmbiosUpdateAuto || Mode == OcSmbiosUpdateOverwrite) { + DEBUG (( + DEBUG_INFO, + "OCSMB: Applying %u (%d) prev %p (%u/%u), %p (%u/%u)\n", + (UINT32) TableLength, + Mode, + mOriginalSmbios, + (UINT32) (mOriginalSmbios != NULL ? mOriginalSmbios->TableLength : 0), + (UINT32) (mOriginalSmbios != NULL ? mOriginalSmbios->EntryPointLength : 0), + mOriginalSmbios3, + (UINT32) (mOriginalSmbios3 != NULL ? mOriginalSmbios3->TableMaximumSize : 0), + (UINT32) (mOriginalSmbios3 != NULL ? mOriginalSmbios3->EntryPointLength : 0) + )); + + if (Mode == OcSmbiosUpdateTryOverwrite || Mode == OcSmbiosUpdateOverwrite) { Status = SmbiosHandleLegacyRegion (TRUE); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_WARN, "SmbiosTableApply(%u) cannot handle legacy region - %r\n", Mode, Status)); + DEBUG ((DEBUG_WARN, "OCSMB: Apply(%u) cannot handle legacy region - %r\n", Mode, Status)); if (Mode == OcSmbiosUpdateOverwrite) { return Status; } @@ -1372,7 +1385,7 @@ SmbiosTableApply ( Mode = OcSmbiosUpdateCreate; } else if (mOriginalSmbios == NULL || TableLength > mOriginalSmbios->TableLength || mOriginalSmbios->EntryPointLength < sizeof (SMBIOS_TABLE_ENTRY_POINT)) { - DEBUG ((DEBUG_WARN, "SmbiosTableApply(%u) cannot update old SMBIOS (%p, %u, %u) with %u\n", + DEBUG ((DEBUG_WARN, "OCSMB: Apply(%u) cannot update old SMBIOS (%p, %u, %u) with %u\n", Mode, mOriginalSmbios, mOriginalSmbios != NULL ? mOriginalSmbios->TableLength : 0, mOriginalSmbios != NULL ? mOriginalSmbios->EntryPointLength : 0, TableLength)); if (Mode == OcSmbiosUpdateOverwrite) { @@ -1384,15 +1397,18 @@ SmbiosTableApply ( Mode = OcSmbiosUpdateCreate; } else if (mOriginalSmbios3 != NULL && (TableLength > mOriginalSmbios3->TableMaximumSize || mOriginalSmbios3->EntryPointLength < sizeof (SMBIOS_TABLE_3_0_ENTRY_POINT))) { - DEBUG ((DEBUG_INFO, "SmbiosTableApply(%u) cannot fit SMBIOSv3 (%p, %u, %u) with %u\n", + DEBUG ((DEBUG_INFO, "OCSMB: Apply(%u) cannot fit SMBIOSv3 (%p, %u, %u) with %u\n", Mode, mOriginalSmbios3, mOriginalSmbios3->EntryPointLength, mOriginalSmbios3->TableMaximumSize, TableLength)); + if (Mode == OcSmbiosUpdateOverwrite) { + return EFI_OUT_OF_RESOURCES; + } Mode = OcSmbiosUpdateCreate; } else { Mode = OcSmbiosUpdateOverwrite; } } - ASSERT (Mode != OcSmbiosUpdateAuto); + ASSERT (Mode != OcSmbiosUpdateTryOverwrite); if (Mode != OcSmbiosUpdateOverwrite) { Status = SmbiosTableAllocate ( @@ -1410,9 +1426,11 @@ SmbiosTableApply ( TableEntryPoint3 = mOriginalSmbios3; TableAddress = (VOID *)(UINTN) TableEntryPoint->TableAddress; ZeroMem (TableEntryPoint, sizeof (SMBIOS_TABLE_ENTRY_POINT)); + ZeroMem (TableAddress, TableEntryPoint->TableLength); if (TableEntryPoint3 != NULL) { TableAddress3 = (VOID *)(UINTN) TableEntryPoint3->TableAddress; ZeroMem (TableEntryPoint3, sizeof (SMBIOS_TABLE_3_0_ENTRY_POINT)); + ZeroMem (TableAddress3, TableEntryPoint3->TableMaximumSize); } else { TableAddress3 = NULL; } @@ -1478,7 +1496,7 @@ SmbiosTableApply ( DEBUG (( DEBUG_INFO, - "Patched %08LX v%d.%d Table Address %08LX Length %04X %X %X\n", + "OCSMB: Patched %08LX v%d.%d Table Address %08LX Length %04X %X %X\n", (UINT64) TableEntryPoint, TableEntryPoint->MajorVersion, TableEntryPoint->MinorVersion, @@ -1498,7 +1516,7 @@ SmbiosTableApply ( ); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_WARN, "Failed to install v3 table - %r\n", Status)); + DEBUG ((DEBUG_WARN, "OCSMB: Failed to install v3 table - %r\n", Status)); } } @@ -1508,7 +1526,7 @@ SmbiosTableApply ( ); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_WARN, "Failed to install v1 table - %r\n", Status)); + DEBUG ((DEBUG_WARN, "OCSMB: Failed to install v1 table - %r\n", Status)); return Status; } } @@ -1548,7 +1566,7 @@ CreateSmbios ( Mapping = AllocatePool (OC_SMBIOS_MAX_MAPPING * sizeof (*Mapping)); if (Mapping == NULL) { - DEBUG ((DEBUG_WARN, "Cannot allocate mapping table\n")); + DEBUG ((DEBUG_WARN, "OCSMB: Cannot allocate mapping table\n")); return EFI_OUT_OF_RESOURCES; } diff --git a/Tests/SmbiosTest/SmbiosTest.c b/Tests/SmbiosTest/SmbiosTest.c index e19ec3ac..db5edfb3 100644 --- a/Tests/SmbiosTest/SmbiosTest.c +++ b/Tests/SmbiosTest/SmbiosTest.c @@ -85,7 +85,7 @@ TestSmbios ( { OC_CPU_INFO CpuInfo; OcCpuScanProcessor (&CpuInfo); - CreateSmbios (&Data, OcSmbiosUpdateAuto, &CpuInfo); + CreateSmbios (&Data, OcSmbiosUpdateCreate, &CpuInfo); return EFI_SUCCESS; } diff --git a/TestsUser/DiskImage/DiskImage.c b/TestsUser/DiskImage/DiskImage.c index 3ebf451e..24bbf976 100644 --- a/TestsUser/DiskImage/DiskImage.c +++ b/TestsUser/DiskImage/DiskImage.c @@ -46,10 +46,6 @@ uint8_t *readFile(const char *str, long *size) { #include #endif -EFI_STATUS NilInstallConfigurationTable(EFI_GUID *Guid, VOID *Table) { - return EFI_SUCCESS; -} - int main (int argc, char *argv[]) { if (argc < 2) { printf ("Please provide a valid Disk Image path.\n"); diff --git a/TestsUser/Include/Base.h b/TestsUser/Include/Base.h index 61378c67..e428e6d0 100644 --- a/TestsUser/Include/Base.h +++ b/TestsUser/Include/Base.h @@ -1034,61 +1034,61 @@ StrCmp ( } STATIC -CHAR16 -CharToUpper ( - IN CHAR16 Char - ) -{ - if (Char >= L'a' && Char <= L'z') { - return (CHAR16) (Char - (L'a' - L'A')); - } - - return Char; +CHAR16 +CharToUpper ( + IN CHAR16 Char + ) +{ + if (Char >= L'a' && Char <= L'z') { + return (CHAR16) (Char - (L'a' - L'A')); + } + + return Char; } STATIC -CHAR16 * -StrStr ( - IN CONST CHAR16 *String, - IN CONST CHAR16 *SearchString - ) -{ - CONST CHAR16 *FirstMatch; - CONST CHAR16 *SearchStringTmp; - - // - // ASSERT both strings are less long than PcdMaximumUnicodeStringLength. - // Length tests are performed inside StrLen(). - // - ASSERT (StrSize (String) != 0); - ASSERT (StrSize (SearchString) != 0); - - if (*SearchString == L'\0') { - return (CHAR16 *) String; - } - - while (*String != L'\0') { - SearchStringTmp = SearchString; - FirstMatch = String; - - while ((*String == *SearchStringTmp) - && (*String != L'\0')) { - String++; - SearchStringTmp++; - } - - if (*SearchStringTmp == L'\0') { - return (CHAR16 *) FirstMatch; - } - - if (*String == L'\0') { - return NULL; - } - - String = FirstMatch + 1; - } - - return NULL; +CHAR16 * +StrStr ( + IN CONST CHAR16 *String, + IN CONST CHAR16 *SearchString + ) +{ + CONST CHAR16 *FirstMatch; + CONST CHAR16 *SearchStringTmp; + + // + // ASSERT both strings are less long than PcdMaximumUnicodeStringLength. + // Length tests are performed inside StrLen(). + // + ASSERT (StrSize (String) != 0); + ASSERT (StrSize (SearchString) != 0); + + if (*SearchString == L'\0') { + return (CHAR16 *) String; + } + + while (*String != L'\0') { + SearchStringTmp = SearchString; + FirstMatch = String; + + while ((*String == *SearchStringTmp) + && (*String != L'\0')) { + String++; + SearchStringTmp++; + } + + if (*SearchStringTmp == L'\0') { + return (CHAR16 *) FirstMatch; + } + + if (*String == L'\0') { + return NULL; + } + + String = FirstMatch + 1; + } + + return NULL; } STATIC @@ -1651,23 +1651,23 @@ CalculateCrc32( #define END_DEVICE_PATH_LENGTH (sizeof (EFI_DEVICE_PATH_PROTOCOL)) -STATIC CONST EFI_DEVICE_PATH_PROTOCOL mUefiDevicePathLibEndDevicePath = { - END_DEVICE_PATH_TYPE, - END_ENTIRE_DEVICE_PATH_SUBTYPE, - { - END_DEVICE_PATH_LENGTH, - 0 - } +STATIC CONST EFI_DEVICE_PATH_PROTOCOL mUefiDevicePathLibEndDevicePath = { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + { + END_DEVICE_PATH_LENGTH, + 0 + } }; STATIC -VOID -SetDevicePathEndNode ( - OUT VOID *Node - ) -{ - ASSERT (Node != NULL); - CopyMem (Node, &mUefiDevicePathLibEndDevicePath, sizeof (mUefiDevicePathLibEndDevicePath)); +VOID +SetDevicePathEndNode ( + OUT VOID *Node + ) +{ + ASSERT (Node != NULL); + CopyMem (Node, &mUefiDevicePathLibEndDevicePath, sizeof (mUefiDevicePathLibEndDevicePath)); } @@ -1755,12 +1755,17 @@ STATIC EFI_STATUS NilLocateDevicePath (EFI_GUID *Protocol, EFI_DEVICE_PATH_PROTO return EFI_UNSUPPORTED; } +extern EFI_STATUS NilInstallConfigurationTableCustom(EFI_GUID *Guid, VOID *Table); + +#ifndef CONFIG_TABLE_INSTALLER +#define CONFIG_TABLE_INSTALLER NilInstallConfigurationTable +#endif STATIC EFI_BOOT_SERVICES gNilBS = { .LocateProtocol = NilLocateProtocol, .AllocatePages = NilAllocatePages, .FreePages = NilFreePages, - .InstallConfigurationTable = NilInstallConfigurationTable, + .InstallConfigurationTable = CONFIG_TABLE_INSTALLER, .LocateHandleBuffer = NilLocateHandleBuffer, .HandleProtocol = NilHandleProtocol, .InstallProtocolInterface = NilInstallProtocolInterface, diff --git a/TestsUser/Props/Props.c b/TestsUser/Props/Props.c index f2a221de..54f2e357 100644 --- a/TestsUser/Props/Props.c +++ b/TestsUser/Props/Props.c @@ -53,10 +53,6 @@ EFI_GUID gEfiVirtualDiskGuid; _Thread_local uint32_t externalUsedPages = 0; _Thread_local uint8_t externalBlob[EFI_PAGE_SIZE*TOTAL_PAGES]; -EFI_STATUS NilInstallConfigurationTable(EFI_GUID *Guid, VOID *Table) { - return EFI_SUCCESS; -} - int main(int argc, char** argv) { return 0; diff --git a/TestsUser/Smbios/Smbios.c b/TestsUser/Smbios/Smbios.c index ee62fe78..0464744b 100644 --- a/TestsUser/Smbios/Smbios.c +++ b/TestsUser/Smbios/Smbios.c @@ -19,10 +19,10 @@ #include /* - clang -g -fsanitize=undefined,address -I../Include -I../../Include -I../../../EfiPkg/Include/ -I../../../MdePkg/Include/ -I../../../UefiCpuPkg/Include/ -include ../Include/Base.h Smbios.c ../../Library/OcSmbiosLib/DebugSmbios.c ../../Library/OcSmbiosLib/SmbiosInternal.c ../../Library/OcSmbiosLib/SmbiosPatch.c ../../Library/OcStringLib/OcAsciiLib.c ../../Library/OcMiscLib/LegacyRegionLock.c ../../Library/OcMiscLib/LegacyRegionUnlock.c ../../Library/OcCpuLib/OcCpuLib.c -o Smbios + clang -g -fshort-wchar -DCONFIG_TABLE_INSTALLER=NilInstallConfigurationTableCustom -fsanitize=undefined,address -I../Include -I../../Include -I../../../EfiPkg/Include/ -I../../../MdePkg/Include/ -I../../../UefiCpuPkg/Include/ -include ../Include/Base.h Smbios.c ../../Library/OcSmbiosLib/DebugSmbios.c ../../Library/OcSmbiosLib/SmbiosInternal.c ../../Library/OcSmbiosLib/SmbiosPatch.c ../../Library/OcStringLib/OcAsciiLib.c ../../Library/OcMiscLib/LegacyRegionLock.c ../../Library/OcMiscLib/LegacyRegionUnlock.c ../../Library/OcCpuLib/OcCpuLib.c -o Smbios for fuzzing: - clang-mp-7.0 -Dmain=__main -g -fsanitize=undefined,address,fuzzer -I../Include -I../../Include -I../../../EfiPkg/Include/ -I../../../MdePkg/Include/ -I../../../UefiCpuPkg/Include/ -include ../Include/Base.h Smbios.c ../../Library/OcSmbiosLib/DebugSmbios.c ../../Library/OcSmbiosLib/SmbiosInternal.c ../../Library/OcSmbiosLib/SmbiosPatch.c ../../Library/OcStringLib/OcAsciiLib.c ../../Library/OcMiscLib/LegacyRegionLock.c ../../Library/OcMiscLib/LegacyRegionUnlock.c ../../Library/OcCpuLib/OcCpuLib.c -o Smbios + clang-mp-7.0 -fshort-wchar -DCONFIG_TABLE_INSTALLER=NilInstallConfigurationTableCustom -Dmain=__main -g -fsanitize=undefined,address,fuzzer -I../Include -I../../Include -I../../../EfiPkg/Include/ -I../../../MdePkg/Include/ -I../../../UefiCpuPkg/Include/ -include ../Include/Base.h Smbios.c ../../Library/OcSmbiosLib/DebugSmbios.c ../../Library/OcSmbiosLib/SmbiosInternal.c ../../Library/OcSmbiosLib/SmbiosPatch.c ../../Library/OcStringLib/OcAsciiLib.c ../../Library/OcMiscLib/LegacyRegionLock.c ../../Library/OcMiscLib/LegacyRegionUnlock.c ../../Library/OcCpuLib/OcCpuLib.c -o Smbios rm -rf DICT fuzz*.log ; mkdir DICT ; cp Smbios.bin DICT ; ./Smbios -jobs=4 DICT @@ -108,7 +108,7 @@ EFI_STATUS EfiGetSystemConfigurationTable (EFI_GUID *TableGuid, OUT VOID **Table return EFI_NOT_FOUND; } -EFI_STATUS NilInstallConfigurationTable(EFI_GUID *Guid, VOID *Table) { +EFI_STATUS NilInstallConfigurationTableCustom(EFI_GUID *Guid, VOID *Table) { printf("Set table %p, looking for %p\n", Guid, &gEfiSmbios3TableGuid); if (Guid == &gEfiSmbios3TableGuid && doDump) { SMBIOS_TABLE_3_0_ENTRY_POINT *Ep = (SMBIOS_TABLE_3_0_ENTRY_POINT *) Table; @@ -140,7 +140,7 @@ int main(int argc, char** argv) { CreateSmbios ( &SmbiosData, - 0, + 1, &CpuInfo );