include/hw/elf: Remove truncating signed casts
There's nothing about elf that specifically requires signed vs unsigned. This is very much a target-specific preference. In the meantime, casting low and high from uint64_t back to Elf_SWord to uint64_t discards high bits that might have been set by translate_fn. Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
bc3da3cf62
commit
e1fee58fea
@ -385,10 +385,11 @@ static ssize_t glue(load_elf, SZ)(const char *name, int fd,
|
||||
}
|
||||
|
||||
if (pflags) {
|
||||
*pflags = (elf_word)ehdr.e_flags;
|
||||
*pflags = ehdr.e_flags;
|
||||
}
|
||||
if (pentry) {
|
||||
*pentry = ehdr.e_entry;
|
||||
}
|
||||
if (pentry)
|
||||
*pentry = (uint64_t)(elf_sword)ehdr.e_entry;
|
||||
|
||||
glue(load_symbols, SZ)(&ehdr, fd, must_swab, clear_lsb, sym_cb);
|
||||
|
||||
@ -610,10 +611,12 @@ static ssize_t glue(load_elf, SZ)(const char *name, int fd,
|
||||
}
|
||||
}
|
||||
|
||||
if (lowaddr)
|
||||
*lowaddr = (uint64_t)(elf_sword)low;
|
||||
if (highaddr)
|
||||
*highaddr = (uint64_t)(elf_sword)high;
|
||||
if (lowaddr) {
|
||||
*lowaddr = low;
|
||||
}
|
||||
if (highaddr) {
|
||||
*highaddr = high;
|
||||
}
|
||||
ret = total_size;
|
||||
fail:
|
||||
if (mapped_file) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user