aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCupertino Miranda <cupertino.miranda@oracle.com>2023-11-21 12:26:08 +0000
committerCupertino Miranda <cupertino.miranda@oracle.com>2023-11-21 18:33:54 +0000
commit97b29a61f7f001550fe985bf2deea1550e3c20dd (patch)
tree3510ed2ec2bf1f4ff803050ec30261a0f96e09a7
parent54195469c18ec9873cc5ba6907f768509473fa9b (diff)
downloadgdb-97b29a61f7f001550fe985bf2deea1550e3c20dd.zip
gdb-97b29a61f7f001550fe985bf2deea1550e3c20dd.tar.gz
gdb-97b29a61f7f001550fe985bf2deea1550e3c20dd.tar.bz2
bpf: Fixed register parsing disambiguating with possible symbol.
This changes parse_bpf_register to detect possible symbols that start with valid register name, however due some following characters are not. Also changed the regs-for-symbols-pseudo.s, adding some entries that should not error if parser is properly detecting the symbol.
-rw-r--r--gas/config/tc-bpf.c4
-rw-r--r--gas/testsuite/gas/bpf/regs-for-symbols-pseudoc.s3
2 files changed, 7 insertions, 0 deletions
diff --git a/gas/config/tc-bpf.c b/gas/config/tc-bpf.c
index 45abc3c..b6b1db4 100644
--- a/gas/config/tc-bpf.c
+++ b/gas/config/tc-bpf.c
@@ -1300,6 +1300,10 @@ parse_bpf_register (char *s, char rw, uint8_t *regno)
s += 1;
}
+ /* If we are still parsing a name, it is not a register. */
+ if (is_part_of_name (*s))
+ return NULL;
+
return s;
}
diff --git a/gas/testsuite/gas/bpf/regs-for-symbols-pseudoc.s b/gas/testsuite/gas/bpf/regs-for-symbols-pseudoc.s
index 693787d..9b75f27 100644
--- a/gas/testsuite/gas/bpf/regs-for-symbols-pseudoc.s
+++ b/gas/testsuite/gas/bpf/regs-for-symbols-pseudoc.s
@@ -2,3 +2,6 @@
r2 = r3 ll
r2 = r3+1 ll
r2 = 1+r3 ll
+ r2 = r2d2 ll
+ r2 = r2d2+1 ll
+ r2 = 1+r2d2 ll