This is the mail archive of the gdb-prs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug gdb/17235] possible bug extracting systemtap probe operand


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]