+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.
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;
+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.
#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
#readelf: --sections
#name: label arithmetic with multiple same-name sections
+#...
+[ ]*\[.*\][ ]+foo[ ]+GROUP.*
#...
[ ]*\[.*\][ ]+\.text[ ]+PROGBITS.*
#...
[ ]*\[.*\][ ]+\.data[ ]+PROGBITS.*
#...
[ ]*\[.*\][ ]+\.text[ ]+PROGBITS.*
-#...
-[ ]*\[.*\][ ]+foo[ ]+GROUP.*
#pass