lkml.org 
[lkml]   [2023]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 6.6 45/47] LoongArch: Apply dynamic relocations for LLD
    Date
    From: WANG Rui <wangrui@loongson.cn>

    [ Upstream commit eea673e9d5ea994c60b550ffb684413d3759b3f4 ]

    For the following assembly code:

    .text
    .global func
    func:
    nop

    .data
    var:
    .dword func

    When linked with `-pie`, GNU LD populates the `var` variable with the
    pre-relocated value of `func`. However, LLVM LLD does not exhibit the
    same behavior. This issue also arises with the `kernel_entry` in arch/
    loongarch/kernel/head.S:

    _head:
    .word MZ_MAGIC /* "MZ", MS-DOS header */
    .org 0x8
    .dword kernel_entry /* Kernel entry point */

    The correct kernel entry from the MS-DOS header is crucial for jumping
    to vmlinux from zboot. This necessity is why the compressed relocatable
    kernel compiled by Clang encounters difficulties in booting.

    To address this problem, it is proposed to apply dynamic relocations to
    place with `--apply-dynamic-relocs`.

    Link: https://github.com/ClangBuiltLinux/linux/issues/1962
    Signed-off-by: WANG Rui <wangrui@loongson.cn>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/loongarch/Makefile | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/arch/loongarch/Makefile b/arch/loongarch/Makefile
    index fb0fada43197e..390867fc45b84 100644
    --- a/arch/loongarch/Makefile
    +++ b/arch/loongarch/Makefile
    @@ -80,7 +80,7 @@ endif

    ifeq ($(CONFIG_RELOCATABLE),y)
    KBUILD_CFLAGS_KERNEL += -fPIE
    -LDFLAGS_vmlinux += -static -pie --no-dynamic-linker -z notext
    +LDFLAGS_vmlinux += -static -pie --no-dynamic-linker -z notext $(call ld-option, --apply-dynamic-relocs)
    endif

    cflags-y += $(call cc-option, -mno-check-zero-division)
    --
    2.42.0
    \
     
     \ /
      Last update: 2023-12-11 14:58    [W:2.331 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site