aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog8
-rw-r--r--gas/config/tc-sh.c16
-rw-r--r--gas/testsuite/gas/sh/pcrel.d25
-rw-r--r--gas/testsuite/gas/sh/pcrel.l3
-rw-r--r--gas/testsuite/gas/sh/pcrel.s2
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