We have a special version of CpuExceptionHandlerLib for XCODE5, whose linker (LLD) does not permit absolute symbol references in read-only sections. Instead of fixing this up at runtime for all toolchains (which is done by writing the fixed up values to the .text section, which we'd prefer to avoid), tweak the SEC/PEI version so it does not need this, and update the remaining versions to only incorporate this logic when using the XCODE toolchain. Changes since v3: - As Marvin points out, using '-read_only_relocs suppress' with the X64 XCODE linker is a terrible idea, as it corrupts the resulting PE binaries, so instead, let's do the following: . tweak the SEC/PEI version of the library so the relocs are emitted into .data when using XCODE; . tweak the other versions so the runtime fixups are only done when using XCODE - add acks from Jiewen and Ray Changes since v2: - pass linker switches to permit absolute relocations in read-only regions, and keep all code in .text Cc: "Ni, Ray" Cc: Andrew Fish Cc: "Kinney, Michael D" Cc: "Liu, Zhiguang" Cc: Rebecca Cran Cc: Tom Lendacky Cc: Marvin Häuser Ard Biesheuvel (5): BaseTools/tools_def CLANGDWARF: Permit text relocations UefiCpuPkg/CpuExceptionHandlerLib: Use single SEC/PEI version UefiCpuPkg/CpuExceptionHandlerLib: Make runtime fixups XCODE-only OvmfPkg: Drop special Xcode5 version of exception handler library UefiCpuPkg/CpuExceptionHandlerLib: Drop special XCODE5 version BaseTools/Conf/tools_def.template | 2 +- OvmfPkg/AmdSev/AmdSevX64.dsc | 4 - OvmfPkg/CloudHv/CloudHvX64.dsc | 4 - OvmfPkg/IntelTdx/IntelTdxX64.dsc | 4 - OvmfPkg/Microvm/MicrovmX64.dsc | 4 - OvmfPkg/OvmfPkgIa32.dsc | 4 - OvmfPkg/OvmfPkgIa32X64.dsc | 4 - OvmfPkg/OvmfPkgX64.dsc | 4 - OvmfPkg/OvmfXen.dsc | 4 - UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf | 5 +- UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.inf | 4 +- UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf | 4 +- UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf | 4 +- UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.nasm | 116 +++++++++++++++++--- UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/{Xcode5ExceptionHandlerAsm.nasm => SecPeiExceptionHandlerAsm.nasm} | 108 +++--------------- UefiCpuPkg/Library/CpuExceptionHandlerLib/Xcode5SecPeiCpuExceptionHandlerLib.inf | 65 ----------- UefiCpuPkg/Library/CpuExceptionHandlerLib/Xcode5SecPeiCpuExceptionHandlerLib.uni | 18 --- UefiCpuPkg/UefiCpuPkg.dsc | 7 -- 18 files changed, 133 insertions(+), 232 deletions(-) rename UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/{Xcode5ExceptionHandlerAsm.nasm => SecPeiExceptionHandlerAsm.nasm} (70%) delete mode 100644 UefiCpuPkg/Library/CpuExceptionHandlerLib/Xcode5SecPeiCpuExceptionHandlerLib.inf delete mode 100644 UefiCpuPkg/Library/CpuExceptionHandlerLib/Xcode5SecPeiCpuExceptionHandlerLib.uni -- 2.39.2