diff options
author | Vladimir Prus <vladimir@codesourcery.com> | 2008-04-24 10:21:45 +0000 |
---|---|---|
committer | Vladimir Prus <vladimir@codesourcery.com> | 2008-04-24 10:21:45 +0000 |
commit | 74960c600257a48df8589c16b527ab6f56d1a664 (patch) | |
tree | 2a264bfb2395188a5bf167030220fcaf87f6dcb2 /gdb/testsuite | |
parent | d24317b4805503c9a018e77ee4683c87678f11ff (diff) | |
download | gdb-74960c600257a48df8589c16b527ab6f56d1a664.zip gdb-74960c600257a48df8589c16b527ab6f56d1a664.tar.gz gdb-74960c600257a48df8589c16b527ab6f56d1a664.tar.bz2 |
* breakpoint.h (bp_location_p): New typedef.
Register a vector of bp_location_p.
* breakpoint.c (always_inserted_mode)
(show_always_inserted_mode): New.
(unlink_locations_from_global_list): Remove.
(update_global_location_list)
(update_global_location_list_nothrow): New.
(update_watchpoint): Don't free locations.
(should_insert_location): New.
(insert_bp_location): Use should_insert_location.
(insert_breakpoint_locations): Copied from
insert_breakpoints.
(insert_breakpoint): Use insert_breakpoint_locations.
(bpstat_stop_status): Call update_global_location_list
when disabling breakpoint.
(allocate_bp_location): Don't add to bp_location_chain.
(set_raw_breakpoint)
(create_longjmp_breakpoint, enable_longjmp_breakpoint)
(disable_longjmp_breakpoint, create_overlay_event_breakpoint)
(enable_overlay_breakpoints, disable_overlay_breakpoints)
(set_longjmp_resume_breakpoint)
(enable_watchpoints_after_interactive_call_stop)
(disable_watchpoints_before_interactive_call_start)
(create_internal_breakpoint)
(create_fork_vfork_event_catchpoint)
(create_exec_event_catchpoint, set_momentary_breakpoint)
(create_breakpoints, break_command_1, watch_command_1)
(create_exception_catchpoint)
(handle_gnu_v3_exceptions)
(disable_breakpoint, breakpoint_re_set_one)
(create_thread_event_breakpoint, create_solib_event_breakpoint)
(create_ada_exception_breakpoint): : Don't call check_duplicates.
Call update_global_location_list.
(delete_breakpoint): Don't remove locations and don't
try to reinsert them. Call update_global_location_list.
(update_breakpoint_locations): Likewise.
(restore_always_inserted_mode): New.
(update_breakpoints_after_exec): Temporary disable
always inserted mode.
* Makefile.in: Update dependencies.
* infrun.c (proceed): Remove breakpoints while stepping
over breakpoint.
(handle_inferior_event): Don't remove or insert
breakpoints.
* linux-fork.c (checkpoint_command): Remove breakpoints
before fork and insert after.
(linux_fork_context): Remove breakpoints before switch
and insert after.
* target.c (target_disconnect, target_detach): Remove
breakpoints from target.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/break-always.c | 32 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/break-always.exp | 32 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 4 |
4 files changed, 73 insertions, 2 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 37855d5..eb50238 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,12 @@ 2008-04-24 Vladimir Prus <vladimir@codesourcery.com> + * lib/gdb.exp (gdb_continue_to_breakpoint): Allow the caller + to specify regexp for the location to stop at. + * gdb.base/break-always.c: New. + * gdb.base/break-always.exp: New. + +2008-04-24 Vladimir Prus <vladimir@codesourcery.com> + * lib/mi-support.exp (mi_runto_helper): Adjust for the original-location field. (mi_create_breakpoint, mi_list_breakpoints): New. diff --git a/gdb/testsuite/gdb.base/break-always.c b/gdb/testsuite/gdb.base/break-always.c new file mode 100644 index 0000000..6c5515d --- /dev/null +++ b/gdb/testsuite/gdb.base/break-always.c @@ -0,0 +1,32 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2008 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +int bar () +{ + return 1; /* break in bar */ +} + +int foo () +{ + return bar (); +} + +int main () +{ + foo (); + return 0; +} diff --git a/gdb/testsuite/gdb.base/break-always.exp b/gdb/testsuite/gdb.base/break-always.exp new file mode 100644 index 0000000..6161943 --- /dev/null +++ b/gdb/testsuite/gdb.base/break-always.exp @@ -0,0 +1,32 @@ +# Copyright 2008 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Test that 'set breakpoint always-inserted 1' is not a brick + +if { [prepare_for_testing break-always.exp break-always break-always.c] } { + return -1 +} + +set bar_location [gdb_get_line_number "break in bar" break-always.c] + +gdb_test "set breakpoint always-inserted 1" "" + +runto foo + +gdb_test "break bar" "Breakpoint 2.*" "set breakpoint on bar" +gdb_continue_to_breakpoint "bar" ".*/break-always.c:$bar_location.*" + + + diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 8ad8792..bb9bd24 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -432,13 +432,13 @@ proc runto_main { } { ### worked. Use NAME as part of the test name; each call to ### continue_to_breakpoint should use a NAME which is unique within ### that test file. -proc gdb_continue_to_breakpoint {name} { +proc gdb_continue_to_breakpoint {name {location_pattern .*}} { global gdb_prompt set full_name "continue to breakpoint: $name" send_gdb "continue\n" gdb_expect { - -re "Breakpoint .* at .*\r\n$gdb_prompt $" { + -re "Breakpoint .* at $location_pattern\r\n$gdb_prompt $" { pass $full_name } -re ".*$gdb_prompt $" { |