2022-07-01 22:09:46

by Alex Xu (Hello71)

[permalink] [raw]
Subject: [PATCH] x86/Kconfig: Allow X86_X32_ABI with llvm-objcopy in some cases

According to the comment and commit message, there are issues compiling
with IBT and/or compressed debug sections. Therefore, the condition
should be restricted to when those are enabled.

Signed-off-by: Alex Xu (Hello71) <[email protected]>
---
arch/x86/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index be0b95e51df6..e5af1088420e 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2847,7 +2847,7 @@ config X86_X32_ABI
# compressed debug sections to x86_x32 properly:
# https://github.com/ClangBuiltLinux/linux/issues/514
# https://github.com/ClangBuiltLinux/linux/issues/1141
- depends on $(success,$(OBJCOPY) --version | head -n1 | grep -qv llvm)
+ depends on !X86_KERNEL_IBT || !DEBUG_INFO_COMPRESSED || $(success,$(OBJCOPY) --version | head -n1 | grep -qv llvm)
help
Include code to run binaries for the x32 native 32-bit ABI
for 64-bit processors. An x32 process gets access to the
--
2.36.1


2022-07-06 00:54:20

by Andy Lutomirski

[permalink] [raw]
Subject: Re: [PATCH] x86/Kconfig: Allow X86_X32_ABI with llvm-objcopy in some cases

On 7/1/22 14:04, Alex Xu (Hello71) wrote:
> According to the comment and commit message, there are issues compiling
> with IBT and/or compressed debug sections. Therefore, the condition
> should be restricted to when those are enabled.

This whole situation is gross. We code in the vDSO that needs to
dereference a genuinely 64-bit pointer. The x32 toolchain doesn't
understand this, so we have a massive hack using objcopy. I see a few
solutions:

1. Keep the hack alive, with further hacks like this patch.

2. Drop the x32 vDSO.

3. Drop x32.

4. Get gcc and/or clang to add actual support for this.

I admit I'm partial to solution #3. I wonder how practical #4 is.

--Andy