summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl@lucon.org>2003-05-03 16:04:12 +0000
committerH.J. Lu <hjl@lucon.org>2003-05-03 16:04:12 +0000
commit920f2d9e1af842ffdb2c4dae7764f6377cc6df17 (patch)
tree03fcce34e6b7169179b6ecef6e2e4832bfff1e84
parentde42646feb6ad7f98fae1aa5b0ac0cbdbf44c77e (diff)
downloadbinutils-redhat-920f2d9e1af842ffdb2c4dae7764f6377cc6df17.tar.gz
gas/
2003-05-03 H.J. Lu <hjl@gnu.org> * config/obj-elf.c (obj_elf_parse_section_letters): Make it a fatal error for unknown section attribute. * config/tc-alpha.c (alpha_elf_section_letter): Return -1 for unknown section attribute. * config/tc-ia64.c (ia64_elf_section_letter): Likewise. * config/tc-ppc.c (ppc_section_letter): Likewise. * config/tc-ia64.c (ia64_elf_section_letter): Handle 'o'. (ia64_elf_section_type): Accept "unwind". gas/testsuite/ 2003-05-03 H.J. Lu <hjl@gnu.org> * gas/ia64/ia64.exp: Add unwind. * gas/ia64/unwind.s: New. Test the new section attribute 'o' and the new section type "unwind". * gas/ia64/unwind.d: Likewise.
-rw-r--r--gas/ChangeLog13
-rw-r--r--gas/config/obj-elf.c5
-rw-r--r--gas/config/tc-alpha.c2
-rw-r--r--gas/config/tc-ia64.c9
-rw-r--r--gas/config/tc-ppc.c2
-rw-r--r--gas/testsuite/ChangeLog8
-rw-r--r--gas/testsuite/gas/ia64/ia64.exp1
-rw-r--r--gas/testsuite/gas/ia64/unwind.d30
-rw-r--r--gas/testsuite/gas/ia64/unwind.s4
9 files changed, 66 insertions, 8 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index f3df01d507..64852b0ff6 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,16 @@
+2003-05-03 H.J. Lu <hjl@gnu.org>
+
+ * config/obj-elf.c (obj_elf_parse_section_letters): Make it a
+ fatal error for unknown section attribute.
+
+ * config/tc-alpha.c (alpha_elf_section_letter): Return -1 for
+ unknown section attribute.
+ * config/tc-ia64.c (ia64_elf_section_letter): Likewise.
+ * config/tc-ppc.c (ppc_section_letter): Likewise.
+
+ * config/tc-ia64.c (ia64_elf_section_letter): Handle 'o'.
+ (ia64_elf_section_type): Accept "unwind".
+
2003-05-02 H.J. Lu <hjl@gnu.org>
* read.h (demand_copy_string): New.
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index 08e131fe30..ac836d7355 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -845,10 +845,7 @@ obj_elf_parse_section_letters (str, len)
attr |= md_attr;
else
#endif
- {
- as_warn ("%s", bad_msg);
- attr = -1;
- }
+ as_fatal ("%s", bad_msg);
}
break;
}
diff --git a/gas/config/tc-alpha.c b/gas/config/tc-alpha.c
index ec4668b0b8..fd1a0d8a58 100644
--- a/gas/config/tc-alpha.c
+++ b/gas/config/tc-alpha.c
@@ -5635,7 +5635,7 @@ alpha_elf_section_letter (letter, ptr_msg)
return SHF_ALPHA_GPREL;
*ptr_msg = _("Bad .section directive: want a,s,w,x,M,S,G,T in string");
- return 0;
+ return -1;
}
/* Map SHF_ALPHA_GPREL to SEC_SMALL_DATA. */
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index 7a8d5f5214..eacf471032 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -968,9 +968,11 @@ ia64_elf_section_letter (letter, ptr_msg)
{
if (letter == 's')
return SHF_IA_64_SHORT;
+ else if (letter == 'o')
+ return SHF_LINK_ORDER;
- *ptr_msg = _("Bad .section directive: want a,s,w,x,M,S,G,T in string");
- return 0;
+ *ptr_msg = _("Bad .section directive: want a,o,s,w,x,M,S,G,T in string");
+ return -1;
}
/* Map SHF_IA_64_SHORT to SEC_SMALL_DATA. */
@@ -1004,6 +1006,9 @@ ia64_elf_section_type (str, len)
if (STREQ (ELF_STRING_ia64_unwind_once))
return SHT_IA_64_UNWIND;
+ if (STREQ ("unwind"))
+ return SHT_IA_64_UNWIND;
+
if (STREQ ("init_array"))
return SHT_INIT_ARRAY;
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index 9da89b362f..6b62e6b9f2 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -2754,7 +2754,7 @@ ppc_section_letter (letter, ptr_msg)
return SHF_EXCLUDE;
*ptr_msg = _("Bad .section directive: want a,e,w,x,M,S,G,T in string");
- return 0;
+ return -1;
}
int
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 2da83f2f16..0822e43c09 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2003-05-03 H.J. Lu <hjl@gnu.org>
+
+ * gas/ia64/ia64.exp: Add unwind.
+
+ * gas/ia64/unwind.s: New. Test the new section attribute 'o'
+ and the new section type "unwind".
+ * gas/ia64/unwind.d: Likewise.
+
2003-05-02 Chris Demetriou <cgd@broadcom.com>
* gas/mips/mips.exp (mips_arch_init): Reimplement in
diff --git a/gas/testsuite/gas/ia64/ia64.exp b/gas/testsuite/gas/ia64/ia64.exp
index 57c0e381cb..4597ca144a 100644
--- a/gas/testsuite/gas/ia64/ia64.exp
+++ b/gas/testsuite/gas/ia64/ia64.exp
@@ -47,4 +47,5 @@ if [istarget "ia64-*"] then {
run_dump_test "order"
run_dump_test "global"
run_dump_test "secname"
+ run_dump_test "unwind"
}
diff --git a/gas/testsuite/gas/ia64/unwind.d b/gas/testsuite/gas/ia64/unwind.d
new file mode 100644
index 0000000000..b29ef01518
--- /dev/null
+++ b/gas/testsuite/gas/ia64/unwind.d
@@ -0,0 +1,30 @@
+#readelf: -S
+#name: ia64 unwind section
+
+There are 9 section headers, starting at offset 0xa0:
+
+Section Headers:
+ \[Nr\] Name Type Address Offset
+ Size EntSize Flags Link Info Align
+ \[ 0\] NULL 0000000000000000 00000000
+ 0000000000000000 0000000000000000 0 0 0
+ \[ 1\] \.text PROGBITS 0000000000000000 00000040
+ 0000000000000000 0000000000000000 AX 0 0 16
+ \[ 2\] \.data PROGBITS 0000000000000000 00000040
+ 0000000000000000 0000000000000000 WA 0 0 1
+ \[ 3\] \.bss NOBITS 0000000000000000 00000040
+ 0000000000000000 0000000000000000 WA 0 0 1
+ \[ 4\] \.IA_64\.unwind_inf PROGBITS 0000000000000000 00000040
+ 0000000000000008 0000000000000000 A 0 0 8
+ \[ 5\] \.IA_64\.unwind IA_64_UNWIND 0000000000000000 00000048
+ 0000000000000008 0000000000000000 AL 1 1 8
+ \[ 6\] \.shstrtab STRTAB 0000000000000000 00000050
+ 000000000000004d 0000000000000000 0 0 1
+ \[ 7\] \.symtab SYMTAB 0000000000000000 000002e0
+ 0000000000000090 0000000000000018 8 6 8
+ \[ 8\] \.strtab STRTAB 0000000000000000 00000370
+ 0000000000000001 0000000000000000 0 0 1
+Key to Flags:
+ W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\)
+ I \(info\), L \(link order\), G \(group\), x \(unknown\)
+ O \(extra OS processing required\) o \(OS specific\), p \(processor specific\)
diff --git a/gas/testsuite/gas/ia64/unwind.s b/gas/testsuite/gas/ia64/unwind.s
new file mode 100644
index 0000000000..a8c2be0242
--- /dev/null
+++ b/gas/testsuite/gas/ia64/unwind.s
@@ -0,0 +1,4 @@
+ .section .IA_64.unwind_info, "a", "progbits"
+ data8 1234
+ .section .IA_64.unwind, "ao", "unwind"
+ data8 1234