From 711ef82f1d0a4fb40bcec63df99e9beddd125659 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sat, 3 May 2003 16:04:12 +0000 Subject: gas/ 2003-05-03 H.J. Lu * 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 * 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. --- gas/ChangeLog | 13 +++++++++++++ gas/config/obj-elf.c | 5 +---- gas/config/tc-alpha.c | 2 +- gas/config/tc-ia64.c | 9 +++++++-- gas/config/tc-ppc.c | 2 +- gas/testsuite/ChangeLog | 8 ++++++++ gas/testsuite/gas/ia64/ia64.exp | 1 + gas/testsuite/gas/ia64/unwind.d | 30 ++++++++++++++++++++++++++++++ gas/testsuite/gas/ia64/unwind.s | 4 ++++ 9 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 gas/testsuite/gas/ia64/unwind.d create mode 100644 gas/testsuite/gas/ia64/unwind.s (limited to 'gas') diff --git a/gas/ChangeLog b/gas/ChangeLog index f3df01d..64852b0 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,16 @@ +2003-05-03 H.J. Lu + + * 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 * read.h (demand_copy_string): New. diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c index 08e131f..ac836d7 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 ec4668b..fd1a0d8 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 7a8d5f5..eacf471 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 9da89b3..6b62e6b 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 2da83f2..0822e43 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2003-05-03 H.J. Lu + + * 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 * 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 57c0e38..4597ca1 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 0000000..b29ef01 --- /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 0000000..a8c2be0 --- /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 -- cgit v1.1