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 cli/15603] [7.6 regression] CTRL-C can no longer interrupt inferior


http://sourceware.org/bugzilla/show_bug.cgi?id=15603

--- Comment #4 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
CVSROOT:    /cvs/src
Module name:    src
Changes by:    tromey@sourceware.org    2013-06-18 19:57:49

Modified files:
    gdb            : ChangeLog break-catch-sig.c breakpoint.c 
                     breakpoint.h infrun.c 
    gdb/testsuite  : ChangeLog 
Added files:
    gdb/testsuite/gdb.base: random-signal.c random-signal.exp 

Log message:
    Fix PR cli/15603

    This fixes PR cli/15603.

    The bug here is that when a software watchpoint is being used, gdb
    will stop responding to C-c.  This is a regression caused by the
    "catch signal" patch.

    The problem is that software watchpoints always end up on the bpstat
    list.  However, this makes bpstat_explains_signal return
    BPSTAT_SIGNAL_HIDE, causing infrun to think that the signal is not a
    "random signal".

    The fix is to change bpstat_explains_signal to handle this better.  I
    chose to do it in a "clean API" way, by passing the signal value to
    bpstat_explains_signal and then adding an explains_signal method for
    watchpoints, which handles the specifics.

    Built and regtested on x86-64 Fedora 18.
    New test case included.

    * break-catch-sig.c (signal_catchpoint_explains_signal): Add 'sig'
    argument.
    * breakpoint.c (bpstat_explains_signal): Add 'sig' argument.
    Special case signals other than GDB_SIGNAL_TRAP.
    (explains_signal_watchpoint): New function.
    (base_breakpoint_explains_signal): Add 'sig' argument.
    (initialize_breakpoint_ops): Set 'explains_signal' method for
    watchpoints.
    * breakpoint.h (struct breakpoint_ops) <explains_signal>: Add
    signal argument.
    (bpstat_explains_signal): Likewise.
    * infrun.c (handle_syscall_event, handle_inferior_event): Update.

    * gdb.base/random-signal.c: New file.
    * gdb.base/random-signal.exp: New file.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.15711&r2=1.15712
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/break-catch-sig.c.diff?cvsroot=src&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/breakpoint.c.diff?cvsroot=src&r1=1.765&r2=1.766
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/breakpoint.h.diff?cvsroot=src&r1=1.198&r2=1.199
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/infrun.c.diff?cvsroot=src&r1=1.583&r2=1.584
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/ChangeLog.diff?cvsroot=src&r1=1.3698&r2=1.3699
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.base/random-signal.c.diff?cvsroot=src&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.base/random-signal.exp.diff?cvsroot=src&r1=NONE&r2=1.1

-- 
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]