From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com [66.111.4.29]) by mx.groups.io with SMTP id smtpd.web11.30591.1679085336919071967 for ; Fri, 17 Mar 2023 13:35:37 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="signature has expired" header.i=@bsdio.com header.s=fm3 header.b=A9Kq/ql1; spf=pass (domain: bsdio.com, ip: 66.111.4.29, mailfrom: rebecca@bsdio.com) Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 30AA25C0131; Fri, 17 Mar 2023 16:35:34 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Fri, 17 Mar 2023 16:35:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdio.com; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm3; t= 1679085334; x=1679171734; bh=bguife+1MFe7breI+UuYQv3QnOfmFj/aJWO 6V9H9gNE=; b=A9Kq/ql1lKBxG0pNFx5rC0EQglEbOnU+Iz9XmpFD9LuSCop1n64 LCz0LUt5DtRMPq4Wrg/s0ERxIv0BQlAnLn/0N1tdNJztls1FIQEbczwDjk9p5bx/ ckIk0mm9pai8Mr23Kj8BW34VqIWo7pCDEOtT2k1dkkMGkH14/FHH+oN/NtWJ+kHE 85MU7z8WMpQUwOSbQ3sNzH0buGRg1r40C4YRWAlJQwl7MP7hBu2SlcaOXcQc7LsL jQ6nNtKmvbezekBuFPkZu9OiUM7ocPQkc+6KAXCcdVvao7QGZOdX6BrQxEk5iCef QhCJ07y9inMyxgP/5HFwUMZKKPXqi7ElxVw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1679085334; x=1679171734; bh=bguife+1MFe7breI+UuYQv3QnOfmFj/aJWO 6V9H9gNE=; b=hEyiMqno5aKPl5cN9zZpkmmA8HXyI4fBVDXteCoG9QTRg3KNhdX mkcN8DExL69Hum9te90GjaRs5XMSbCLW5tIj8/rfn2rdseHFNbjs27UIsonmGdlw 8P8NJX5eoKDLJBX2DInffwDuJeNouPNAQhHG1wFHUuvtuspI6FVBb7JX2BFP5J9j bvQhflT/IMJwzCBTnqgRq95qmB+6db5QZ05iLnzGX60uOmp9u1BQaK82WFJWciAh +c78ce0vFQO5MP3YoLLAgUkA8oBtQJoFdq8/fpDSxndJOmHyj1SnyzwVo682vBi1 FCgzX71BxsHndYJY97DQtvp2sJfxx1Xnp+A== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrvdefvddgudefkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurhepkfffgggfuffvvehfhfgjtgfgse htkeertddtfeejnecuhfhrohhmpeftvggsvggttggrucevrhgrnhcuoehrvggsvggttggr segsshguihhordgtohhmqeenucggtffrrghtthgvrhhnpeffteehgffhueevgfelheefke ejveeiteektedujefhveejgeetkeefjeehudekheenucffohhmrghinhepthhirghnohgt ohhrvgdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfh hrohhmpehrvggsvggttggrsegsshguihhordgtohhm X-ME-Proxy: Feedback-ID: i5b994698:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 17 Mar 2023 16:35:32 -0400 (EDT) Message-ID: <0d189582-3867-5d70-bc01-f2fdd508e6e3@bsdio.com> Date: Fri, 17 Mar 2023 14:35:31 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [edk2-devel] [PATCH 1/3] BaseTools/Conf/tools_def: Fix linking using CLANGDWARF_IA32 To: =?UTF-8?Q?Marvin_H=c3=a4user?= Cc: devel@edk2.groups.io, patrick.rudolph@9elements.com, guo.dong@intel.com, gua.guo@intel.com, james.lu@intel.com, ray.ni@intel.com, ardb@kernel.org References: <425bcd67-f9b9-4915-d392-ddcd00ed69d4@bsdio.com> From: "Rebecca Cran" In-Reply-To: Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Building with "build -p OvmfPkg/OvmfPkgX64.dsc -a X64 -t CLANGDWARF -b RELEASE" on FreeBSD causes the following errors: ld.lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC >>> defined in /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib(ExceptionHandlerAsm.obj) >>> referenced by /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii >>>               ExceptionHandlerAsm.obj:(.text+0x5) in archive /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib ld.lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC >>> defined in /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib(ExceptionHandlerAsm.obj) >>> referenced by /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii >>>               ExceptionHandlerAsm.obj:(.text+0x14) in archive /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib ld.lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC >>> defined in /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib(ExceptionHandlerAsm.obj) >>> referenced by /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii >>>               ExceptionHandlerAsm.obj:(.text+0x23) in archive /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib Thinking about it, it might actually be a problem with the FreeBSD system toolchain. On Linux, I get a different set of errors about redefining uint64_t etc. -- Rebecca Cran On 3/17/23 11:44 AM, Marvin Häuser wrote: > Which error precisely? > > X64 PIE *must not* be disabled, as it’s used to enforce RIP-relative addressing where possible and has been for many years. Meanwhile the issues with IA32 is PIE was disabled by default for most toolchains, but some enable it nowadays (and thus it must be disabled explicitly). > > Best regards, > Marvin > >> On 17. Mar 2023, at 18:30, Rebecca Cran wrote: >> >> I've also seen that error building X64 firmware. >> >> Could you update those flags too, please? >> >> >> -- >> >> Rebecca Cran >> >> >>> On 3/17/23 8:06 AM, Patrick Rudolph wrote: >>> The clang toolchain might default to fPIE/fPIC, which prevents >>> lld from linking the objects into a binary. >>> >>> Specify -fno-pie -fno-pic as done on GCC to fix linking. >>> >>> Test: >>> Building the Universal Payload using the command >>> 'python UefiPayloadPkg/UniversalPayloadBuild.py -a IA32' actually >>> works. >>> >>> Signed-off-by: Patrick Rudolph >>> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=4356 >>> --- >>> BaseTools/Conf/tools_def.template | 14 +++++++------- >>> 1 file changed, 7 insertions(+), 7 deletions(-) >>> >>> diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template >>> index 471eb67c0c..9b59bd75c3 100755 >>> --- a/BaseTools/Conf/tools_def.template >>> +++ b/BaseTools/Conf/tools_def.template >>> @@ -2888,7 +2888,7 @@ DEFINE CLANGDWARF_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x22 >>> *_CLANGDWARF_IA32_RC_PATH = DEF(CLANGDWARF_IA32_PREFIX)llvm-rc >>> *_CLANGDWARF_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANG38_IA32_TARGET) >>> -*_CLANGDWARF_IA32_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -fuse-ld=lld >>> +*_CLANGDWARF_IA32_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -fuse-ld=lld -no-pie >>> *_CLANGDWARF_IA32_ASM_FLAGS = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANG38_IA32_TARGET) >>> *_CLANGDWARF_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) >>> *_CLANGDWARF_IA32_OBJCOPY_FLAGS = >>> @@ -2897,17 +2897,17 @@ DEFINE CLANGDWARF_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x22 >>> *_CLANGDWARF_IA32_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET) >>> *_CLANGDWARF_IA32_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET) >>> -DEBUG_CLANGDWARF_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double >>> +DEBUG_CLANGDWARF_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -fno-pic -fno-pie -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double >>> DEBUG_CLANGDWARF_IA32_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386 >>> -DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld >>> +DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld -no-pie >>> -RELEASE_CLANGDWARF_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -malign-double >>> +RELEASE_CLANGDWARF_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -fno-pic -fno-pie -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -malign-double >>> RELEASE_CLANGDWARF_IA32_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386 >>> -RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld >>> +RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld -no-pie >>> -NOOPT_CLANGDWARF_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double >>> +NOOPT_CLANGDWARF_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -fno-pic -fno-pie -m32 -O0 -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double >>> NOOPT_CLANGDWARF_IA32_DLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat,elf32-i386 >>> -NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -fuse-ld=lld >>> +NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -fuse-ld=lld -no-pie >>> ########################## >>> # CLANGDWARF X64 definitions