This is the mail archive of the gdb-cvs@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]

gdb and binutils branch master updated. 9d497a19eabe25b3af1cdd50a957592ed22658e5


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  9d497a19eabe25b3af1cdd50a957592ed22658e5 (commit)
      from  bbaa46c0f3f297bf776d9a171a7442e8a6f7a024 (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=9d497a19eabe25b3af1cdd50a957592ed22658e5

commit 9d497a19eabe25b3af1cdd50a957592ed22658e5
Author: Pedro Alves <palves@redhat.com>
Date:   Thu Apr 10 14:19:52 2014 +0100

    breakpoint shadowing, take single-step breakpoints into account.
    
    Breakpoints are supposed to be transparent to memory accesses.  For
    all kinds of breakpoints breakpoint_xfer_memory hides the breakpoint
    instructions.  However, sss breakpoints aren't tracked like all other
    breakpoints, and nothing is taking care of hiding them from memory
    reads.
    
    Say, as is, a background step + disassemble will see breakpoints
    instructions on software step targets.  E.g., stepping over this line:
    
      while (1);
    
    with s&
    
    and then "disassemble" would show sss breakpoints.
    
    Actually, that's still not be possible to see today, because:
    
     - in native Linux, you can't read memory while the program
       is running.
     - with Linux gdbserver, you can, but in the all-stop RSP you
       can't talk to the server while the program is running...
     - and with non-stop, on software step targets, we presently
       force the use of displaced-stepping for all single-steps,
       so no single-step breakpoints are used...
    
    I've been working towards making non-stop not force displaced stepping
    on sss targets, and I noticed the issue then.  With that, I indeed see
    this:
    
    (gdb) set remote Z-packet off
    (gdb) s&
    (gdb) disassemble main
    Dump of assembler code for function main:
       0x000000000040049c <+0>:     push   %rbp
       0x000000000040049d <+1>:     mov    %rsp,%rbp
       0x00000000004004a0 <+4>:     int3
       0x00000000004004a1 <+5>:     (bad)
    End of assembler dump.
    
    Instead of the correct:
    
    (gdb) disassemble main
    Dump of assembler code for function main:
       0x000000000040049c <+0>:     push   %rbp
       0x000000000040049d <+1>:     mov    %rsp,%rbp
       0x00000000004004a0 <+4>:     jmp    0x4004a0 <main+4>
    
    This is actually one thing that my v1 of the recent "fix a bunch of
    run control bugs" series was fixing, because it made sss breakpoints
    be regular breakpoints in the breakpoint chain.  But dropped it in the
    version that landed in the tree, due to some problems.
    
    So instead of making sss breakpoints regular breakpoints, go with a
    simpler fix (at least for now) -- make breakpoint_xfer_memory take
    software single-step breakpoints into account.  After the patch, I get
    the correct disassemble output.
    
    Tested on x86_64 Fedora 17, and also on top of my "use software
    single-step on x86" series.
    
    Also fixes the issue pointed out by Yao at
    https://sourceware.org/ml/gdb-patches/2014-04/msg00045.html, where the
    prologue analysis/frame sniffing manages to see software step
    breakpoint instructions.
    
    gdb/
    2014-04-10  Pedro Alves  <palves@redhat.com>
    
    	* breakpoint.c (single_step_breakpoints)
    	(single_step_gdbarch): Move up in the file.
    	(one_breakpoint_xfer_memory): New function, factored out from ...
    	(breakpoint_xfer_memory): ... here.  Also process single-step
    	breakpoints.

-----------------------------------------------------------------------

Summary of changes:
 gdb/ChangeLog    |    8 +++
 gdb/breakpoint.c |  186 ++++++++++++++++++++++++++++++++++--------------------
 2 files changed, 125 insertions(+), 69 deletions(-)


hooks/post-receive
-- 
gdb and binutils


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