aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2022-09-30 11:43:59 +0200
committerJan Beulich <jbeulich@suse.com>2022-09-30 11:43:59 +0200
commitb0423163b808c463fe35e861471f80123f0b309f (patch)
treecf356bb6f5e89dcbe4a82882fa5ba119d55ae768
parent3bf4994276269a241d97f8ccb5171fe581baa4cb (diff)
downloadgdb-b0423163b808c463fe35e861471f80123f0b309f.zip
gdb-b0423163b808c463fe35e861471f80123f0b309f.tar.gz
gdb-b0423163b808c463fe35e861471f80123f0b309f.tar.bz2
RISC-V: fix build after "Add support for arbitrary immediate encoding formats"
Pre- and post-increment/decrement are side effects, the behavior of which is undefined when combined with passing an address of the accessed variable in the same function invocation. There's no need for the increments here - simply adding 1 achieves the intended effect without triggering compiler diagnostics (which are fatal with -Werror).
-rw-r--r--gas/config/tc-riscv.c8
-rw-r--r--opcodes/riscv-dis.c4
2 files changed, 6 insertions, 6 deletions
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index d9f63b1..38ff016 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -1287,10 +1287,10 @@ validate_riscv_insn (const struct riscv_opcode *opc, int length)
case 'u': /* 'XuN@S' ... N-bit unsigned immediate at bit S. */
goto use_imm;
use_imm:
- n = strtol (++oparg, (char **)&oparg, 10);
+ n = strtol (oparg + 1, (char **)&oparg, 10);
if (*oparg != '@')
goto unknown_validate_operand;
- s = strtol (++oparg, (char **)&oparg, 10);
+ s = strtol (oparg + 1, (char **)&oparg, 10);
oparg--;
USE_IMM (n, s);
@@ -3327,10 +3327,10 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
sign = false;
goto parse_imm;
parse_imm:
- n = strtol (++oparg, (char **)&oparg, 10);
+ n = strtol (oparg + 1, (char **)&oparg, 10);
if (*oparg != '@')
goto unknown_riscv_ip_operand;
- s = strtol (++oparg, (char **)&oparg, 10);
+ s = strtol (oparg + 1, (char **)&oparg, 10);
oparg--;
my_getExpression (imm_expr, asarg);
diff --git a/opcodes/riscv-dis.c b/opcodes/riscv-dis.c
index f2d3992..6ac6949 100644
--- a/opcodes/riscv-dis.c
+++ b/opcodes/riscv-dis.c
@@ -586,10 +586,10 @@ print_insn_args (const char *oparg, insn_t l, bfd_vma pc, disassemble_info *info
sign = false;
goto print_imm;
print_imm:
- n = strtol (++oparg, (char **)&oparg, 10);
+ n = strtol (oparg + 1, (char **)&oparg, 10);
if (*oparg != '@')
goto undefined_modifier;
- s = strtol (++oparg, (char **)&oparg, 10);
+ s = strtol (oparg + 1, (char **)&oparg, 10);
oparg--;
if (!sign)