diff options
author | Sergio Durigan Junior <sergiodj@sergiodj.net> | 2021-01-03 02:42:52 -0500 |
---|---|---|
committer | Sergio Durigan Junior <sergiodj@sergiodj.net> | 2021-01-20 13:54:30 -0500 |
commit | 6f52fdf40465ee8f5421c66ceb21f37856bf6e5e (patch) | |
tree | 8c91b9f86d579eed54da4d5c21174f90ed34acf0 /gdb/sparc64-netbsd-nat.c | |
parent | 037e8112b9794a633248e5aa5943f3be273e0a20 (diff) | |
download | gdb-6f52fdf40465ee8f5421c66ceb21f37856bf6e5e.zip gdb-6f52fdf40465ee8f5421c66ceb21f37856bf6e5e.tar.gz gdb-6f52fdf40465ee8f5421c66ceb21f37856bf6e5e.tar.bz2 |
Fix a few stap parser issues and add a new test for probe expressions
The creation of this patch was motivated by Tom's "Change handling of
'!' operator in stap probes" patch.
While reviewing his patch, I stumbled upon a few issues with the stap
expression parser. They are:
- As it turns out, even with Tom's patch applied the parser doesn't
properly handle the '!' operator. The underlying issue was the fact
that stap_parse_argument_conditionally also needed to be patched in
order to recognize '!' as an operator that is part of a single
operand, and parse it accordingly.
- While writing the testcase I'm proposing on this patch, I found that
parenthesized sub-expressions were not being parsed correctly when
there was another term after them. For example:
1 - (2 + 3) + 4
In this case, the parser was considering "1" to be the left-side of
the expression, and "(2 + 3) + 4" to be the right-side. The patch
fixes the parser by making it identify whether a parenthesized
sub-expression has just been parsed, and act accordingly.
I've tested this on my Debian testing amd64, and everything seems OK.
gdb/ChangeLog:
2021-01-20 Sergio Durigan Junior <sergiodj@sergiodj.net>
Tom Tromey <tom@tromey.com>
* stap-probe.c (stap_parse_single_operand): Handle '!'
operator.
(stap_parse_argument_conditionally): Likewise.
Skip spaces after processing open-parenthesis sub-expression.
(stap_parse_argument_1): Skip spaces after call to
stap_parse_argument_conditionally.
Handle case when right-side expression is a parenthesized
sub-expression.
Skip spaces after call to stap_parse_argument_1.
gdb/testsuite/ChangeLog:
2021-01-20 Sergio Durigan Junior <sergiodj@sergiodj.net>
* gdb.arch/amd64-stap-expressions.S: New file.
* gdb.arch/amd64-stap-expressions.exp: New file.
Diffstat (limited to 'gdb/sparc64-netbsd-nat.c')
0 files changed, 0 insertions, 0 deletions