elf: Calculate symbol size if needed
Symbols with a size of 0 are unusable for the disassembler. Example: While running an arm linux kernel, no symbolic names are used in qemu.log when the cpu is executing an assembler function. Assume that the size of such symbols is the difference to the next symbol value. Signed-off-by: Stefan Weil <weil@mail.berlios.de> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
d7d9b528b1
commit
e403e433c1
@ -153,6 +153,11 @@ static int glue(load_symbols, SZ)(struct elfhdr *ehdr, int fd, int must_swab,
|
||||
syms = qemu_realloc(syms, nsyms * sizeof(*syms));
|
||||
|
||||
qsort(syms, nsyms, sizeof(*syms), glue(symcmp, SZ));
|
||||
for (i = 0; i < nsyms - 1; i++) {
|
||||
if (syms[i].st_size == 0) {
|
||||
syms[i].st_size = syms[i + 1].st_value - syms[i].st_value;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
qemu_free(syms);
|
||||
syms = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user