aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2023-09-19 16:25:54 +0200
committerRichard Henderson <richard.henderson@linaro.org>2023-11-06 18:49:34 -0800
commite1fee58fea3a8d215029269235d82cf6f79c1749 (patch)
treed38d4225a45e560b72b222aac8c5ee5cf517e633
parentbc3da3cf6237dea2d91affe2116529d4c580c288 (diff)
downloadqemu-e1fee58fea3a8d215029269235d82cf6f79c1749.zip
qemu-e1fee58fea3a8d215029269235d82cf6f79c1749.tar.gz
qemu-e1fee58fea3a8d215029269235d82cf6f79c1749.tar.bz2
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>
-rw-r--r--include/hw/elf_ops.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/include/hw/elf_ops.h b/include/hw/elf_ops.h
index dffb0e7..0a5c258 100644
--- a/include/hw/elf_ops.h
+++ b/include/hw/elf_ops.h
@@ -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) {