[Bug c++/9593] "next" command in a function that throws a C++ exception causes GDB to lose control of the inferior

cvs-commit at gcc dot gnu.org sourceware-bugzilla@sourceware.org
Thu Dec 9 16:12:00 GMT 2010


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

--- Comment #3 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> 2010-12-09 16:10:01 UTC ---
CVSROOT:    /cvs/src
Module name:    src
Changes by:    tromey@sourceware.org    2010-12-09 16:09:55

Modified files:
    gdb            : ChangeLog breakpoint.c breakpoint.h gdbthread.h 
                     infcmd.c inferior.h infrun.c thread.c 
    gdb/testsuite  : ChangeLog 
Added files:
    gdb/testsuite/gdb.cp: nextoverthrow.cc nextoverthrow.exp 
    gdb/testsuite/gdb.java: jnpe.exp jnpe.java 

Log message:
    gdb
    PR c++/9593:
    * thread.c (clear_thread_inferior_resources): Call
    delete_longjmp_breakpoint.
    * infrun.c (handle_inferior_event): Handle exception breakpoints.
    (handle_inferior_event): Likewise.
    (insert_exception_resume_breakpoint): New function.
    (check_exception_resume): Likewise.
    * inferior.h (delete_longjmp_breakpoint_cleanup): Declare.
    * infcmd.c (delete_longjmp_breakpoint_cleanup): No longer static.
    (step_1): Set thread's initiating frame.
    (until_next_continuation): New function.
    (until_next_command): Support exception breakpoints.
    (finish_command_continuation): Delete longjmp breakpoint.
    (finish_forward): Support exception breakpoints.
    * gdbthread.h (struct thread_info) <initiating_frame>: New field.
    * breakpoint.h (enum bptype) <bp_exception, bp_exception_resume,
    bp_exception_master>: New constants.
    (struct bpstat_what) <is_longjmp>: New field.
    (set_longjmp_breakpoint): Update.
    * breakpoint.c (create_exception_master_breakpoint): New function.
    (update_breakpoints_after_exec): Handle bp_exception_master.  Call
    create_exception_master_breakpoint.
    (print_it_typical): Handle bp_exception_master, bp_exception.
    (bpstat_stop_status): Handle bp_exception_master.
    (bpstat_what): Handle bp_exception_master, bp_exception,
    bp_exception_resume.
    (bptype_string): Likewise.
    (print_one_breakpoint_location): Likewise.
    (allocate_bp_location): Likewise.
    (set_longjmp_breakpoint): Handle exception breakpoints.  Change
    interface.
    (delete_longjmp_breakpoint): Handle exception breakpoints.
    (mention): Likewise.
    (struct until_break_command_continuation_args) <thread_num>: New
    field.
    (until_break_command_continuation): Call
    delete_longjmp_breakpoint.
    (until_break_command): Support exception breakpoints.
    (delete_command): Likewise.
    (breakpoint_re_set_one): Likewise.
    (breakpoint_re_set): Likewise.
    gdb/testuite
    * gdb.java/jnpe.java: New file.
    * gdb.java/jnpe.exp: New file.
    * gdb.cp/nextoverthrow.exp: New file.
    * gdb.cp/nextoverthrow.cc: New file.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.12367&r2=1.12368
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/breakpoint.c.diff?cvsroot=src&r1=1.518&r2=1.519
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/breakpoint.h.diff?cvsroot=src&r1=1.127&r2=1.128
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/gdbthread.h.diff?cvsroot=src&r1=1.58&r2=1.59
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/infcmd.c.diff?cvsroot=src&r1=1.270&r2=1.271
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/inferior.h.diff?cvsroot=src&r1=1.146&r2=1.147
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/infrun.c.diff?cvsroot=src&r1=1.460&r2=1.461
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/thread.c.diff?cvsroot=src&r1=1.124&r2=1.125
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/ChangeLog.diff?cvsroot=src&r1=1.2525&r2=1.2526
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.cp/nextoverthrow.cc.diff?cvsroot=src&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.cp/nextoverthrow.exp.diff?cvsroot=src&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.java/jnpe.exp.diff?cvsroot=src&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/testsuite/gdb.java/jnpe.java.diff?cvsroot=src&r1=NONE&r2=1.1

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the Gdb-prs mailing list