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. b5ee5a50d440d75556fbe9154e501331f9e1d3c7


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  b5ee5a50d440d75556fbe9154e501331f9e1d3c7 (commit)
      from  d1eb56967f0487adbdad1de6b136f083e61149ce (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=b5ee5a50d440d75556fbe9154e501331f9e1d3c7

commit b5ee5a50d440d75556fbe9154e501331f9e1d3c7
Author: Pedro Alves <palves@redhat.com>
Date:   Wed Oct 30 15:07:07 2013 +0000

    Fix gdb.threads/stepi-random-signal.exp on software single-step targets.
    
    Currently on software single-step Linux targets we get:
    
     (gdb) PASS: gdb.threads/stepi-random-signal.exp: before stepi: get hexadecimal valueof "$pc"
     stepi
     infrun: clear_proceed_status_thread (Thread 0x7ffff7fca700 (LWP 7073))
     infrun: clear_proceed_status_thread (Thread 0x7ffff7fcb740 (LWP 7069))
     infrun: proceed (addr=0xffffffffffffffff, signal=GDB_SIGNAL_DEFAULT, step=1)
     infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=0, current thread [Thread 0x7ffff7fcb740 (LWP 7069)] at 0x400700
     infrun: wait_for_inferior ()
     infrun: target_wait (-1, status) =
     infrun:   7069 [Thread 0x7ffff7fcb740 (LWP 7069)],
     infrun:   status->kind = stopped, signal = GDB_SIGNAL_TRAP
     infrun: infwait_normal_state
     infrun: TARGET_WAITKIND_STOPPED
     infrun: stop_pc = 0x400704
     infrun: software single step trap for Thread 0x7ffff7fcb740 (LWP 7069)
     infrun: stepi/nexti
     infrun: stop_stepping
     44        while (counter != 0)
     (gdb) FAIL: gdb.threads/stepi-random-signal.exp: stepi (no random signal)
    
    Vs hardware-step targets:
    
     (gdb) PASS: gdb.threads/stepi-random-signal.exp: before stepi: get hexadecimal valueof "$pc"
     stepi
     infrun: clear_proceed_status_thread (Thread 0x7ffff7fca700 (LWP 9565))
     infrun: clear_proceed_status_thread (Thread 0x7ffff7fcb740 (LWP 9561))
     infrun: proceed (addr=0xffffffffffffffff, signal=GDB_SIGNAL_DEFAULT, step=1)
     infrun: resume (step=1, signal=GDB_SIGNAL_0), trap_expected=0, current thread [Thread 0x7ffff7fcb740 (LWP 9561)] at 0x400700
     infrun: wait_for_inferior ()
     infrun: target_wait (-1, status) =
     infrun:   9561 [Thread 0x7ffff7fcb740 (LWP 9561)],
     infrun:   status->kind = stopped, signal = GDB_SIGNAL_CHLD
     infrun: infwait_normal_state
     infrun: TARGET_WAITKIND_STOPPED
     infrun: stop_pc = 0x400700
     infrun: random signal (GDB_SIGNAL_CHLD)
     infrun: random signal, keep going
     infrun: resume (step=1, signal=GDB_SIGNAL_CHLD), trap_expected=0, current thread [Thread 0x7ffff7fcb740 (LWP 9561)] at 0x400700
     infrun: prepare_to_wait
     infrun: target_wait (-1, status) =
     infrun:   9561 [Thread 0x7ffff7fcb740 (LWP 9561)],
     infrun:   status->kind = stopped, signal = GDB_SIGNAL_TRAP
     infrun: infwait_normal_state
     infrun: TARGET_WAITKIND_STOPPED
     infrun: stop_pc = 0x400704
     infrun: stepi/nexti
     infrun: stop_stepping
     44        while (counter != 0)
     (gdb) PASS: gdb.threads/stepi-random-signal.exp: stepi
    
    The test turns on infrun debug, does a stepi while a SIGCHLD is
    pending, and checks whether the "random signal" paths in infrun.c are
    taken.
    
    On the software single-step variant above, those paths were not taken.
    
    This is a test bug.
    
    The Linux backend short-circuits reporting signals that are set to
    pass/nostop/noprint.  But _only_ if the thread is _not_
    single-stepping.  So on hardware-step targets, even though the signal
    is set to pass/nostop/noprint by default, the thread is indeed told to
    single-step, and so the core sees the signal.  On the other hand, on
    software single-step architectures, the backend never actually gets a
    single-step request (steps are emulated by setting a breakpoint at the
    next pc, and then the target told to continue, not step).  So the
    short-circuiting code triggers and the core doesn't see the signal.
    
    The fix is to make the test be sure the target doesn't bypass
    reporting the signal to the core.
    
    Tested on x86_64 Fedora 17, both with and without a series that
    implements software single-step for x86_64.
    
    gdb/testsuite/
    2014-02-07  Pedro Alves  <palves@redhat.com>
    
    	* gdb.threads/stepi-random-signal.exp: Set SIGCHLD to print.

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

Summary of changes:
 gdb/testsuite/ChangeLog                           |    4 ++++
 gdb/testsuite/gdb.threads/stepi-random-signal.exp |    5 +++++
 2 files changed, 9 insertions(+), 0 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]