On Mon, Mar 29, 2021 at 3:24 AM Andreas Schwab <[email protected]> wrote: > > On Mär 28 2021, Khem Raj wrote: > > > this makes the type promotions clear and explicit > > It was already typecasted to long but was accidentally dropped in [1] > > Note that long is 32-bit on riscv32, so the title is misleading (there > was no cast to 64-bit type before). The cast really was a no-op, as it > didn't change the resulting type. The issue is that the types of > sym_addr, target_section_addr and offset are Elf_Addr (aka Elf32_Addr), > which is an unsigned type (image_target->vaddr_offset is signed, but not > wider than Elf32_Addr, so it doesn't change the overall type). Thus > when the result of the expression is extended to grub_int64_t it is > always a positive value instead of the desired sign-extended one. >
This is right I think, I initially typecasted it to long and then changed to using grub_int64_t and could have done better on commit message. Do you prefer a new revision with better commit msg. > > which stated to cause failures on riscv32 as reported in [2] > > Most likely the missing addend masked the error. yes that's likely since addressed where it fails are 0xfffff.... > > Andreas. > > -- > Andreas Schwab, SUSE Labs, [email protected] > GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 > "And now for something completely different." _______________________________________________ Grub-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/grub-devel
