mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-05 15:15:42 +00:00
bpf: fix bpf expression parsing regression in GAS
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.
This commit is contained in:
committed by
Jose E. Marchesi
parent
b86b514aac
commit
ecd16ae4e4
@@ -1,3 +1,12 @@
|
||||
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
|
||||
|
||||
@@ -1240,7 +1240,7 @@ parse_expression (char *s, expressionS *exp)
|
||||
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
|
||||
|
||||
@@ -77,6 +77,9 @@ if {[istarget bpf*-*-*]} {
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user