summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2002-10-22 10:56:45 +0000
committerAlan Modra <amodra@bigpond.net.au>2002-10-22 10:56:45 +0000
commitc232814e2bd732d870dfb152ab2bab607b1e1ba0 (patch)
treeebf1a5986b89fc0c3d805a27db1ad244b0d138a9
parent8618177a586abafbe3f5824765a7fdaf8e50964a (diff)
downloadbinutils-redhat-c232814e2bd732d870dfb152ab2bab607b1e1ba0.tar.gz
* 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.
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/obj-elf.c29
2 files changed, 16 insertions, 19 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index adbcfa7f13..6159ef29c0 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index 799e44fdc3..259785d2de 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -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);
}