util/grub-mkimagexx: Fix riscv32 relocation offset

When using grub-mkrescue for a riscv32 target, an invalid implicit cast
on the offset calculation produces an error during the relocation process:

  grub-mkrescue: error: target XXX not reachable from pc=fc.

This patch adds an explicit grub_int64_t cast to compute the offset
as a 64-bit subtraction.

Signed-off-by: Anaëlle Cazuc <acazuc@acazuc.fr>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Anaëlle Cazuc 2025-09-02 11:50:51 +02:00 committed by Daniel Kiper
parent 1f9092bfd5
commit abb8fb6d1a

View File

@ -1354,7 +1354,7 @@ SUFFIX (relocate_addrs) (Elf_Ehdr *e, struct section_metadata *smd,
*/
sym_addr += addend;
off = sym_addr - target_section_addr - offset - image_target->vaddr_offset;
off = (grub_int64_t) sym_addr - target_section_addr - offset - image_target->vaddr_offset;
switch (ELF_R_TYPE (info))
{