mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-01 09:49:43 +08:00
* elf.c (assign_file_positions_for_segments): Use maximum of
maxpagesize and section alignment when adjusting initial segment offset and section offsets.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2005-05-19 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* elf.c (assign_file_positions_for_segments): Use maximum of
|
||||||
|
maxpagesize and section alignment when adjusting initial
|
||||||
|
segment offset and section offsets.
|
||||||
|
|
||||||
2005-05-18 Zack Weinberg <zack@codesourcery.com>
|
2005-05-18 Zack Weinberg <zack@codesourcery.com>
|
||||||
|
|
||||||
* elf32-arm.c: Make all #ifndef OLD_ARM_ABI blocks
|
* elf32-arm.c: Make all #ifndef OLD_ARM_ABI blocks
|
||||||
|
24
bfd/elf.c
24
bfd/elf.c
@ -4151,22 +4151,20 @@ assign_file_positions_for_segments (bfd *abfd, struct bfd_link_info *link_info)
|
|||||||
{
|
{
|
||||||
bfd_size_type align;
|
bfd_size_type align;
|
||||||
bfd_vma adjust;
|
bfd_vma adjust;
|
||||||
|
unsigned int align_power = 0;
|
||||||
|
|
||||||
if ((abfd->flags & D_PAGED) != 0)
|
for (i = 0, secpp = m->sections; i < m->count; i++, secpp++)
|
||||||
align = bed->maxpagesize;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
unsigned int align_power = 0;
|
unsigned int secalign;
|
||||||
for (i = 0, secpp = m->sections; i < m->count; i++, secpp++)
|
|
||||||
{
|
|
||||||
unsigned int secalign;
|
|
||||||
|
|
||||||
secalign = bfd_get_section_alignment (abfd, *secpp);
|
secalign = bfd_get_section_alignment (abfd, *secpp);
|
||||||
if (secalign > align_power)
|
if (secalign > align_power)
|
||||||
align_power = secalign;
|
align_power = secalign;
|
||||||
}
|
|
||||||
align = (bfd_size_type) 1 << align_power;
|
|
||||||
}
|
}
|
||||||
|
align = (bfd_size_type) 1 << align_power;
|
||||||
|
|
||||||
|
if ((abfd->flags & D_PAGED) != 0 && bed->maxpagesize > align)
|
||||||
|
align = bed->maxpagesize;
|
||||||
|
|
||||||
adjust = vma_page_aligned_bias (m->sections[0]->vma, off, align);
|
adjust = vma_page_aligned_bias (m->sections[0]->vma, off, align);
|
||||||
off += adjust;
|
off += adjust;
|
||||||
@ -4352,7 +4350,7 @@ assign_file_positions_for_segments (bfd *abfd, struct bfd_link_info *link_info)
|
|||||||
/* The section VMA must equal the file position
|
/* The section VMA must equal the file position
|
||||||
modulo the page size. */
|
modulo the page size. */
|
||||||
bfd_size_type page = align;
|
bfd_size_type page = align;
|
||||||
if ((abfd->flags & D_PAGED) != 0)
|
if ((abfd->flags & D_PAGED) != 0 && bed->maxpagesize > page)
|
||||||
page = bed->maxpagesize;
|
page = bed->maxpagesize;
|
||||||
adjust = vma_page_aligned_bias (sec->vma,
|
adjust = vma_page_aligned_bias (sec->vma,
|
||||||
p->p_vaddr + p->p_memsz,
|
p->p_vaddr + p->p_memsz,
|
||||||
|
Reference in New Issue
Block a user