As a result of a switch instead of an if, as would issue non-specific
error messages when it encountered an operand it could not parse in bpf.
This patch fixes that regression and adds a test to prevent it from
reoccurring.
Tested for bpf-unknown-none on x86_64-redhat-linux.
gas/ChangeLog:
* config/tc-bpf.c (parse_expression): Change switch to if so that error
* condition is handled.
* testsuite/gas/bpf/bpf.exp: Invoke new test.
* testsuite/gas/bpf/indcall-badoperand.d: New test.
* testsuite/gas/bpf/indcall-badoperand.l: New test.
* testsuite/gas/bpf/indcall-badoperand.s: New test.
+2024-02-19 Will Hawkins <hawkinsw@obs.cr>
+
+ * config/tc-bpf.c (parse_expression): Change switch to if so that
+ error condition is handled.
+ * testsuite/gas/bpf/indcall-badoperand.d: New test.
+ * testsuite/gas/bpf/indcall-badoperand.l: Likewise.
+ * testsuite/gas/bpf/indcall-badoperand.s: Likewise.
+ * testsuite/gas/bpf/bpf.exp: Invoke new test.
+
2024-02-19 Jose E. Marchesi <jose.marchesi@oracle.com>
* config/tc-bpf.c (md_assemble): Fix to take into account that
s = input_line_pointer;
input_line_pointer = saved_input_line_pointer;
- switch (exp->X_op == O_absent || exp_parse_failed)
+ if (exp->X_op == O_absent || exp_parse_failed)
return NULL;
/* The expression parser may consume trailing whitespaces. We have
run_dump_test disp32-overflow
run_dump_test imm32-overflow
+ # Bad operand (regression)
+ run_dump_test indcall-badoperand
+
# In Pseudo-C it is not possible to refer to symbols
# as operands that have the same name than registers.
run_dump_test regs-for-symbols-pseudoc