diff options
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 8 | ||||
-rw-r--r-- | gas/config/tc-sh.c | 16 | ||||
-rw-r--r-- | gas/testsuite/gas/sh/pcrel.d | 25 | ||||
-rw-r--r-- | gas/testsuite/gas/sh/pcrel.l | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/sh/pcrel.s | 2 |
5 files changed, 39 insertions, 15 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index f165585..44d3304 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +Thu Jun 6 17:42:12 2002 J"orn Rennecke <joern.rennecke@superh.com> + + * config/tc-sh.c (parse_at): @(symbol,pc) is A_DISP_PC again, + but warn about it. + * testsuite/gas/sh/pcrel.s: Also test @(symbol,pc). + * testsuite/gas/sh/pcrel.d: Update. + * testsuite/gas/sh/pcrel.l: New file. + 2002-06-06 Daniel Jacobowitz <drow@mvista.com> * tc-mips.c (mips_after_parse_args): Always set mips_opts.ase_mips3d diff --git a/gas/config/tc-sh.c b/gas/config/tc-sh.c index d411379..cd6f90c 100644 --- a/gas/config/tc-sh.c +++ b/gas/config/tc-sh.c @@ -1383,10 +1383,18 @@ parse_at (src, op) } else if (mode == A_PC) { - op->type = A_DISP_PC_ABS; - /* Such operands don't get corrected for PC==.+4, so - make the correction here. */ - op->immediate.X_add_number -= 4; + if (op->immediate.X_op == O_symbol) + { + op->type = A_DISP_PC; + as_warn (_("Deprecated syntax.")); + } + else + { + op->type = A_DISP_PC_ABS; + /* Such operands don't get corrected for PC==.+4, so + make the correction here. */ + op->immediate.X_add_number -= 4; + } } else { diff --git a/gas/testsuite/gas/sh/pcrel.d b/gas/testsuite/gas/sh/pcrel.d index 2501fbe..9e81b60 100644 --- a/gas/testsuite/gas/sh/pcrel.d +++ b/gas/testsuite/gas/sh/pcrel.d @@ -1,21 +1,24 @@ #as: -big #objdump: -d #name: PC-relative loads +#stderr: pcrel.l .*: file format .*sh.* Disassembly of section .text: 00000000 <code>: - 0: d1 03 mov\.l 10 <litpool>,r1 ! 0xfffffff0 - 2: d1 03 mov\.l 10 <litpool>,r1 ! 0xfffffff0 - 4: c7 02 mova 10 <litpool>,r0 - 6: 61 02 mov\.l @r0,r1 - 8: d1 01 mov\.l 10 <litpool>,r1 ! 0xfffffff0 - a: 01 03 bsrf r1 - c: 00 09 nop - e: 00 09 nop + 0: d0 04 mov\.l 14 <litpool>,r0 ! 0xffffffec + 2: d1 05 mov\.l 18 <litpool\+0x4>,r1 + 4: d1 03 mov\.l 14 <litpool>,r1 ! 0xffffffec + 6: d1 03 mov\.l 14 <litpool>,r1 ! 0xffffffec + 8: c7 02 mova 14 <litpool>,r0 + a: 61 02 mov\.l @r0,r1 + c: d1 01 mov\.l 14 <litpool>,r1 ! 0xffffffec + e: 01 03 bsrf r1 + 10: 00 09 nop + 12: 00 09 nop -00000010 <litpool>: - 10: ff ff \.word 0xffff - 12: ff f0 \.word 0xfff0 +00000014 <litpool>: + 14: ff ff \.word 0xffff + 16: ff ec \.word 0xffec diff --git a/gas/testsuite/gas/sh/pcrel.l b/gas/testsuite/gas/sh/pcrel.l new file mode 100644 index 0000000..25b2eef --- /dev/null +++ b/gas/testsuite/gas/sh/pcrel.l @@ -0,0 +1,3 @@ +[^:]*pcrel.s: Assembler messages: +[^:]*pcrel(-coff)?\.s:5: Warning: Deprecated syntax. +[^:]*pcrel(-coff)?\.s:6: Warning: Deprecated syntax. diff --git a/gas/testsuite/gas/sh/pcrel.s b/gas/testsuite/gas/sh/pcrel.s index d2df07a..20c394a 100644 --- a/gas/testsuite/gas/sh/pcrel.s +++ b/gas/testsuite/gas/sh/pcrel.s @@ -2,6 +2,8 @@ .p2align 2 code: + mov.l @(litpool,pc), r0 + mov.l @(litpool+4,pc), r1 mov.l litpool, r1 mov.l @(14,pc), r1 mova @(litpool-.,pc), r0 |