From 1c912705af057b0d30ea51af46d8a00014a84034 Mon Sep 17 00:00:00 2001 From: Stephen Casner Date: Wed, 27 May 2020 18:40:38 -0700 Subject: [PATCH] Fix PR gas/26001 (pdp11-*-*) PR gas/26001 * gas/config/tc-pdp11.c (parse_reg): Distinguish register names from symbols that begin with a register name. * gas/testsuite/gas/pdp11/pdp11.exp: Add test of such symbols. * gas/testsuite/gas/pdp11/pr26001.s: Likewise. * gas/testsuite/gas/pdp11/pr26001.d: Likewise. --- gas/ChangeLog | 9 +++++++++ gas/config/tc-pdp11.c | 11 ++++++++++- gas/testsuite/gas/pdp11/pdp11.exp | 1 + gas/testsuite/gas/pdp11/pr26001.d | 12 ++++++++++++ gas/testsuite/gas/pdp11/pr26001.s | 9 +++++++++ 5 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 gas/testsuite/gas/pdp11/pr26001.d create mode 100644 gas/testsuite/gas/pdp11/pr26001.s diff --git a/gas/ChangeLog b/gas/ChangeLog index 0d1565f00d..c0b3dc8803 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,12 @@ +2020-05-27 Stephen Casner + + PR gas/26001 + * config/tc-pdp11.c (parse_reg): Distinguish register names from + symbols that begin with a register name. + * testsuite/gas/pdp11/pdp11.exp: Add test of such symbols. + * testsuite/gas/pdp11/pr26001.s: Likewise. + * testsuite/gas/pdp11/pr26001.d: Likewise. + 2020-05-27 Simon Cook * config/tc-riscv.c (riscv_init_csr_hash): NULL initilize next diff --git a/gas/config/tc-pdp11.c b/gas/config/tc-pdp11.c index d38a3cd6d2..57daa0f509 100644 --- a/gas/config/tc-pdp11.c +++ b/gas/config/tc-pdp11.c @@ -358,8 +358,17 @@ parse_reg (char *str, struct pdp11_code *operand) str += 2; } else - operand->error = _("Bad register name"); + { + operand->error = _("Bad register name"); + return str; + } + if (ISALNUM (*str) || *str == '_' || *str == '.') + { + operand->error = _("Bad register name"); + str -= 2; + } + return str; } diff --git a/gas/testsuite/gas/pdp11/pdp11.exp b/gas/testsuite/gas/pdp11/pdp11.exp index e27dd0581c..65c6a052b1 100644 --- a/gas/testsuite/gas/pdp11/pdp11.exp +++ b/gas/testsuite/gas/pdp11/pdp11.exp @@ -23,4 +23,5 @@ if [expr [istarget "pdp11-*-*"]] then { run_dump_test "absreloc" run_dump_test "pr14480" run_dump_test "pr23481" + run_dump_test "pr26001" } diff --git a/gas/testsuite/gas/pdp11/pr26001.d b/gas/testsuite/gas/pdp11/pr26001.d new file mode 100644 index 0000000000..a6ccdef47b --- /dev/null +++ b/gas/testsuite/gas/pdp11/pr26001.d @@ -0,0 +1,12 @@ +#name: PR 26001 - distinguish register names from symbols +#objdump: -dw + +.*: +file format .* + +Disassembly of section .text: + +0+00 : +[ ]+0:[ ]+09f7 fffc[ ]+jsr[ ]+pc, 0 +[ ]+4:[ ]+1037 0004[ ]+mov[ ]+r0, \$c +[ ]+8:[ ]+1dc1 0002[ ]+mov[ ]+\$e , r1 +#pass diff --git a/gas/testsuite/gas/pdp11/pr26001.s b/gas/testsuite/gas/pdp11/pr26001.s new file mode 100644 index 0000000000..44faa14595 --- /dev/null +++ b/gas/testsuite/gas/pdp11/pr26001.s @@ -0,0 +1,9 @@ + .text + .globl sprintf +start: jsr pc,sprintf + mov r0,space + mov r00f,r1 + .data +space: .word 0 +r00f: .word 0 + .end -- 2.34.1