aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2023-04-25 11:17:19 +0200
committerJan Beulich <jbeulich@suse.com>2023-04-25 11:17:19 +0200
commitb33e94cfa4777b68719794ad1c1ef630e3dca3c2 (patch)
treed16855d85aae46ba3905759f7defb8d5d559ce36
parenta5e756e63e170cf69e06be98287528760833aad5 (diff)
downloadbinutils-b33e94cfa4777b68719794ad1c1ef630e3dca3c2.zip
binutils-b33e94cfa4777b68719794ad1c1ef630e3dca3c2.tar.gz
binutils-b33e94cfa4777b68719794ad1c1ef630e3dca3c2.tar.bz2
RISC-V: don't recognize bogus relocations
With my_getSmallExpression() consistently and silently failing on relocation operators not fitting an insn, it is no longer necessary to hand it percent_op_itype[] "just in case" (i.e. to avoid errors when a subsequent parsing attempt for another operand combination might succeed). This also eliminates the latent problem of percent_op_itype[] and percent_op_stype[] growing a non-identical set of recognized relocation operators.
-rw-r--r--gas/config/tc-riscv.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
index 6b7112b..c99bab9 100644
--- a/gas/config/tc-riscv.c
+++ b/gas/config/tc-riscv.c
@@ -2531,7 +2531,7 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
imm_expr->X_op = O_absent;
*imm_reloc = BFD_RELOC_UNUSED;
- p = percent_op_itype;
+ p = percent_op_null;
for (oparg = insn->args;; ++oparg)
{
@@ -3247,7 +3247,6 @@ riscv_ip (char *str, struct riscv_cl_insn *ip, expressionS *imm_expr,
p = percent_op_rtype;
goto alu_op;
case '0': /* AMO displacement, which must be zero. */
- p = percent_op_null;
load_store:
if (riscv_handle_implicit_zero_offset (imm_expr, asarg))
continue;