Estou tentando compilar o Linux 6.7.2 com suporte para ABI x32 e simplesmente não consigo entender o que isso significa:
Symbol: X86_X32_ABI [=n]
Type : bool
Defined at arch/x86/Kconfig:3007
Prompt: x32 ABI for 64-bit mode
Depends on: X86_64 [=y] && n
Location:
(3) -> Binary Emulations
-> x32 ABI for 64-bit mode (X86_X32_ABI [=n])
Como faço para me livrar do n
in X86_64 [=y] && n
para que ele realmente me permita ativar essa opção?
O local referenciado: arch/x86/Kconfig:3007 :
informa que a variante LLVM do objcopy (em vez da variante GNU "normal") não converterá corretamente alguns objetos de x86_64 para x86_x32.
Portanto, é adicionado um teste que depende do ambiente para evitar isso.
Usual (GNU)
objcopy
começaria como:LLVM começa como:
success
acima está uma macro definida como esta nas fontes do Linux :Tudo isso resulta
n
ao usar a variante LLVM deobjcopy
, falhando na dependência, e elsey
(o que atualmente deveria significar usar a variante GNU) ao avaliar$(OBJCOPY) --version | head -n1 | grep -qv llvm
.Dito o contrário: atualmente o suporte ABI x86_x32 não pode ser obtido ao compilar usando Clang/LLVM: use GCC.