gas/
2005-02-15 Jan Beulich <jbeulich@novell.com> * config/tc-ia64.c (md_apply_fix3): Call ia64_gen_real_reloc_type instead of explicitly dealing with the translation; exclude relocations that are already pcrel, however. gas/testsuite/ 2005-02-15 Jan Beulich <jbeulich@novell.com> * gas/ia64/pcrel.[ds]: New. * gas/ia64/ia64.exp: Run new test.
This commit is contained in:
parent
a66d2bb7bd
commit
7b347e436d
6 changed files with 179 additions and 21 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2005-02-15 Jan Beulich <jbeulich@novell.com>
|
||||||
|
|
||||||
|
* config/tc-ia64.c (md_apply_fix3): Call ia64_gen_real_reloc_type
|
||||||
|
instead of explicitly dealing with the translation; exclude
|
||||||
|
relocations that are already pcrel, however.
|
||||||
|
|
||||||
2005-02-15 Jan Beulich <jbeulich@novell.com>
|
2005-02-15 Jan Beulich <jbeulich@novell.com>
|
||||||
|
|
||||||
* config/tc-ia64.c: Include limits.h (if available).
|
* config/tc-ia64.c: Include limits.h (if available).
|
||||||
|
|
|
@ -11243,27 +11243,24 @@ md_apply_fix3 (fix, valP, seg)
|
||||||
|
|
||||||
if (fix->fx_pcrel)
|
if (fix->fx_pcrel)
|
||||||
{
|
{
|
||||||
switch (fix->fx_r_type)
|
switch (fix->fx_r_type)
|
||||||
{
|
{
|
||||||
case BFD_RELOC_IA64_DIR32MSB:
|
case BFD_RELOC_IA64_PCREL21B: break;
|
||||||
fix->fx_r_type = BFD_RELOC_IA64_PCREL32MSB;
|
case BFD_RELOC_IA64_PCREL21BI: break;
|
||||||
break;
|
case BFD_RELOC_IA64_PCREL21F: break;
|
||||||
|
case BFD_RELOC_IA64_PCREL21M: break;
|
||||||
case BFD_RELOC_IA64_DIR32LSB:
|
case BFD_RELOC_IA64_PCREL60B: break;
|
||||||
fix->fx_r_type = BFD_RELOC_IA64_PCREL32LSB;
|
case BFD_RELOC_IA64_PCREL22: break;
|
||||||
break;
|
case BFD_RELOC_IA64_PCREL64I: break;
|
||||||
|
case BFD_RELOC_IA64_PCREL32MSB: break;
|
||||||
case BFD_RELOC_IA64_DIR64MSB:
|
case BFD_RELOC_IA64_PCREL32LSB: break;
|
||||||
fix->fx_r_type = BFD_RELOC_IA64_PCREL64MSB;
|
case BFD_RELOC_IA64_PCREL64MSB: break;
|
||||||
break;
|
case BFD_RELOC_IA64_PCREL64LSB: break;
|
||||||
|
default:
|
||||||
case BFD_RELOC_IA64_DIR64LSB:
|
fix->fx_r_type = ia64_gen_real_reloc_type (pseudo_func[FUNC_PC_RELATIVE].u.sym,
|
||||||
fix->fx_r_type = BFD_RELOC_IA64_PCREL64LSB;
|
fix->fx_r_type);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (fix->fx_addsy)
|
if (fix->fx_addsy)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2005-02-15 Jan Beulich <jbeulich@novell.com>
|
||||||
|
|
||||||
|
* gas/ia64/pcrel.[ds]: New.
|
||||||
|
* gas/ia64/ia64.exp: Run new test.
|
||||||
|
|
||||||
2005-02-15 Jan Beulich <jbeulich@novell.com>
|
2005-02-15 Jan Beulich <jbeulich@novell.com>
|
||||||
|
|
||||||
* gas/ia64/dv-raw-err.l: Expect specific resource for RAW violation on b0.
|
* gas/ia64/dv-raw-err.l: Expect specific resource for RAW violation on b0.
|
||||||
|
|
|
@ -53,6 +53,7 @@ if [istarget "ia64-*"] then {
|
||||||
|
|
||||||
run_dump_test "reloc"
|
run_dump_test "reloc"
|
||||||
run_list_test "reloc-bad" ""
|
run_list_test "reloc-bad" ""
|
||||||
|
run_dump_test "pcrel"
|
||||||
|
|
||||||
run_dump_test "real"
|
run_dump_test "real"
|
||||||
run_dump_test "align"
|
run_dump_test "align"
|
||||||
|
|
62
gas/testsuite/gas/ia64/pcrel.d
Normal file
62
gas/testsuite/gas/ia64/pcrel.d
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
#objdump: -rs
|
||||||
|
#name: ia64 pcrel
|
||||||
|
|
||||||
|
.*: +file format .*
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR \[\.mov\]:
|
||||||
|
OFFSET[[:space:]]+TYPE[[:space:]]+VALUE[[:space:]]*
|
||||||
|
0+10[[:space:]]+PCREL22[[:space:]]+esym
|
||||||
|
0+20[[:space:]]+PCREL22[[:space:]]+esym\+0x0+20
|
||||||
|
0+30[[:space:]]+PCREL22[[:space:]]+esym
|
||||||
|
0+40[[:space:]]+PCREL22[[:space:]]+esym\+0xf+e0
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR \[\.movl\]:
|
||||||
|
OFFSET[[:space:]]+TYPE[[:space:]]+VALUE[[:space:]]*
|
||||||
|
0+12[[:space:]]+PCREL64I[[:space:]]+esym
|
||||||
|
0+22[[:space:]]+PCREL64I[[:space:]]+esym\+0x0+20
|
||||||
|
0+32[[:space:]]+PCREL64I[[:space:]]+esym
|
||||||
|
0+42[[:space:]]+PCREL64I[[:space:]]+esym\+0xf+e0
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR \[\.data8\]:
|
||||||
|
OFFSET[[:space:]]+TYPE[[:space:]]+VALUE[[:space:]]*
|
||||||
|
0+10[[:space:]]+PCREL64[LM]SB[[:space:]]+esym
|
||||||
|
0+20[[:space:]]+PCREL64[LM]SB[[:space:]]+esym\+0x0+20
|
||||||
|
0+30[[:space:]]+PCREL64[LM]SB[[:space:]]+esym
|
||||||
|
0+40[[:space:]]+PCREL64[LM]SB[[:space:]]+esym\+0xf+e0
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR \[\.data4\]:
|
||||||
|
OFFSET[[:space:]]+TYPE[[:space:]]+VALUE[[:space:]]*
|
||||||
|
0+10[[:space:]]+PCREL32[LM]SB[[:space:]]+esym
|
||||||
|
0+20[[:space:]]+PCREL32[LM]SB[[:space:]]+esym\+0x0+20
|
||||||
|
0+30[[:space:]]+PCREL32[LM]SB[[:space:]]+esym
|
||||||
|
0+40[[:space:]]+PCREL32[LM]SB[[:space:]]+esym\+0xf+e0
|
||||||
|
|
||||||
|
|
||||||
|
Contents of section \.mov:
|
||||||
|
0+00 1d108001 00240000 00020000 00000020 .*
|
||||||
|
0+10 1d100000 00240000 00020000 00000020 .*
|
||||||
|
0+20 1d100000 00240000 00020000 00000020 .*
|
||||||
|
0+30 1d100000 00240000 00020000 00000020 .*
|
||||||
|
0+40 1d100000 00240000 00020000 00000020 .*
|
||||||
|
0+50 1d100000 00240000 00020000 00000020 .*
|
||||||
|
Contents of section \.movl:
|
||||||
|
0+00 05000000 01000000 00000040 00060060 .*
|
||||||
|
0+10 05000000 01000000 00000040 00000060 .*
|
||||||
|
0+20 05000000 01000000 00000040 00000060 .*
|
||||||
|
0+30 05000000 01000000 00000040 00000060 .*
|
||||||
|
0+40 05000000 01000000 00000040 00000060 .*
|
||||||
|
0+50 05000000 01000000 00000040 00000060 .*
|
||||||
|
Contents of section \.data8:
|
||||||
|
0+00 60000000 00000000 00000000 00000000 .*
|
||||||
|
0+10 00000000 00000000 00000000 00000000 .*
|
||||||
|
0+20 00000000 00000000 00000000 00000000 .*
|
||||||
|
0+30 00000000 00000000 00000000 00000000 .*
|
||||||
|
0+40 00000000 00000000 00000000 00000000 .*
|
||||||
|
0+50 00000000 00000000 00000000 00000000 .*
|
||||||
|
Contents of section \.data4:
|
||||||
|
0+00 60000000 00000000 00000000 00000000 .*
|
||||||
|
0+10 00000000 00000000 00000000 00000000 .*
|
||||||
|
0+20 00000000 00000000 00000000 00000000 .*
|
||||||
|
0+30 00000000 00000000 00000000 00000000 .*
|
||||||
|
0+40 00000000 00000000 00000000 00000000 .*
|
||||||
|
0+50 00000000 00000000 00000000 00000000 .*
|
87
gas/testsuite/gas/ia64/pcrel.s
Normal file
87
gas/testsuite/gas/ia64/pcrel.s
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
.explicit
|
||||||
|
.global esym
|
||||||
|
|
||||||
|
.altmacro
|
||||||
|
|
||||||
|
.macro begin n, attr
|
||||||
|
.section .&n, attr, @progbits
|
||||||
|
.align 16
|
||||||
|
_&n:
|
||||||
|
.endm
|
||||||
|
.macro end n
|
||||||
|
.align 16
|
||||||
|
_e&n:
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro m1 op, opnd1
|
||||||
|
.align 16
|
||||||
|
op opnd1 _e&op - _&op
|
||||||
|
.endm
|
||||||
|
.macro m2 op, opnd1
|
||||||
|
.align 16
|
||||||
|
op opnd1 @pcrel(esym)
|
||||||
|
.endm
|
||||||
|
.macro m3 op, opnd1
|
||||||
|
.align 16
|
||||||
|
op opnd1 esym - _&op
|
||||||
|
.endm
|
||||||
|
.macro m4 op, opnd1
|
||||||
|
.align 16
|
||||||
|
op opnd1 esym - .
|
||||||
|
.endm
|
||||||
|
.macro m5 op, opnd1
|
||||||
|
.align 16
|
||||||
|
op opnd1 esym - _e&op
|
||||||
|
.endm
|
||||||
|
.macro m6 op, opnd1
|
||||||
|
.align 16
|
||||||
|
op opnd1 0
|
||||||
|
.endm
|
||||||
|
|
||||||
|
begin mov, "ax"
|
||||||
|
m1 mov, r2 =
|
||||||
|
;;
|
||||||
|
m2 mov, r2 =
|
||||||
|
;;
|
||||||
|
m3 mov, r2 =
|
||||||
|
;;
|
||||||
|
m4 mov, r2 =
|
||||||
|
;;
|
||||||
|
m5 mov, r2 =
|
||||||
|
;;
|
||||||
|
m6 mov, r2 =
|
||||||
|
;;
|
||||||
|
end mov
|
||||||
|
|
||||||
|
begin movl, "ax"
|
||||||
|
m1 movl, r2 =
|
||||||
|
;;
|
||||||
|
m2 movl, r2 =
|
||||||
|
;;
|
||||||
|
m3 movl, r2 =
|
||||||
|
;;
|
||||||
|
m4 movl, r2 =
|
||||||
|
;;
|
||||||
|
m5 movl, r2 =
|
||||||
|
;;
|
||||||
|
m6 movl, r2 =
|
||||||
|
;;
|
||||||
|
end movl
|
||||||
|
|
||||||
|
begin data8, "a"
|
||||||
|
m1 data8
|
||||||
|
m2 data8
|
||||||
|
m3 data8
|
||||||
|
m4 data8
|
||||||
|
m5 data8
|
||||||
|
m6 data8
|
||||||
|
end data8
|
||||||
|
|
||||||
|
begin data4, "a"
|
||||||
|
m1 data4
|
||||||
|
m2 data4
|
||||||
|
m3 data4
|
||||||
|
m4 data4
|
||||||
|
m5 data4
|
||||||
|
m6 data4
|
||||||
|
end data4
|
Loading…
Add table
Add a link
Reference in a new issue