Revision 7e9c7ffe hw/elf_ops.h
b/hw/elf_ops.h | ||
---|---|---|
269 | 269 |
addr = ph->p_paddr; |
270 | 270 |
} |
271 | 271 |
|
272 |
/* the entry pointer in the ELF header is a virtual |
|
273 |
* address, if the text segments paddr and vaddr differ |
|
274 |
* we need to adjust the entry */ |
|
275 |
if (pentry && !translate_fn && |
|
276 |
ph->p_vaddr != ph->p_paddr && |
|
277 |
ehdr.e_entry >= ph->p_vaddr && |
|
278 |
ehdr.e_entry < ph->p_vaddr + ph->p_filesz && |
|
279 |
ph->p_flags & PF_X) { |
|
280 |
*pentry = ehdr.e_entry - ph->p_vaddr + ph->p_paddr; |
|
281 |
} |
|
282 |
|
|
272 | 283 |
snprintf(label, sizeof(label), "phdr #%d: %s", i, name); |
273 | 284 |
rom_add_blob_fixed(label, data, mem_size, addr); |
274 | 285 |
|
Also available in: Unified diff