public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* 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