mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-09-10 14:59:31 +08:00
bfd/
* elf.c (assign_file_positions_for_load_sections): Revert 2008-05-29 change. Tidy. Don't error on sections not allocated in segment. ld/testsuite/ * ld-elf/extract-symbol-1sec.d: Update lma. * ld-i386/alloc.d: Expect a warning, not an error.
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2010-04-22 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf.c (assign_file_positions_for_load_sections): Revert 2008-05-29
|
||||
change. Tidy. Don't error on sections not allocated in segment.
|
||||
|
||||
2010-04-15 Andrew Haley <aph@redhat.com>
|
||||
|
||||
* bfd-in.h (elf32_arm_fix_exidx_coverage): Add new flag:
|
||||
|
27
bfd/elf.c
27
bfd/elf.c
@ -4453,32 +4453,17 @@ assign_file_positions_for_load_sections (bfd *abfd,
|
||||
&& ((this_hdr->sh_flags & SHF_TLS) == 0
|
||||
|| p->p_type == PT_TLS))))
|
||||
{
|
||||
bfd_signed_vma adjust = sec->vma - (p->p_vaddr + p->p_memsz);
|
||||
bfd_vma adjust = sec->lma - (p->p_paddr + p->p_memsz);
|
||||
|
||||
if (sec->vma < p->p_vaddr + p->p_memsz)
|
||||
if (sec->lma < p->p_paddr + p->p_memsz)
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
(_("%B: section %A vma 0x%lx overlaps previous sections"),
|
||||
abfd, sec, (unsigned long) sec->vma);
|
||||
(_("%B: section %A lma 0x%lx overlaps previous sections"),
|
||||
abfd, sec, (unsigned long) sec->lma);
|
||||
adjust = 0;
|
||||
}
|
||||
p->p_memsz += adjust;
|
||||
|
||||
if (p->p_paddr + p->p_memsz != sec->lma)
|
||||
{
|
||||
/* This behavior is a compromise--ld has long
|
||||
silently changed the lma of sections when
|
||||
lma - vma is not equal for every section in a
|
||||
pheader--but only in the internal elf structures.
|
||||
Silently changing the lma is probably a bug, but
|
||||
changing it would have subtle and unknown
|
||||
consequences for existing scripts.
|
||||
|
||||
Instead modify the bfd data structure to reflect
|
||||
what happened. This at least fixes the values
|
||||
for the lma in the mapfile. */
|
||||
sec->lma = p->p_paddr + p->p_memsz;
|
||||
}
|
||||
p->p_memsz += adjust;
|
||||
|
||||
if (this_hdr->sh_type != SHT_NOBITS)
|
||||
{
|
||||
@ -4581,8 +4566,6 @@ assign_file_positions_for_load_sections (bfd *abfd,
|
||||
(_("%B: section `%A' can't be allocated in segment %d"),
|
||||
abfd, sec, j);
|
||||
print_segment_map (m);
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2010-04-22 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* ld-elf/extract-symbol-1sec.d: Update lma.
|
||||
* ld-i386/alloc.d: Expect a warning, not an error.
|
||||
|
||||
2010-04-20 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* ld-tic6x/data-reloc-global-rel.d,
|
||||
|
@ -8,7 +8,7 @@
|
||||
#...
|
||||
Sections:
|
||||
*Idx +Name +Size +VMA +LMA .*
|
||||
*0 +\.foo +0+ +0+10000 +0+ .*
|
||||
*0 +\.foo +0+ +0+10000 +0+10000 .*
|
||||
*CONTENTS, ALLOC, LOAD, CODE
|
||||
*1 +\.bar +0+ +0+20000 +0+10000 .*
|
||||
*ALLOC, READONLY, CODE
|
||||
|
@ -1,4 +1,4 @@
|
||||
#name: Invalid allocated section
|
||||
#as: --32
|
||||
#ld: -melf_i386 -T alloc.t
|
||||
#error: .*section `.foo' can't be allocated in segment 0.*
|
||||
#warning: .*section `.foo' can't be allocated in segment 0.*
|
||||
|
Reference in New Issue
Block a user