aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2002-03-04 20:40:48 +0000
committerH.J. Lu <hjl.tools@gmail.com>2002-03-04 20:40:48 +0000
commite9682144c14fc809af72bd6c0b8c69731d38679c (patch)
treee7c59db32815cdf747c2f17ca26127ed2881d8c0
parentb5090659de579b6a000367292b6a066dff022f5e (diff)
downloadgdb-e9682144c14fc809af72bd6c0b8c69731d38679c.zip
gdb-e9682144c14fc809af72bd6c0b8c69731d38679c.tar.gz
gdb-e9682144c14fc809af72bd6c0b8c69731d38679c.tar.bz2
2002-03-04 H.J. Lu <hjl@gnu.org>
* config/obj-elf.c (special_section): Add .init_array, .fini_array and .preinit_array. * config/tc-ia64.h (ELF_TC_SPECIAL_SECTIONS): Remove .init_array and .fini_array.
-rw-r--r--gas/ChangeLog8
-rw-r--r--gas/config/obj-elf.c21
-rw-r--r--gas/config/tc-ia64.h2
3 files changed, 29 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 4eea491..221c592 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,11 @@
+2002-03-04 H.J. Lu <hjl@gnu.org>
+
+ * config/obj-elf.c (special_section): Add .init_array,
+ .fini_array and .preinit_array.
+
+ * config/tc-ia64.h (ELF_TC_SPECIAL_SECTIONS): Remove
+ .init_array and .fini_array.
+
2002-03-01 Jakub Jelinek <jakub@redhat.com>
* config/obj-elf.c (elf_copy_symbol_attributes): Don't copy
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index dcbff5d..0597eb7 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -595,6 +595,27 @@ static struct special_section const special_sections[] =
{ ".rodata", SHT_PROGBITS, SHF_ALLOC },
{ ".rodata1", SHT_PROGBITS, SHF_ALLOC },
{ ".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
diff --git a/gas/config/tc-ia64.h b/gas/config/tc-ia64.h
index 53dab86..7b03e26 100644
--- a/gas/config/tc-ia64.h
+++ b/gas/config/tc-ia64.h
@@ -124,8 +124,6 @@ extern void ia64_after_parse_args PARAMS ((void));
#define WORKING_DOT_WORD /* don't do broken word processing for now */
#define ELF_TC_SPECIAL_SECTIONS \
-{ ".init_array",SHT_INIT_ARRAY, SHF_ALLOC + SHF_WRITE }, \
-{ ".fini_array",SHT_FINI_ARRAY, SHF_ALLOC + SHF_WRITE }, \
{ ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_IA_64_SHORT }, \
{ ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_IA_64_SHORT },