powerpc/boot: Only use '-mabi=elfv2' with CONFIG_PPC64_BOOT_WRAPPER
authorNathan Chancellor <nathan@kernel.org>
Wed, 15 Feb 2023 18:41:15 +0000 (11:41 -0700)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 14 Mar 2023 13:52:10 +0000 (00:52 +1100)
When CONFIG_PPC64_ELF_ABI_V2 is enabled with clang through
CONFIG_PPC64_BIG_ENDIAN_ELF_ABI_V2, building the powerpc boot wrapper
in 32-bit mode (i.e. with CONFIG_PPC64_BOOT_WRAPPER=n) fails with:

    error: unknown target ABI 'elfv2'

The ABI cannot be changed with '-m32'; GCC silently accepts it but clang
errors out. Only provide '-mabi=elfv2' when CONFIG_PPC64_BOOT_WRAPPER is
enabled, which is the only way '-mabi=elfv2' will be useful.

Tested-by: "Erhard F." <erhard_f@mailbox.org>
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230118-ppc64-elfv2-llvm-v1-1-b9e2ec9da11d@kernel.org
arch/powerpc/boot/Makefile

index 295f76df13b5583f4c05aca54a644b23cc8dc1df..08071bac056d02e882898b8c19eb8db3f9594baf 100644 (file)
@@ -40,6 +40,9 @@ BOOTCFLAGS    := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
 
 ifdef CONFIG_PPC64_BOOT_WRAPPER
 BOOTCFLAGS     += -m64
+ifdef CONFIG_PPC64_ELF_ABI_V2
+BOOTCFLAGS     += $(call cc-option,-mabi=elfv2)
+endif
 else
 BOOTCFLAGS     += -m32
 endif
@@ -61,9 +64,6 @@ BOOTCFLAGS    += -mbig-endian
 else
 BOOTCFLAGS     += -mlittle-endian
 endif
-ifdef CONFIG_PPC64_ELF_ABI_V2
-BOOTCFLAGS     += $(call cc-option,-mabi=elfv2)
-endif
 
 BOOTAFLAGS     := -D__ASSEMBLY__ $(BOOTCFLAGS) -nostdinc