From c232814e2bd732d870dfb152ab2bab607b1e1ba0 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Tue, 22 Oct 2002 10:56:45 +0000 Subject: * 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. --- gas/ChangeLog | 6 ++++++ gas/config/obj-elf.c | 29 ++++++++++------------------- 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 + + * 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 * 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); } -- cgit v1.2.1