linux/arch/riscv
Ben Dooks c1f6eff304
riscv: add as-options for modules with assembly compontents
When trying to load modules built for RISC-V which include assembly files
the kernel loader errors with "unexpected relocation type 'R_RISCV_ALIGN'"
due to R_RISCV_ALIGN relocations being generated by the assembler.

The R_RISCV_ALIGN relocations can be removed at the expense of code space
by adding -mno-relax to gcc and as.  In commit 7a8e7da422
("RISC-V: Fixes to module loading") -mno-relax is added to the build
variable KBUILD_CFLAGS_MODULE. See [1] for more info.

The issue is that when kbuild builds a .S file, it invokes gcc with
the -mno-relax flag, but this is not being passed through to the
assembler. Adding -Wa,-mno-relax to KBUILD_AFLAGS_MODULE ensures that
the assembler is invoked correctly. This may have now been fixed in
gcc[2] and this addition should not stop newer gcc and as from working.

[1] https://github.com/riscv/riscv-elf-psabi-doc/issues/183
[2] 3b0a7d624e

Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Link: https://lore.kernel.org/r/20220529152200.609809-1-ben.dooks@codethink.co.uk
Fixes: ab1ef68e54 ("RISC-V: Add sections of PLT and GOT for kernel module")
Cc: stable@vger.kernel.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2022-07-21 12:09:29 -07:00
..
boot riscv: dts: align gpio-key node names with dtschema 2022-07-14 14:30:20 -07:00
configs RISC-V: configs: Configs that had RPMSG_CHAR now get RPMSG_CTRL 2022-04-26 08:19:53 -07:00
errata riscv: don't warn for sifive erratas in modules 2022-07-07 23:09:16 -07:00
include riscv: Fix ALT_THEAD_PMA's asm parameters 2022-06-17 06:16:46 -07:00
kernel RISC-V: kexec: Fix build error without CONFIG_KEXEC 2022-07-14 14:23:41 -07:00
kvm RISC-V: KVM: Introduce ISA extension register 2022-05-20 09:09:20 +05:30
lib riscv: Fixed misaligned memory access. Fixed pointer comparison. 2022-03-10 10:24:04 -08:00
mm riscv: mm: init: make pt_ops_set_[early|late|fixmap] static 2022-06-02 14:50:41 -07:00
net riscv, bpf: Implement more atomic operations for RV64 2022-04-11 16:54:54 +02:00
purgatory RISC-V: Add purgatory 2022-05-19 12:18:59 -07:00
Kbuild riscv: move errata/ and kvm/ builds to arch/riscv/Kbuild 2022-06-01 22:26:32 -07:00
Kconfig riscv: Improve description for RISCV_ISA_SVPBMT Kconfig symbol 2022-06-16 15:47:39 -07:00
Kconfig.debug RISC-V: Remove EARLY_PRINTK support 2018-12-17 10:23:46 -08:00
Kconfig.erratas riscv: fix dependency for t-head errata 2022-06-16 15:42:55 -07:00
Kconfig.socs RISC-V Patches for the 5.19 Merge Window, Part 1 2022-05-31 14:10:54 -07:00
Makefile riscv: add as-options for modules with assembly compontents 2022-07-21 12:09:29 -07:00