Skip to content

Commit d0b4f95

Browse files
Torsten Duwepalmer-dabbelt
authored andcommitted
riscv/kexec: handle R_RISCV_CALL_PLT relocation type
R_RISCV_CALL has been deprecated and replaced by R_RISCV_CALL_PLT. See Enum 18-19 in Table 3. Relocation types here: https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc It was deprecated in ("Deprecated R_RISCV_CALL, prefer R_RISCV_CALL_PLT"): riscv-non-isa/riscv-elf-psabi-doc@a0dced8 Recent tools (at least GNU binutils-2.40) already use R_RISCV_CALL_PLT. Kernels built with such binutils fail kexec_load_file(2) with: kexec_image: Unknown rela relocation: 19 kexec_image: Error loading purgatory ret=-8 The binary code at the call site remains the same, so tell arch_kexec_apply_relocations_add() to handle _PLT alike. Fixes: 838b3e2 ("RISC-V: Load purgatory in kexec_file") Signed-off-by: Torsten Duwe <duwe@suse.de> Signed-off-by: Petr Tesarik <petr.tesarik.ext@huawei.com> Cc: Li Zhengyu <lizhengyu3@huawei.com> Cc: stable@vger.kernel.org Reviewed-by: Conor Dooley <conor.dooley@microchip.com> Link: https://lore.kernel.org/all/b046b164af8efd33bbdb7d4003273bdf9196a5b0.1690365011.git.petr.tesarik.ext@huawei.com/ Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
1 parent 06c2afb commit d0b4f95

1 file changed

Lines changed: 1 addition & 0 deletions

File tree

arch/riscv/kernel/elf_kexec.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,7 @@ int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
425425
* sym, instead of searching the whole relsec.
426426
*/
427427
case R_RISCV_PCREL_HI20:
428+
case R_RISCV_CALL_PLT:
428429
case R_RISCV_CALL:
429430
*(u64 *)loc = CLEAN_IMM(UITYPE, *(u64 *)loc) |
430431
ENCODE_UJTYPE_IMM(val - addr);

0 commit comments

Comments
 (0)