From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by mx.groups.io with SMTP id smtpd.web09.864.1663882374502636649 for ; Thu, 22 Sep 2022 14:32:55 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=dskGAw5k; spf=pass (domain: kernel.org, ip: 145.40.68.75, mailfrom: ardb@kernel.org) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 625C0B82453 for ; Thu, 22 Sep 2022 21:32:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 15334C433C1 for ; Thu, 22 Sep 2022 21:32:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1663882371; bh=2sYqpDlI8WzoovSDxtbR9lrT1GEiZakJFaCmKRDPjgk=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=dskGAw5kyPiH9r//tP1kle1J/u6aFxsBp9nfPgIRRZRUIVXKi0snc2gBuxfp40GuI gKYQ20oILRSYiEu0ZIHSPh7SqQBQ1weC+erVE22dM/rukrHafTK/jqr3Ff/R1pZeEB HjbzD9SITXHHCvwuULIli2SMVl73gTeNq6IuAEFbiWB/lV4ku0YC5AYDBsnp/P08H8 190RAXrLZYj/H/5NAvGwd9SOcaTJcYXb89zbXiNugRvFwDfq3RWguQNKLjpoG/XOxZ G9SO3Scv3RUWqapBljaYCeFrmV1QJoxEn6cAHnRPTyPf/s7DjRwVGIFiL0HvYiTWCf NE82IBaWPPZ/Q== Received: by mail-lj1-f176.google.com with SMTP id p5so12476774ljc.13 for ; Thu, 22 Sep 2022 14:32:50 -0700 (PDT) X-Gm-Message-State: ACrzQf1RKXrHGR3u/JG6bNPeK/aCWIRr2/6Y+harIrLWt1Je7QyuKsDm nAg1Qv6TyJYVqLIVM8K/aZ8duwnRKVYSnkaOJuk= X-Google-Smtp-Source: AMsMyM6+/29Jih4STr1Sjo0cuzN28AFEp3ZnD+kF81bS9j7ctPYOQPxNR9RuVvIKD6AVOI9OUbDGp09REX95uALfL6E= X-Received: by 2002:a2e:2d0a:0:b0:26c:a1c:cdf with SMTP id t10-20020a2e2d0a000000b0026c0a1c0cdfmr1952992ljt.352.1663882369089; Thu, 22 Sep 2022 14:32:49 -0700 (PDT) MIME-Version: 1.0 References: <79e3b3db-3ceb-e184-6138-80aa195c1347@quicinc.com> In-Reply-To: <79e3b3db-3ceb-e184-6138-80aa195c1347@quicinc.com> From: "Ard Biesheuvel" Date: Thu, 22 Sep 2022 23:32:37 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [edk2-devel] OvmfPkgX64: PlatformInitLib.lib(IntelTdx.obj): in function `ValidateHobList': undefined reference to `memcpy' (CLANG38 NOOPT) To: devel@edk2.groups.io, quic_rcran@quicinc.com Cc: Ard Biesheuvel , Jiewen Yao , Jordan Justen , Gerd Hoffmann Content-Type: text/plain; charset="UTF-8" On Thu, 22 Sept 2022 at 23:12, Rebecca Cran 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,