* config/obj-elf.c (special_sections): Use correct types for init
authorAlan Modra <amodra@gmail.com>
Tue, 22 Oct 2002 10:56:45 +0000 (10:56 +0000)
committerAlan Modra <amodra@gmail.com>
Tue, 22 Oct 2002 10:56:45 +0000 (10:56 +0000)
array sections.
(obj_elf_change_section): Don't mess with init array section type.

gas/ChangeLog
gas/config/obj-elf.c

index adbcfa7f132ae199a73e4c4ccbaf80ed3da6c484..6159ef29c0fdabfe2e06b5d43a69bc449f19b907 100644 (file)
@@ -1,3 +1,9 @@
+2002-10-22  Alan Modra  <amodra@bigpond.net.au>
+
+       * config/obj-elf.c (special_sections): Use correct types for init
+       array sections.
+       (obj_elf_change_section): Don't mess with init array section type.
+
 2002-10-21  Richard Sandiford  <rsandifo@redhat.com>
 
        * config/tc-mips.c (mips_need_elf_addend_fixup): Return true
index 799e44fdc308eca47007e6e6bee244869728a5c9..259785d2de382d0e3482f4324759a5b3aa579bc3 100644 (file)
@@ -617,27 +617,9 @@ static struct special_section const special_sections[] =
   { ".tbss",   SHT_NOBITS,     SHF_ALLOC + SHF_WRITE + SHF_TLS },
   { ".tdata",  SHT_PROGBITS,   SHF_ALLOC + SHF_WRITE + SHF_TLS },
   { ".text",   SHT_PROGBITS,   SHF_ALLOC + SHF_EXECINSTR       },
-#if 0
-  /* FIXME: The current gcc, as of 2002-03-03, will emit
-
-       .section .init_array,"aw",@progbits
-
-     for __attribute__ ((section (".init_array"))). "@progbits" marks
-     the incorrect section type. For now, we make them with
-     SHT_PROGBITS. BFD will fix the section type. Gcc should be changed
-     to emit
-
-       .section .init_array
-
-   */
   { ".init_array",SHT_INIT_ARRAY, SHF_ALLOC + SHF_WRITE         },
   { ".fini_array",SHT_FINI_ARRAY, SHF_ALLOC + SHF_WRITE         },
   { ".preinit_array",SHT_PREINIT_ARRAY, SHF_ALLOC + SHF_WRITE   },
-#else
-  { ".init_array",SHT_PROGBITS, SHF_ALLOC + SHF_WRITE         },
-  { ".fini_array",SHT_PROGBITS, SHF_ALLOC + SHF_WRITE         },
-  { ".preinit_array",SHT_PROGBITS, SHF_ALLOC + SHF_WRITE   },
-#endif
 
 #ifdef ELF_TC_SPECIAL_SECTIONS
   ELF_TC_SPECIAL_SECTIONS
@@ -707,7 +689,16 @@ obj_elf_change_section (name, type, attr, entsize, group_name, linkonce, push)
          type = special_sections[i].type;
        else if (type != special_sections[i].type)
          {
-           if (old_sec == NULL)
+           if (old_sec == NULL
+               /* FIXME: gcc, as of 2002-10-22, will emit
+
+                  .section .init_array,"aw",@progbits
+
+                  for __attribute__ ((section (".init_array"))).
+                  "@progbits" is incorrect.  */
+               && special_sections[i].type != SHT_INIT_ARRAY
+               && special_sections[i].type != SHT_FINI_ARRAY
+               && special_sections[i].type != SHT_PREINIT_ARRAY)
              {
                as_warn (_("setting incorrect section type for %s"), name);
              }