Skip to content
Snippets Groups Projects
  • Marcus Comstedt's avatar
    71bdfcb2
    riscv: tools: Handle addend to absolute reloc in prelink-riscv · 71bdfcb2
    Marcus Comstedt authored
    
    Previously the handling of R_RISCV_32 and R_RISCV_64 would simply
    insert the value of the symbol and ignore any addend.  However, there
    exist relocs where the addend is non-zero:
    
    0000000080250900 R_RISCV_64        efi_runtime_services+0x0000000000000068
    0000000080250910 R_RISCV_64        efi_runtime_services+0x0000000000000038
    0000000080250920 R_RISCV_64        efi_runtime_services+0x0000000000000018
    0000000080250930 R_RISCV_64        efi_runtime_services+0x0000000000000020
    0000000080250980 R_RISCV_64        efi_runtime_services+0x0000000000000048
    0000000080250990 R_RISCV_64        efi_runtime_services+0x0000000000000050
    00000000802509a0 R_RISCV_64        efi_runtime_services+0x0000000000000058
    0000000080250940 R_RISCV_64        systab+0x0000000000000030
    0000000080250950 R_RISCV_64        systab+0x0000000000000040
    0000000080250960 R_RISCV_64        systab+0x0000000000000050
    0000000080250970 R_RISCV_64        systab+0x0000000000000060
    
    In these cases the addend needs to be added to the symbol value to get
    the correct value for the reloc.
    
    Signed-off-by: default avatarMarcus Comstedt <marcus@mc.pp.se>
    Cc: Rick Chen <rick@andestech.com>
    71bdfcb2
    History
    riscv: tools: Handle addend to absolute reloc in prelink-riscv
    Marcus Comstedt authored
    
    Previously the handling of R_RISCV_32 and R_RISCV_64 would simply
    insert the value of the symbol and ignore any addend.  However, there
    exist relocs where the addend is non-zero:
    
    0000000080250900 R_RISCV_64        efi_runtime_services+0x0000000000000068
    0000000080250910 R_RISCV_64        efi_runtime_services+0x0000000000000038
    0000000080250920 R_RISCV_64        efi_runtime_services+0x0000000000000018
    0000000080250930 R_RISCV_64        efi_runtime_services+0x0000000000000020
    0000000080250980 R_RISCV_64        efi_runtime_services+0x0000000000000048
    0000000080250990 R_RISCV_64        efi_runtime_services+0x0000000000000050
    00000000802509a0 R_RISCV_64        efi_runtime_services+0x0000000000000058
    0000000080250940 R_RISCV_64        systab+0x0000000000000030
    0000000080250950 R_RISCV_64        systab+0x0000000000000040
    0000000080250960 R_RISCV_64        systab+0x0000000000000050
    0000000080250970 R_RISCV_64        systab+0x0000000000000060
    
    In these cases the addend needs to be added to the symbol value to get
    the correct value for the reloc.
    
    Signed-off-by: default avatarMarcus Comstedt <marcus@mc.pp.se>
    Cc: Rick Chen <rick@andestech.com>
prelink-riscv.inc 4.12 KiB