gas/
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 3 May 2003 16:04:12 +0000 (16:04 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Sat, 3 May 2003 16:04:12 +0000 (16:04 +0000)
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.

gas/ChangeLog
gas/config/obj-elf.c
gas/config/tc-alpha.c
gas/config/tc-ia64.c
gas/config/tc-ppc.c
gas/testsuite/ChangeLog
gas/testsuite/gas/ia64/ia64.exp
gas/testsuite/gas/ia64/unwind.d [new file with mode: 0644]
gas/testsuite/gas/ia64/unwind.s [new file with mode: 0644]

index f3df01d5075550fdd4801e0dfaee3555c07c09bf..64852b0ff6961b17e8c232fc1c81512ea61fdbd8 100644 (file)
@@ -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.
index 08e131fe30d86a0f0e309bffa4518d9c06b6fb9b..ac836d7355a215b0d1da382048bac1230065649b 100644 (file)
@@ -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;
        }
index ec4668b0b8ce9472a8d648f9b5b86d242ec5109b..fd1a0d8a587647c935958031246b8ba0ac5c2af9 100644 (file)
@@ -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.  */
index 7a8d5f52146c9034dddc9dff3046ef7b331dc963..eacf471032aeeeb828b7d1584d86a4cac8604043 100644 (file)
@@ -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;
 
index 9da89b362fe8e27fac6b5c3c5c716217249f5d57..6b62e6b9f291519599de2f05949883edb7f7fa88 100644 (file)
@@ -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
index 2da83f2f167c9137b2fcf6f9f93b4bc1c427c691..0822e43c097994c95c3c535cd7a03dfbf44c2c09 100644 (file)
@@ -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
index 57c0e381cb1891f2c8e5435cd977f3fa2e2a2645..4597ca144a653291fe36a4565515a7646010d35d 100644 (file)
@@ -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 (file)
index 0000000..b29ef01
--- /dev/null
@@ -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 (file)
index 0000000..a8c2be0
--- /dev/null
@@ -0,0 +1,4 @@
+       .section .IA_64.unwind_info, "a", "progbits"
+       data8 1234
+       .section .IA_64.unwind, "ao", "unwind"
+       data8 1234