[PATCH v2] RISC-V: Stop emitting attributes

Conor Dooley conor at kernel.org
Thu Feb 23 14:57:08 PST 2023


On Thu, Feb 23, 2023 at 02:46:05PM -0800, Palmer Dabbelt wrote:
> The RISC-V ELF attributes don't contain any useful information.  New
> toolchains ignore them, but they frequently trip up various older/mixed
> toolchains.  So just turn them off.

+cc: stable, yeah?

> Signed-off-by: Palmer Dabbelt <palmer at rivosinc.com>

Fixes the build for me w/ my awful config w/ gcc-13 + 2 different
binutils versions:
Tested-by: Conor Dooley <conor.dooley at microchip.com>

I still see issues with llvm-17, LLVM=1 & ld-2.35 in both purgatory and
regular modules:
  LD      arch/riscv/purgatory/purgatory.ro
/stuff/toolchains/binutils-2.35/bin/riscv64-linux-gnu-ld: -march=rv64i2p0_m2p0_a2p0_c2p0_zicsr2p0_zifencei2p0: Invalid or unknown z ISA extension: 'zifencei'
/stuff/toolchains/binutils-2.35/bin/riscv64-linux-gnu-ld: failed to merge target specific data of file arch/riscv/purgatory/sha256.o
/stuff/toolchains/binutils-2.35/bin/riscv64-linux-gnu-ld: -march=rv64i2p0_m2p0_a2p0_c2p0_zicsr2p0_zifencei2p0: Invalid or unknown z ISA extension: 'zifencei'
/stuff/toolchains/binutils-2.35/bin/riscv64-linux-gnu-ld: failed to merge target specific data of file arch/riscv/purgatory/string.o
/stuff/toolchains/binutils-2.35/bin/riscv64-linux-gnu-ld: -march=rv64i2p0_m2p0_a2p0_c2p0_zicsr2p0_zifencei2p0: Invalid or unknown z ISA extension: 'zifencei'
/stuff/toolchains/binutils-2.35/bin/riscv64-linux-gnu-ld: failed to merge target specific data of file arch/riscv/purgatory/ctype.o
make[6]: *** [/stuff/linux/arch/riscv/purgatory/Makefile:95: arch/riscv/purgatory/purgatory.ro] Error 1

So probably still need to pick up some variant of my series I posted
earlier unfortunately:
https://lore.kernel.org/linux-riscv/20230223220546.52879-1-conor@kernel.org/

Thanks!

> ---
> Changes since v1 <20230223195112.10489-1-palmer at rivosinc.com/>:
> 
> * Add the attributes to both KBUILD_CFLAGS and KBUILD_AFLAGS, so
>   assembly files build without attributes.
> * Set COMPAT_CFLAGS so the compat VDSO builds without attributes.
> ---
>  arch/riscv/Makefile                    | 7 +++++++
>  arch/riscv/kernel/compat_vdso/Makefile | 4 ++++
>  2 files changed, 11 insertions(+)
> 
> diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile
> index 76989561566b..7b53f0be56b2 100644
> --- a/arch/riscv/Makefile
> +++ b/arch/riscv/Makefile
> @@ -81,6 +81,13 @@ ifeq ($(CONFIG_PERF_EVENTS),y)
>          KBUILD_CFLAGS += -fno-omit-frame-pointer
>  endif
>  
> +# The RISC-V attributes frequently cause compatibility issues and provide no
> +# information, so just turn them off.
> +KBUILD_CFLAGS += $(call cc-option,-mno-riscv-attribute)
> +KBUILD_AFLAGS += $(call cc-option,-mno-riscv-attribute)
> +KBUILD_CFLAGS += $(call as-option,-Wa$(comma)-mno-arch-attr)
> +KBUILD_AFLAGS += $(call as-option,-Wa$(comma)-mno-arch-attr)
> +
>  KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax)
>  KBUILD_AFLAGS_MODULE += $(call as-option,-Wa$(comma)-mno-relax)
>  
> diff --git a/arch/riscv/kernel/compat_vdso/Makefile b/arch/riscv/kernel/compat_vdso/Makefile
> index 260daf3236d3..7f34f3c7c882 100644
> --- a/arch/riscv/kernel/compat_vdso/Makefile
> +++ b/arch/riscv/kernel/compat_vdso/Makefile
> @@ -14,6 +14,10 @@ COMPAT_LD := $(LD)
>  COMPAT_CC_FLAGS := -march=rv32g -mabi=ilp32
>  COMPAT_LD_FLAGS := -melf32lriscv
>  
> +# Disable attributes, as they're useless and break the build.
> +COMPAT_CC_FLAGS += $(call cc-option,-mno-riscv-attribute)
> +COMPAT_CC_FLAGS += $(call as-option,-Wa$(comma)-mno-arch-attr)
> +
>  # Files to link into the compat_vdso
>  obj-compat_vdso = $(patsubst %, %.o, $(compat_vdso-syms)) note.o
>  
> -- 
> 2.39.1
> 
> 
> _______________________________________________
> linux-riscv mailing list
> linux-riscv at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-riscv/attachments/20230223/bd65fe38/attachment.sig>


More information about the linux-riscv mailing list