From: Stephen Casner Date: Thu, 28 May 2020 01:40:38 +0000 (-0700) Subject: Fix PR gas/26001 (pdp11-*-*) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1c912705af057b0d30ea51af46d8a00014a84034;p=binutils-gdb.git 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. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 0d1565f00d3..c0b3dc88036 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 d38a3cd6d25..57daa0f5097 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 e27dd0581c8..65c6a052b1a 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 00000000000..a6ccdef47bd --- /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 00000000000..44faa14595a --- /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