* 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