* OvmfPkgX64: PlatformInitLib.lib(IntelTdx.obj): in function `ValidateHobList': undefined reference to `memcpy' (CLANG38 NOOPT) @ 2022-09-22 21:07 Rebecca Cran 2022-09-22 21:32 ` [edk2-devel] " Ard Biesheuvel 0 siblings, 1 reply; 3+ messages in thread From: Rebecca Cran @ 2022-09-22 21:07 UTC (permalink / raw) To: edk2-devel-groups-io, Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann I just noticed that edk2 master seems broken when building OvmfPkgX64.dsc with -t CLANG38 -b NOOPT (using Debian clang version 11.0.1-2). "clang" -o /home/rcran/src/upstream/uefi/edk2/Build/OvmfX64/NOOPT_CLANG38/X64/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe/DEBUG/DiskIoDxe.dll -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x40 -Wl,--entry,_ModuleEntryPoint -u _ModuleEntryPoint -Wl,-Map,/home/rcran/src/upstream/uefi/edk2/Build/OvmfX64/NOOPT_CLANG38/X64/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe/DEBUG/DiskIoDxe.map,--whole-archive -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--start-group,@/home/rcran/src/upstream/uefi/edk2/Build/OvmfX64/NOOPT_CLANG38/X64/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe/OUTPUT/static_library_files.lst,--end-group -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common -ffunction-sections -fdata-sections -DSTRING_ARRAY_NAME=DiskIoDxeStrings -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 -target x86_64-pc-linux-gnu -g -mno-mmx -mno-sse -D DISABLE_NEW_DEPRECATED_INTERFACES -D TDX_GUEST_SUPPORTED -D ENABLE_MD5_DEPRECATED_INTERFACES -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 -Wl,--script=/home/rcran/src/upstream/uefi/edk2/BaseTools/Scripts/GccBase.lds -Wno-error -O0 /usr/bin/ld: /home/rcran/src/upstream/uefi/edk2/Build/OvmfX64/NOOPT_CLANG38/X64/OvmfPkg/Library/PlatformInitLib/PlatformInitLib/OUTPUT/PlatformInitLib.lib(IntelTdx.obj): in function `ValidateHobList': /home/rcran/src/upstream/uefi/edk2/OvmfPkg/Library/PlatformInitLib/IntelTdx.c:191: undefined reference to `memcpy' -- Rebecca Cran ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [edk2-devel] OvmfPkgX64: PlatformInitLib.lib(IntelTdx.obj): in function `ValidateHobList': undefined reference to `memcpy' (CLANG38 NOOPT) 2022-09-22 21:07 OvmfPkgX64: PlatformInitLib.lib(IntelTdx.obj): in function `ValidateHobList': undefined reference to `memcpy' (CLANG38 NOOPT) Rebecca Cran @ 2022-09-22 21:32 ` Ard Biesheuvel 2022-09-22 22:52 ` Rebecca Cran 0 siblings, 1 reply; 3+ messages in thread From: Ard Biesheuvel @ 2022-09-22 21:32 UTC (permalink / raw) To: devel, quic_rcran Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann On Thu, 22 Sept 2022 at 23:12, Rebecca Cran <quic_rcran@quicinc.com> wrote: > > I just noticed that edk2 master seems broken when building OvmfPkgX64.dsc with -t CLANG38 -b NOOPT (using Debian clang version 11.0.1-2). > > "clang" -o > /home/rcran/src/upstream/uefi/edk2/Build/OvmfX64/NOOPT_CLANG38/X64/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe/DEBUG/DiskIoDxe.dll > -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x40 > -Wl,--entry,_ModuleEntryPoint -u _ModuleEntryPoint > -Wl,-Map,/home/rcran/src/upstream/uefi/edk2/Build/OvmfX64/NOOPT_CLANG38/X64/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe/DEBUG/DiskIoDxe.map,--whole-archive > -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie > -mcmodel=small > -Wl,--start-group,@/home/rcran/src/upstream/uefi/edk2/Build/OvmfX64/NOOPT_CLANG38/X64/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe/OUTPUT/static_library_files.lst,--end-group > -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror > -Wno-array-bounds -include AutoGen.h -fno-common -ffunction-sections > -fdata-sections -DSTRING_ARRAY_NAME=DiskIoDxeStrings > -Wno-parentheses-equality -Wno-tautological-compare > -Wno-tautological-constant-out-of-range-compare -Wno-empty-body > -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option > -Wno-unused-but-set-variable -Wno-unused-const-variable > -fno-stack-protector -mms-bitfields -Wno-address > -Wno-shift-negative-value -Wno-unknown-pragmas > -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables > -mno-sse -mno-mmx -msoft-float -mno-implicit-float > -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang > -funsigned-char -fno-ms-extensions -Wno-null-dereference -m64 > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie > -O0 -target x86_64-pc-linux-gnu -g -mno-mmx -mno-sse -D > DISABLE_NEW_DEPRECATED_INTERFACES -D TDX_GUEST_SUPPORTED -D > ENABLE_MD5_DEPRECATED_INTERFACES -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 > -Wl,--script=/home/rcran/src/upstream/uefi/edk2/BaseTools/Scripts/GccBase.lds > -Wno-error -O0 > /usr/bin/ld: > /home/rcran/src/upstream/uefi/edk2/Build/OvmfX64/NOOPT_CLANG38/X64/OvmfPkg/Library/PlatformInitLib/PlatformInitLib/OUTPUT/PlatformInitLib.lib(IntelTdx.obj): > in function `ValidateHobList': > /home/rcran/src/upstream/uefi/edk2/OvmfPkg/Library/PlatformInitLib/IntelTdx.c:191: > undefined reference to `memcpy' > Hello Rebecca, This appears to be due to the use of initializers for the arrays. Could you please check if the patch below makes the issue go away? diff --git a/OvmfPkg/Library/PlatformInitLib/IntelTdx.c b/OvmfPkg/Library/PlatformInitLib/IntelTdx.c index c6d7c8bb6e0e..0e0e13343b16 100644 --- a/OvmfPkg/Library/PlatformInitLib/IntelTdx.c +++ b/OvmfPkg/Library/PlatformInitLib/IntelTdx.c @@ -153,7 +153,7 @@ BOOLEAN EFIAPI IsInValidList ( IN UINT32 Value, - IN UINT32 *ValidList, + IN CONST UINT32 *ValidList, IN UINT32 ValidListLength ) { @@ -188,7 +188,7 @@ ValidateHobList ( ) { EFI_PEI_HOB_POINTERS Hob; - UINT32 EFI_BOOT_MODE_LIST[] = { + STATIC CONST UINT32 EFI_BOOT_MODE_LIST[] = { BOOT_WITH_FULL_CONFIGURATION, BOOT_WITH_MINIMAL_CONFIGURATION, BOOT_ASSUMING_NO_CONFIGURATION_CHANGES, @@ -203,7 +203,7 @@ ValidateHobList ( BOOT_IN_RECOVERY_MODE }; - UINT32 EFI_RESOURCE_TYPE_LIST[] = { + STATIC CONST UINT32 EFI_RESOURCE_TYPE_LIST[] = { EFI_RESOURCE_SYSTEM_MEMORY, EFI_RESOURCE_MEMORY_MAPPED_IO, EFI_RESOURCE_IO, ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [edk2-devel] OvmfPkgX64: PlatformInitLib.lib(IntelTdx.obj): in function `ValidateHobList': undefined reference to `memcpy' (CLANG38 NOOPT) 2022-09-22 21:32 ` [edk2-devel] " Ard Biesheuvel @ 2022-09-22 22:52 ` Rebecca Cran 0 siblings, 0 replies; 3+ messages in thread From: Rebecca Cran @ 2022-09-22 22:52 UTC (permalink / raw) To: Ard Biesheuvel, devel, quic_rcran Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann On 9/22/22 15:32, Ard Biesheuvel wrote: > This appears to be due to the use of initializers for the arrays. > Could you please check if the patch below makes the issue go away? > > diff --git a/OvmfPkg/Library/PlatformInitLib/IntelTdx.c > b/OvmfPkg/Library/PlatformInitLib/IntelTdx.c > index c6d7c8bb6e0e..0e0e13343b16 100644 > --- a/OvmfPkg/Library/PlatformInitLib/IntelTdx.c > +++ b/OvmfPkg/Library/PlatformInitLib/IntelTdx.c > @@ -153,7 +153,7 @@ BOOLEAN > EFIAPI > IsInValidList ( > IN UINT32 Value, > - IN UINT32 *ValidList, > + IN CONST UINT32 *ValidList, > IN UINT32 ValidListLength > ) > { > @@ -188,7 +188,7 @@ ValidateHobList ( > ) > { > EFI_PEI_HOB_POINTERS Hob; > - UINT32 EFI_BOOT_MODE_LIST[] = { > + STATIC CONST UINT32 EFI_BOOT_MODE_LIST[] = { > BOOT_WITH_FULL_CONFIGURATION, > BOOT_WITH_MINIMAL_CONFIGURATION, > BOOT_ASSUMING_NO_CONFIGURATION_CHANGES, > @@ -203,7 +203,7 @@ ValidateHobList ( > BOOT_IN_RECOVERY_MODE > }; > > - UINT32 EFI_RESOURCE_TYPE_LIST[] = { > + STATIC CONST UINT32 EFI_RESOURCE_TYPE_LIST[] = { > EFI_RESOURCE_SYSTEM_MEMORY, > EFI_RESOURCE_MEMORY_MAPPED_IO, > EFI_RESOURCE_IO, Yes, that fixes it. -- Rebecca Cran ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-09-22 22:52 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-09-22 21:07 OvmfPkgX64: PlatformInitLib.lib(IntelTdx.obj): in function `ValidateHobList': undefined reference to `memcpy' (CLANG38 NOOPT) Rebecca Cran 2022-09-22 21:32 ` [edk2-devel] " Ard Biesheuvel 2022-09-22 22:52 ` Rebecca Cran
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox