lkml.org 
[lkml]   [2022]   [Jul]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 002/105] riscv: add as-options for modules with assembly compontents
    Date
    From: Ben Dooks <ben.dooks@codethink.co.uk>

    commit c1f6eff304e4dfa4558b6a8c6b2d26a91db6c998 upstream.

    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 7a8e7da42250138
    ("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] https://github.com/gcc-mirror/gcc/commit/3b0a7d624e64eeb81e4d5e8c62c46d86ef521857

    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: ab1ef68e5401 ("RISC-V: Add sections of PLT and GOT for kernel module")
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/riscv/Makefile | 1 +
    1 file changed, 1 insertion(+)

    --- a/arch/riscv/Makefile
    +++ b/arch/riscv/Makefile
    @@ -73,6 +73,7 @@ ifeq ($(CONFIG_PERF_EVENTS),y)
    endif

    KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax)
    +KBUILD_AFLAGS_MODULE += $(call as-option,-Wa$(comma)-mno-relax)

    # GCC versions that support the "-mstrict-align" option default to allowing
    # unaligned accesses. While unaligned accesses are explicitly allowed in the

    \
     
     \ /
      Last update: 2022-07-27 18:50    [W:5.437 / U:0.788 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site