• WANG Rui's avatar
    LoongArch: Apply dynamic relocations for LLD · eea673e9
    WANG Rui authored
    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/1962Signed-off-by: default avatarWANG Rui <wangrui@loongson.cn>
    Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
    eea673e9
Makefile 5.17 KB