* elf.c (assign_file_positions_for_segments): Track the virtual
memory position separately from the file position, and use it to compute the alignment adjustment. PR 10039.
This commit is contained in:
parent
687c3cc863
commit
64f808f92b
2 changed files with 12 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
Wed Jul 24 12:02:53 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
|
* elf.c (assign_file_positions_for_segments): Track the virtual
|
||||||
|
memory position separately from the file position, and use it to
|
||||||
|
compute the alignment adjustment.
|
||||||
|
|
||||||
start-sanitize-d10v
|
start-sanitize-d10v
|
||||||
Tue Jul 23 10:43:31 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
|
Tue Jul 23 10:43:31 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
|
||||||
|
|
||||||
|
|
|
@ -1897,7 +1897,7 @@ assign_file_positions_for_segments (abfd)
|
||||||
struct elf_segment_map *m;
|
struct elf_segment_map *m;
|
||||||
unsigned int alloc;
|
unsigned int alloc;
|
||||||
Elf_Internal_Phdr *phdrs;
|
Elf_Internal_Phdr *phdrs;
|
||||||
file_ptr off;
|
file_ptr off, voff;
|
||||||
bfd_vma filehdr_vaddr, filehdr_paddr;
|
bfd_vma filehdr_vaddr, filehdr_paddr;
|
||||||
bfd_vma phdrs_vaddr, phdrs_paddr;
|
bfd_vma phdrs_vaddr, phdrs_paddr;
|
||||||
Elf_Internal_Phdr *p;
|
Elf_Internal_Phdr *p;
|
||||||
|
@ -2068,6 +2068,7 @@ assign_file_positions_for_segments (abfd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
voff = off;
|
||||||
for (i = 0, secpp = m->sections; i < m->count; i++, secpp++)
|
for (i = 0, secpp = m->sections; i < m->count; i++, secpp++)
|
||||||
{
|
{
|
||||||
asection *sec;
|
asection *sec;
|
||||||
|
@ -2085,13 +2086,14 @@ assign_file_positions_for_segments (abfd)
|
||||||
the page size. */
|
the page size. */
|
||||||
if ((flags & SEC_ALLOC) != 0)
|
if ((flags & SEC_ALLOC) != 0)
|
||||||
{
|
{
|
||||||
adjust = (sec->vma - off) % bed->maxpagesize;
|
adjust = (sec->vma - voff) % bed->maxpagesize;
|
||||||
if (adjust != 0)
|
if (adjust != 0)
|
||||||
{
|
{
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
abort ();
|
abort ();
|
||||||
p->p_memsz += adjust;
|
p->p_memsz += adjust;
|
||||||
off += adjust;
|
off += adjust;
|
||||||
|
voff += adjust;
|
||||||
if ((flags & SEC_LOAD) != 0)
|
if ((flags & SEC_LOAD) != 0)
|
||||||
p->p_filesz += adjust;
|
p->p_filesz += adjust;
|
||||||
}
|
}
|
||||||
|
@ -2101,6 +2103,8 @@ assign_file_positions_for_segments (abfd)
|
||||||
|
|
||||||
if ((flags & SEC_LOAD) != 0)
|
if ((flags & SEC_LOAD) != 0)
|
||||||
off += sec->_raw_size;
|
off += sec->_raw_size;
|
||||||
|
if ((flags & SEC_ALLOC) != 0)
|
||||||
|
voff += sec->_raw_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
p->p_memsz += sec->_raw_size;
|
p->p_memsz += sec->_raw_size;
|
||||||
|
|
Loading…
Reference in a new issue