From: "Ni, Ray" <ray.ni@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
"ardb@kernel.org" <ardb@kernel.org>
Cc: "Andrew Fish" <afish@apple.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>,
"Liu, Zhiguang" <zhiguang.liu@intel.com>,
"Rebecca Cran" <rebecca@bsdio.com>,
"Tom Lendacky" <thomas.lendacky@amd.com>,
"Marvin Häuser" <mhaeuser@posteo.de>
Subject: Re: [edk2-devel] [RFT PATCH v3 3/5] UefiCpuPkg/CpuExceptionHandlerLib: Make runtime fixups XCODE-only
Date: Fri, 31 Mar 2023 10:20:39 +0000 [thread overview]
Message-ID: <MN6PR11MB8244D214CF0149426C3E426E8C8F9@MN6PR11MB8244.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20230331091437.1593337-4-ardb@kernel.org>
Ok I see that the macro is added to PP flags.
I thought it's added to NASM build flags.
Reviewed-by: Ray Ni <ray.ni@intel.com>
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ard
> Biesheuvel
> Sent: Friday, March 31, 2023 5:15 PM
> To: devel@edk2.groups.io
> Cc: Ard Biesheuvel <ardb@kernel.org>; Ni, Ray <ray.ni@intel.com>; Andrew
> Fish <afish@apple.com>; Kinney, Michael D <michael.d.kinney@intel.com>;
> Liu, Zhiguang <zhiguang.liu@intel.com>; Rebecca Cran
> <rebecca@bsdio.com>; Tom Lendacky <thomas.lendacky@amd.com>;
> Marvin Häuser <mhaeuser@posteo.de>
> Subject: [edk2-devel] [RFT PATCH v3 3/5]
> UefiCpuPkg/CpuExceptionHandlerLib: Make runtime fixups XCODE-only
>
> The CPU exception handler library code was rewritten at some point to
> populate the vector code templates with absolute references at runtime,
> given that the XCODE linker does not permit absolute references in
> executable code when creating PIE executables.
>
> This is rather unfortunate, as this prevents us from using strict
> permissions on the memory mappings, given that the .text section needs
> to be writable at runtime for this arrangement to work.
>
> So let's make this hack XCODE-only, by setting a preprocessor #define
> from the command line when using the XCODE toolchain, and only including
> the runtime fixup code when the macro is defined.
>
> While at it, rename the Xcode5ExceptionHandlerAsm.nasm source file and
> drop the Xcode5 prefix: this code is used by other toolchains too.
>
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> ---
>
> UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.in
> f | 5 ++++-
>
> UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.inf
> | 4 +++-
>
> UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.i
> nf | 4 +++-
>
> UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/{Xcode5ExceptionHandler
> Asm.nasm => ExceptionHandlerAsm.nasm} | 10 ++++++++++
> 4 files changed, 20 insertions(+), 3 deletions(-)
>
> diff --git
> a/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.
> inf
> b/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib
> .inf
> index d0f82095cf926e99..ee9df805c05df4f7 100644
> ---
> a/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.
> inf
> +++
> b/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib
> .inf
> @@ -28,7 +28,7 @@ [Sources.Ia32]
> Ia32/ArchInterruptDefs.h
>
>
>
> [Sources.X64]
>
> - X64/Xcode5ExceptionHandlerAsm.nasm
>
> + X64/ExceptionHandlerAsm.nasm
>
> X64/ArchExceptionHandler.c
>
> X64/ArchInterruptDefs.h
>
>
>
> @@ -61,3 +61,6 @@ [LibraryClasses]
> MemoryAllocationLib
>
> DebugLib
>
> CcExitLib
>
> +
>
> +[BuildOptions]
>
> + XCODE:*_*_X64_PP_FLAGS = -DNO_ABSOLUTE_RELOCS_IN_TEXT
>
> diff --git
> a/UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.i
> nf
> b/UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.i
> nf
> index 5339f8e604045801..83970c54712f22a2 100644
> ---
> a/UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.i
> nf
> +++
> b/UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.i
> nf
> @@ -28,7 +28,7 @@ [Sources.Ia32]
> Ia32/ArchInterruptDefs.h
>
>
>
> [Sources.X64]
>
> - X64/Xcode5ExceptionHandlerAsm.nasm
>
> + X64/ExceptionHandlerAsm.nasm
>
> X64/ArchExceptionHandler.c
>
> X64/ArchInterruptDefs.h
>
>
>
> @@ -62,3 +62,5 @@ [Pcd]
> [FeaturePcd]
>
> gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackGuard ##
> CONSUMES
>
>
>
> +[BuildOptions]
>
> + XCODE:*_*_X64_PP_FLAGS = -DNO_ABSOLUTE_RELOCS_IN_TEXT
>
> diff --git
> a/UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLi
> b.inf
> b/UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLi
> b.inf
> index 8f8a5dab79303f87..acd2936aef4490a5 100644
> ---
> a/UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLi
> b.inf
> +++
> b/UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLi
> b.inf
> @@ -28,7 +28,7 @@ [Sources.Ia32]
> Ia32/ArchInterruptDefs.h
>
>
>
> [Sources.X64]
>
> - X64/Xcode5ExceptionHandlerAsm.nasm
>
> + X64/ExceptionHandlerAsm.nasm
>
> X64/ArchExceptionHandler.c
>
> X64/ArchInterruptDefs.h
>
>
>
> @@ -61,3 +61,5 @@ [Pcd]
> [FeaturePcd]
>
> gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmStackGuard ##
> CONSUMES
>
>
>
> +[BuildOptions]
>
> + XCODE:*_*_X64_PP_FLAGS = -DNO_ABSOLUTE_RELOCS_IN_TEXT
>
> diff --git
> a/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/Xcode5ExceptionHandle
> rAsm.nasm
> b/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.n
> asm
> similarity index 95%
> rename from
> UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/Xcode5ExceptionHandlerA
> sm.nasm
> rename to
> UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.nas
> m
> index 957478574253e619..3823656ea7d4c3b8 100644
> ---
> a/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/Xcode5ExceptionHandle
> rAsm.nasm
> +++
> b/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.n
> asm
> @@ -59,7 +59,11 @@ AsmIdtVectorBegin:
> %rep 256
>
> push strict dword %[Vector] ; This instruction pushes sign-extended 8-
> byte value on stack
>
> push rax
>
> +#ifdef NO_ABSOLUTE_RELOCS_IN_TEXT
>
> mov rax, strict qword 0 ; mov rax, ASM_PFX(CommonInterruptEntry)
>
> +#else
>
> + mov rax, ASM_PFX(CommonInterruptEntry)
>
> +#endif
>
> jmp rax
>
> %assign Vector Vector+1
>
> %endrep
>
> @@ -69,8 +73,12 @@ HookAfterStubHeaderBegin:
> push strict dword 0 ; 0 will be fixed
>
> VectorNum:
>
> push rax
>
> +#ifdef NO_ABSOLUTE_RELOCS_IN_TEXT
>
> mov rax, strict qword 0 ; mov rax, HookAfterStubHeaderEnd
>
> JmpAbsoluteAddress:
>
> +#else
>
> + mov rax, HookAfterStubHeaderEnd
>
> +#endif
>
> jmp rax
>
> HookAfterStubHeaderEnd:
>
> mov rax, rsp
>
> @@ -457,6 +465,7 @@ ASM_PFX(AsmGetTemplateAddressMap):
> lea rax, [HookAfterStubHeaderBegin]
>
> mov qword [rcx + 0x10], rax
>
>
>
> +#ifdef NO_ABSOLUTE_RELOCS_IN_TEXT
>
> ; Fix up CommonInterruptEntry address
>
> lea rax, [ASM_PFX(CommonInterruptEntry)]
>
> lea rcx, [AsmIdtVectorBegin]
>
> @@ -468,6 +477,7 @@ ASM_PFX(AsmGetTemplateAddressMap):
> lea rax, [HookAfterStubHeaderEnd]
>
> lea rcx, [JmpAbsoluteAddress]
>
> mov qword [rcx - 8], rax
>
> +#endif
>
>
>
> ret
>
>
>
> --
> 2.39.2
>
>
>
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#102258):
> https://edk2.groups.io/g/devel/message/102258
> Mute This Topic: https://groups.io/mt/97969651/1712937
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [ray.ni@intel.com]
> -=-=-=-=-=-=
>
next prev parent reply other threads:[~2023-03-31 10:20 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-31 9:14 [RFT PATCH v3 0/5] UefiCpuPkg, OvmfPkg: Simplify CpuExceptionHandlerLib Ard Biesheuvel
2023-03-31 9:14 ` [RFT PATCH v3 1/5] BaseTools/tools_def CLANGDWARF: Permit text relocations Ard Biesheuvel
2023-03-31 9:14 ` [RFT PATCH v3 2/5] UefiCpuPkg/CpuExceptionHandlerLib: Use single SEC/PEI version Ard Biesheuvel
2023-03-31 9:56 ` Ni, Ray
2023-03-31 10:12 ` [edk2-devel] " Ard Biesheuvel
2023-03-31 10:19 ` Ni, Ray
2023-03-31 10:49 ` Ard Biesheuvel
[not found] ` <17517877FE72B326.27612@groups.io>
2023-03-31 9:58 ` Ni, Ray
2023-03-31 10:14 ` Ard Biesheuvel
2023-03-31 10:16 ` Ni, Ray
2023-03-31 10:19 ` Ard Biesheuvel
2023-03-31 9:14 ` [RFT PATCH v3 3/5] UefiCpuPkg/CpuExceptionHandlerLib: Make runtime fixups XCODE-only Ard Biesheuvel
2023-03-31 10:03 ` [edk2-devel] " Ni, Ray
2023-03-31 10:20 ` Ni, Ray [this message]
2023-03-31 9:14 ` [RFT PATCH v3 4/5] OvmfPkg: Drop special Xcode5 version of exception handler library Ard Biesheuvel
2023-03-31 9:14 ` [RFT PATCH v3 5/5] UefiCpuPkg/CpuExceptionHandlerLib: Drop special XCODE5 version Ard Biesheuvel
2023-03-31 10:08 ` [edk2-devel] [RFT PATCH v3 0/5] UefiCpuPkg, OvmfPkg: Simplify CpuExceptionHandlerLib Ni, Ray
2023-03-31 10:15 ` Ard Biesheuvel
2023-03-31 10:41 ` Marvin Häuser
2023-03-31 11:03 ` Ard Biesheuvel
2023-03-31 11:09 ` Marvin Häuser
2023-03-31 14:39 ` Ni, Ray
2023-03-31 14:42 ` Marvin Häuser
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=MN6PR11MB8244D214CF0149426C3E426E8C8F9@MN6PR11MB8244.namprd11.prod.outlook.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox