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