diff options
author | Jan Beulich <jbeulich@novell.com> | 2005-05-19 06:32:01 +0000 |
---|---|---|
committer | Jan Beulich <jbeulich@novell.com> | 2005-05-19 06:32:01 +0000 |
commit | 4600db4835639751fda271513fa57e375e334e5e (patch) | |
tree | dc23c93369b8bb13748a7ec3f5872357eb4abc80 /gas | |
parent | abb333a4ed62b30ac31da2660f386d391d30649e (diff) | |
download | gdb-4600db4835639751fda271513fa57e375e334e5e.zip gdb-4600db4835639751fda271513fa57e375e334e5e.tar.gz gdb-4600db4835639751fda271513fa57e375e334e5e.tar.bz2 |
gas/
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.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-ia64.c | 8 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/ia64.exp | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/reloc-uw-ilp32.d | 15 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/reloc-uw.d | 13 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/reloc-uw.s | 13 |
7 files changed, 62 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 239d649..d2f5136 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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 diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c index 43b79e5..27fa7aa 100644 --- a/gas/config/tc-ia64.c +++ b/gas/config/tc-ia64.c @@ -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; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 3ea7e20..f9dada9 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -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 %. diff --git a/gas/testsuite/gas/ia64/ia64.exp b/gas/testsuite/gas/ia64/ia64.exp index f6e9530..dd3e539 100644 --- a/gas/testsuite/gas/ia64/ia64.exp +++ b/gas/testsuite/gas/ia64/ia64.exp @@ -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 index 0000000..b59eb40 --- /dev/null +++ b/gas/testsuite/gas/ia64/reloc-uw-ilp32.d @@ -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 index 0000000..e7af6f1 --- /dev/null +++ b/gas/testsuite/gas/ia64/reloc-uw.d @@ -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 index 0000000..1cda453 --- /dev/null +++ b/gas/testsuite/gas/ia64/reloc-uw.s @@ -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 |