gas/
authorJan Beulich <jbeulich@novell.com>
Thu, 19 May 2005 06:32:01 +0000 (06:32 +0000)
committerJan Beulich <jbeulich@novell.com>
Thu, 19 May 2005 06:32:01 +0000 (06:32 +0000)
2005-05-19  Jan Beulich  <jbeulich@novell.com>

* config/tc-ia64.c (dot_endp): Don't use global symbol for unwind
relocations in unwind section.

gas/testsuite/
2005-05-19  Jan Beulich  <jbeulich@novell.com>

* gas/ia64/reloc-uw.s: New.
* gas/ia64/reloc-uw.d: New.
* gas/ia64/reloc-uw-ilp32.d: New.
* gas/ia64/ia64.exp: Run new test.

gas/ChangeLog
gas/config/tc-ia64.c
gas/testsuite/ChangeLog
gas/testsuite/gas/ia64/ia64.exp
gas/testsuite/gas/ia64/reloc-uw-ilp32.d [new file with mode: 0644]
gas/testsuite/gas/ia64/reloc-uw.d [new file with mode: 0644]
gas/testsuite/gas/ia64/reloc-uw.s [new file with mode: 0644]

index 239d649..d2f5136 100644 (file)
@@ -1,3 +1,8 @@
+2005-05-19  Jan Beulich  <jbeulich@novell.com>
+
+       * config/tc-ia64.c (dot_endp): Don't use global symbol for unwind
+       relocations in unwind section.
+
 2005-05-18  Nick Clifton  <nickc@redhat.com>
 
        * config/tc-v850.c (md_apply_fix3): Only use the insertion routine
index 43b79e5..27fa7aa 100644 (file)
@@ -4442,7 +4442,13 @@ dot_endp (dummy)
       e.X_op = O_pseudo_fixup;
       e.X_op_symbol = pseudo_func[FUNC_SEG_RELATIVE].u.sym;
       e.X_add_number = 0;
-      e.X_add_symbol = unwind.proc_start;
+      if (!S_IS_LOCAL (unwind.proc_start)
+         && S_IS_DEFINED (unwind.proc_start))
+       e.X_add_symbol = symbol_temp_new (S_GET_SEGMENT (unwind.proc_start),
+                                         S_GET_VALUE (unwind.proc_start),
+                                         symbol_get_frag (unwind.proc_start));
+      else
+       e.X_add_symbol = unwind.proc_start;
       ia64_cons_fix_new (frag_now, where, bytes_per_address, &e);
 
       e.X_op = O_pseudo_fixup;
index 3ea7e20..f9dada9 100644 (file)
@@ -1,3 +1,10 @@
+2005-05-19  Jan Beulich  <jbeulich@novell.com>
+
+       * gas/ia64/reloc-uw.s: New.
+       * gas/ia64/reloc-uw.d: New.
+       * gas/ia64/reloc-uw-ilp32.d: New.
+       * gas/ia64/ia64.exp: Run new test.
+
 2005-05-18  Jan Beulich  <jbeulich@novell.com>
 
        * gas/all/altmacro.s: Parenthesize operand of %.
index f6e9530..dd3e539 100644 (file)
@@ -65,11 +65,13 @@ if [istarget "ia64-*"] then {
        run_dump_test "unwind-ilp32"
        run_dump_test "alias-ilp32"
        run_dump_test "xdata-ilp32"
+       run_dump_test "reloc-uw-ilp32"
     } else {
        run_dump_test "secname"
        run_dump_test "unwind"
        run_dump_test "alias"
        run_dump_test "xdata"
+       run_dump_test "reloc-uw"
        run_dump_test "group-1"
        run_dump_test "group-2"
     }
diff --git a/gas/testsuite/gas/ia64/reloc-uw-ilp32.d b/gas/testsuite/gas/ia64/reloc-uw-ilp32.d
new file mode 100644 (file)
index 0000000..b59eb40
--- /dev/null
@@ -0,0 +1,15 @@
+#objdump: -r
+#name: ia64 unwind relocations (ilp32)
+#as: -milp32
+#source: reloc-uw.s
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[\.IA_64\.unwind\]:
+OFFSET[[:space:]]+TYPE[[:space:]]+VALUE[[:space:]]*
+0*00 SEGREL32[ML]SB[[:space:]]+\.text(\+0x[[:xdigit:]]*0)?
+0*04 SEGREL32[ML]SB[[:space:]]+\.text(\+0x[[:xdigit:]]*0)?
+0*08 SEGREL32[ML]SB[[:space:]]+\.IA_64\.unwind_info(\+0x[[:xdigit:]]*[048c])?
+0*0c SEGREL32[ML]SB[[:space:]]+\.text(\+0x[[:xdigit:]]*0)?
+0*10 SEGREL32[ML]SB[[:space:]]+\.text(\+0x[[:xdigit:]]*0)?
+0*14 SEGREL32[ML]SB[[:space:]]+\.IA_64\.unwind_info(\+0x[[:xdigit:]]*[048c])?
diff --git a/gas/testsuite/gas/ia64/reloc-uw.d b/gas/testsuite/gas/ia64/reloc-uw.d
new file mode 100644 (file)
index 0000000..e7af6f1
--- /dev/null
@@ -0,0 +1,13 @@
+# objdump: -r
+# name: ia64 unwind relocations
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[\.IA_64\.unwind\]:
+OFFSET[[:space:]]+TYPE[[:space:]]+VALUE[[:space:]]*
+0*00 SEGREL64[ML]SB[[:space:]]+\.text(\+0x[[:xdigit:]]*0)?
+0*08 SEGREL64[ML]SB[[:space:]]+\.text(\+0x[[:xdigit:]]*0)?
+0*10 SEGREL64[ML]SB[[:space:]]+\.IA_64\.unwind_info(\+0x[[:xdigit:]]*[08])?
+0*18 SEGREL64[ML]SB[[:space:]]+\.text(\+0x[[:xdigit:]]*0)?
+0*20 SEGREL64[ML]SB[[:space:]]+\.text(\+0x[[:xdigit:]]*0)?
+0*28 SEGREL64[ML]SB[[:space:]]+\.IA_64\.unwind_info(\+0x[[:xdigit:]]*[08])?
diff --git a/gas/testsuite/gas/ia64/reloc-uw.s b/gas/testsuite/gas/ia64/reloc-uw.s
new file mode 100644 (file)
index 0000000..1cda453
--- /dev/null
@@ -0,0 +1,13 @@
+       .text
+
+       .macro uw, type
+       .proc   uw\type
+       .\type  uw\type
+uw\type:
+       .unwentry
+       br.ret.sptk rp
+       .endp   uw\type
+       .endm
+
+       uw global
+       uw weak