2004-11-24 Paul Brook <paul@codesourcery.com>

bfd/
	* elf.c (assign_section_numbers): Number SHT_GROUP sections first.
gas/testsuite/
	* gas/elf/group0a.d: Adjust expected secion ordering.
	* gas/elf/group1a.d: Ditto.
	* gas/elf/section4.d: Ditto.
This commit is contained in:
Paul Brook 2004-11-25 00:56:00 +00:00
parent 7a851328ae
commit 47cc2cf519
6 changed files with 37 additions and 8 deletions

View File

@ -1,3 +1,7 @@
2004-11-24 Paul Brook <paul@codesourcery.com>
* elf.c (assign_section_numbers): Number SHT_GROUP sections first.
2004-11-24 Paul Brook <paul@codesourcery.com>
* elf32-arm.c (elf32_arm_swap_symbol_in): New function.

View File

@ -2725,18 +2725,35 @@ assign_section_numbers (bfd *abfd)
unsigned int section_number, secn;
Elf_Internal_Shdr **i_shdrp;
bfd_size_type amt;
struct bfd_elf_section_data *d;
section_number = 1;
_bfd_elf_strtab_clear_all_refs (elf_shstrtab (abfd));
/* Put SHT_GROUP sections first. */
for (sec = abfd->sections; sec; sec = sec->next)
{
struct bfd_elf_section_data *d = elf_section_data (sec);
d = elf_section_data (sec);
if (section_number == SHN_LORESERVE)
section_number += SHN_HIRESERVE + 1 - SHN_LORESERVE;
d->this_idx = section_number++;
if (d->this_hdr.sh_type == SHT_GROUP)
{
if (section_number == SHN_LORESERVE)
section_number += SHN_HIRESERVE + 1 - SHN_LORESERVE;
d->this_idx = section_number++;
}
}
for (sec = abfd->sections; sec; sec = sec->next)
{
d = elf_section_data (sec);
if (d->this_hdr.sh_type != SHT_GROUP)
{
if (section_number == SHN_LORESERVE)
section_number += SHN_HIRESERVE + 1 - SHN_LORESERVE;
d->this_idx = section_number++;
}
_bfd_elf_strtab_addref (elf_shstrtab (abfd), d->this_hdr.sh_name);
if ((sec->flags & SEC_RELOC) == 0)
d->rel_idx = 0;

View File

@ -1,3 +1,9 @@
2004-11-24 Paul Brook <paul@codesourcery.com>
* gas/elf/group0a.d: Adjust expected secion ordering.
* gas/elf/group1a.d: Ditto.
* gas/elf/section4.d: Ditto.
2004-11-24 Nick Clifton <nickc@redhat.com>
* gas/iq2000/allinsn.exp: Remove IQ10 tests.

View File

@ -2,8 +2,9 @@
#name: group section
#source: group0.s
#...
[ ]*\[.*\][ ]+\.foo_group[ ]+GROUP.*
#...
[ ]*\[.*\][ ]+\.foo[ ]+PROGBITS.*[ ]+AXG[ ]+.*
[ ]*\[.*\][ ]+\.bar[ ]+PROGBITS.*[ ]+AG[ ]+.*
[ ]*\[.*\][ ]+\.foo_group[ ]+GROUP.*
#pass

View File

@ -2,9 +2,10 @@
#name: group section with multiple sections of same name
#source: group1.s
#...
[ ]*\[.*\][ ]+\.foo_group[ ]+GROUP.*
#...
[ ]*\[.*\][ ]+\.text[ ]+PROGBITS.*[ ]+AX[ ]+.*
#...
[ ]*\[.*\][ ]+\.text[ ]+PROGBITS.*[ ]+AXG[ ]+.*
[ ]*\[.*\][ ]+\.foo_group[ ]+GROUP.*
#pass

View File

@ -1,12 +1,12 @@
#readelf: --sections
#name: label arithmetic with multiple same-name sections
#...
[ ]*\[.*\][ ]+foo[ ]+GROUP.*
#...
[ ]*\[.*\][ ]+\.text[ ]+PROGBITS.*
#...
[ ]*\[.*\][ ]+\.data[ ]+PROGBITS.*
#...
[ ]*\[.*\][ ]+\.text[ ]+PROGBITS.*
#...
[ ]*\[.*\][ ]+foo[ ]+GROUP.*
#pass