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 int64_t cast to compute the offset as a
64bit subtraction.

Signed-off-by: Anaëlle Cazuc <[email protected]>
---
 util/grub-mkimagexx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
index 448862b2e..5fb7e695c 100644
--- a/util/grub-mkimagexx.c
+++ b/util/grub-mkimagexx.c
@@ -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))
                   {
-- 
2.39.5


_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to