This is the mail archive of the
gdb-prs@sourceware.org
mailing list for the GDB project.
[Bug gdb/17235] possible bug extracting systemtap probe operand
- From: "cvs-commit at gcc dot gnu.org" <sourceware-bugzilla at sourceware dot org>
- To: gdb-prs at sourceware dot org
- Date: Fri, 05 Sep 2014 19:23:17 +0000
- Subject: [Bug gdb/17235] possible bug extracting systemtap probe operand
- Auto-submitted: auto-generated
- References: <bug-17235-4717 at http dot sourceware dot org/bugzilla/>
https://sourceware.org/bugzilla/show_bug.cgi?id=17235
--- Comment #2 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gdb and binutils".
The branch, master has been updated
via 474ca4f6871d4addb7ce6a177245bce79c89550e (commit)
from 514104634d0efd8955f7fd45cd509963e28212f6 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=474ca4f6871d4addb7ce6a177245bce79c89550e
commit 474ca4f6871d4addb7ce6a177245bce79c89550e
Author: Sergio Durigan Junior <sergiodj@redhat.com>
Date: Fri Sep 5 15:21:44 2014 -0400
Fix for PR gdb/17235: possible bug extracting systemtap probe operand
This patch is a fix to PR gdb/17235. The bug is about an unused
variable that got declared and set during one of the parsing phases of
an SDT probe's argument. I took the opportunity to rewrite some of the
code to improve the parsing. The bug was actually a thinko, because
what I wanted to do in the code was to discard the number on the string
being parsed.
During this portion, the code identifies that it is dealing with an
expression that begins with a sign ('+', '-' or '~'). This means that
the expression could be:
- a numeric literal (e.g., '+5')
- a register displacement (e.g., '-4(%rsp)')
- a subexpression (e.g., '-(2*3)')
So, after saving the sign and moving forward 1 char, now the code needs
to know if there is a digit followed by a register displacement prefix
operand (e.g., '(' on x86_64). If yes, then it is a register
operation. If not, then it will be handled recursively, and the code
will later apply the requested operation on the result (either a '+', a
'-' or a '~').
With the bug, the code was correctly discarding the digit (though using
strtol unnecessarily), but it wasn't properly dealing with
subexpressions when the register indirection prefix was '(', like on
x86_64. This patch also fixes this bug, and includes a testcase. It
passes on x86_64 Fedora 20.
-----------------------------------------------------------------------
Summary of changes:
gdb/ChangeLog | 7 +++
gdb/stap-probe.c | 40 ++++++++++---------
gdb/testsuite/ChangeLog | 6 +++
gdb/testsuite/gdb.arch/amd64-stap-wrong-subexp.S | 27 +++++++++++++
gdb/testsuite/gdb.arch/amd64-stap-wrong-subexp.exp | 41 ++++++++++++++++++++
5 files changed, 103 insertions(+), 18 deletions(-)
create mode 100644 gdb/testsuite/gdb.arch/amd64-stap-wrong-subexp.S
create mode 100644 gdb/testsuite/gdb.arch/amd64-stap-wrong-subexp.exp
--
You are receiving this mail because:
You are on the CC list for the bug.