1 /* Everything about breakpoints, for GDB.
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
7 This file is part of GDB.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
23 #include "arch-utils.h"
28 #include "breakpoint.h"
29 #include "tracepoint.h"
31 #include "expression.h"
37 #include "gdbthread.h"
40 #include "gdb_string.h"
42 #include "filenames.h"
48 #include "completer.h"
51 #include "cli/cli-script.h"
52 #include "gdb_assert.h"
57 #include "exceptions.h"
64 #include "xml-syscall.h"
65 #include "parser-defs.h"
66 #include "cli/cli-utils.h"
67 #include "continuations.h"
69 /* readline include files */
70 #include "readline/readline.h"
71 #include "readline/history.h"
73 /* readline defines this. */
76 #include "mi/mi-common.h"
77 #include "python/python.h"
79 /* Prototypes for local functions. */
81 static void enable_delete_command (char *, int);
83 static void enable_once_command (char *, int);
85 static void disable_command (char *, int);
87 static void enable_command (char *, int);
89 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint
*,
93 static void ignore_command (char *, int);
95 static int breakpoint_re_set_one (void *);
97 static void breakpoint_re_set_default (struct breakpoint
*);
99 static void clear_command (char *, int);
101 static void catch_command (char *, int);
103 static int can_use_hardware_watchpoint (struct value
*);
105 static void break_command_1 (char *, int, int);
107 static void mention (struct breakpoint
*);
109 static struct breakpoint
*set_raw_breakpoint_without_location (struct gdbarch
*,
111 const struct breakpoint_ops
*);
112 /* This function is used in gdbtk sources and thus can not be made
114 struct breakpoint
*set_raw_breakpoint (struct gdbarch
*gdbarch
,
115 struct symtab_and_line
,
117 const struct breakpoint_ops
*);
119 static struct breakpoint
*
120 momentary_breakpoint_from_master (struct breakpoint
*orig
,
122 const struct breakpoint_ops
*ops
);
124 static void breakpoint_adjustment_warning (CORE_ADDR
, CORE_ADDR
, int, int);
126 static CORE_ADDR
adjust_breakpoint_address (struct gdbarch
*gdbarch
,
130 static void describe_other_breakpoints (struct gdbarch
*,
131 struct program_space
*, CORE_ADDR
,
132 struct obj_section
*, int);
134 static int breakpoint_address_match (struct address_space
*aspace1
,
136 struct address_space
*aspace2
,
139 static int watchpoint_locations_match (struct bp_location
*loc1
,
140 struct bp_location
*loc2
);
142 static int breakpoint_location_address_match (struct bp_location
*bl
,
143 struct address_space
*aspace
,
146 static void breakpoints_info (char *, int);
148 static void watchpoints_info (char *, int);
150 static int breakpoint_1 (char *, int,
151 int (*) (const struct breakpoint
*));
153 static int breakpoint_cond_eval (void *);
155 static void cleanup_executing_breakpoints (void *);
157 static void commands_command (char *, int);
159 static void condition_command (char *, int);
168 static int remove_breakpoint (struct bp_location
*, insertion_state_t
);
169 static int remove_breakpoint_1 (struct bp_location
*, insertion_state_t
);
171 static enum print_stop_action
print_bp_stop_message (bpstat bs
);
173 static int watchpoint_check (void *);
175 static void maintenance_info_breakpoints (char *, int);
177 static int hw_breakpoint_used_count (void);
179 static int hw_watchpoint_used_count (enum bptype
, int *);
181 static void hbreak_command (char *, int);
183 static void thbreak_command (char *, int);
185 static void enable_breakpoint_disp (struct breakpoint
*, enum bpdisp
);
187 static void stop_command (char *arg
, int from_tty
);
189 static void stopin_command (char *arg
, int from_tty
);
191 static void stopat_command (char *arg
, int from_tty
);
193 static char *ep_parse_optional_if_clause (char **arg
);
195 static void catch_exception_command_1 (enum exception_event_kind ex_event
,
196 char *arg
, int tempflag
, int from_tty
);
198 static void tcatch_command (char *arg
, int from_tty
);
200 static void detach_single_step_breakpoints (void);
202 static int single_step_breakpoint_inserted_here_p (struct address_space
*,
205 static void free_bp_location (struct bp_location
*loc
);
206 static void incref_bp_location (struct bp_location
*loc
);
207 static void decref_bp_location (struct bp_location
**loc
);
209 static struct bp_location
*allocate_bp_location (struct breakpoint
*bpt
);
211 static void update_global_location_list (int);
213 static void update_global_location_list_nothrow (int);
215 static int is_hardware_watchpoint (const struct breakpoint
*bpt
);
217 static void insert_breakpoint_locations (void);
219 static int syscall_catchpoint_p (struct breakpoint
*b
);
221 static void tracepoints_info (char *, int);
223 static void delete_trace_command (char *, int);
225 static void enable_trace_command (char *, int);
227 static void disable_trace_command (char *, int);
229 static void trace_pass_command (char *, int);
231 static int is_masked_watchpoint (const struct breakpoint
*b
);
233 /* Assuming we're creating a static tracepoint, does S look like a
234 static tracepoint marker spec ("-m MARKER_ID")? */
235 #define is_marker_spec(s) \
236 (s != NULL && strncmp (s, "-m", 2) == 0 && ((s)[2] == ' ' || (s)[2] == '\t'))
238 /* The abstract base class all breakpoint_ops structures inherit
240 static struct breakpoint_ops base_breakpoint_ops
;
242 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
243 that are implemented on top of software or hardware breakpoints
244 (user breakpoints, internal and momentary breakpoints, etc.). */
245 static struct breakpoint_ops bkpt_base_breakpoint_ops
;
247 /* Internal breakpoints class type. */
248 static struct breakpoint_ops internal_breakpoint_ops
;
250 /* Momentary breakpoints class type. */
251 static struct breakpoint_ops momentary_breakpoint_ops
;
253 /* The breakpoint_ops structure to be used in regular user created
255 struct breakpoint_ops bkpt_breakpoint_ops
;
257 /* A reference-counted struct command_line. This lets multiple
258 breakpoints share a single command list. */
259 struct counted_command_line
261 /* The reference count. */
264 /* The command list. */
265 struct command_line
*commands
;
268 struct command_line
*
269 breakpoint_commands (struct breakpoint
*b
)
271 return b
->commands
? b
->commands
->commands
: NULL
;
274 /* Flag indicating that a command has proceeded the inferior past the
275 current breakpoint. */
277 static int breakpoint_proceeded
;
280 bpdisp_text (enum bpdisp disp
)
282 /* NOTE: the following values are a part of MI protocol and
283 represent values of 'disp' field returned when inferior stops at
285 static const char * const bpdisps
[] = {"del", "dstp", "dis", "keep"};
287 return bpdisps
[(int) disp
];
290 /* Prototypes for exported functions. */
291 /* If FALSE, gdb will not use hardware support for watchpoints, even
292 if such is available. */
293 static int can_use_hw_watchpoints
;
296 show_can_use_hw_watchpoints (struct ui_file
*file
, int from_tty
,
297 struct cmd_list_element
*c
,
300 fprintf_filtered (file
,
301 _("Debugger's willingness to use "
302 "watchpoint hardware is %s.\n"),
306 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
307 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
308 for unrecognized breakpoint locations.
309 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
310 static enum auto_boolean pending_break_support
;
312 show_pending_break_support (struct ui_file
*file
, int from_tty
,
313 struct cmd_list_element
*c
,
316 fprintf_filtered (file
,
317 _("Debugger's behavior regarding "
318 "pending breakpoints is %s.\n"),
322 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
323 set with "break" but falling in read-only memory.
324 If 0, gdb will warn about such breakpoints, but won't automatically
325 use hardware breakpoints. */
326 static int automatic_hardware_breakpoints
;
328 show_automatic_hardware_breakpoints (struct ui_file
*file
, int from_tty
,
329 struct cmd_list_element
*c
,
332 fprintf_filtered (file
,
333 _("Automatic usage of hardware breakpoints is %s.\n"),
337 /* If on, gdb will keep breakpoints inserted even as inferior is
338 stopped, and immediately insert any new breakpoints. If off, gdb
339 will insert breakpoints into inferior only when resuming it, and
340 will remove breakpoints upon stop. If auto, GDB will behave as ON
341 if in non-stop mode, and as OFF if all-stop mode.*/
343 static const char always_inserted_auto
[] = "auto";
344 static const char always_inserted_on
[] = "on";
345 static const char always_inserted_off
[] = "off";
346 static const char *always_inserted_enums
[] = {
347 always_inserted_auto
,
352 static const char *always_inserted_mode
= always_inserted_auto
;
354 show_always_inserted_mode (struct ui_file
*file
, int from_tty
,
355 struct cmd_list_element
*c
, const char *value
)
357 if (always_inserted_mode
== always_inserted_auto
)
358 fprintf_filtered (file
,
359 _("Always inserted breakpoint "
360 "mode is %s (currently %s).\n"),
362 breakpoints_always_inserted_mode () ? "on" : "off");
364 fprintf_filtered (file
, _("Always inserted breakpoint mode is %s.\n"),
369 breakpoints_always_inserted_mode (void)
371 return (always_inserted_mode
== always_inserted_on
372 || (always_inserted_mode
== always_inserted_auto
&& non_stop
));
375 void _initialize_breakpoint (void);
377 /* Are we executing breakpoint commands? */
378 static int executing_breakpoint_commands
;
380 /* Are overlay event breakpoints enabled? */
381 static int overlay_events_enabled
;
383 /* See description in breakpoint.h. */
384 int target_exact_watchpoints
= 0;
386 /* Walk the following statement or block through all breakpoints.
387 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
388 current breakpoint. */
390 #define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
392 #define ALL_BREAKPOINTS_SAFE(B,TMP) \
393 for (B = breakpoint_chain; \
394 B ? (TMP=B->next, 1): 0; \
397 /* Similar iterator for the low-level breakpoints. SAFE variant is
398 not provided so update_global_location_list must not be called
399 while executing the block of ALL_BP_LOCATIONS. */
401 #define ALL_BP_LOCATIONS(B,BP_TMP) \
402 for (BP_TMP = bp_location; \
403 BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
406 /* Iterator for tracepoints only. */
408 #define ALL_TRACEPOINTS(B) \
409 for (B = breakpoint_chain; B; B = B->next) \
410 if (is_tracepoint (B))
412 /* Chains of all breakpoints defined. */
414 struct breakpoint
*breakpoint_chain
;
416 /* Array is sorted by bp_location_compare - primarily by the ADDRESS. */
418 static struct bp_location
**bp_location
;
420 /* Number of elements of BP_LOCATION. */
422 static unsigned bp_location_count
;
424 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
425 ADDRESS for the current elements of BP_LOCATION which get a valid
426 result from bp_location_has_shadow. You can use it for roughly
427 limiting the subrange of BP_LOCATION to scan for shadow bytes for
428 an address you need to read. */
430 static CORE_ADDR bp_location_placed_address_before_address_max
;
432 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
433 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
434 BP_LOCATION which get a valid result from bp_location_has_shadow.
435 You can use it for roughly limiting the subrange of BP_LOCATION to
436 scan for shadow bytes for an address you need to read. */
438 static CORE_ADDR bp_location_shadow_len_after_address_max
;
440 /* The locations that no longer correspond to any breakpoint, unlinked
441 from bp_location array, but for which a hit may still be reported
443 VEC(bp_location_p
) *moribund_locations
= NULL
;
445 /* Number of last breakpoint made. */
447 static int breakpoint_count
;
449 /* The value of `breakpoint_count' before the last command that
450 created breakpoints. If the last (break-like) command created more
451 than one breakpoint, then the difference between BREAKPOINT_COUNT
452 and PREV_BREAKPOINT_COUNT is more than one. */
453 static int prev_breakpoint_count
;
455 /* Number of last tracepoint made. */
457 static int tracepoint_count
;
459 static struct cmd_list_element
*breakpoint_set_cmdlist
;
460 static struct cmd_list_element
*breakpoint_show_cmdlist
;
461 struct cmd_list_element
*save_cmdlist
;
463 /* Return whether a breakpoint is an active enabled breakpoint. */
465 breakpoint_enabled (struct breakpoint
*b
)
467 return (b
->enable_state
== bp_enabled
);
470 /* Set breakpoint count to NUM. */
473 set_breakpoint_count (int num
)
475 prev_breakpoint_count
= breakpoint_count
;
476 breakpoint_count
= num
;
477 set_internalvar_integer (lookup_internalvar ("bpnum"), num
);
480 /* Used by `start_rbreak_breakpoints' below, to record the current
481 breakpoint count before "rbreak" creates any breakpoint. */
482 static int rbreak_start_breakpoint_count
;
484 /* Called at the start an "rbreak" command to record the first
488 start_rbreak_breakpoints (void)
490 rbreak_start_breakpoint_count
= breakpoint_count
;
493 /* Called at the end of an "rbreak" command to record the last
497 end_rbreak_breakpoints (void)
499 prev_breakpoint_count
= rbreak_start_breakpoint_count
;
502 /* Used in run_command to zero the hit count when a new run starts. */
505 clear_breakpoint_hit_counts (void)
507 struct breakpoint
*b
;
513 /* Allocate a new counted_command_line with reference count of 1.
514 The new structure owns COMMANDS. */
516 static struct counted_command_line
*
517 alloc_counted_command_line (struct command_line
*commands
)
519 struct counted_command_line
*result
520 = xmalloc (sizeof (struct counted_command_line
));
523 result
->commands
= commands
;
527 /* Increment reference count. This does nothing if CMD is NULL. */
530 incref_counted_command_line (struct counted_command_line
*cmd
)
536 /* Decrement reference count. If the reference count reaches 0,
537 destroy the counted_command_line. Sets *CMDP to NULL. This does
538 nothing if *CMDP is NULL. */
541 decref_counted_command_line (struct counted_command_line
**cmdp
)
545 if (--(*cmdp
)->refc
== 0)
547 free_command_lines (&(*cmdp
)->commands
);
554 /* A cleanup function that calls decref_counted_command_line. */
557 do_cleanup_counted_command_line (void *arg
)
559 decref_counted_command_line (arg
);
562 /* Create a cleanup that calls decref_counted_command_line on the
565 static struct cleanup
*
566 make_cleanup_decref_counted_command_line (struct counted_command_line
**cmdp
)
568 return make_cleanup (do_cleanup_counted_command_line
, cmdp
);
571 /* Default address, symtab and line to put a breakpoint at
572 for "break" command with no arg.
573 If default_breakpoint_valid is zero, the other three are
574 not valid, and "break" with no arg is an error.
576 This set by print_stack_frame, which calls set_default_breakpoint. */
578 int default_breakpoint_valid
;
579 CORE_ADDR default_breakpoint_address
;
580 struct symtab
*default_breakpoint_symtab
;
581 int default_breakpoint_line
;
582 struct program_space
*default_breakpoint_pspace
;
585 /* Return the breakpoint with the specified number, or NULL
586 if the number does not refer to an existing breakpoint. */
589 get_breakpoint (int num
)
591 struct breakpoint
*b
;
594 if (b
->number
== num
)
603 set_breakpoint_condition (struct breakpoint
*b
, char *exp
,
606 xfree (b
->cond_string
);
607 b
->cond_string
= NULL
;
609 if (is_watchpoint (b
))
611 struct watchpoint
*w
= (struct watchpoint
*) b
;
618 struct bp_location
*loc
;
620 for (loc
= b
->loc
; loc
; loc
= loc
->next
)
630 printf_filtered (_("Breakpoint %d now unconditional.\n"), b
->number
);
636 /* I don't know if it matters whether this is the string the user
637 typed in or the decompiled expression. */
638 b
->cond_string
= xstrdup (arg
);
639 b
->condition_not_parsed
= 0;
641 if (is_watchpoint (b
))
643 struct watchpoint
*w
= (struct watchpoint
*) b
;
645 innermost_block
= NULL
;
647 w
->cond_exp
= parse_exp_1 (&arg
, 0, 0);
649 error (_("Junk at end of expression"));
650 w
->cond_exp_valid_block
= innermost_block
;
654 struct bp_location
*loc
;
656 for (loc
= b
->loc
; loc
; loc
= loc
->next
)
660 parse_exp_1 (&arg
, block_for_pc (loc
->address
), 0);
662 error (_("Junk at end of expression"));
666 breakpoints_changed ();
667 observer_notify_breakpoint_modified (b
);
670 /* condition N EXP -- set break condition of breakpoint N to EXP. */
673 condition_command (char *arg
, int from_tty
)
675 struct breakpoint
*b
;
680 error_no_arg (_("breakpoint number"));
683 bnum
= get_number (&p
);
685 error (_("Bad breakpoint argument: '%s'"), arg
);
688 if (b
->number
== bnum
)
690 /* Check if this breakpoint has a Python object assigned to
691 it, and if it has a definition of the "stop"
692 method. This method and conditions entered into GDB from
693 the CLI are mutually exclusive. */
695 && gdbpy_breakpoint_has_py_cond (b
->py_bp_object
))
696 error (_("Cannot set a condition where a Python 'stop' "
697 "method has been defined in the breakpoint."));
698 set_breakpoint_condition (b
, p
, from_tty
);
702 error (_("No breakpoint number %d."), bnum
);
705 /* Check that COMMAND do not contain commands that are suitable
706 only for tracepoints and not suitable for ordinary breakpoints.
707 Throw if any such commands is found. */
710 check_no_tracepoint_commands (struct command_line
*commands
)
712 struct command_line
*c
;
714 for (c
= commands
; c
; c
= c
->next
)
718 if (c
->control_type
== while_stepping_control
)
719 error (_("The 'while-stepping' command can "
720 "only be used for tracepoints"));
722 for (i
= 0; i
< c
->body_count
; ++i
)
723 check_no_tracepoint_commands ((c
->body_list
)[i
]);
725 /* Not that command parsing removes leading whitespace and comment
726 lines and also empty lines. So, we only need to check for
728 if (strstr (c
->line
, "collect ") == c
->line
)
729 error (_("The 'collect' command can only be used for tracepoints"));
731 if (strstr (c
->line
, "teval ") == c
->line
)
732 error (_("The 'teval' command can only be used for tracepoints"));
736 /* Encapsulate tests for different types of tracepoints. */
739 is_tracepoint_type (enum bptype type
)
741 return (type
== bp_tracepoint
742 || type
== bp_fast_tracepoint
743 || type
== bp_static_tracepoint
);
747 is_tracepoint (const struct breakpoint
*b
)
749 return is_tracepoint_type (b
->type
);
752 /* A helper function that validates that COMMANDS are valid for a
753 breakpoint. This function will throw an exception if a problem is
757 validate_commands_for_breakpoint (struct breakpoint
*b
,
758 struct command_line
*commands
)
760 if (is_tracepoint (b
))
762 /* We need to verify that each top-level element of commands is
763 valid for tracepoints, that there's at most one
764 while-stepping element, and that while-stepping's body has
765 valid tracing commands excluding nested while-stepping. */
766 struct command_line
*c
;
767 struct command_line
*while_stepping
= 0;
768 for (c
= commands
; c
; c
= c
->next
)
770 if (c
->control_type
== while_stepping_control
)
772 if (b
->type
== bp_fast_tracepoint
)
773 error (_("The 'while-stepping' command "
774 "cannot be used for fast tracepoint"));
775 else if (b
->type
== bp_static_tracepoint
)
776 error (_("The 'while-stepping' command "
777 "cannot be used for static tracepoint"));
780 error (_("The 'while-stepping' command "
781 "can be used only once"));
788 struct command_line
*c2
;
790 gdb_assert (while_stepping
->body_count
== 1);
791 c2
= while_stepping
->body_list
[0];
792 for (; c2
; c2
= c2
->next
)
794 if (c2
->control_type
== while_stepping_control
)
795 error (_("The 'while-stepping' command cannot be nested"));
801 check_no_tracepoint_commands (commands
);
805 /* Return a vector of all the static tracepoints set at ADDR. The
806 caller is responsible for releasing the vector. */
809 static_tracepoints_here (CORE_ADDR addr
)
811 struct breakpoint
*b
;
812 VEC(breakpoint_p
) *found
= 0;
813 struct bp_location
*loc
;
816 if (b
->type
== bp_static_tracepoint
)
818 for (loc
= b
->loc
; loc
; loc
= loc
->next
)
819 if (loc
->address
== addr
)
820 VEC_safe_push(breakpoint_p
, found
, b
);
826 /* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
827 validate that only allowed commands are included. */
830 breakpoint_set_commands (struct breakpoint
*b
,
831 struct command_line
*commands
)
833 validate_commands_for_breakpoint (b
, commands
);
835 decref_counted_command_line (&b
->commands
);
836 b
->commands
= alloc_counted_command_line (commands
);
837 breakpoints_changed ();
838 observer_notify_breakpoint_modified (b
);
841 /* Set the internal `silent' flag on the breakpoint. Note that this
842 is not the same as the "silent" that may appear in the breakpoint's
846 breakpoint_set_silent (struct breakpoint
*b
, int silent
)
848 int old_silent
= b
->silent
;
851 if (old_silent
!= silent
)
852 observer_notify_breakpoint_modified (b
);
855 /* Set the thread for this breakpoint. If THREAD is -1, make the
856 breakpoint work for any thread. */
859 breakpoint_set_thread (struct breakpoint
*b
, int thread
)
861 int old_thread
= b
->thread
;
864 if (old_thread
!= thread
)
865 observer_notify_breakpoint_modified (b
);
868 /* Set the task for this breakpoint. If TASK is 0, make the
869 breakpoint work for any task. */
872 breakpoint_set_task (struct breakpoint
*b
, int task
)
874 int old_task
= b
->task
;
877 if (old_task
!= task
)
878 observer_notify_breakpoint_modified (b
);
882 check_tracepoint_command (char *line
, void *closure
)
884 struct breakpoint
*b
= closure
;
886 validate_actionline (&line
, b
);
889 /* A structure used to pass information through
890 map_breakpoint_numbers. */
894 /* True if the command was typed at a tty. */
897 /* The breakpoint range spec. */
900 /* Non-NULL if the body of the commands are being read from this
901 already-parsed command. */
902 struct command_line
*control
;
904 /* The command lines read from the user, or NULL if they have not
906 struct counted_command_line
*cmd
;
909 /* A callback for map_breakpoint_numbers that sets the commands for
913 do_map_commands_command (struct breakpoint
*b
, void *data
)
915 struct commands_info
*info
= data
;
917 if (info
->cmd
== NULL
)
919 struct command_line
*l
;
921 if (info
->control
!= NULL
)
922 l
= copy_command_lines (info
->control
->body_list
[0]);
925 struct cleanup
*old_chain
;
928 str
= xstrprintf (_("Type commands for breakpoint(s) "
929 "%s, one per line."),
932 old_chain
= make_cleanup (xfree
, str
);
934 l
= read_command_lines (str
,
937 ? check_tracepoint_command
: 0),
940 do_cleanups (old_chain
);
943 info
->cmd
= alloc_counted_command_line (l
);
946 /* If a breakpoint was on the list more than once, we don't need to
948 if (b
->commands
!= info
->cmd
)
950 validate_commands_for_breakpoint (b
, info
->cmd
->commands
);
951 incref_counted_command_line (info
->cmd
);
952 decref_counted_command_line (&b
->commands
);
953 b
->commands
= info
->cmd
;
954 breakpoints_changed ();
955 observer_notify_breakpoint_modified (b
);
960 commands_command_1 (char *arg
, int from_tty
,
961 struct command_line
*control
)
963 struct cleanup
*cleanups
;
964 struct commands_info info
;
966 info
.from_tty
= from_tty
;
967 info
.control
= control
;
969 /* If we read command lines from the user, then `info' will hold an
970 extra reference to the commands that we must clean up. */
971 cleanups
= make_cleanup_decref_counted_command_line (&info
.cmd
);
973 if (arg
== NULL
|| !*arg
)
975 if (breakpoint_count
- prev_breakpoint_count
> 1)
976 arg
= xstrprintf ("%d-%d", prev_breakpoint_count
+ 1,
978 else if (breakpoint_count
> 0)
979 arg
= xstrprintf ("%d", breakpoint_count
);
982 /* So that we don't try to free the incoming non-NULL
983 argument in the cleanup below. Mapping breakpoint
984 numbers will fail in this case. */
989 /* The command loop has some static state, so we need to preserve
994 make_cleanup (xfree
, arg
);
998 map_breakpoint_numbers (arg
, do_map_commands_command
, &info
);
1000 if (info
.cmd
== NULL
)
1001 error (_("No breakpoints specified."));
1003 do_cleanups (cleanups
);
1007 commands_command (char *arg
, int from_tty
)
1009 commands_command_1 (arg
, from_tty
, NULL
);
1012 /* Like commands_command, but instead of reading the commands from
1013 input stream, takes them from an already parsed command structure.
1015 This is used by cli-script.c to DTRT with breakpoint commands
1016 that are part of if and while bodies. */
1017 enum command_control_type
1018 commands_from_control_command (char *arg
, struct command_line
*cmd
)
1020 commands_command_1 (arg
, 0, cmd
);
1021 return simple_control
;
1024 /* Return non-zero if BL->TARGET_INFO contains valid information. */
1027 bp_location_has_shadow (struct bp_location
*bl
)
1029 if (bl
->loc_type
!= bp_loc_software_breakpoint
)
1033 if (bl
->target_info
.shadow_len
== 0)
1034 /* BL isn't valid, or doesn't shadow memory. */
1039 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1040 by replacing any memory breakpoints with their shadowed contents.
1042 The range of shadowed area by each bp_location is:
1043 bl->address - bp_location_placed_address_before_address_max
1044 up to bl->address + bp_location_shadow_len_after_address_max
1045 The range we were requested to resolve shadows for is:
1046 memaddr ... memaddr + len
1047 Thus the safe cutoff boundaries for performance optimization are
1048 memaddr + len <= (bl->address
1049 - bp_location_placed_address_before_address_max)
1051 bl->address + bp_location_shadow_len_after_address_max <= memaddr */
1054 breakpoint_restore_shadows (gdb_byte
*buf
, ULONGEST memaddr
, LONGEST len
)
1056 /* Left boundary, right boundary and median element of our binary
1058 unsigned bc_l
, bc_r
, bc
;
1060 /* Find BC_L which is a leftmost element which may affect BUF
1061 content. It is safe to report lower value but a failure to
1062 report higher one. */
1065 bc_r
= bp_location_count
;
1066 while (bc_l
+ 1 < bc_r
)
1068 struct bp_location
*bl
;
1070 bc
= (bc_l
+ bc_r
) / 2;
1071 bl
= bp_location
[bc
];
1073 /* Check first BL->ADDRESS will not overflow due to the added
1074 constant. Then advance the left boundary only if we are sure
1075 the BC element can in no way affect the BUF content (MEMADDR
1076 to MEMADDR + LEN range).
1078 Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1079 offset so that we cannot miss a breakpoint with its shadow
1080 range tail still reaching MEMADDR. */
1082 if ((bl
->address
+ bp_location_shadow_len_after_address_max
1084 && (bl
->address
+ bp_location_shadow_len_after_address_max
1091 /* Due to the binary search above, we need to make sure we pick the
1092 first location that's at BC_L's address. E.g., if there are
1093 multiple locations at the same address, BC_L may end up pointing
1094 at a duplicate location, and miss the "master"/"inserted"
1095 location. Say, given locations L1, L2 and L3 at addresses A and
1098 L1@A, L2@A, L3@B, ...
1100 BC_L could end up pointing at location L2, while the "master"
1101 location could be L1. Since the `loc->inserted' flag is only set
1102 on "master" locations, we'd forget to restore the shadow of L1
1105 && bp_location
[bc_l
]->address
== bp_location
[bc_l
- 1]->address
)
1108 /* Now do full processing of the found relevant range of elements. */
1110 for (bc
= bc_l
; bc
< bp_location_count
; bc
++)
1112 struct bp_location
*bl
= bp_location
[bc
];
1113 CORE_ADDR bp_addr
= 0;
1117 /* bp_location array has BL->OWNER always non-NULL. */
1118 if (bl
->owner
->type
== bp_none
)
1119 warning (_("reading through apparently deleted breakpoint #%d?"),
1122 /* Performance optimization: any further element can no longer affect BUF
1125 if (bl
->address
>= bp_location_placed_address_before_address_max
1126 && memaddr
+ len
<= (bl
->address
1127 - bp_location_placed_address_before_address_max
))
1130 if (!bp_location_has_shadow (bl
))
1132 if (!breakpoint_address_match (bl
->target_info
.placed_address_space
, 0,
1133 current_program_space
->aspace
, 0))
1136 /* Addresses and length of the part of the breakpoint that
1138 bp_addr
= bl
->target_info
.placed_address
;
1139 bp_size
= bl
->target_info
.shadow_len
;
1141 if (bp_addr
+ bp_size
<= memaddr
)
1142 /* The breakpoint is entirely before the chunk of memory we
1146 if (bp_addr
>= memaddr
+ len
)
1147 /* The breakpoint is entirely after the chunk of memory we are
1151 /* Offset within shadow_contents. */
1152 if (bp_addr
< memaddr
)
1154 /* Only copy the second part of the breakpoint. */
1155 bp_size
-= memaddr
- bp_addr
;
1156 bptoffset
= memaddr
- bp_addr
;
1160 if (bp_addr
+ bp_size
> memaddr
+ len
)
1162 /* Only copy the first part of the breakpoint. */
1163 bp_size
-= (bp_addr
+ bp_size
) - (memaddr
+ len
);
1166 memcpy (buf
+ bp_addr
- memaddr
,
1167 bl
->target_info
.shadow_contents
+ bptoffset
, bp_size
);
1172 /* Return true if BPT is of any hardware watchpoint kind. */
1175 is_hardware_watchpoint (const struct breakpoint
*bpt
)
1177 return (bpt
->type
== bp_hardware_watchpoint
1178 || bpt
->type
== bp_read_watchpoint
1179 || bpt
->type
== bp_access_watchpoint
);
1182 /* Return true if BPT is of any watchpoint kind, hardware or
1186 is_watchpoint (const struct breakpoint
*bpt
)
1188 return (is_hardware_watchpoint (bpt
)
1189 || bpt
->type
== bp_watchpoint
);
1192 /* Returns true if the current thread and its running state are safe
1193 to evaluate or update watchpoint B. Watchpoints on local
1194 expressions need to be evaluated in the context of the thread that
1195 was current when the watchpoint was created, and, that thread needs
1196 to be stopped to be able to select the correct frame context.
1197 Watchpoints on global expressions can be evaluated on any thread,
1198 and in any state. It is presently left to the target allowing
1199 memory accesses when threads are running. */
1202 watchpoint_in_thread_scope (struct watchpoint
*b
)
1204 return (ptid_equal (b
->watchpoint_thread
, null_ptid
)
1205 || (ptid_equal (inferior_ptid
, b
->watchpoint_thread
)
1206 && !is_executing (inferior_ptid
)));
1209 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1210 associated bp_watchpoint_scope breakpoint. */
1213 watchpoint_del_at_next_stop (struct watchpoint
*w
)
1215 struct breakpoint
*b
= &w
->base
;
1217 if (b
->related_breakpoint
!= b
)
1219 gdb_assert (b
->related_breakpoint
->type
== bp_watchpoint_scope
);
1220 gdb_assert (b
->related_breakpoint
->related_breakpoint
== b
);
1221 b
->related_breakpoint
->disposition
= disp_del_at_next_stop
;
1222 b
->related_breakpoint
->related_breakpoint
= b
->related_breakpoint
;
1223 b
->related_breakpoint
= b
;
1225 b
->disposition
= disp_del_at_next_stop
;
1228 /* Assuming that B is a watchpoint:
1229 - Reparse watchpoint expression, if REPARSE is non-zero
1230 - Evaluate expression and store the result in B->val
1231 - Evaluate the condition if there is one, and store the result
1233 - Update the list of values that must be watched in B->loc.
1235 If the watchpoint disposition is disp_del_at_next_stop, then do
1236 nothing. If this is local watchpoint that is out of scope, delete
1239 Even with `set breakpoint always-inserted on' the watchpoints are
1240 removed + inserted on each stop here. Normal breakpoints must
1241 never be removed because they might be missed by a running thread
1242 when debugging in non-stop mode. On the other hand, hardware
1243 watchpoints (is_hardware_watchpoint; processed here) are specific
1244 to each LWP since they are stored in each LWP's hardware debug
1245 registers. Therefore, such LWP must be stopped first in order to
1246 be able to modify its hardware watchpoints.
1248 Hardware watchpoints must be reset exactly once after being
1249 presented to the user. It cannot be done sooner, because it would
1250 reset the data used to present the watchpoint hit to the user. And
1251 it must not be done later because it could display the same single
1252 watchpoint hit during multiple GDB stops. Note that the latter is
1253 relevant only to the hardware watchpoint types bp_read_watchpoint
1254 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1255 not user-visible - its hit is suppressed if the memory content has
1258 The following constraints influence the location where we can reset
1259 hardware watchpoints:
1261 * target_stopped_by_watchpoint and target_stopped_data_address are
1262 called several times when GDB stops.
1265 * Multiple hardware watchpoints can be hit at the same time,
1266 causing GDB to stop. GDB only presents one hardware watchpoint
1267 hit at a time as the reason for stopping, and all the other hits
1268 are presented later, one after the other, each time the user
1269 requests the execution to be resumed. Execution is not resumed
1270 for the threads still having pending hit event stored in
1271 LWP_INFO->STATUS. While the watchpoint is already removed from
1272 the inferior on the first stop the thread hit event is kept being
1273 reported from its cached value by linux_nat_stopped_data_address
1274 until the real thread resume happens after the watchpoint gets
1275 presented and thus its LWP_INFO->STATUS gets reset.
1277 Therefore the hardware watchpoint hit can get safely reset on the
1278 watchpoint removal from inferior. */
1281 update_watchpoint (struct watchpoint
*b
, int reparse
)
1283 int within_current_scope
;
1284 struct frame_id saved_frame_id
;
1287 /* If this is a local watchpoint, we only want to check if the
1288 watchpoint frame is in scope if the current thread is the thread
1289 that was used to create the watchpoint. */
1290 if (!watchpoint_in_thread_scope (b
))
1293 if (b
->base
.disposition
== disp_del_at_next_stop
)
1298 /* Determine if the watchpoint is within scope. */
1299 if (b
->exp_valid_block
== NULL
)
1300 within_current_scope
= 1;
1303 struct frame_info
*fi
= get_current_frame ();
1304 struct gdbarch
*frame_arch
= get_frame_arch (fi
);
1305 CORE_ADDR frame_pc
= get_frame_pc (fi
);
1307 /* If we're in a function epilogue, unwinding may not work
1308 properly, so do not attempt to recreate locations at this
1309 point. See similar comments in watchpoint_check. */
1310 if (gdbarch_in_function_epilogue_p (frame_arch
, frame_pc
))
1313 /* Save the current frame's ID so we can restore it after
1314 evaluating the watchpoint expression on its own frame. */
1315 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1316 took a frame parameter, so that we didn't have to change the
1319 saved_frame_id
= get_frame_id (get_selected_frame (NULL
));
1321 fi
= frame_find_by_id (b
->watchpoint_frame
);
1322 within_current_scope
= (fi
!= NULL
);
1323 if (within_current_scope
)
1327 /* We don't free locations. They are stored in the bp_location array
1328 and update_global_location_list will eventually delete them and
1329 remove breakpoints if needed. */
1332 if (within_current_scope
&& reparse
)
1341 s
= b
->exp_string_reparse
? b
->exp_string_reparse
: b
->exp_string
;
1342 b
->exp
= parse_exp_1 (&s
, b
->exp_valid_block
, 0);
1343 /* If the meaning of expression itself changed, the old value is
1344 no longer relevant. We don't want to report a watchpoint hit
1345 to the user when the old value and the new value may actually
1346 be completely different objects. */
1347 value_free (b
->val
);
1351 /* Note that unlike with breakpoints, the watchpoint's condition
1352 expression is stored in the breakpoint object, not in the
1353 locations (re)created below. */
1354 if (b
->base
.cond_string
!= NULL
)
1356 if (b
->cond_exp
!= NULL
)
1358 xfree (b
->cond_exp
);
1362 s
= b
->base
.cond_string
;
1363 b
->cond_exp
= parse_exp_1 (&s
, b
->cond_exp_valid_block
, 0);
1367 /* If we failed to parse the expression, for example because
1368 it refers to a global variable in a not-yet-loaded shared library,
1369 don't try to insert watchpoint. We don't automatically delete
1370 such watchpoint, though, since failure to parse expression
1371 is different from out-of-scope watchpoint. */
1372 if ( !target_has_execution
)
1374 /* Without execution, memory can't change. No use to try and
1375 set watchpoint locations. The watchpoint will be reset when
1376 the target gains execution, through breakpoint_re_set. */
1378 else if (within_current_scope
&& b
->exp
)
1381 struct value
*val_chain
, *v
, *result
, *next
;
1382 struct program_space
*frame_pspace
;
1384 fetch_subexp_value (b
->exp
, &pc
, &v
, &result
, &val_chain
);
1386 /* Avoid setting b->val if it's already set. The meaning of
1387 b->val is 'the last value' user saw, and we should update
1388 it only if we reported that last value to user. As it
1389 happens, the code that reports it updates b->val directly.
1390 We don't keep track of the memory value for masked
1392 if (!b
->val_valid
&& !is_masked_watchpoint (&b
->base
))
1398 frame_pspace
= get_frame_program_space (get_selected_frame (NULL
));
1400 /* Look at each value on the value chain. */
1401 for (v
= val_chain
; v
; v
= value_next (v
))
1403 /* If it's a memory location, and GDB actually needed
1404 its contents to evaluate the expression, then we
1405 must watch it. If the first value returned is
1406 still lazy, that means an error occurred reading it;
1407 watch it anyway in case it becomes readable. */
1408 if (VALUE_LVAL (v
) == lval_memory
1409 && (v
== val_chain
|| ! value_lazy (v
)))
1411 struct type
*vtype
= check_typedef (value_type (v
));
1413 /* We only watch structs and arrays if user asked
1414 for it explicitly, never if they just happen to
1415 appear in the middle of some value chain. */
1417 || (TYPE_CODE (vtype
) != TYPE_CODE_STRUCT
1418 && TYPE_CODE (vtype
) != TYPE_CODE_ARRAY
))
1422 struct bp_location
*loc
, **tmp
;
1424 addr
= value_address (v
);
1425 len
= TYPE_LENGTH (value_type (v
));
1427 if (b
->base
.type
== bp_read_watchpoint
)
1429 else if (b
->base
.type
== bp_access_watchpoint
)
1432 loc
= allocate_bp_location (&b
->base
);
1433 for (tmp
= &(b
->base
.loc
); *tmp
!= NULL
; tmp
= &((*tmp
)->next
))
1436 loc
->gdbarch
= get_type_arch (value_type (v
));
1438 loc
->pspace
= frame_pspace
;
1439 loc
->address
= addr
;
1441 loc
->watchpoint_type
= type
;
1446 /* Change the type of breakpoint between hardware assisted or
1447 an ordinary watchpoint depending on the hardware support
1448 and free hardware slots. REPARSE is set when the inferior
1453 enum bp_loc_type loc_type
;
1454 struct bp_location
*bl
;
1456 reg_cnt
= can_use_hardware_watchpoint (val_chain
);
1460 int i
, target_resources_ok
, other_type_used
;
1462 /* Use an exact watchpoint when there's only one memory region to be
1463 watched, and only one debug register is needed to watch it. */
1464 b
->exact
= target_exact_watchpoints
&& reg_cnt
== 1;
1466 /* We need to determine how many resources are already
1467 used for all other hardware watchpoints plus this one
1468 to see if we still have enough resources to also fit
1469 this watchpoint in as well. To guarantee the
1470 hw_watchpoint_used_count call below counts this
1471 watchpoint, make sure that it is marked as a hardware
1473 if (b
->base
.type
== bp_watchpoint
)
1474 b
->base
.type
= bp_hardware_watchpoint
;
1476 i
= hw_watchpoint_used_count (b
->base
.type
, &other_type_used
);
1477 target_resources_ok
= target_can_use_hardware_watchpoint
1478 (b
->base
.type
, i
, other_type_used
);
1479 if (target_resources_ok
<= 0)
1481 int sw_mode
= b
->base
.ops
->works_in_software_mode (&b
->base
);
1483 if (target_resources_ok
== 0 && !sw_mode
)
1484 error (_("Target does not support this type of "
1485 "hardware watchpoint."));
1486 else if (target_resources_ok
< 0 && !sw_mode
)
1487 error (_("There are not enough available hardware "
1488 "resources for this watchpoint."));
1490 b
->base
.type
= bp_watchpoint
;
1493 else if (!b
->base
.ops
->works_in_software_mode (&b
->base
))
1494 error (_("Expression cannot be implemented with "
1495 "read/access watchpoint."));
1497 b
->base
.type
= bp_watchpoint
;
1499 loc_type
= (b
->base
.type
== bp_watchpoint
? bp_loc_other
1500 : bp_loc_hardware_watchpoint
);
1501 for (bl
= b
->base
.loc
; bl
; bl
= bl
->next
)
1502 bl
->loc_type
= loc_type
;
1505 for (v
= val_chain
; v
; v
= next
)
1507 next
= value_next (v
);
1512 /* If a software watchpoint is not watching any memory, then the
1513 above left it without any location set up. But,
1514 bpstat_stop_status requires a location to be able to report
1515 stops, so make sure there's at least a dummy one. */
1516 if (b
->base
.type
== bp_watchpoint
&& b
->base
.loc
== NULL
)
1518 struct breakpoint
*base
= &b
->base
;
1519 base
->loc
= allocate_bp_location (base
);
1520 base
->loc
->pspace
= frame_pspace
;
1521 base
->loc
->address
= -1;
1522 base
->loc
->length
= -1;
1523 base
->loc
->watchpoint_type
= -1;
1526 else if (!within_current_scope
)
1528 printf_filtered (_("\
1529 Watchpoint %d deleted because the program has left the block\n\
1530 in which its expression is valid.\n"),
1532 watchpoint_del_at_next_stop (b
);
1535 /* Restore the selected frame. */
1537 select_frame (frame_find_by_id (saved_frame_id
));
1541 /* Returns 1 iff breakpoint location should be
1542 inserted in the inferior. */
1544 should_be_inserted (struct bp_location
*bl
)
1546 if (bl
->owner
== NULL
|| !breakpoint_enabled (bl
->owner
))
1549 if (bl
->owner
->disposition
== disp_del_at_next_stop
)
1552 if (!bl
->enabled
|| bl
->shlib_disabled
|| bl
->duplicate
)
1555 /* This is set for example, when we're attached to the parent of a
1556 vfork, and have detached from the child. The child is running
1557 free, and we expect it to do an exec or exit, at which point the
1558 OS makes the parent schedulable again (and the target reports
1559 that the vfork is done). Until the child is done with the shared
1560 memory region, do not insert breakpoints in the parent, otherwise
1561 the child could still trip on the parent's breakpoints. Since
1562 the parent is blocked anyway, it won't miss any breakpoint. */
1563 if (bl
->pspace
->breakpoints_not_allowed
)
1566 /* Tracepoints are inserted by the target at a time of its choosing,
1568 if (is_tracepoint (bl
->owner
))
1574 /* Same as should_be_inserted but does the check assuming
1575 that the location is not duplicated. */
1578 unduplicated_should_be_inserted (struct bp_location
*bl
)
1581 const int save_duplicate
= bl
->duplicate
;
1584 result
= should_be_inserted (bl
);
1585 bl
->duplicate
= save_duplicate
;
1589 /* Insert a low-level "breakpoint" of some type. BL is the breakpoint
1590 location. Any error messages are printed to TMP_ERROR_STREAM; and
1591 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
1592 Returns 0 for success, 1 if the bp_location type is not supported or
1595 NOTE drow/2003-09-09: This routine could be broken down to an
1596 object-style method for each breakpoint or catchpoint type. */
1598 insert_bp_location (struct bp_location
*bl
,
1599 struct ui_file
*tmp_error_stream
,
1600 int *disabled_breaks
,
1601 int *hw_breakpoint_error
)
1605 if (!should_be_inserted (bl
) || bl
->inserted
)
1608 /* Initialize the target-specific information. */
1609 memset (&bl
->target_info
, 0, sizeof (bl
->target_info
));
1610 bl
->target_info
.placed_address
= bl
->address
;
1611 bl
->target_info
.placed_address_space
= bl
->pspace
->aspace
;
1612 bl
->target_info
.length
= bl
->length
;
1614 if (bl
->loc_type
== bp_loc_software_breakpoint
1615 || bl
->loc_type
== bp_loc_hardware_breakpoint
)
1617 if (bl
->owner
->type
!= bp_hardware_breakpoint
)
1619 /* If the explicitly specified breakpoint type
1620 is not hardware breakpoint, check the memory map to see
1621 if the breakpoint address is in read only memory or not.
1623 Two important cases are:
1624 - location type is not hardware breakpoint, memory
1625 is readonly. We change the type of the location to
1626 hardware breakpoint.
1627 - location type is hardware breakpoint, memory is
1628 read-write. This means we've previously made the
1629 location hardware one, but then the memory map changed,
1632 When breakpoints are removed, remove_breakpoints will use
1633 location types we've just set here, the only possible
1634 problem is that memory map has changed during running
1635 program, but it's not going to work anyway with current
1637 struct mem_region
*mr
1638 = lookup_mem_region (bl
->target_info
.placed_address
);
1642 if (automatic_hardware_breakpoints
)
1644 enum bp_loc_type new_type
;
1646 if (mr
->attrib
.mode
!= MEM_RW
)
1647 new_type
= bp_loc_hardware_breakpoint
;
1649 new_type
= bp_loc_software_breakpoint
;
1651 if (new_type
!= bl
->loc_type
)
1653 static int said
= 0;
1655 bl
->loc_type
= new_type
;
1658 fprintf_filtered (gdb_stdout
,
1659 _("Note: automatically using "
1660 "hardware breakpoints for "
1661 "read-only addresses.\n"));
1666 else if (bl
->loc_type
== bp_loc_software_breakpoint
1667 && mr
->attrib
.mode
!= MEM_RW
)
1668 warning (_("cannot set software breakpoint "
1669 "at readonly address %s"),
1670 paddress (bl
->gdbarch
, bl
->address
));
1674 /* First check to see if we have to handle an overlay. */
1675 if (overlay_debugging
== ovly_off
1676 || bl
->section
== NULL
1677 || !(section_is_overlay (bl
->section
)))
1679 /* No overlay handling: just set the breakpoint. */
1681 val
= bl
->owner
->ops
->insert_location (bl
);
1685 /* This breakpoint is in an overlay section.
1686 Shall we set a breakpoint at the LMA? */
1687 if (!overlay_events_enabled
)
1689 /* Yes -- overlay event support is not active,
1690 so we must try to set a breakpoint at the LMA.
1691 This will not work for a hardware breakpoint. */
1692 if (bl
->loc_type
== bp_loc_hardware_breakpoint
)
1693 warning (_("hardware breakpoint %d not supported in overlay!"),
1697 CORE_ADDR addr
= overlay_unmapped_address (bl
->address
,
1699 /* Set a software (trap) breakpoint at the LMA. */
1700 bl
->overlay_target_info
= bl
->target_info
;
1701 bl
->overlay_target_info
.placed_address
= addr
;
1702 val
= target_insert_breakpoint (bl
->gdbarch
,
1703 &bl
->overlay_target_info
);
1705 fprintf_unfiltered (tmp_error_stream
,
1706 "Overlay breakpoint %d "
1707 "failed: in ROM?\n",
1711 /* Shall we set a breakpoint at the VMA? */
1712 if (section_is_mapped (bl
->section
))
1714 /* Yes. This overlay section is mapped into memory. */
1715 val
= bl
->owner
->ops
->insert_location (bl
);
1719 /* No. This breakpoint will not be inserted.
1720 No error, but do not mark the bp as 'inserted'. */
1727 /* Can't set the breakpoint. */
1728 if (solib_name_from_address (bl
->pspace
, bl
->address
))
1730 /* See also: disable_breakpoints_in_shlibs. */
1732 bl
->shlib_disabled
= 1;
1733 observer_notify_breakpoint_modified (bl
->owner
);
1734 if (!*disabled_breaks
)
1736 fprintf_unfiltered (tmp_error_stream
,
1737 "Cannot insert breakpoint %d.\n",
1739 fprintf_unfiltered (tmp_error_stream
,
1740 "Temporarily disabling shared "
1741 "library breakpoints:\n");
1743 *disabled_breaks
= 1;
1744 fprintf_unfiltered (tmp_error_stream
,
1745 "breakpoint #%d\n", bl
->owner
->number
);
1749 if (bl
->loc_type
== bp_loc_hardware_breakpoint
)
1751 *hw_breakpoint_error
= 1;
1752 fprintf_unfiltered (tmp_error_stream
,
1753 "Cannot insert hardware "
1759 fprintf_unfiltered (tmp_error_stream
,
1760 "Cannot insert breakpoint %d.\n",
1762 fprintf_filtered (tmp_error_stream
,
1763 "Error accessing memory address ");
1764 fputs_filtered (paddress (bl
->gdbarch
, bl
->address
),
1766 fprintf_filtered (tmp_error_stream
, ": %s.\n",
1767 safe_strerror (val
));
1778 else if (bl
->loc_type
== bp_loc_hardware_watchpoint
1779 /* NOTE drow/2003-09-08: This state only exists for removing
1780 watchpoints. It's not clear that it's necessary... */
1781 && bl
->owner
->disposition
!= disp_del_at_next_stop
)
1783 gdb_assert (bl
->owner
->ops
!= NULL
1784 && bl
->owner
->ops
->insert_location
!= NULL
);
1786 val
= bl
->owner
->ops
->insert_location (bl
);
1788 /* If trying to set a read-watchpoint, and it turns out it's not
1789 supported, try emulating one with an access watchpoint. */
1790 if (val
== 1 && bl
->watchpoint_type
== hw_read
)
1792 struct bp_location
*loc
, **loc_temp
;
1794 /* But don't try to insert it, if there's already another
1795 hw_access location that would be considered a duplicate
1797 ALL_BP_LOCATIONS (loc
, loc_temp
)
1799 && loc
->watchpoint_type
== hw_access
1800 && watchpoint_locations_match (bl
, loc
))
1804 bl
->target_info
= loc
->target_info
;
1805 bl
->watchpoint_type
= hw_access
;
1812 bl
->watchpoint_type
= hw_access
;
1813 val
= bl
->owner
->ops
->insert_location (bl
);
1816 /* Back to the original value. */
1817 bl
->watchpoint_type
= hw_read
;
1821 bl
->inserted
= (val
== 0);
1824 else if (bl
->owner
->type
== bp_catchpoint
)
1826 gdb_assert (bl
->owner
->ops
!= NULL
1827 && bl
->owner
->ops
->insert_location
!= NULL
);
1829 val
= bl
->owner
->ops
->insert_location (bl
);
1832 bl
->owner
->enable_state
= bp_disabled
;
1836 Error inserting catchpoint %d: Your system does not support this type\n\
1837 of catchpoint."), bl
->owner
->number
);
1839 warning (_("Error inserting catchpoint %d."), bl
->owner
->number
);
1842 bl
->inserted
= (val
== 0);
1844 /* We've already printed an error message if there was a problem
1845 inserting this catchpoint, and we've disabled the catchpoint,
1846 so just return success. */
1853 /* This function is called when program space PSPACE is about to be
1854 deleted. It takes care of updating breakpoints to not reference
1858 breakpoint_program_space_exit (struct program_space
*pspace
)
1860 struct breakpoint
*b
, *b_temp
;
1861 struct bp_location
*loc
, **loc_temp
;
1863 /* Remove any breakpoint that was set through this program space. */
1864 ALL_BREAKPOINTS_SAFE (b
, b_temp
)
1866 if (b
->pspace
== pspace
)
1867 delete_breakpoint (b
);
1870 /* Breakpoints set through other program spaces could have locations
1871 bound to PSPACE as well. Remove those. */
1872 ALL_BP_LOCATIONS (loc
, loc_temp
)
1874 struct bp_location
*tmp
;
1876 if (loc
->pspace
== pspace
)
1878 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
1879 if (loc
->owner
->loc
== loc
)
1880 loc
->owner
->loc
= loc
->next
;
1882 for (tmp
= loc
->owner
->loc
; tmp
->next
!= NULL
; tmp
= tmp
->next
)
1883 if (tmp
->next
== loc
)
1885 tmp
->next
= loc
->next
;
1891 /* Now update the global location list to permanently delete the
1892 removed locations above. */
1893 update_global_location_list (0);
1896 /* Make sure all breakpoints are inserted in inferior.
1897 Throws exception on any error.
1898 A breakpoint that is already inserted won't be inserted
1899 again, so calling this function twice is safe. */
1901 insert_breakpoints (void)
1903 struct breakpoint
*bpt
;
1905 ALL_BREAKPOINTS (bpt
)
1906 if (is_hardware_watchpoint (bpt
))
1908 struct watchpoint
*w
= (struct watchpoint
*) bpt
;
1910 update_watchpoint (w
, 0 /* don't reparse. */);
1913 update_global_location_list (1);
1915 /* update_global_location_list does not insert breakpoints when
1916 always_inserted_mode is not enabled. Explicitly insert them
1918 if (!breakpoints_always_inserted_mode ())
1919 insert_breakpoint_locations ();
1922 /* Used when starting or continuing the program. */
1925 insert_breakpoint_locations (void)
1927 struct breakpoint
*bpt
;
1928 struct bp_location
*bl
, **blp_tmp
;
1931 int disabled_breaks
= 0;
1932 int hw_breakpoint_error
= 0;
1934 struct ui_file
*tmp_error_stream
= mem_fileopen ();
1935 struct cleanup
*cleanups
= make_cleanup_ui_file_delete (tmp_error_stream
);
1937 /* Explicitly mark the warning -- this will only be printed if
1938 there was an error. */
1939 fprintf_unfiltered (tmp_error_stream
, "Warning:\n");
1941 save_current_space_and_thread ();
1943 ALL_BP_LOCATIONS (bl
, blp_tmp
)
1945 if (!should_be_inserted (bl
) || bl
->inserted
)
1948 /* There is no point inserting thread-specific breakpoints if
1949 the thread no longer exists. ALL_BP_LOCATIONS bp_location
1950 has BL->OWNER always non-NULL. */
1951 if (bl
->owner
->thread
!= -1
1952 && !valid_thread_id (bl
->owner
->thread
))
1955 switch_to_program_space_and_thread (bl
->pspace
);
1957 /* For targets that support global breakpoints, there's no need
1958 to select an inferior to insert breakpoint to. In fact, even
1959 if we aren't attached to any process yet, we should still
1960 insert breakpoints. */
1961 if (!gdbarch_has_global_breakpoints (target_gdbarch
)
1962 && ptid_equal (inferior_ptid
, null_ptid
))
1965 val
= insert_bp_location (bl
, tmp_error_stream
, &disabled_breaks
,
1966 &hw_breakpoint_error
);
1971 /* If we failed to insert all locations of a watchpoint, remove
1972 them, as half-inserted watchpoint is of limited use. */
1973 ALL_BREAKPOINTS (bpt
)
1975 int some_failed
= 0;
1976 struct bp_location
*loc
;
1978 if (!is_hardware_watchpoint (bpt
))
1981 if (!breakpoint_enabled (bpt
))
1984 if (bpt
->disposition
== disp_del_at_next_stop
)
1987 for (loc
= bpt
->loc
; loc
; loc
= loc
->next
)
1988 if (!loc
->inserted
&& should_be_inserted (loc
))
1995 for (loc
= bpt
->loc
; loc
; loc
= loc
->next
)
1997 remove_breakpoint (loc
, mark_uninserted
);
1999 hw_breakpoint_error
= 1;
2000 fprintf_unfiltered (tmp_error_stream
,
2001 "Could not insert hardware watchpoint %d.\n",
2009 /* If a hardware breakpoint or watchpoint was inserted, add a
2010 message about possibly exhausted resources. */
2011 if (hw_breakpoint_error
)
2013 fprintf_unfiltered (tmp_error_stream
,
2014 "Could not insert hardware breakpoints:\n\
2015 You may have requested too many hardware breakpoints/watchpoints.\n");
2017 target_terminal_ours_for_output ();
2018 error_stream (tmp_error_stream
);
2021 do_cleanups (cleanups
);
2024 /* Used when the program stops.
2025 Returns zero if successful, or non-zero if there was a problem
2026 removing a breakpoint location. */
2029 remove_breakpoints (void)
2031 struct bp_location
*bl
, **blp_tmp
;
2034 ALL_BP_LOCATIONS (bl
, blp_tmp
)
2037 val
|= remove_breakpoint (bl
, mark_uninserted
);
2042 /* Remove breakpoints of process PID. */
2045 remove_breakpoints_pid (int pid
)
2047 struct bp_location
*bl
, **blp_tmp
;
2049 struct inferior
*inf
= find_inferior_pid (pid
);
2051 ALL_BP_LOCATIONS (bl
, blp_tmp
)
2053 if (bl
->pspace
!= inf
->pspace
)
2058 val
= remove_breakpoint (bl
, mark_uninserted
);
2067 reattach_breakpoints (int pid
)
2069 struct cleanup
*old_chain
;
2070 struct bp_location
*bl
, **blp_tmp
;
2072 struct ui_file
*tmp_error_stream
;
2073 int dummy1
= 0, dummy2
= 0;
2074 struct inferior
*inf
;
2075 struct thread_info
*tp
;
2077 tp
= any_live_thread_of_process (pid
);
2081 inf
= find_inferior_pid (pid
);
2082 old_chain
= save_inferior_ptid ();
2084 inferior_ptid
= tp
->ptid
;
2086 tmp_error_stream
= mem_fileopen ();
2087 make_cleanup_ui_file_delete (tmp_error_stream
);
2089 ALL_BP_LOCATIONS (bl
, blp_tmp
)
2091 if (bl
->pspace
!= inf
->pspace
)
2097 val
= insert_bp_location (bl
, tmp_error_stream
, &dummy1
, &dummy2
);
2100 do_cleanups (old_chain
);
2105 do_cleanups (old_chain
);
2109 static int internal_breakpoint_number
= -1;
2111 /* Set the breakpoint number of B, depending on the value of INTERNAL.
2112 If INTERNAL is non-zero, the breakpoint number will be populated
2113 from internal_breakpoint_number and that variable decremented.
2114 Otherwise the breakpoint number will be populated from
2115 breakpoint_count and that value incremented. Internal breakpoints
2116 do not set the internal var bpnum. */
2118 set_breakpoint_number (int internal
, struct breakpoint
*b
)
2121 b
->number
= internal_breakpoint_number
--;
2124 set_breakpoint_count (breakpoint_count
+ 1);
2125 b
->number
= breakpoint_count
;
2129 static struct breakpoint
*
2130 create_internal_breakpoint (struct gdbarch
*gdbarch
,
2131 CORE_ADDR address
, enum bptype type
,
2132 const struct breakpoint_ops
*ops
)
2134 struct symtab_and_line sal
;
2135 struct breakpoint
*b
;
2137 init_sal (&sal
); /* Initialize to zeroes. */
2140 sal
.section
= find_pc_overlay (sal
.pc
);
2141 sal
.pspace
= current_program_space
;
2143 b
= set_raw_breakpoint (gdbarch
, sal
, type
, ops
);
2144 b
->number
= internal_breakpoint_number
--;
2145 b
->disposition
= disp_donttouch
;
2150 static const char *const longjmp_names
[] =
2152 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
2154 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
2156 /* Per-objfile data private to breakpoint.c. */
2157 struct breakpoint_objfile_data
2159 /* Minimal symbol for "_ovly_debug_event" (if any). */
2160 struct minimal_symbol
*overlay_msym
;
2162 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
2163 struct minimal_symbol
*longjmp_msym
[NUM_LONGJMP_NAMES
];
2165 /* Minimal symbol for "std::terminate()" (if any). */
2166 struct minimal_symbol
*terminate_msym
;
2168 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
2169 struct minimal_symbol
*exception_msym
;
2172 static const struct objfile_data
*breakpoint_objfile_key
;
2174 /* Minimal symbol not found sentinel. */
2175 static struct minimal_symbol msym_not_found
;
2177 /* Returns TRUE if MSYM point to the "not found" sentinel. */
2180 msym_not_found_p (const struct minimal_symbol
*msym
)
2182 return msym
== &msym_not_found
;
2185 /* Return per-objfile data needed by breakpoint.c.
2186 Allocate the data if necessary. */
2188 static struct breakpoint_objfile_data
*
2189 get_breakpoint_objfile_data (struct objfile
*objfile
)
2191 struct breakpoint_objfile_data
*bp_objfile_data
;
2193 bp_objfile_data
= objfile_data (objfile
, breakpoint_objfile_key
);
2194 if (bp_objfile_data
== NULL
)
2196 bp_objfile_data
= obstack_alloc (&objfile
->objfile_obstack
,
2197 sizeof (*bp_objfile_data
));
2199 memset (bp_objfile_data
, 0, sizeof (*bp_objfile_data
));
2200 set_objfile_data (objfile
, breakpoint_objfile_key
, bp_objfile_data
);
2202 return bp_objfile_data
;
2206 create_overlay_event_breakpoint (void)
2208 struct objfile
*objfile
;
2209 const char *const func_name
= "_ovly_debug_event";
2211 ALL_OBJFILES (objfile
)
2213 struct breakpoint
*b
;
2214 struct breakpoint_objfile_data
*bp_objfile_data
;
2217 bp_objfile_data
= get_breakpoint_objfile_data (objfile
);
2219 if (msym_not_found_p (bp_objfile_data
->overlay_msym
))
2222 if (bp_objfile_data
->overlay_msym
== NULL
)
2224 struct minimal_symbol
*m
;
2226 m
= lookup_minimal_symbol_text (func_name
, objfile
);
2229 /* Avoid future lookups in this objfile. */
2230 bp_objfile_data
->overlay_msym
= &msym_not_found
;
2233 bp_objfile_data
->overlay_msym
= m
;
2236 addr
= SYMBOL_VALUE_ADDRESS (bp_objfile_data
->overlay_msym
);
2237 b
= create_internal_breakpoint (get_objfile_arch (objfile
), addr
,
2239 &internal_breakpoint_ops
);
2240 b
->addr_string
= xstrdup (func_name
);
2242 if (overlay_debugging
== ovly_auto
)
2244 b
->enable_state
= bp_enabled
;
2245 overlay_events_enabled
= 1;
2249 b
->enable_state
= bp_disabled
;
2250 overlay_events_enabled
= 0;
2253 update_global_location_list (1);
2257 create_longjmp_master_breakpoint (void)
2259 struct program_space
*pspace
;
2260 struct cleanup
*old_chain
;
2262 old_chain
= save_current_program_space ();
2264 ALL_PSPACES (pspace
)
2266 struct objfile
*objfile
;
2268 set_current_program_space (pspace
);
2270 ALL_OBJFILES (objfile
)
2273 struct gdbarch
*gdbarch
;
2274 struct breakpoint_objfile_data
*bp_objfile_data
;
2276 gdbarch
= get_objfile_arch (objfile
);
2277 if (!gdbarch_get_longjmp_target_p (gdbarch
))
2280 bp_objfile_data
= get_breakpoint_objfile_data (objfile
);
2282 for (i
= 0; i
< NUM_LONGJMP_NAMES
; i
++)
2284 struct breakpoint
*b
;
2285 const char *func_name
;
2288 if (msym_not_found_p (bp_objfile_data
->longjmp_msym
[i
]))
2291 func_name
= longjmp_names
[i
];
2292 if (bp_objfile_data
->longjmp_msym
[i
] == NULL
)
2294 struct minimal_symbol
*m
;
2296 m
= lookup_minimal_symbol_text (func_name
, objfile
);
2299 /* Prevent future lookups in this objfile. */
2300 bp_objfile_data
->longjmp_msym
[i
] = &msym_not_found
;
2303 bp_objfile_data
->longjmp_msym
[i
] = m
;
2306 addr
= SYMBOL_VALUE_ADDRESS (bp_objfile_data
->longjmp_msym
[i
]);
2307 b
= create_internal_breakpoint (gdbarch
, addr
, bp_longjmp_master
,
2308 &internal_breakpoint_ops
);
2309 b
->addr_string
= xstrdup (func_name
);
2310 b
->enable_state
= bp_disabled
;
2314 update_global_location_list (1);
2316 do_cleanups (old_chain
);
2319 /* Create a master std::terminate breakpoint. */
2321 create_std_terminate_master_breakpoint (void)
2323 struct program_space
*pspace
;
2324 struct cleanup
*old_chain
;
2325 const char *const func_name
= "std::terminate()";
2327 old_chain
= save_current_program_space ();
2329 ALL_PSPACES (pspace
)
2331 struct objfile
*objfile
;
2334 set_current_program_space (pspace
);
2336 ALL_OBJFILES (objfile
)
2338 struct breakpoint
*b
;
2339 struct breakpoint_objfile_data
*bp_objfile_data
;
2341 bp_objfile_data
= get_breakpoint_objfile_data (objfile
);
2343 if (msym_not_found_p (bp_objfile_data
->terminate_msym
))
2346 if (bp_objfile_data
->terminate_msym
== NULL
)
2348 struct minimal_symbol
*m
;
2350 m
= lookup_minimal_symbol (func_name
, NULL
, objfile
);
2351 if (m
== NULL
|| (MSYMBOL_TYPE (m
) != mst_text
2352 && MSYMBOL_TYPE (m
) != mst_file_text
))
2354 /* Prevent future lookups in this objfile. */
2355 bp_objfile_data
->terminate_msym
= &msym_not_found
;
2358 bp_objfile_data
->terminate_msym
= m
;
2361 addr
= SYMBOL_VALUE_ADDRESS (bp_objfile_data
->terminate_msym
);
2362 b
= create_internal_breakpoint (get_objfile_arch (objfile
), addr
,
2363 bp_std_terminate_master
,
2364 &internal_breakpoint_ops
);
2365 b
->addr_string
= xstrdup (func_name
);
2366 b
->enable_state
= bp_disabled
;
2370 update_global_location_list (1);
2372 do_cleanups (old_chain
);
2375 /* Install a master breakpoint on the unwinder's debug hook. */
2378 create_exception_master_breakpoint (void)
2380 struct objfile
*objfile
;
2381 const char *const func_name
= "_Unwind_DebugHook";
2383 ALL_OBJFILES (objfile
)
2385 struct breakpoint
*b
;
2386 struct gdbarch
*gdbarch
;
2387 struct breakpoint_objfile_data
*bp_objfile_data
;
2390 bp_objfile_data
= get_breakpoint_objfile_data (objfile
);
2392 if (msym_not_found_p (bp_objfile_data
->exception_msym
))
2395 gdbarch
= get_objfile_arch (objfile
);
2397 if (bp_objfile_data
->exception_msym
== NULL
)
2399 struct minimal_symbol
*debug_hook
;
2401 debug_hook
= lookup_minimal_symbol (func_name
, NULL
, objfile
);
2402 if (debug_hook
== NULL
)
2404 bp_objfile_data
->exception_msym
= &msym_not_found
;
2408 bp_objfile_data
->exception_msym
= debug_hook
;
2411 addr
= SYMBOL_VALUE_ADDRESS (bp_objfile_data
->exception_msym
);
2412 addr
= gdbarch_convert_from_func_ptr_addr (gdbarch
, addr
,
2414 b
= create_internal_breakpoint (gdbarch
, addr
, bp_exception_master
,
2415 &internal_breakpoint_ops
);
2416 b
->addr_string
= xstrdup (func_name
);
2417 b
->enable_state
= bp_disabled
;
2420 update_global_location_list (1);
2424 update_breakpoints_after_exec (void)
2426 struct breakpoint
*b
, *b_tmp
;
2427 struct bp_location
*bploc
, **bplocp_tmp
;
2429 /* We're about to delete breakpoints from GDB's lists. If the
2430 INSERTED flag is true, GDB will try to lift the breakpoints by
2431 writing the breakpoints' "shadow contents" back into memory. The
2432 "shadow contents" are NOT valid after an exec, so GDB should not
2433 do that. Instead, the target is responsible from marking
2434 breakpoints out as soon as it detects an exec. We don't do that
2435 here instead, because there may be other attempts to delete
2436 breakpoints after detecting an exec and before reaching here. */
2437 ALL_BP_LOCATIONS (bploc
, bplocp_tmp
)
2438 if (bploc
->pspace
== current_program_space
)
2439 gdb_assert (!bploc
->inserted
);
2441 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
2443 if (b
->pspace
!= current_program_space
)
2446 /* Solib breakpoints must be explicitly reset after an exec(). */
2447 if (b
->type
== bp_shlib_event
)
2449 delete_breakpoint (b
);
2453 /* JIT breakpoints must be explicitly reset after an exec(). */
2454 if (b
->type
== bp_jit_event
)
2456 delete_breakpoint (b
);
2460 /* Thread event breakpoints must be set anew after an exec(),
2461 as must overlay event and longjmp master breakpoints. */
2462 if (b
->type
== bp_thread_event
|| b
->type
== bp_overlay_event
2463 || b
->type
== bp_longjmp_master
|| b
->type
== bp_std_terminate_master
2464 || b
->type
== bp_exception_master
)
2466 delete_breakpoint (b
);
2470 /* Step-resume breakpoints are meaningless after an exec(). */
2471 if (b
->type
== bp_step_resume
|| b
->type
== bp_hp_step_resume
)
2473 delete_breakpoint (b
);
2477 /* Longjmp and longjmp-resume breakpoints are also meaningless
2479 if (b
->type
== bp_longjmp
|| b
->type
== bp_longjmp_resume
2480 || b
->type
== bp_exception
|| b
->type
== bp_exception_resume
)
2482 delete_breakpoint (b
);
2486 if (b
->type
== bp_catchpoint
)
2488 /* For now, none of the bp_catchpoint breakpoints need to
2489 do anything at this point. In the future, if some of
2490 the catchpoints need to something, we will need to add
2491 a new method, and call this method from here. */
2495 /* bp_finish is a special case. The only way we ought to be able
2496 to see one of these when an exec() has happened, is if the user
2497 caught a vfork, and then said "finish". Ordinarily a finish just
2498 carries them to the call-site of the current callee, by setting
2499 a temporary bp there and resuming. But in this case, the finish
2500 will carry them entirely through the vfork & exec.
2502 We don't want to allow a bp_finish to remain inserted now. But
2503 we can't safely delete it, 'cause finish_command has a handle to
2504 the bp on a bpstat, and will later want to delete it. There's a
2505 chance (and I've seen it happen) that if we delete the bp_finish
2506 here, that its storage will get reused by the time finish_command
2507 gets 'round to deleting the "use to be a bp_finish" breakpoint.
2508 We really must allow finish_command to delete a bp_finish.
2510 In the absence of a general solution for the "how do we know
2511 it's safe to delete something others may have handles to?"
2512 problem, what we'll do here is just uninsert the bp_finish, and
2513 let finish_command delete it.
2515 (We know the bp_finish is "doomed" in the sense that it's
2516 momentary, and will be deleted as soon as finish_command sees
2517 the inferior stopped. So it doesn't matter that the bp's
2518 address is probably bogus in the new a.out, unlike e.g., the
2519 solib breakpoints.) */
2521 if (b
->type
== bp_finish
)
2526 /* Without a symbolic address, we have little hope of the
2527 pre-exec() address meaning the same thing in the post-exec()
2529 if (b
->addr_string
== NULL
)
2531 delete_breakpoint (b
);
2535 /* FIXME what about longjmp breakpoints? Re-create them here? */
2536 create_overlay_event_breakpoint ();
2537 create_longjmp_master_breakpoint ();
2538 create_std_terminate_master_breakpoint ();
2539 create_exception_master_breakpoint ();
2543 detach_breakpoints (int pid
)
2545 struct bp_location
*bl
, **blp_tmp
;
2547 struct cleanup
*old_chain
= save_inferior_ptid ();
2548 struct inferior
*inf
= current_inferior ();
2550 if (pid
== PIDGET (inferior_ptid
))
2551 error (_("Cannot detach breakpoints of inferior_ptid"));
2553 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
2554 inferior_ptid
= pid_to_ptid (pid
);
2555 ALL_BP_LOCATIONS (bl
, blp_tmp
)
2557 if (bl
->pspace
!= inf
->pspace
)
2561 val
|= remove_breakpoint_1 (bl
, mark_inserted
);
2564 /* Detach single-step breakpoints as well. */
2565 detach_single_step_breakpoints ();
2567 do_cleanups (old_chain
);
2571 /* Remove the breakpoint location BL from the current address space.
2572 Note that this is used to detach breakpoints from a child fork.
2573 When we get here, the child isn't in the inferior list, and neither
2574 do we have objects to represent its address space --- we should
2575 *not* look at bl->pspace->aspace here. */
2578 remove_breakpoint_1 (struct bp_location
*bl
, insertion_state_t is
)
2582 /* BL is never in moribund_locations by our callers. */
2583 gdb_assert (bl
->owner
!= NULL
);
2585 if (bl
->owner
->enable_state
== bp_permanent
)
2586 /* Permanent breakpoints cannot be inserted or removed. */
2589 /* The type of none suggests that owner is actually deleted.
2590 This should not ever happen. */
2591 gdb_assert (bl
->owner
->type
!= bp_none
);
2593 if (bl
->loc_type
== bp_loc_software_breakpoint
2594 || bl
->loc_type
== bp_loc_hardware_breakpoint
)
2596 /* "Normal" instruction breakpoint: either the standard
2597 trap-instruction bp (bp_breakpoint), or a
2598 bp_hardware_breakpoint. */
2600 /* First check to see if we have to handle an overlay. */
2601 if (overlay_debugging
== ovly_off
2602 || bl
->section
== NULL
2603 || !(section_is_overlay (bl
->section
)))
2605 /* No overlay handling: just remove the breakpoint. */
2606 val
= bl
->owner
->ops
->remove_location (bl
);
2610 /* This breakpoint is in an overlay section.
2611 Did we set a breakpoint at the LMA? */
2612 if (!overlay_events_enabled
)
2614 /* Yes -- overlay event support is not active, so we
2615 should have set a breakpoint at the LMA. Remove it.
2617 /* Ignore any failures: if the LMA is in ROM, we will
2618 have already warned when we failed to insert it. */
2619 if (bl
->loc_type
== bp_loc_hardware_breakpoint
)
2620 target_remove_hw_breakpoint (bl
->gdbarch
,
2621 &bl
->overlay_target_info
);
2623 target_remove_breakpoint (bl
->gdbarch
,
2624 &bl
->overlay_target_info
);
2626 /* Did we set a breakpoint at the VMA?
2627 If so, we will have marked the breakpoint 'inserted'. */
2630 /* Yes -- remove it. Previously we did not bother to
2631 remove the breakpoint if the section had been
2632 unmapped, but let's not rely on that being safe. We
2633 don't know what the overlay manager might do. */
2635 /* However, we should remove *software* breakpoints only
2636 if the section is still mapped, or else we overwrite
2637 wrong code with the saved shadow contents. */
2638 if (bl
->loc_type
== bp_loc_hardware_breakpoint
2639 || section_is_mapped (bl
->section
))
2640 val
= bl
->owner
->ops
->remove_location (bl
);
2646 /* No -- not inserted, so no need to remove. No error. */
2651 /* In some cases, we might not be able to remove a breakpoint
2652 in a shared library that has already been removed, but we
2653 have not yet processed the shlib unload event. */
2654 if (val
&& solib_name_from_address (bl
->pspace
, bl
->address
))
2659 bl
->inserted
= (is
== mark_inserted
);
2661 else if (bl
->loc_type
== bp_loc_hardware_watchpoint
)
2663 gdb_assert (bl
->owner
->ops
!= NULL
2664 && bl
->owner
->ops
->remove_location
!= NULL
);
2666 bl
->inserted
= (is
== mark_inserted
);
2667 bl
->owner
->ops
->remove_location (bl
);
2669 /* Failure to remove any of the hardware watchpoints comes here. */
2670 if ((is
== mark_uninserted
) && (bl
->inserted
))
2671 warning (_("Could not remove hardware watchpoint %d."),
2674 else if (bl
->owner
->type
== bp_catchpoint
2675 && breakpoint_enabled (bl
->owner
)
2678 gdb_assert (bl
->owner
->ops
!= NULL
2679 && bl
->owner
->ops
->remove_location
!= NULL
);
2681 val
= bl
->owner
->ops
->remove_location (bl
);
2685 bl
->inserted
= (is
== mark_inserted
);
2692 remove_breakpoint (struct bp_location
*bl
, insertion_state_t is
)
2695 struct cleanup
*old_chain
;
2697 /* BL is never in moribund_locations by our callers. */
2698 gdb_assert (bl
->owner
!= NULL
);
2700 if (bl
->owner
->enable_state
== bp_permanent
)
2701 /* Permanent breakpoints cannot be inserted or removed. */
2704 /* The type of none suggests that owner is actually deleted.
2705 This should not ever happen. */
2706 gdb_assert (bl
->owner
->type
!= bp_none
);
2708 old_chain
= save_current_space_and_thread ();
2710 switch_to_program_space_and_thread (bl
->pspace
);
2712 ret
= remove_breakpoint_1 (bl
, is
);
2714 do_cleanups (old_chain
);
2718 /* Clear the "inserted" flag in all breakpoints. */
2721 mark_breakpoints_out (void)
2723 struct bp_location
*bl
, **blp_tmp
;
2725 ALL_BP_LOCATIONS (bl
, blp_tmp
)
2726 if (bl
->pspace
== current_program_space
)
2730 /* Clear the "inserted" flag in all breakpoints and delete any
2731 breakpoints which should go away between runs of the program.
2733 Plus other such housekeeping that has to be done for breakpoints
2736 Note: this function gets called at the end of a run (by
2737 generic_mourn_inferior) and when a run begins (by
2738 init_wait_for_inferior). */
2743 breakpoint_init_inferior (enum inf_context context
)
2745 struct breakpoint
*b
, *b_tmp
;
2746 struct bp_location
*bl
, **blp_tmp
;
2748 struct program_space
*pspace
= current_program_space
;
2750 /* If breakpoint locations are shared across processes, then there's
2752 if (gdbarch_has_global_breakpoints (target_gdbarch
))
2755 ALL_BP_LOCATIONS (bl
, blp_tmp
)
2757 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
2758 if (bl
->pspace
== pspace
2759 && bl
->owner
->enable_state
!= bp_permanent
)
2763 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
2765 if (b
->loc
&& b
->loc
->pspace
!= pspace
)
2772 /* If the call dummy breakpoint is at the entry point it will
2773 cause problems when the inferior is rerun, so we better get
2776 case bp_watchpoint_scope
:
2778 /* Also get rid of scope breakpoints. */
2780 case bp_shlib_event
:
2782 /* Also remove solib event breakpoints. Their addresses may
2783 have changed since the last time we ran the program.
2784 Actually we may now be debugging against different target;
2785 and so the solib backend that installed this breakpoint may
2786 not be used in by the target. E.g.,
2788 (gdb) file prog-linux
2789 (gdb) run # native linux target
2792 (gdb) file prog-win.exe
2793 (gdb) tar rem :9999 # remote Windows gdbserver.
2796 delete_breakpoint (b
);
2800 case bp_hardware_watchpoint
:
2801 case bp_read_watchpoint
:
2802 case bp_access_watchpoint
:
2804 struct watchpoint
*w
= (struct watchpoint
*) b
;
2806 /* Likewise for watchpoints on local expressions. */
2807 if (w
->exp_valid_block
!= NULL
)
2808 delete_breakpoint (b
);
2809 else if (context
== inf_starting
)
2811 /* Reset val field to force reread of starting value in
2812 insert_breakpoints. */
2814 value_free (w
->val
);
2825 /* Get rid of the moribund locations. */
2826 for (ix
= 0; VEC_iterate (bp_location_p
, moribund_locations
, ix
, bl
); ++ix
)
2827 decref_bp_location (&bl
);
2828 VEC_free (bp_location_p
, moribund_locations
);
2831 /* These functions concern about actual breakpoints inserted in the
2832 target --- to e.g. check if we need to do decr_pc adjustment or if
2833 we need to hop over the bkpt --- so we check for address space
2834 match, not program space. */
2836 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
2837 exists at PC. It returns ordinary_breakpoint_here if it's an
2838 ordinary breakpoint, or permanent_breakpoint_here if it's a
2839 permanent breakpoint.
2840 - When continuing from a location with an ordinary breakpoint, we
2841 actually single step once before calling insert_breakpoints.
2842 - When continuing from a location with a permanent breakpoint, we
2843 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
2844 the target, to advance the PC past the breakpoint. */
2846 enum breakpoint_here
2847 breakpoint_here_p (struct address_space
*aspace
, CORE_ADDR pc
)
2849 struct bp_location
*bl
, **blp_tmp
;
2850 int any_breakpoint_here
= 0;
2852 ALL_BP_LOCATIONS (bl
, blp_tmp
)
2854 if (bl
->loc_type
!= bp_loc_software_breakpoint
2855 && bl
->loc_type
!= bp_loc_hardware_breakpoint
)
2858 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
2859 if ((breakpoint_enabled (bl
->owner
)
2860 || bl
->owner
->enable_state
== bp_permanent
)
2861 && breakpoint_location_address_match (bl
, aspace
, pc
))
2863 if (overlay_debugging
2864 && section_is_overlay (bl
->section
)
2865 && !section_is_mapped (bl
->section
))
2866 continue; /* unmapped overlay -- can't be a match */
2867 else if (bl
->owner
->enable_state
== bp_permanent
)
2868 return permanent_breakpoint_here
;
2870 any_breakpoint_here
= 1;
2874 return any_breakpoint_here
? ordinary_breakpoint_here
: 0;
2877 /* Return true if there's a moribund breakpoint at PC. */
2880 moribund_breakpoint_here_p (struct address_space
*aspace
, CORE_ADDR pc
)
2882 struct bp_location
*loc
;
2885 for (ix
= 0; VEC_iterate (bp_location_p
, moribund_locations
, ix
, loc
); ++ix
)
2886 if (breakpoint_location_address_match (loc
, aspace
, pc
))
2892 /* Returns non-zero if there's a breakpoint inserted at PC, which is
2893 inserted using regular breakpoint_chain / bp_location array
2894 mechanism. This does not check for single-step breakpoints, which
2895 are inserted and removed using direct target manipulation. */
2898 regular_breakpoint_inserted_here_p (struct address_space
*aspace
,
2901 struct bp_location
*bl
, **blp_tmp
;
2903 ALL_BP_LOCATIONS (bl
, blp_tmp
)
2905 if (bl
->loc_type
!= bp_loc_software_breakpoint
2906 && bl
->loc_type
!= bp_loc_hardware_breakpoint
)
2910 && breakpoint_location_address_match (bl
, aspace
, pc
))
2912 if (overlay_debugging
2913 && section_is_overlay (bl
->section
)
2914 && !section_is_mapped (bl
->section
))
2915 continue; /* unmapped overlay -- can't be a match */
2923 /* Returns non-zero iff there's either regular breakpoint
2924 or a single step breakpoint inserted at PC. */
2927 breakpoint_inserted_here_p (struct address_space
*aspace
, CORE_ADDR pc
)
2929 if (regular_breakpoint_inserted_here_p (aspace
, pc
))
2932 if (single_step_breakpoint_inserted_here_p (aspace
, pc
))
2938 /* This function returns non-zero iff there is a software breakpoint
2942 software_breakpoint_inserted_here_p (struct address_space
*aspace
,
2945 struct bp_location
*bl
, **blp_tmp
;
2947 ALL_BP_LOCATIONS (bl
, blp_tmp
)
2949 if (bl
->loc_type
!= bp_loc_software_breakpoint
)
2953 && breakpoint_address_match (bl
->pspace
->aspace
, bl
->address
,
2956 if (overlay_debugging
2957 && section_is_overlay (bl
->section
)
2958 && !section_is_mapped (bl
->section
))
2959 continue; /* unmapped overlay -- can't be a match */
2965 /* Also check for software single-step breakpoints. */
2966 if (single_step_breakpoint_inserted_here_p (aspace
, pc
))
2973 hardware_watchpoint_inserted_in_range (struct address_space
*aspace
,
2974 CORE_ADDR addr
, ULONGEST len
)
2976 struct breakpoint
*bpt
;
2978 ALL_BREAKPOINTS (bpt
)
2980 struct bp_location
*loc
;
2982 if (bpt
->type
!= bp_hardware_watchpoint
2983 && bpt
->type
!= bp_access_watchpoint
)
2986 if (!breakpoint_enabled (bpt
))
2989 for (loc
= bpt
->loc
; loc
; loc
= loc
->next
)
2990 if (loc
->pspace
->aspace
== aspace
&& loc
->inserted
)
2994 /* Check for intersection. */
2995 l
= max (loc
->address
, addr
);
2996 h
= min (loc
->address
+ loc
->length
, addr
+ len
);
3004 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3005 PC is valid for process/thread PTID. */
3008 breakpoint_thread_match (struct address_space
*aspace
, CORE_ADDR pc
,
3011 struct bp_location
*bl
, **blp_tmp
;
3012 /* The thread and task IDs associated to PTID, computed lazily. */
3016 ALL_BP_LOCATIONS (bl
, blp_tmp
)
3018 if (bl
->loc_type
!= bp_loc_software_breakpoint
3019 && bl
->loc_type
!= bp_loc_hardware_breakpoint
)
3022 /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL. */
3023 if (!breakpoint_enabled (bl
->owner
)
3024 && bl
->owner
->enable_state
!= bp_permanent
)
3027 if (!breakpoint_location_address_match (bl
, aspace
, pc
))
3030 if (bl
->owner
->thread
!= -1)
3032 /* This is a thread-specific breakpoint. Check that ptid
3033 matches that thread. If thread hasn't been computed yet,
3034 it is now time to do so. */
3036 thread
= pid_to_thread_id (ptid
);
3037 if (bl
->owner
->thread
!= thread
)
3041 if (bl
->owner
->task
!= 0)
3043 /* This is a task-specific breakpoint. Check that ptid
3044 matches that task. If task hasn't been computed yet,
3045 it is now time to do so. */
3047 task
= ada_get_task_number (ptid
);
3048 if (bl
->owner
->task
!= task
)
3052 if (overlay_debugging
3053 && section_is_overlay (bl
->section
)
3054 && !section_is_mapped (bl
->section
))
3055 continue; /* unmapped overlay -- can't be a match */
3064 /* bpstat stuff. External routines' interfaces are documented
3068 ep_is_catchpoint (struct breakpoint
*ep
)
3070 return (ep
->type
== bp_catchpoint
);
3073 /* Frees any storage that is part of a bpstat. Does not walk the
3077 bpstat_free (bpstat bs
)
3079 if (bs
->old_val
!= NULL
)
3080 value_free (bs
->old_val
);
3081 decref_counted_command_line (&bs
->commands
);
3082 decref_bp_location (&bs
->bp_location_at
);
3086 /* Clear a bpstat so that it says we are not at any breakpoint.
3087 Also free any storage that is part of a bpstat. */
3090 bpstat_clear (bpstat
*bsp
)
3107 /* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
3108 is part of the bpstat is copied as well. */
3111 bpstat_copy (bpstat bs
)
3115 bpstat retval
= NULL
;
3120 for (; bs
!= NULL
; bs
= bs
->next
)
3122 tmp
= (bpstat
) xmalloc (sizeof (*tmp
));
3123 memcpy (tmp
, bs
, sizeof (*tmp
));
3124 incref_counted_command_line (tmp
->commands
);
3125 incref_bp_location (tmp
->bp_location_at
);
3126 if (bs
->old_val
!= NULL
)
3128 tmp
->old_val
= value_copy (bs
->old_val
);
3129 release_value (tmp
->old_val
);
3133 /* This is the first thing in the chain. */
3143 /* Find the bpstat associated with this breakpoint. */
3146 bpstat_find_breakpoint (bpstat bsp
, struct breakpoint
*breakpoint
)
3151 for (; bsp
!= NULL
; bsp
= bsp
->next
)
3153 if (bsp
->breakpoint_at
== breakpoint
)
3159 /* Put in *NUM the breakpoint number of the first breakpoint we are
3160 stopped at. *BSP upon return is a bpstat which points to the
3161 remaining breakpoints stopped at (but which is not guaranteed to be
3162 good for anything but further calls to bpstat_num).
3164 Return 0 if passed a bpstat which does not indicate any breakpoints.
3165 Return -1 if stopped at a breakpoint that has been deleted since
3167 Return 1 otherwise. */
3170 bpstat_num (bpstat
*bsp
, int *num
)
3172 struct breakpoint
*b
;
3175 return 0; /* No more breakpoint values */
3177 /* We assume we'll never have several bpstats that correspond to a
3178 single breakpoint -- otherwise, this function might return the
3179 same number more than once and this will look ugly. */
3180 b
= (*bsp
)->breakpoint_at
;
3181 *bsp
= (*bsp
)->next
;
3183 return -1; /* breakpoint that's been deleted since */
3185 *num
= b
->number
; /* We have its number */
3189 /* Modify BS so that the actions will not be performed. */
3192 bpstat_clear_actions (bpstat bs
)
3194 for (; bs
!= NULL
; bs
= bs
->next
)
3196 decref_counted_command_line (&bs
->commands
);
3197 bs
->commands_left
= NULL
;
3198 if (bs
->old_val
!= NULL
)
3200 value_free (bs
->old_val
);
3206 /* Called when a command is about to proceed the inferior. */
3209 breakpoint_about_to_proceed (void)
3211 if (!ptid_equal (inferior_ptid
, null_ptid
))
3213 struct thread_info
*tp
= inferior_thread ();
3215 /* Allow inferior function calls in breakpoint commands to not
3216 interrupt the command list. When the call finishes
3217 successfully, the inferior will be standing at the same
3218 breakpoint as if nothing happened. */
3219 if (tp
->control
.in_infcall
)
3223 breakpoint_proceeded
= 1;
3226 /* Stub for cleaning up our state if we error-out of a breakpoint
3229 cleanup_executing_breakpoints (void *ignore
)
3231 executing_breakpoint_commands
= 0;
3234 /* Execute all the commands associated with all the breakpoints at
3235 this location. Any of these commands could cause the process to
3236 proceed beyond this point, etc. We look out for such changes by
3237 checking the global "breakpoint_proceeded" after each command.
3239 Returns true if a breakpoint command resumed the inferior. In that
3240 case, it is the caller's responsibility to recall it again with the
3241 bpstat of the current thread. */
3244 bpstat_do_actions_1 (bpstat
*bsp
)
3247 struct cleanup
*old_chain
;
3250 /* Avoid endless recursion if a `source' command is contained
3252 if (executing_breakpoint_commands
)
3255 executing_breakpoint_commands
= 1;
3256 old_chain
= make_cleanup (cleanup_executing_breakpoints
, 0);
3258 prevent_dont_repeat ();
3260 /* This pointer will iterate over the list of bpstat's. */
3263 breakpoint_proceeded
= 0;
3264 for (; bs
!= NULL
; bs
= bs
->next
)
3266 struct counted_command_line
*ccmd
;
3267 struct command_line
*cmd
;
3268 struct cleanup
*this_cmd_tree_chain
;
3270 /* Take ownership of the BSP's command tree, if it has one.
3272 The command tree could legitimately contain commands like
3273 'step' and 'next', which call clear_proceed_status, which
3274 frees stop_bpstat's command tree. To make sure this doesn't
3275 free the tree we're executing out from under us, we need to
3276 take ownership of the tree ourselves. Since a given bpstat's
3277 commands are only executed once, we don't need to copy it; we
3278 can clear the pointer in the bpstat, and make sure we free
3279 the tree when we're done. */
3280 ccmd
= bs
->commands
;
3281 bs
->commands
= NULL
;
3283 = make_cleanup_decref_counted_command_line (&ccmd
);
3284 cmd
= bs
->commands_left
;
3285 bs
->commands_left
= NULL
;
3289 execute_control_command (cmd
);
3291 if (breakpoint_proceeded
)
3297 /* We can free this command tree now. */
3298 do_cleanups (this_cmd_tree_chain
);
3300 if (breakpoint_proceeded
)
3302 if (target_can_async_p ())
3303 /* If we are in async mode, then the target might be still
3304 running, not stopped at any breakpoint, so nothing for
3305 us to do here -- just return to the event loop. */
3308 /* In sync mode, when execute_control_command returns
3309 we're already standing on the next breakpoint.
3310 Breakpoint commands for that stop were not run, since
3311 execute_command does not run breakpoint commands --
3312 only command_line_handler does, but that one is not
3313 involved in execution of breakpoint commands. So, we
3314 can now execute breakpoint commands. It should be
3315 noted that making execute_command do bpstat actions is
3316 not an option -- in this case we'll have recursive
3317 invocation of bpstat for each breakpoint with a
3318 command, and can easily blow up GDB stack. Instead, we
3319 return true, which will trigger the caller to recall us
3320 with the new stop_bpstat. */
3325 do_cleanups (old_chain
);
3330 bpstat_do_actions (void)
3332 /* Do any commands attached to breakpoint we are stopped at. */
3333 while (!ptid_equal (inferior_ptid
, null_ptid
)
3334 && target_has_execution
3335 && !is_exited (inferior_ptid
)
3336 && !is_executing (inferior_ptid
))
3337 /* Since in sync mode, bpstat_do_actions may resume the inferior,
3338 and only return when it is stopped at the next breakpoint, we
3339 keep doing breakpoint actions until it returns false to
3340 indicate the inferior was not resumed. */
3341 if (!bpstat_do_actions_1 (&inferior_thread ()->control
.stop_bpstat
))
3345 /* Print out the (old or new) value associated with a watchpoint. */
3348 watchpoint_value_print (struct value
*val
, struct ui_file
*stream
)
3351 fprintf_unfiltered (stream
, _("<unreadable>"));
3354 struct value_print_options opts
;
3355 get_user_print_options (&opts
);
3356 value_print (val
, stream
, &opts
);
3360 /* Generic routine for printing messages indicating why we
3361 stopped. The behavior of this function depends on the value
3362 'print_it' in the bpstat structure. Under some circumstances we
3363 may decide not to print anything here and delegate the task to
3366 static enum print_stop_action
3367 print_bp_stop_message (bpstat bs
)
3369 switch (bs
->print_it
)
3372 /* Nothing should be printed for this bpstat entry. */
3373 return PRINT_UNKNOWN
;
3377 /* We still want to print the frame, but we already printed the
3378 relevant messages. */
3379 return PRINT_SRC_AND_LOC
;
3382 case print_it_normal
:
3384 struct breakpoint
*b
= bs
->breakpoint_at
;
3386 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
3387 which has since been deleted. */
3389 return PRINT_UNKNOWN
;
3391 /* Normal case. Call the breakpoint's print_it method. */
3392 return b
->ops
->print_it (bs
);
3397 internal_error (__FILE__
, __LINE__
,
3398 _("print_bp_stop_message: unrecognized enum value"));
3403 /* Print a message indicating what happened. This is called from
3404 normal_stop(). The input to this routine is the head of the bpstat
3405 list - a list of the eventpoints that caused this stop. This
3406 routine calls the generic print routine for printing a message
3407 about reasons for stopping. This will print (for example) the
3408 "Breakpoint n," part of the output. The return value of this
3411 PRINT_UNKNOWN: Means we printed nothing.
3412 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
3413 code to print the location. An example is
3414 "Breakpoint 1, " which should be followed by
3416 PRINT_SRC_ONLY: Means we printed something, but there is no need
3417 to also print the location part of the message.
3418 An example is the catch/throw messages, which
3419 don't require a location appended to the end.
3420 PRINT_NOTHING: We have done some printing and we don't need any
3421 further info to be printed. */
3423 enum print_stop_action
3424 bpstat_print (bpstat bs
)
3428 /* Maybe another breakpoint in the chain caused us to stop.
3429 (Currently all watchpoints go on the bpstat whether hit or not.
3430 That probably could (should) be changed, provided care is taken
3431 with respect to bpstat_explains_signal). */
3432 for (; bs
; bs
= bs
->next
)
3434 val
= print_bp_stop_message (bs
);
3435 if (val
== PRINT_SRC_ONLY
3436 || val
== PRINT_SRC_AND_LOC
3437 || val
== PRINT_NOTHING
)
3441 /* We reached the end of the chain, or we got a null BS to start
3442 with and nothing was printed. */
3443 return PRINT_UNKNOWN
;
3446 /* Evaluate the expression EXP and return 1 if value is zero. This is
3447 used inside a catch_errors to evaluate the breakpoint condition.
3448 The argument is a "struct expression *" that has been cast to a
3449 "char *" to make it pass through catch_errors. */
3452 breakpoint_cond_eval (void *exp
)
3454 struct value
*mark
= value_mark ();
3455 int i
= !value_true (evaluate_expression ((struct expression
*) exp
));
3457 value_free_to_mark (mark
);
3461 /* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
3464 bpstat_alloc (struct bp_location
*bl
, bpstat
**bs_link_pointer
)
3468 bs
= (bpstat
) xmalloc (sizeof (*bs
));
3470 **bs_link_pointer
= bs
;
3471 *bs_link_pointer
= &bs
->next
;
3472 bs
->breakpoint_at
= bl
->owner
;
3473 bs
->bp_location_at
= bl
;
3474 incref_bp_location (bl
);
3475 /* If the condition is false, etc., don't do the commands. */
3476 bs
->commands
= NULL
;
3477 bs
->commands_left
= NULL
;
3479 bs
->print_it
= print_it_normal
;
3483 /* The target has stopped with waitstatus WS. Check if any hardware
3484 watchpoints have triggered, according to the target. */
3487 watchpoints_triggered (struct target_waitstatus
*ws
)
3489 int stopped_by_watchpoint
= target_stopped_by_watchpoint ();
3491 struct breakpoint
*b
;
3493 if (!stopped_by_watchpoint
)
3495 /* We were not stopped by a watchpoint. Mark all watchpoints
3496 as not triggered. */
3498 if (is_hardware_watchpoint (b
))
3500 struct watchpoint
*w
= (struct watchpoint
*) b
;
3502 w
->watchpoint_triggered
= watch_triggered_no
;
3508 if (!target_stopped_data_address (¤t_target
, &addr
))
3510 /* We were stopped by a watchpoint, but we don't know where.
3511 Mark all watchpoints as unknown. */
3513 if (is_hardware_watchpoint (b
))
3515 struct watchpoint
*w
= (struct watchpoint
*) b
;
3517 w
->watchpoint_triggered
= watch_triggered_unknown
;
3520 return stopped_by_watchpoint
;
3523 /* The target could report the data address. Mark watchpoints
3524 affected by this data address as triggered, and all others as not
3528 if (is_hardware_watchpoint (b
))
3530 struct watchpoint
*w
= (struct watchpoint
*) b
;
3531 struct bp_location
*loc
;
3533 w
->watchpoint_triggered
= watch_triggered_no
;
3534 for (loc
= b
->loc
; loc
; loc
= loc
->next
)
3536 if (is_masked_watchpoint (b
))
3538 CORE_ADDR newaddr
= addr
& w
->hw_wp_mask
;
3539 CORE_ADDR start
= loc
->address
& w
->hw_wp_mask
;
3541 if (newaddr
== start
)
3543 w
->watchpoint_triggered
= watch_triggered_yes
;
3547 /* Exact match not required. Within range is sufficient. */
3548 else if (target_watchpoint_addr_within_range (¤t_target
,
3552 w
->watchpoint_triggered
= watch_triggered_yes
;
3561 /* Possible return values for watchpoint_check (this can't be an enum
3562 because of check_errors). */
3563 /* The watchpoint has been deleted. */
3564 #define WP_DELETED 1
3565 /* The value has changed. */
3566 #define WP_VALUE_CHANGED 2
3567 /* The value has not changed. */
3568 #define WP_VALUE_NOT_CHANGED 3
3569 /* Ignore this watchpoint, no matter if the value changed or not. */
3572 #define BP_TEMPFLAG 1
3573 #define BP_HARDWAREFLAG 2
3575 /* Evaluate watchpoint condition expression and check if its value
3578 P should be a pointer to struct bpstat, but is defined as a void *
3579 in order for this function to be usable with catch_errors. */
3582 watchpoint_check (void *p
)
3584 bpstat bs
= (bpstat
) p
;
3585 struct watchpoint
*b
;
3586 struct frame_info
*fr
;
3587 int within_current_scope
;
3589 /* BS is built from an existing struct breakpoint. */
3590 gdb_assert (bs
->breakpoint_at
!= NULL
);
3591 b
= (struct watchpoint
*) bs
->breakpoint_at
;
3593 /* If this is a local watchpoint, we only want to check if the
3594 watchpoint frame is in scope if the current thread is the thread
3595 that was used to create the watchpoint. */
3596 if (!watchpoint_in_thread_scope (b
))
3599 if (b
->exp_valid_block
== NULL
)
3600 within_current_scope
= 1;
3603 struct frame_info
*frame
= get_current_frame ();
3604 struct gdbarch
*frame_arch
= get_frame_arch (frame
);
3605 CORE_ADDR frame_pc
= get_frame_pc (frame
);
3607 /* in_function_epilogue_p() returns a non-zero value if we're
3608 still in the function but the stack frame has already been
3609 invalidated. Since we can't rely on the values of local
3610 variables after the stack has been destroyed, we are treating
3611 the watchpoint in that state as `not changed' without further
3612 checking. Don't mark watchpoints as changed if the current
3613 frame is in an epilogue - even if they are in some other
3614 frame, our view of the stack is likely to be wrong and
3615 frame_find_by_id could error out. */
3616 if (gdbarch_in_function_epilogue_p (frame_arch
, frame_pc
))
3619 fr
= frame_find_by_id (b
->watchpoint_frame
);
3620 within_current_scope
= (fr
!= NULL
);
3622 /* If we've gotten confused in the unwinder, we might have
3623 returned a frame that can't describe this variable. */
3624 if (within_current_scope
)
3626 struct symbol
*function
;
3628 function
= get_frame_function (fr
);
3629 if (function
== NULL
3630 || !contained_in (b
->exp_valid_block
,
3631 SYMBOL_BLOCK_VALUE (function
)))
3632 within_current_scope
= 0;
3635 if (within_current_scope
)
3636 /* If we end up stopping, the current frame will get selected
3637 in normal_stop. So this call to select_frame won't affect
3642 if (within_current_scope
)
3644 /* We use value_{,free_to_}mark because it could be a *long*
3645 time before we return to the command level and call
3646 free_all_values. We can't call free_all_values because we
3647 might be in the middle of evaluating a function call. */
3651 struct value
*new_val
;
3653 if (is_masked_watchpoint (&b
->base
))
3654 /* Since we don't know the exact trigger address (from
3655 stopped_data_address), just tell the user we've triggered
3656 a mask watchpoint. */
3657 return WP_VALUE_CHANGED
;
3659 mark
= value_mark ();
3660 fetch_subexp_value (b
->exp
, &pc
, &new_val
, NULL
, NULL
);
3662 /* We use value_equal_contents instead of value_equal because
3663 the latter coerces an array to a pointer, thus comparing just
3664 the address of the array instead of its contents. This is
3665 not what we want. */
3666 if ((b
->val
!= NULL
) != (new_val
!= NULL
)
3667 || (b
->val
!= NULL
&& !value_equal_contents (b
->val
, new_val
)))
3669 if (new_val
!= NULL
)
3671 release_value (new_val
);
3672 value_free_to_mark (mark
);
3674 bs
->old_val
= b
->val
;
3677 return WP_VALUE_CHANGED
;
3681 /* Nothing changed. */
3682 value_free_to_mark (mark
);
3683 return WP_VALUE_NOT_CHANGED
;
3688 /* This seems like the only logical thing to do because
3689 if we temporarily ignored the watchpoint, then when
3690 we reenter the block in which it is valid it contains
3691 garbage (in the case of a function, it may have two
3692 garbage values, one before and one after the prologue).
3693 So we can't even detect the first assignment to it and
3694 watch after that (since the garbage may or may not equal
3695 the first value assigned). */
3696 /* We print all the stop information in
3697 breakpoint_ops->print_it, but in this case, by the time we
3698 call breakpoint_ops->print_it this bp will be deleted
3699 already. So we have no choice but print the information
3701 if (ui_out_is_mi_like_p (uiout
))
3703 (uiout
, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE
));
3704 ui_out_text (uiout
, "\nWatchpoint ");
3705 ui_out_field_int (uiout
, "wpnum", b
->base
.number
);
3707 " deleted because the program has left the block in\n\
3708 which its expression is valid.\n");
3710 /* Make sure the watchpoint's commands aren't executed. */
3711 decref_counted_command_line (&b
->base
.commands
);
3712 watchpoint_del_at_next_stop (b
);
3718 /* Return true if it looks like target has stopped due to hitting
3719 breakpoint location BL. This function does not check if we should
3720 stop, only if BL explains the stop. */
3723 bpstat_check_location (const struct bp_location
*bl
,
3724 struct address_space
*aspace
, CORE_ADDR bp_addr
)
3726 struct breakpoint
*b
= bl
->owner
;
3728 /* BL is from an existing breakpoint. */
3729 gdb_assert (b
!= NULL
);
3731 return b
->ops
->breakpoint_hit (bl
, aspace
, bp_addr
);
3734 /* Determine if the watched values have actually changed, and we
3735 should stop. If not, set BS->stop to 0. */
3738 bpstat_check_watchpoint (bpstat bs
)
3740 const struct bp_location
*bl
;
3741 struct watchpoint
*b
;
3743 /* BS is built for existing struct breakpoint. */
3744 bl
= bs
->bp_location_at
;
3745 gdb_assert (bl
!= NULL
);
3746 b
= (struct watchpoint
*) bs
->breakpoint_at
;
3747 gdb_assert (b
!= NULL
);
3750 int must_check_value
= 0;
3752 if (b
->base
.type
== bp_watchpoint
)
3753 /* For a software watchpoint, we must always check the
3755 must_check_value
= 1;
3756 else if (b
->watchpoint_triggered
== watch_triggered_yes
)
3757 /* We have a hardware watchpoint (read, write, or access)
3758 and the target earlier reported an address watched by
3760 must_check_value
= 1;
3761 else if (b
->watchpoint_triggered
== watch_triggered_unknown
3762 && b
->base
.type
== bp_hardware_watchpoint
)
3763 /* We were stopped by a hardware watchpoint, but the target could
3764 not report the data address. We must check the watchpoint's
3765 value. Access and read watchpoints are out of luck; without
3766 a data address, we can't figure it out. */
3767 must_check_value
= 1;
3769 if (must_check_value
)
3772 = xstrprintf ("Error evaluating expression for watchpoint %d\n",
3774 struct cleanup
*cleanups
= make_cleanup (xfree
, message
);
3775 int e
= catch_errors (watchpoint_check
, bs
, message
,
3777 do_cleanups (cleanups
);
3781 /* We've already printed what needs to be printed. */
3782 bs
->print_it
= print_it_done
;
3786 bs
->print_it
= print_it_noop
;
3789 case WP_VALUE_CHANGED
:
3790 if (b
->base
.type
== bp_read_watchpoint
)
3792 /* There are two cases to consider here:
3794 1. We're watching the triggered memory for reads.
3795 In that case, trust the target, and always report
3796 the watchpoint hit to the user. Even though
3797 reads don't cause value changes, the value may
3798 have changed since the last time it was read, and
3799 since we're not trapping writes, we will not see
3800 those, and as such we should ignore our notion of
3803 2. We're watching the triggered memory for both
3804 reads and writes. There are two ways this may
3807 2.1. This is a target that can't break on data
3808 reads only, but can break on accesses (reads or
3809 writes), such as e.g., x86. We detect this case
3810 at the time we try to insert read watchpoints.
3812 2.2. Otherwise, the target supports read
3813 watchpoints, but, the user set an access or write
3814 watchpoint watching the same memory as this read
3817 If we're watching memory writes as well as reads,
3818 ignore watchpoint hits when we find that the
3819 value hasn't changed, as reads don't cause
3820 changes. This still gives false positives when
3821 the program writes the same value to memory as
3822 what there was already in memory (we will confuse
3823 it for a read), but it's much better than
3826 int other_write_watchpoint
= 0;
3828 if (bl
->watchpoint_type
== hw_read
)
3830 struct breakpoint
*other_b
;
3832 ALL_BREAKPOINTS (other_b
)
3833 if (other_b
->type
== bp_hardware_watchpoint
3834 || other_b
->type
== bp_access_watchpoint
)
3836 struct watchpoint
*other_w
=
3837 (struct watchpoint
*) other_b
;
3839 if (other_w
->watchpoint_triggered
3840 == watch_triggered_yes
)
3842 other_write_watchpoint
= 1;
3848 if (other_write_watchpoint
3849 || bl
->watchpoint_type
== hw_access
)
3851 /* We're watching the same memory for writes,
3852 and the value changed since the last time we
3853 updated it, so this trap must be for a write.
3855 bs
->print_it
= print_it_noop
;
3860 case WP_VALUE_NOT_CHANGED
:
3861 if (b
->base
.type
== bp_hardware_watchpoint
3862 || b
->base
.type
== bp_watchpoint
)
3864 /* Don't stop: write watchpoints shouldn't fire if
3865 the value hasn't changed. */
3866 bs
->print_it
= print_it_noop
;
3874 /* Error from catch_errors. */
3875 printf_filtered (_("Watchpoint %d deleted.\n"), b
->base
.number
);
3876 watchpoint_del_at_next_stop (b
);
3877 /* We've already printed what needs to be printed. */
3878 bs
->print_it
= print_it_done
;
3882 else /* must_check_value == 0 */
3884 /* This is a case where some watchpoint(s) triggered, but
3885 not at the address of this watchpoint, or else no
3886 watchpoint triggered after all. So don't print
3887 anything for this watchpoint. */
3888 bs
->print_it
= print_it_noop
;
3895 /* Check conditions (condition proper, frame, thread and ignore count)
3896 of breakpoint referred to by BS. If we should not stop for this
3897 breakpoint, set BS->stop to 0. */
3900 bpstat_check_breakpoint_conditions (bpstat bs
, ptid_t ptid
)
3902 int thread_id
= pid_to_thread_id (ptid
);
3903 const struct bp_location
*bl
;
3904 struct breakpoint
*b
;
3906 /* BS is built for existing struct breakpoint. */
3907 bl
= bs
->bp_location_at
;
3908 gdb_assert (bl
!= NULL
);
3909 b
= bs
->breakpoint_at
;
3910 gdb_assert (b
!= NULL
);
3912 if (frame_id_p (b
->frame_id
)
3913 && !frame_id_eq (b
->frame_id
, get_stack_frame_id (get_current_frame ())))
3917 int value_is_zero
= 0;
3918 struct expression
*cond
;
3920 /* Evaluate Python breakpoints that have a "stop"
3921 method implemented. */
3922 if (b
->py_bp_object
)
3923 bs
->stop
= gdbpy_should_stop (b
->py_bp_object
);
3925 if (is_watchpoint (b
))
3927 struct watchpoint
*w
= (struct watchpoint
*) b
;
3934 if (cond
&& b
->disposition
!= disp_del_at_next_stop
)
3936 int within_current_scope
= 1;
3937 struct watchpoint
* w
;
3939 /* We use value_mark and value_free_to_mark because it could
3940 be a long time before we return to the command level and
3941 call free_all_values. We can't call free_all_values
3942 because we might be in the middle of evaluating a
3944 struct value
*mark
= value_mark ();
3946 if (is_watchpoint (b
))
3947 w
= (struct watchpoint
*) b
;
3951 /* Need to select the frame, with all that implies so that
3952 the conditions will have the right context. Because we
3953 use the frame, we will not see an inlined function's
3954 variables when we arrive at a breakpoint at the start
3955 of the inlined function; the current frame will be the
3957 if (w
== NULL
|| w
->cond_exp_valid_block
== NULL
)
3958 select_frame (get_current_frame ());
3961 struct frame_info
*frame
;
3963 /* For local watchpoint expressions, which particular
3964 instance of a local is being watched matters, so we
3965 keep track of the frame to evaluate the expression
3966 in. To evaluate the condition however, it doesn't
3967 really matter which instantiation of the function
3968 where the condition makes sense triggers the
3969 watchpoint. This allows an expression like "watch
3970 global if q > 10" set in `func', catch writes to
3971 global on all threads that call `func', or catch
3972 writes on all recursive calls of `func' by a single
3973 thread. We simply always evaluate the condition in
3974 the innermost frame that's executing where it makes
3975 sense to evaluate the condition. It seems
3977 frame
= block_innermost_frame (w
->cond_exp_valid_block
);
3979 select_frame (frame
);
3981 within_current_scope
= 0;
3983 if (within_current_scope
)
3985 = catch_errors (breakpoint_cond_eval
, cond
,
3986 "Error in testing breakpoint condition:\n",
3990 warning (_("Watchpoint condition cannot be tested "
3991 "in the current scope"));
3992 /* If we failed to set the right context for this
3993 watchpoint, unconditionally report it. */
3996 /* FIXME-someday, should give breakpoint #. */
3997 value_free_to_mark (mark
);
4000 if (cond
&& value_is_zero
)
4004 else if (b
->thread
!= -1 && b
->thread
!= thread_id
)
4008 else if (b
->ignore_count
> 0)
4011 annotate_ignore_count_change ();
4013 /* Increase the hit count even though we don't stop. */
4015 observer_notify_breakpoint_modified (b
);
4021 /* Get a bpstat associated with having just stopped at address
4022 BP_ADDR in thread PTID.
4024 Determine whether we stopped at a breakpoint, etc, or whether we
4025 don't understand this stop. Result is a chain of bpstat's such
4028 if we don't understand the stop, the result is a null pointer.
4030 if we understand why we stopped, the result is not null.
4032 Each element of the chain refers to a particular breakpoint or
4033 watchpoint at which we have stopped. (We may have stopped for
4034 several reasons concurrently.)
4036 Each element of the chain has valid next, breakpoint_at,
4037 commands, FIXME??? fields. */
4040 bpstat_stop_status (struct address_space
*aspace
,
4041 CORE_ADDR bp_addr
, ptid_t ptid
)
4043 struct breakpoint
*b
= NULL
;
4044 struct bp_location
*bl
;
4045 struct bp_location
*loc
;
4046 /* First item of allocated bpstat's. */
4047 bpstat bs_head
= NULL
, *bs_link
= &bs_head
;
4048 /* Pointer to the last thing in the chain currently. */
4051 int need_remove_insert
;
4054 /* First, build the bpstat chain with locations that explain a
4055 target stop, while being careful to not set the target running,
4056 as that may invalidate locations (in particular watchpoint
4057 locations are recreated). Resuming will happen here with
4058 breakpoint conditions or watchpoint expressions that include
4059 inferior function calls. */
4063 if (!breakpoint_enabled (b
) && b
->enable_state
!= bp_permanent
)
4066 for (bl
= b
->loc
; bl
!= NULL
; bl
= bl
->next
)
4068 /* For hardware watchpoints, we look only at the first
4069 location. The watchpoint_check function will work on the
4070 entire expression, not the individual locations. For
4071 read watchpoints, the watchpoints_triggered function has
4072 checked all locations already. */
4073 if (b
->type
== bp_hardware_watchpoint
&& bl
!= b
->loc
)
4076 if (bl
->shlib_disabled
)
4079 if (!bpstat_check_location (bl
, aspace
, bp_addr
))
4082 /* Come here if it's a watchpoint, or if the break address
4085 bs
= bpstat_alloc (bl
, &bs_link
); /* Alloc a bpstat to
4088 /* Assume we stop. Should we find a watchpoint that is not
4089 actually triggered, or if the condition of the breakpoint
4090 evaluates as false, we'll reset 'stop' to 0. */
4094 /* If this is a scope breakpoint, mark the associated
4095 watchpoint as triggered so that we will handle the
4096 out-of-scope event. We'll get to the watchpoint next
4098 if (b
->type
== bp_watchpoint_scope
&& b
->related_breakpoint
!= b
)
4100 struct watchpoint
*w
= (struct watchpoint
*) b
->related_breakpoint
;
4102 w
->watchpoint_triggered
= watch_triggered_yes
;
4107 for (ix
= 0; VEC_iterate (bp_location_p
, moribund_locations
, ix
, loc
); ++ix
)
4109 if (breakpoint_location_address_match (loc
, aspace
, bp_addr
))
4111 bs
= bpstat_alloc (loc
, &bs_link
);
4112 /* For hits of moribund locations, we should just proceed. */
4115 bs
->print_it
= print_it_noop
;
4119 /* Now go through the locations that caused the target to stop, and
4120 check whether we're interested in reporting this stop to higher
4121 layers, or whether we should resume the target transparently. */
4125 for (bs
= bs_head
; bs
!= NULL
; bs
= bs
->next
)
4130 b
= bs
->breakpoint_at
;
4131 b
->ops
->check_status (bs
);
4134 bpstat_check_breakpoint_conditions (bs
, ptid
);
4139 observer_notify_breakpoint_modified (b
);
4141 /* We will stop here. */
4142 if (b
->disposition
== disp_disable
)
4144 if (b
->enable_state
!= bp_permanent
)
4145 b
->enable_state
= bp_disabled
;
4150 bs
->commands
= b
->commands
;
4151 incref_counted_command_line (bs
->commands
);
4152 bs
->commands_left
= bs
->commands
? bs
->commands
->commands
: NULL
;
4153 if (bs
->commands_left
4154 && (strcmp ("silent", bs
->commands_left
->line
) == 0
4157 bs
->commands_left
->line
) == 0)))
4159 bs
->commands_left
= bs
->commands_left
->next
;
4164 /* Print nothing for this entry if we don't stop or don't print. */
4165 if (bs
->stop
== 0 || bs
->print
== 0)
4166 bs
->print_it
= print_it_noop
;
4170 /* If we aren't stopping, the value of some hardware watchpoint may
4171 not have changed, but the intermediate memory locations we are
4172 watching may have. Don't bother if we're stopping; this will get
4174 need_remove_insert
= 0;
4175 if (! bpstat_causes_stop (bs_head
))
4176 for (bs
= bs_head
; bs
!= NULL
; bs
= bs
->next
)
4178 && bs
->breakpoint_at
4179 && is_hardware_watchpoint (bs
->breakpoint_at
))
4181 struct watchpoint
*w
= (struct watchpoint
*) bs
->breakpoint_at
;
4183 update_watchpoint (w
, 0 /* don't reparse. */);
4184 need_remove_insert
= 1;
4187 if (need_remove_insert
)
4188 update_global_location_list (1);
4189 else if (removed_any
)
4190 update_global_location_list (0);
4196 handle_jit_event (void)
4198 struct frame_info
*frame
;
4199 struct gdbarch
*gdbarch
;
4201 /* Switch terminal for any messages produced by
4202 breakpoint_re_set. */
4203 target_terminal_ours_for_output ();
4205 frame
= get_current_frame ();
4206 gdbarch
= get_frame_arch (frame
);
4208 jit_event_handler (gdbarch
);
4210 target_terminal_inferior ();
4213 /* Prepare WHAT final decision for infrun. */
4215 /* Decide what infrun needs to do with this bpstat. */
4218 bpstat_what (bpstat bs_head
)
4220 struct bpstat_what retval
;
4221 /* We need to defer calling `solib_add', as adding new symbols
4222 resets breakpoints, which in turn deletes breakpoint locations,
4223 and hence may clear unprocessed entries in the BS chain. */
4224 int shlib_event
= 0;
4228 retval
.main_action
= BPSTAT_WHAT_KEEP_CHECKING
;
4229 retval
.call_dummy
= STOP_NONE
;
4230 retval
.is_longjmp
= 0;
4232 for (bs
= bs_head
; bs
!= NULL
; bs
= bs
->next
)
4234 /* Extract this BS's action. After processing each BS, we check
4235 if its action overrides all we've seem so far. */
4236 enum bpstat_what_main_action this_action
= BPSTAT_WHAT_KEEP_CHECKING
;
4239 if (bs
->breakpoint_at
== NULL
)
4241 /* I suspect this can happen if it was a momentary
4242 breakpoint which has since been deleted. */
4246 bptype
= bs
->breakpoint_at
->type
;
4253 case bp_hardware_breakpoint
:
4259 this_action
= BPSTAT_WHAT_STOP_NOISY
;
4261 this_action
= BPSTAT_WHAT_STOP_SILENT
;
4264 this_action
= BPSTAT_WHAT_SINGLE
;
4267 case bp_hardware_watchpoint
:
4268 case bp_read_watchpoint
:
4269 case bp_access_watchpoint
:
4273 this_action
= BPSTAT_WHAT_STOP_NOISY
;
4275 this_action
= BPSTAT_WHAT_STOP_SILENT
;
4279 /* There was a watchpoint, but we're not stopping.
4280 This requires no further action. */
4285 this_action
= BPSTAT_WHAT_SET_LONGJMP_RESUME
;
4286 retval
.is_longjmp
= bptype
== bp_longjmp
;
4288 case bp_longjmp_resume
:
4289 case bp_exception_resume
:
4290 this_action
= BPSTAT_WHAT_CLEAR_LONGJMP_RESUME
;
4291 retval
.is_longjmp
= bptype
== bp_longjmp_resume
;
4293 case bp_step_resume
:
4295 this_action
= BPSTAT_WHAT_STEP_RESUME
;
4298 /* It is for the wrong frame. */
4299 this_action
= BPSTAT_WHAT_SINGLE
;
4302 case bp_hp_step_resume
:
4304 this_action
= BPSTAT_WHAT_HP_STEP_RESUME
;
4307 /* It is for the wrong frame. */
4308 this_action
= BPSTAT_WHAT_SINGLE
;
4311 case bp_watchpoint_scope
:
4312 case bp_thread_event
:
4313 case bp_overlay_event
:
4314 case bp_longjmp_master
:
4315 case bp_std_terminate_master
:
4316 case bp_exception_master
:
4317 this_action
= BPSTAT_WHAT_SINGLE
;
4323 this_action
= BPSTAT_WHAT_STOP_NOISY
;
4325 this_action
= BPSTAT_WHAT_STOP_SILENT
;
4329 /* There was a catchpoint, but we're not stopping.
4330 This requires no further action. */
4333 case bp_shlib_event
:
4336 /* If requested, stop when the dynamic linker notifies GDB
4337 of events. This allows the user to get control and place
4338 breakpoints in initializer routines for dynamically
4339 loaded objects (among other things). */
4340 if (stop_on_solib_events
)
4341 this_action
= BPSTAT_WHAT_STOP_NOISY
;
4343 this_action
= BPSTAT_WHAT_SINGLE
;
4347 this_action
= BPSTAT_WHAT_SINGLE
;
4350 /* Make sure the action is stop (silent or noisy),
4351 so infrun.c pops the dummy frame. */
4352 retval
.call_dummy
= STOP_STACK_DUMMY
;
4353 this_action
= BPSTAT_WHAT_STOP_SILENT
;
4355 case bp_std_terminate
:
4356 /* Make sure the action is stop (silent or noisy),
4357 so infrun.c pops the dummy frame. */
4358 retval
.call_dummy
= STOP_STD_TERMINATE
;
4359 this_action
= BPSTAT_WHAT_STOP_SILENT
;
4362 case bp_fast_tracepoint
:
4363 case bp_static_tracepoint
:
4364 /* Tracepoint hits should not be reported back to GDB, and
4365 if one got through somehow, it should have been filtered
4367 internal_error (__FILE__
, __LINE__
,
4368 _("bpstat_what: tracepoint encountered"));
4370 case bp_gnu_ifunc_resolver
:
4371 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
4372 this_action
= BPSTAT_WHAT_SINGLE
;
4374 case bp_gnu_ifunc_resolver_return
:
4375 /* The breakpoint will be removed, execution will restart from the
4376 PC of the former breakpoint. */
4377 this_action
= BPSTAT_WHAT_KEEP_CHECKING
;
4380 internal_error (__FILE__
, __LINE__
,
4381 _("bpstat_what: unhandled bptype %d"), (int) bptype
);
4384 retval
.main_action
= max (retval
.main_action
, this_action
);
4387 /* These operations may affect the bs->breakpoint_at state so they are
4388 delayed after MAIN_ACTION is decided above. */
4393 fprintf_unfiltered (gdb_stdlog
, "bpstat_what: bp_shlib_event\n");
4395 /* Check for any newly added shared libraries if we're supposed
4396 to be adding them automatically. */
4398 /* Switch terminal for any messages produced by
4399 breakpoint_re_set. */
4400 target_terminal_ours_for_output ();
4403 SOLIB_ADD (NULL
, 0, ¤t_target
, auto_solib_add
);
4405 solib_add (NULL
, 0, ¤t_target
, auto_solib_add
);
4408 target_terminal_inferior ();
4414 fprintf_unfiltered (gdb_stdlog
, "bpstat_what: bp_jit_event\n");
4416 handle_jit_event ();
4419 for (bs
= bs_head
; bs
!= NULL
; bs
= bs
->next
)
4421 struct breakpoint
*b
= bs
->breakpoint_at
;
4427 case bp_gnu_ifunc_resolver
:
4428 gnu_ifunc_resolver_stop (b
);
4430 case bp_gnu_ifunc_resolver_return
:
4431 gnu_ifunc_resolver_return_stop (b
);
4439 /* Nonzero if we should step constantly (e.g. watchpoints on machines
4440 without hardware support). This isn't related to a specific bpstat,
4441 just to things like whether watchpoints are set. */
4444 bpstat_should_step (void)
4446 struct breakpoint
*b
;
4449 if (breakpoint_enabled (b
) && b
->type
== bp_watchpoint
&& b
->loc
!= NULL
)
4455 bpstat_causes_stop (bpstat bs
)
4457 for (; bs
!= NULL
; bs
= bs
->next
)
4466 /* Compute a string of spaces suitable to indent the next line
4467 so it starts at the position corresponding to the table column
4468 named COL_NAME in the currently active table of UIOUT. */
4471 wrap_indent_at_field (struct ui_out
*uiout
, const char *col_name
)
4473 static char wrap_indent
[80];
4474 int i
, total_width
, width
, align
;
4478 for (i
= 1; ui_out_query_field (uiout
, i
, &width
, &align
, &text
); i
++)
4480 if (strcmp (text
, col_name
) == 0)
4482 gdb_assert (total_width
< sizeof wrap_indent
);
4483 memset (wrap_indent
, ' ', total_width
);
4484 wrap_indent
[total_width
] = 0;
4489 total_width
+= width
+ 1;
4495 /* Print the LOC location out of the list of B->LOC locations. */
4498 print_breakpoint_location (struct breakpoint
*b
,
4499 struct bp_location
*loc
)
4501 struct cleanup
*old_chain
= save_current_program_space ();
4503 if (loc
!= NULL
&& loc
->shlib_disabled
)
4507 set_current_program_space (loc
->pspace
);
4509 if (b
->display_canonical
)
4510 ui_out_field_string (uiout
, "what", b
->addr_string
);
4511 else if (b
->source_file
&& loc
)
4514 = find_pc_sect_function (loc
->address
, loc
->section
);
4517 ui_out_text (uiout
, "in ");
4518 ui_out_field_string (uiout
, "func",
4519 SYMBOL_PRINT_NAME (sym
));
4520 ui_out_text (uiout
, " ");
4521 ui_out_wrap_hint (uiout
, wrap_indent_at_field (uiout
, "what"));
4522 ui_out_text (uiout
, "at ");
4524 ui_out_field_string (uiout
, "file", b
->source_file
);
4525 ui_out_text (uiout
, ":");
4527 if (ui_out_is_mi_like_p (uiout
))
4529 struct symtab_and_line sal
= find_pc_line (loc
->address
, 0);
4530 char *fullname
= symtab_to_fullname (sal
.symtab
);
4533 ui_out_field_string (uiout
, "fullname", fullname
);
4536 ui_out_field_int (uiout
, "line", b
->line_number
);
4540 struct ui_stream
*stb
= ui_out_stream_new (uiout
);
4541 struct cleanup
*stb_chain
= make_cleanup_ui_out_stream_delete (stb
);
4543 print_address_symbolic (loc
->gdbarch
, loc
->address
, stb
->stream
,
4545 ui_out_field_stream (uiout
, "at", stb
);
4547 do_cleanups (stb_chain
);
4550 ui_out_field_string (uiout
, "pending", b
->addr_string
);
4552 do_cleanups (old_chain
);
4556 bptype_string (enum bptype type
)
4558 struct ep_type_description
4563 static struct ep_type_description bptypes
[] =
4565 {bp_none
, "?deleted?"},
4566 {bp_breakpoint
, "breakpoint"},
4567 {bp_hardware_breakpoint
, "hw breakpoint"},
4568 {bp_until
, "until"},
4569 {bp_finish
, "finish"},
4570 {bp_watchpoint
, "watchpoint"},
4571 {bp_hardware_watchpoint
, "hw watchpoint"},
4572 {bp_read_watchpoint
, "read watchpoint"},
4573 {bp_access_watchpoint
, "acc watchpoint"},
4574 {bp_longjmp
, "longjmp"},
4575 {bp_longjmp_resume
, "longjmp resume"},
4576 {bp_exception
, "exception"},
4577 {bp_exception_resume
, "exception resume"},
4578 {bp_step_resume
, "step resume"},
4579 {bp_hp_step_resume
, "high-priority step resume"},
4580 {bp_watchpoint_scope
, "watchpoint scope"},
4581 {bp_call_dummy
, "call dummy"},
4582 {bp_std_terminate
, "std::terminate"},
4583 {bp_shlib_event
, "shlib events"},
4584 {bp_thread_event
, "thread events"},
4585 {bp_overlay_event
, "overlay events"},
4586 {bp_longjmp_master
, "longjmp master"},
4587 {bp_std_terminate_master
, "std::terminate master"},
4588 {bp_exception_master
, "exception master"},
4589 {bp_catchpoint
, "catchpoint"},
4590 {bp_tracepoint
, "tracepoint"},
4591 {bp_fast_tracepoint
, "fast tracepoint"},
4592 {bp_static_tracepoint
, "static tracepoint"},
4593 {bp_jit_event
, "jit events"},
4594 {bp_gnu_ifunc_resolver
, "STT_GNU_IFUNC resolver"},
4595 {bp_gnu_ifunc_resolver_return
, "STT_GNU_IFUNC resolver return"},
4598 if (((int) type
>= (sizeof (bptypes
) / sizeof (bptypes
[0])))
4599 || ((int) type
!= bptypes
[(int) type
].type
))
4600 internal_error (__FILE__
, __LINE__
,
4601 _("bptypes table does not describe type #%d."),
4604 return bptypes
[(int) type
].description
;
4607 /* Print B to gdb_stdout. */
4610 print_one_breakpoint_location (struct breakpoint
*b
,
4611 struct bp_location
*loc
,
4613 struct bp_location
**last_loc
,
4616 struct command_line
*l
;
4617 static char bpenables
[] = "nynny";
4619 int header_of_multiple
= 0;
4620 int part_of_multiple
= (loc
!= NULL
);
4621 struct value_print_options opts
;
4623 get_user_print_options (&opts
);
4625 gdb_assert (!loc
|| loc_number
!= 0);
4626 /* See comment in print_one_breakpoint concerning treatment of
4627 breakpoints with single disabled location. */
4630 && (b
->loc
->next
!= NULL
|| !b
->loc
->enabled
)))
4631 header_of_multiple
= 1;
4639 if (part_of_multiple
)
4642 formatted
= xstrprintf ("%d.%d", b
->number
, loc_number
);
4643 ui_out_field_string (uiout
, "number", formatted
);
4648 ui_out_field_int (uiout
, "number", b
->number
);
4653 if (part_of_multiple
)
4654 ui_out_field_skip (uiout
, "type");
4656 ui_out_field_string (uiout
, "type", bptype_string (b
->type
));
4660 if (part_of_multiple
)
4661 ui_out_field_skip (uiout
, "disp");
4663 ui_out_field_string (uiout
, "disp", bpdisp_text (b
->disposition
));
4668 if (part_of_multiple
)
4669 ui_out_field_string (uiout
, "enabled", loc
->enabled
? "y" : "n");
4671 ui_out_field_fmt (uiout
, "enabled", "%c",
4672 bpenables
[(int) b
->enable_state
]);
4673 ui_out_spaces (uiout
, 2);
4677 if (b
->ops
!= NULL
&& b
->ops
->print_one
!= NULL
)
4679 /* Although the print_one can possibly print all locations,
4680 calling it here is not likely to get any nice result. So,
4681 make sure there's just one location. */
4682 gdb_assert (b
->loc
== NULL
|| b
->loc
->next
== NULL
);
4683 b
->ops
->print_one (b
, last_loc
);
4689 internal_error (__FILE__
, __LINE__
,
4690 _("print_one_breakpoint: bp_none encountered\n"));
4694 case bp_hardware_watchpoint
:
4695 case bp_read_watchpoint
:
4696 case bp_access_watchpoint
:
4698 struct watchpoint
*w
= (struct watchpoint
*) b
;
4700 /* Field 4, the address, is omitted (which makes the columns
4701 not line up too nicely with the headers, but the effect
4702 is relatively readable). */
4703 if (opts
.addressprint
)
4704 ui_out_field_skip (uiout
, "addr");
4706 ui_out_field_string (uiout
, "what", w
->exp_string
);
4711 case bp_hardware_breakpoint
:
4715 case bp_longjmp_resume
:
4717 case bp_exception_resume
:
4718 case bp_step_resume
:
4719 case bp_hp_step_resume
:
4720 case bp_watchpoint_scope
:
4722 case bp_std_terminate
:
4723 case bp_shlib_event
:
4724 case bp_thread_event
:
4725 case bp_overlay_event
:
4726 case bp_longjmp_master
:
4727 case bp_std_terminate_master
:
4728 case bp_exception_master
:
4730 case bp_fast_tracepoint
:
4731 case bp_static_tracepoint
:
4733 case bp_gnu_ifunc_resolver
:
4734 case bp_gnu_ifunc_resolver_return
:
4735 if (opts
.addressprint
)
4738 if (header_of_multiple
)
4739 ui_out_field_string (uiout
, "addr", "<MULTIPLE>");
4740 else if (b
->loc
== NULL
|| loc
->shlib_disabled
)
4741 ui_out_field_string (uiout
, "addr", "<PENDING>");
4743 ui_out_field_core_addr (uiout
, "addr",
4744 loc
->gdbarch
, loc
->address
);
4747 if (!header_of_multiple
)
4748 print_breakpoint_location (b
, loc
);
4755 /* For backward compatibility, don't display inferiors unless there
4758 && !header_of_multiple
4760 || (!gdbarch_has_global_breakpoints (target_gdbarch
)
4761 && (number_of_program_spaces () > 1
4762 || number_of_inferiors () > 1)
4763 /* LOC is for existing B, it cannot be in
4764 moribund_locations and thus having NULL OWNER. */
4765 && loc
->owner
->type
!= bp_catchpoint
)))
4767 struct inferior
*inf
;
4770 for (inf
= inferior_list
; inf
!= NULL
; inf
= inf
->next
)
4772 if (inf
->pspace
== loc
->pspace
)
4777 ui_out_text (uiout
, " inf ");
4780 ui_out_text (uiout
, ", ");
4781 ui_out_text (uiout
, plongest (inf
->num
));
4786 if (!part_of_multiple
)
4788 if (b
->thread
!= -1)
4790 /* FIXME: This seems to be redundant and lost here; see the
4791 "stop only in" line a little further down. */
4792 ui_out_text (uiout
, " thread ");
4793 ui_out_field_int (uiout
, "thread", b
->thread
);
4795 else if (b
->task
!= 0)
4797 ui_out_text (uiout
, " task ");
4798 ui_out_field_int (uiout
, "task", b
->task
);
4802 ui_out_text (uiout
, "\n");
4804 if (!part_of_multiple
)
4805 b
->ops
->print_one_detail (b
, uiout
);
4807 if (part_of_multiple
&& frame_id_p (b
->frame_id
))
4810 ui_out_text (uiout
, "\tstop only in stack frame at ");
4811 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
4813 ui_out_field_core_addr (uiout
, "frame",
4814 b
->gdbarch
, b
->frame_id
.stack_addr
);
4815 ui_out_text (uiout
, "\n");
4818 if (!part_of_multiple
&& b
->cond_string
)
4821 if (is_tracepoint (b
))
4822 ui_out_text (uiout
, "\ttrace only if ");
4824 ui_out_text (uiout
, "\tstop only if ");
4825 ui_out_field_string (uiout
, "cond", b
->cond_string
);
4826 ui_out_text (uiout
, "\n");
4829 if (!part_of_multiple
&& b
->thread
!= -1)
4831 /* FIXME should make an annotation for this. */
4832 ui_out_text (uiout
, "\tstop only in thread ");
4833 ui_out_field_int (uiout
, "thread", b
->thread
);
4834 ui_out_text (uiout
, "\n");
4837 if (!part_of_multiple
&& b
->hit_count
)
4839 /* FIXME should make an annotation for this. */
4840 if (ep_is_catchpoint (b
))
4841 ui_out_text (uiout
, "\tcatchpoint");
4843 ui_out_text (uiout
, "\tbreakpoint");
4844 ui_out_text (uiout
, " already hit ");
4845 ui_out_field_int (uiout
, "times", b
->hit_count
);
4846 if (b
->hit_count
== 1)
4847 ui_out_text (uiout
, " time\n");
4849 ui_out_text (uiout
, " times\n");
4852 /* Output the count also if it is zero, but only if this is mi.
4853 FIXME: Should have a better test for this. */
4854 if (ui_out_is_mi_like_p (uiout
))
4855 if (!part_of_multiple
&& b
->hit_count
== 0)
4856 ui_out_field_int (uiout
, "times", b
->hit_count
);
4858 if (!part_of_multiple
&& b
->ignore_count
)
4861 ui_out_text (uiout
, "\tignore next ");
4862 ui_out_field_int (uiout
, "ignore", b
->ignore_count
);
4863 ui_out_text (uiout
, " hits\n");
4866 l
= b
->commands
? b
->commands
->commands
: NULL
;
4867 if (!part_of_multiple
&& l
)
4869 struct cleanup
*script_chain
;
4872 script_chain
= make_cleanup_ui_out_tuple_begin_end (uiout
, "script");
4873 print_command_lines (uiout
, l
, 4);
4874 do_cleanups (script_chain
);
4877 if (is_tracepoint (b
))
4879 struct tracepoint
*t
= (struct tracepoint
*) b
;
4881 if (!part_of_multiple
&& t
->pass_count
)
4883 annotate_field (10);
4884 ui_out_text (uiout
, "\tpass count ");
4885 ui_out_field_int (uiout
, "pass", t
->pass_count
);
4886 ui_out_text (uiout
, " \n");
4890 if (ui_out_is_mi_like_p (uiout
) && !part_of_multiple
)
4892 if (is_watchpoint (b
))
4894 struct watchpoint
*w
= (struct watchpoint
*) b
;
4896 ui_out_field_string (uiout
, "original-location", w
->exp_string
);
4898 else if (b
->addr_string
)
4899 ui_out_field_string (uiout
, "original-location", b
->addr_string
);
4904 print_one_breakpoint (struct breakpoint
*b
,
4905 struct bp_location
**last_loc
,
4908 struct cleanup
*bkpt_chain
;
4910 bkpt_chain
= make_cleanup_ui_out_tuple_begin_end (uiout
, "bkpt");
4912 print_one_breakpoint_location (b
, NULL
, 0, last_loc
, allflag
);
4913 do_cleanups (bkpt_chain
);
4915 /* If this breakpoint has custom print function,
4916 it's already printed. Otherwise, print individual
4917 locations, if any. */
4918 if (b
->ops
== NULL
|| b
->ops
->print_one
== NULL
)
4920 /* If breakpoint has a single location that is disabled, we
4921 print it as if it had several locations, since otherwise it's
4922 hard to represent "breakpoint enabled, location disabled"
4925 Note that while hardware watchpoints have several locations
4926 internally, that's not a property exposed to user. */
4928 && !is_hardware_watchpoint (b
)
4929 && (b
->loc
->next
|| !b
->loc
->enabled
))
4931 struct bp_location
*loc
;
4934 for (loc
= b
->loc
; loc
; loc
= loc
->next
, ++n
)
4936 struct cleanup
*inner2
=
4937 make_cleanup_ui_out_tuple_begin_end (uiout
, NULL
);
4938 print_one_breakpoint_location (b
, loc
, n
, last_loc
, allflag
);
4939 do_cleanups (inner2
);
4946 breakpoint_address_bits (struct breakpoint
*b
)
4948 int print_address_bits
= 0;
4949 struct bp_location
*loc
;
4951 for (loc
= b
->loc
; loc
; loc
= loc
->next
)
4955 /* Software watchpoints that aren't watching memory don't have
4956 an address to print. */
4957 if (b
->type
== bp_watchpoint
&& loc
->watchpoint_type
== -1)
4960 addr_bit
= gdbarch_addr_bit (loc
->gdbarch
);
4961 if (addr_bit
> print_address_bits
)
4962 print_address_bits
= addr_bit
;
4965 return print_address_bits
;
4968 struct captured_breakpoint_query_args
4974 do_captured_breakpoint_query (struct ui_out
*uiout
, void *data
)
4976 struct captured_breakpoint_query_args
*args
= data
;
4977 struct breakpoint
*b
;
4978 struct bp_location
*dummy_loc
= NULL
;
4982 if (args
->bnum
== b
->number
)
4984 print_one_breakpoint (b
, &dummy_loc
, 0);
4992 gdb_breakpoint_query (struct ui_out
*uiout
, int bnum
,
4993 char **error_message
)
4995 struct captured_breakpoint_query_args args
;
4998 /* For the moment we don't trust print_one_breakpoint() to not throw
5000 if (catch_exceptions_with_msg (uiout
, do_captured_breakpoint_query
, &args
,
5001 error_message
, RETURN_MASK_ALL
) < 0)
5007 /* Return true if this breakpoint was set by the user, false if it is
5008 internal or momentary. */
5011 user_breakpoint_p (struct breakpoint
*b
)
5013 return b
->number
> 0;
5016 /* Print information on user settable breakpoint (watchpoint, etc)
5017 number BNUM. If BNUM is -1 print all user-settable breakpoints.
5018 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
5019 FILTER is non-NULL, call it on each breakpoint and only include the
5020 ones for which it returns non-zero. Return the total number of
5021 breakpoints listed. */
5024 breakpoint_1 (char *args
, int allflag
,
5025 int (*filter
) (const struct breakpoint
*))
5027 struct breakpoint
*b
;
5028 struct bp_location
*last_loc
= NULL
;
5029 int nr_printable_breakpoints
;
5030 struct cleanup
*bkpttbl_chain
;
5031 struct value_print_options opts
;
5032 int print_address_bits
= 0;
5033 int print_type_col_width
= 14;
5035 get_user_print_options (&opts
);
5037 /* Compute the number of rows in the table, as well as the size
5038 required for address fields. */
5039 nr_printable_breakpoints
= 0;
5042 /* If we have a filter, only list the breakpoints it accepts. */
5043 if (filter
&& !filter (b
))
5046 /* If we have an "args" string, it is a list of breakpoints to
5047 accept. Skip the others. */
5048 if (args
!= NULL
&& *args
!= '\0')
5050 if (allflag
&& parse_and_eval_long (args
) != b
->number
)
5052 if (!allflag
&& !number_is_in_list (args
, b
->number
))
5056 if (allflag
|| user_breakpoint_p (b
))
5058 int addr_bit
, type_len
;
5060 addr_bit
= breakpoint_address_bits (b
);
5061 if (addr_bit
> print_address_bits
)
5062 print_address_bits
= addr_bit
;
5064 type_len
= strlen (bptype_string (b
->type
));
5065 if (type_len
> print_type_col_width
)
5066 print_type_col_width
= type_len
;
5068 nr_printable_breakpoints
++;
5072 if (opts
.addressprint
)
5074 = make_cleanup_ui_out_table_begin_end (uiout
, 6,
5075 nr_printable_breakpoints
,
5079 = make_cleanup_ui_out_table_begin_end (uiout
, 5,
5080 nr_printable_breakpoints
,
5083 if (nr_printable_breakpoints
> 0)
5084 annotate_breakpoints_headers ();
5085 if (nr_printable_breakpoints
> 0)
5087 ui_out_table_header (uiout
, 7, ui_left
, "number", "Num"); /* 1 */
5088 if (nr_printable_breakpoints
> 0)
5090 ui_out_table_header (uiout
, print_type_col_width
, ui_left
,
5091 "type", "Type"); /* 2 */
5092 if (nr_printable_breakpoints
> 0)
5094 ui_out_table_header (uiout
, 4, ui_left
, "disp", "Disp"); /* 3 */
5095 if (nr_printable_breakpoints
> 0)
5097 ui_out_table_header (uiout
, 3, ui_left
, "enabled", "Enb"); /* 4 */
5098 if (opts
.addressprint
)
5100 if (nr_printable_breakpoints
> 0)
5102 if (print_address_bits
<= 32)
5103 ui_out_table_header (uiout
, 10, ui_left
,
5104 "addr", "Address"); /* 5 */
5106 ui_out_table_header (uiout
, 18, ui_left
,
5107 "addr", "Address"); /* 5 */
5109 if (nr_printable_breakpoints
> 0)
5111 ui_out_table_header (uiout
, 40, ui_noalign
, "what", "What"); /* 6 */
5112 ui_out_table_body (uiout
);
5113 if (nr_printable_breakpoints
> 0)
5114 annotate_breakpoints_table ();
5119 /* If we have a filter, only list the breakpoints it accepts. */
5120 if (filter
&& !filter (b
))
5123 /* If we have an "args" string, it is a list of breakpoints to
5124 accept. Skip the others. */
5126 if (args
!= NULL
&& *args
!= '\0')
5128 if (allflag
) /* maintenance info breakpoint */
5130 if (parse_and_eval_long (args
) != b
->number
)
5133 else /* all others */
5135 if (!number_is_in_list (args
, b
->number
))
5139 /* We only print out user settable breakpoints unless the
5141 if (allflag
|| user_breakpoint_p (b
))
5142 print_one_breakpoint (b
, &last_loc
, allflag
);
5145 do_cleanups (bkpttbl_chain
);
5147 if (nr_printable_breakpoints
== 0)
5149 /* If there's a filter, let the caller decide how to report
5153 if (args
== NULL
|| *args
== '\0')
5154 ui_out_message (uiout
, 0, "No breakpoints or watchpoints.\n");
5156 ui_out_message (uiout
, 0,
5157 "No breakpoint or watchpoint matching '%s'.\n",
5163 if (last_loc
&& !server_command
)
5164 set_next_address (last_loc
->gdbarch
, last_loc
->address
);
5167 /* FIXME? Should this be moved up so that it is only called when
5168 there have been breakpoints? */
5169 annotate_breakpoints_table_end ();
5171 return nr_printable_breakpoints
;
5174 /* Display the value of default-collect in a way that is generally
5175 compatible with the breakpoint list. */
5178 default_collect_info (void)
5180 /* If it has no value (which is frequently the case), say nothing; a
5181 message like "No default-collect." gets in user's face when it's
5183 if (!*default_collect
)
5186 /* The following phrase lines up nicely with per-tracepoint collect
5188 ui_out_text (uiout
, "default collect ");
5189 ui_out_field_string (uiout
, "default-collect", default_collect
);
5190 ui_out_text (uiout
, " \n");
5194 breakpoints_info (char *args
, int from_tty
)
5196 breakpoint_1 (args
, 0, NULL
);
5198 default_collect_info ();
5202 watchpoints_info (char *args
, int from_tty
)
5204 int num_printed
= breakpoint_1 (args
, 0, is_watchpoint
);
5206 if (num_printed
== 0)
5208 if (args
== NULL
|| *args
== '\0')
5209 ui_out_message (uiout
, 0, "No watchpoints.\n");
5211 ui_out_message (uiout
, 0, "No watchpoint matching '%s'.\n", args
);
5216 maintenance_info_breakpoints (char *args
, int from_tty
)
5218 breakpoint_1 (args
, 1, NULL
);
5220 default_collect_info ();
5224 breakpoint_has_pc (struct breakpoint
*b
,
5225 struct program_space
*pspace
,
5226 CORE_ADDR pc
, struct obj_section
*section
)
5228 struct bp_location
*bl
= b
->loc
;
5230 for (; bl
; bl
= bl
->next
)
5232 if (bl
->pspace
== pspace
5233 && bl
->address
== pc
5234 && (!overlay_debugging
|| bl
->section
== section
))
5240 /* Print a message describing any breakpoints set at PC. This
5241 concerns with logical breakpoints, so we match program spaces, not
5245 describe_other_breakpoints (struct gdbarch
*gdbarch
,
5246 struct program_space
*pspace
, CORE_ADDR pc
,
5247 struct obj_section
*section
, int thread
)
5250 struct breakpoint
*b
;
5253 others
+= breakpoint_has_pc (b
, pspace
, pc
, section
);
5257 printf_filtered (_("Note: breakpoint "));
5258 else /* if (others == ???) */
5259 printf_filtered (_("Note: breakpoints "));
5261 if (breakpoint_has_pc (b
, pspace
, pc
, section
))
5264 printf_filtered ("%d", b
->number
);
5265 if (b
->thread
== -1 && thread
!= -1)
5266 printf_filtered (" (all threads)");
5267 else if (b
->thread
!= -1)
5268 printf_filtered (" (thread %d)", b
->thread
);
5269 printf_filtered ("%s%s ",
5270 ((b
->enable_state
== bp_disabled
5271 || b
->enable_state
== bp_call_disabled
5272 || b
->enable_state
== bp_startup_disabled
)
5274 : b
->enable_state
== bp_permanent
5278 : ((others
== 1) ? " and" : ""));
5280 printf_filtered (_("also set at pc "));
5281 fputs_filtered (paddress (gdbarch
, pc
), gdb_stdout
);
5282 printf_filtered (".\n");
5286 /* Set the default place to put a breakpoint
5287 for the `break' command with no arguments. */
5290 set_default_breakpoint (int valid
, struct program_space
*pspace
,
5291 CORE_ADDR addr
, struct symtab
*symtab
,
5294 default_breakpoint_valid
= valid
;
5295 default_breakpoint_pspace
= pspace
;
5296 default_breakpoint_address
= addr
;
5297 default_breakpoint_symtab
= symtab
;
5298 default_breakpoint_line
= line
;
5301 /* Return true iff it is meaningful to use the address member of
5302 BPT. For some breakpoint types, the address member is irrelevant
5303 and it makes no sense to attempt to compare it to other addresses
5304 (or use it for any other purpose either).
5306 More specifically, each of the following breakpoint types will
5307 always have a zero valued address and we don't want to mark
5308 breakpoints of any of these types to be a duplicate of an actual
5309 breakpoint at address zero:
5317 breakpoint_address_is_meaningful (struct breakpoint
*bpt
)
5319 enum bptype type
= bpt
->type
;
5321 return (type
!= bp_watchpoint
&& type
!= bp_catchpoint
);
5324 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
5325 true if LOC1 and LOC2 represent the same watchpoint location. */
5328 watchpoint_locations_match (struct bp_location
*loc1
,
5329 struct bp_location
*loc2
)
5331 struct watchpoint
*w1
= (struct watchpoint
*) loc1
->owner
;
5332 struct watchpoint
*w2
= (struct watchpoint
*) loc2
->owner
;
5334 /* Both of them must exist. */
5335 gdb_assert (w1
!= NULL
);
5336 gdb_assert (w2
!= NULL
);
5338 /* If the target can evaluate the condition expression in hardware,
5339 then we we need to insert both watchpoints even if they are at
5340 the same place. Otherwise the watchpoint will only trigger when
5341 the condition of whichever watchpoint was inserted evaluates to
5342 true, not giving a chance for GDB to check the condition of the
5343 other watchpoint. */
5345 && target_can_accel_watchpoint_condition (loc1
->address
,
5347 loc1
->watchpoint_type
,
5350 && target_can_accel_watchpoint_condition (loc2
->address
,
5352 loc2
->watchpoint_type
,
5356 /* Note that this checks the owner's type, not the location's. In
5357 case the target does not support read watchpoints, but does
5358 support access watchpoints, we'll have bp_read_watchpoint
5359 watchpoints with hw_access locations. Those should be considered
5360 duplicates of hw_read locations. The hw_read locations will
5361 become hw_access locations later. */
5362 return (loc1
->owner
->type
== loc2
->owner
->type
5363 && loc1
->pspace
->aspace
== loc2
->pspace
->aspace
5364 && loc1
->address
== loc2
->address
5365 && loc1
->length
== loc2
->length
);
5368 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
5369 same breakpoint location. In most targets, this can only be true
5370 if ASPACE1 matches ASPACE2. On targets that have global
5371 breakpoints, the address space doesn't really matter. */
5374 breakpoint_address_match (struct address_space
*aspace1
, CORE_ADDR addr1
,
5375 struct address_space
*aspace2
, CORE_ADDR addr2
)
5377 return ((gdbarch_has_global_breakpoints (target_gdbarch
)
5378 || aspace1
== aspace2
)
5382 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
5383 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
5384 matches ASPACE2. On targets that have global breakpoints, the address
5385 space doesn't really matter. */
5388 breakpoint_address_match_range (struct address_space
*aspace1
, CORE_ADDR addr1
,
5389 int len1
, struct address_space
*aspace2
,
5392 return ((gdbarch_has_global_breakpoints (target_gdbarch
)
5393 || aspace1
== aspace2
)
5394 && addr2
>= addr1
&& addr2
< addr1
+ len1
);
5397 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
5398 a ranged breakpoint. In most targets, a match happens only if ASPACE
5399 matches the breakpoint's address space. On targets that have global
5400 breakpoints, the address space doesn't really matter. */
5403 breakpoint_location_address_match (struct bp_location
*bl
,
5404 struct address_space
*aspace
,
5407 return (breakpoint_address_match (bl
->pspace
->aspace
, bl
->address
,
5410 && breakpoint_address_match_range (bl
->pspace
->aspace
,
5411 bl
->address
, bl
->length
,
5415 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
5416 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
5417 represent the same location. */
5420 breakpoint_locations_match (struct bp_location
*loc1
,
5421 struct bp_location
*loc2
)
5423 int hw_point1
, hw_point2
;
5425 /* Both of them must not be in moribund_locations. */
5426 gdb_assert (loc1
->owner
!= NULL
);
5427 gdb_assert (loc2
->owner
!= NULL
);
5429 hw_point1
= is_hardware_watchpoint (loc1
->owner
);
5430 hw_point2
= is_hardware_watchpoint (loc2
->owner
);
5432 if (hw_point1
!= hw_point2
)
5435 return watchpoint_locations_match (loc1
, loc2
);
5437 /* We compare bp_location.length in order to cover ranged breakpoints. */
5438 return (breakpoint_address_match (loc1
->pspace
->aspace
, loc1
->address
,
5439 loc2
->pspace
->aspace
, loc2
->address
)
5440 && loc1
->length
== loc2
->length
);
5444 breakpoint_adjustment_warning (CORE_ADDR from_addr
, CORE_ADDR to_addr
,
5445 int bnum
, int have_bnum
)
5447 /* The longest string possibly returned by hex_string_custom
5448 is 50 chars. These must be at least that big for safety. */
5452 strcpy (astr1
, hex_string_custom ((unsigned long) from_addr
, 8));
5453 strcpy (astr2
, hex_string_custom ((unsigned long) to_addr
, 8));
5455 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
5456 bnum
, astr1
, astr2
);
5458 warning (_("Breakpoint address adjusted from %s to %s."), astr1
, astr2
);
5461 /* Adjust a breakpoint's address to account for architectural
5462 constraints on breakpoint placement. Return the adjusted address.
5463 Note: Very few targets require this kind of adjustment. For most
5464 targets, this function is simply the identity function. */
5467 adjust_breakpoint_address (struct gdbarch
*gdbarch
,
5468 CORE_ADDR bpaddr
, enum bptype bptype
)
5470 if (!gdbarch_adjust_breakpoint_address_p (gdbarch
))
5472 /* Very few targets need any kind of breakpoint adjustment. */
5475 else if (bptype
== bp_watchpoint
5476 || bptype
== bp_hardware_watchpoint
5477 || bptype
== bp_read_watchpoint
5478 || bptype
== bp_access_watchpoint
5479 || bptype
== bp_catchpoint
)
5481 /* Watchpoints and the various bp_catch_* eventpoints should not
5482 have their addresses modified. */
5487 CORE_ADDR adjusted_bpaddr
;
5489 /* Some targets have architectural constraints on the placement
5490 of breakpoint instructions. Obtain the adjusted address. */
5491 adjusted_bpaddr
= gdbarch_adjust_breakpoint_address (gdbarch
, bpaddr
);
5493 /* An adjusted breakpoint address can significantly alter
5494 a user's expectations. Print a warning if an adjustment
5496 if (adjusted_bpaddr
!= bpaddr
)
5497 breakpoint_adjustment_warning (bpaddr
, adjusted_bpaddr
, 0, 0);
5499 return adjusted_bpaddr
;
5504 init_bp_location (struct bp_location
*loc
, const struct bp_location_ops
*ops
,
5505 struct breakpoint
*owner
)
5507 memset (loc
, 0, sizeof (*loc
));
5509 gdb_assert (ops
!= NULL
);
5514 loc
->shlib_disabled
= 0;
5517 switch (owner
->type
)
5523 case bp_longjmp_resume
:
5525 case bp_exception_resume
:
5526 case bp_step_resume
:
5527 case bp_hp_step_resume
:
5528 case bp_watchpoint_scope
:
5530 case bp_std_terminate
:
5531 case bp_shlib_event
:
5532 case bp_thread_event
:
5533 case bp_overlay_event
:
5535 case bp_longjmp_master
:
5536 case bp_std_terminate_master
:
5537 case bp_exception_master
:
5538 case bp_gnu_ifunc_resolver
:
5539 case bp_gnu_ifunc_resolver_return
:
5540 loc
->loc_type
= bp_loc_software_breakpoint
;
5542 case bp_hardware_breakpoint
:
5543 loc
->loc_type
= bp_loc_hardware_breakpoint
;
5545 case bp_hardware_watchpoint
:
5546 case bp_read_watchpoint
:
5547 case bp_access_watchpoint
:
5548 loc
->loc_type
= bp_loc_hardware_watchpoint
;
5553 case bp_fast_tracepoint
:
5554 case bp_static_tracepoint
:
5555 loc
->loc_type
= bp_loc_other
;
5558 internal_error (__FILE__
, __LINE__
, _("unknown breakpoint type"));
5564 /* Allocate a struct bp_location. */
5566 static struct bp_location
*
5567 allocate_bp_location (struct breakpoint
*bpt
)
5569 return bpt
->ops
->allocate_location (bpt
);
5573 free_bp_location (struct bp_location
*loc
)
5575 loc
->ops
->dtor (loc
);
5579 /* Increment reference count. */
5582 incref_bp_location (struct bp_location
*bl
)
5587 /* Decrement reference count. If the reference count reaches 0,
5588 destroy the bp_location. Sets *BLP to NULL. */
5591 decref_bp_location (struct bp_location
**blp
)
5593 gdb_assert ((*blp
)->refc
> 0);
5595 if (--(*blp
)->refc
== 0)
5596 free_bp_location (*blp
);
5600 /* Add breakpoint B at the end of the global breakpoint chain. */
5603 add_to_breakpoint_chain (struct breakpoint
*b
)
5605 struct breakpoint
*b1
;
5607 /* Add this breakpoint to the end of the chain so that a list of
5608 breakpoints will come out in order of increasing numbers. */
5610 b1
= breakpoint_chain
;
5612 breakpoint_chain
= b
;
5621 /* Initializes breakpoint B with type BPTYPE and no locations yet. */
5624 init_raw_breakpoint_without_location (struct breakpoint
*b
,
5625 struct gdbarch
*gdbarch
,
5627 const struct breakpoint_ops
*ops
)
5629 memset (b
, 0, sizeof (*b
));
5631 gdb_assert (ops
!= NULL
);
5635 b
->gdbarch
= gdbarch
;
5636 b
->language
= current_language
->la_language
;
5637 b
->input_radix
= input_radix
;
5639 b
->enable_state
= bp_enabled
;
5642 b
->ignore_count
= 0;
5644 b
->frame_id
= null_frame_id
;
5645 b
->condition_not_parsed
= 0;
5646 b
->py_bp_object
= NULL
;
5647 b
->related_breakpoint
= b
;
5650 /* Helper to set_raw_breakpoint below. Creates a breakpoint
5651 that has type BPTYPE and has no locations as yet. */
5653 static struct breakpoint
*
5654 set_raw_breakpoint_without_location (struct gdbarch
*gdbarch
,
5656 const struct breakpoint_ops
*ops
)
5658 struct breakpoint
*b
= XNEW (struct breakpoint
);
5660 init_raw_breakpoint_without_location (b
, gdbarch
, bptype
, ops
);
5661 add_to_breakpoint_chain (b
);
5665 /* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
5666 resolutions should be made as the user specified the location explicitly
5670 set_breakpoint_location_function (struct bp_location
*loc
, int explicit_loc
)
5672 gdb_assert (loc
->owner
!= NULL
);
5674 if (loc
->owner
->type
== bp_breakpoint
5675 || loc
->owner
->type
== bp_hardware_breakpoint
5676 || is_tracepoint (loc
->owner
))
5680 find_pc_partial_function_gnu_ifunc (loc
->address
, &loc
->function_name
,
5681 NULL
, NULL
, &is_gnu_ifunc
);
5683 if (is_gnu_ifunc
&& !explicit_loc
)
5685 struct breakpoint
*b
= loc
->owner
;
5687 gdb_assert (loc
->pspace
== current_program_space
);
5688 if (gnu_ifunc_resolve_name (loc
->function_name
,
5689 &loc
->requested_address
))
5691 /* Recalculate ADDRESS based on new REQUESTED_ADDRESS. */
5692 loc
->address
= adjust_breakpoint_address (loc
->gdbarch
,
5693 loc
->requested_address
,
5696 else if (b
->type
== bp_breakpoint
&& b
->loc
== loc
5697 && loc
->next
== NULL
&& b
->related_breakpoint
== b
)
5699 /* Create only the whole new breakpoint of this type but do not
5700 mess more complicated breakpoints with multiple locations. */
5701 b
->type
= bp_gnu_ifunc_resolver
;
5705 if (loc
->function_name
)
5706 loc
->function_name
= xstrdup (loc
->function_name
);
5710 /* Attempt to determine architecture of location identified by SAL. */
5711 static struct gdbarch
*
5712 get_sal_arch (struct symtab_and_line sal
)
5715 return get_objfile_arch (sal
.section
->objfile
);
5717 return get_objfile_arch (sal
.symtab
->objfile
);
5722 /* Low level routine for partially initializing a breakpoint of type
5723 BPTYPE. The newly created breakpoint's address, section, source
5724 file name, and line number are provided by SAL.
5726 It is expected that the caller will complete the initialization of
5727 the newly created breakpoint struct as well as output any status
5728 information regarding the creation of a new breakpoint. */
5731 init_raw_breakpoint (struct breakpoint
*b
, struct gdbarch
*gdbarch
,
5732 struct symtab_and_line sal
, enum bptype bptype
,
5733 const struct breakpoint_ops
*ops
)
5735 CORE_ADDR adjusted_address
;
5736 struct gdbarch
*loc_gdbarch
;
5738 init_raw_breakpoint_without_location (b
, gdbarch
, bptype
, ops
);
5740 loc_gdbarch
= get_sal_arch (sal
);
5742 loc_gdbarch
= b
->gdbarch
;
5744 if (bptype
!= bp_catchpoint
)
5745 gdb_assert (sal
.pspace
!= NULL
);
5747 /* Adjust the breakpoint's address prior to allocating a location.
5748 Once we call allocate_bp_location(), that mostly uninitialized
5749 location will be placed on the location chain. Adjustment of the
5750 breakpoint may cause target_read_memory() to be called and we do
5751 not want its scan of the location chain to find a breakpoint and
5752 location that's only been partially initialized. */
5753 adjusted_address
= adjust_breakpoint_address (loc_gdbarch
,
5756 b
->loc
= allocate_bp_location (b
);
5757 b
->loc
->gdbarch
= loc_gdbarch
;
5758 b
->loc
->requested_address
= sal
.pc
;
5759 b
->loc
->address
= adjusted_address
;
5760 b
->loc
->pspace
= sal
.pspace
;
5762 /* Store the program space that was used to set the breakpoint, for
5763 breakpoint resetting. */
5764 b
->pspace
= sal
.pspace
;
5766 if (sal
.symtab
== NULL
)
5767 b
->source_file
= NULL
;
5769 b
->source_file
= xstrdup (sal
.symtab
->filename
);
5770 b
->loc
->section
= sal
.section
;
5771 b
->line_number
= sal
.line
;
5773 set_breakpoint_location_function (b
->loc
,
5774 sal
.explicit_pc
|| sal
.explicit_line
);
5776 breakpoints_changed ();
5779 /* set_raw_breakpoint is a low level routine for allocating and
5780 partially initializing a breakpoint of type BPTYPE. The newly
5781 created breakpoint's address, section, source file name, and line
5782 number are provided by SAL. The newly created and partially
5783 initialized breakpoint is added to the breakpoint chain and
5784 is also returned as the value of this function.
5786 It is expected that the caller will complete the initialization of
5787 the newly created breakpoint struct as well as output any status
5788 information regarding the creation of a new breakpoint. In
5789 particular, set_raw_breakpoint does NOT set the breakpoint
5790 number! Care should be taken to not allow an error to occur
5791 prior to completing the initialization of the breakpoint. If this
5792 should happen, a bogus breakpoint will be left on the chain. */
5795 set_raw_breakpoint (struct gdbarch
*gdbarch
,
5796 struct symtab_and_line sal
, enum bptype bptype
,
5797 const struct breakpoint_ops
*ops
)
5799 struct breakpoint
*b
= XNEW (struct breakpoint
);
5801 init_raw_breakpoint (b
, gdbarch
, sal
, bptype
, ops
);
5802 add_to_breakpoint_chain (b
);
5807 /* Note that the breakpoint object B describes a permanent breakpoint
5808 instruction, hard-wired into the inferior's code. */
5810 make_breakpoint_permanent (struct breakpoint
*b
)
5812 struct bp_location
*bl
;
5814 b
->enable_state
= bp_permanent
;
5816 /* By definition, permanent breakpoints are already present in the
5817 code. Mark all locations as inserted. For now,
5818 make_breakpoint_permanent is called in just one place, so it's
5819 hard to say if it's reasonable to have permanent breakpoint with
5820 multiple locations or not, but it's easy to implement. */
5821 for (bl
= b
->loc
; bl
; bl
= bl
->next
)
5825 /* Call this routine when stepping and nexting to enable a breakpoint
5826 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
5827 initiated the operation. */
5830 set_longjmp_breakpoint (struct thread_info
*tp
, struct frame_id frame
)
5832 struct breakpoint
*b
, *b_tmp
;
5833 int thread
= tp
->num
;
5835 /* To avoid having to rescan all objfile symbols at every step,
5836 we maintain a list of continually-inserted but always disabled
5837 longjmp "master" breakpoints. Here, we simply create momentary
5838 clones of those and enable them for the requested thread. */
5839 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
5840 if (b
->pspace
== current_program_space
5841 && (b
->type
== bp_longjmp_master
5842 || b
->type
== bp_exception_master
))
5844 enum bptype type
= b
->type
== bp_longjmp_master
? bp_longjmp
: bp_exception
;
5845 struct breakpoint
*clone
;
5847 clone
= momentary_breakpoint_from_master (b
, type
,
5848 &momentary_breakpoint_ops
);
5849 clone
->thread
= thread
;
5852 tp
->initiating_frame
= frame
;
5855 /* Delete all longjmp breakpoints from THREAD. */
5857 delete_longjmp_breakpoint (int thread
)
5859 struct breakpoint
*b
, *b_tmp
;
5861 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
5862 if (b
->type
== bp_longjmp
|| b
->type
== bp_exception
)
5864 if (b
->thread
== thread
)
5865 delete_breakpoint (b
);
5870 enable_overlay_breakpoints (void)
5872 struct breakpoint
*b
;
5875 if (b
->type
== bp_overlay_event
)
5877 b
->enable_state
= bp_enabled
;
5878 update_global_location_list (1);
5879 overlay_events_enabled
= 1;
5884 disable_overlay_breakpoints (void)
5886 struct breakpoint
*b
;
5889 if (b
->type
== bp_overlay_event
)
5891 b
->enable_state
= bp_disabled
;
5892 update_global_location_list (0);
5893 overlay_events_enabled
= 0;
5897 /* Set an active std::terminate breakpoint for each std::terminate
5898 master breakpoint. */
5900 set_std_terminate_breakpoint (void)
5902 struct breakpoint
*b
, *b_tmp
;
5904 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
5905 if (b
->pspace
== current_program_space
5906 && b
->type
== bp_std_terminate_master
)
5908 momentary_breakpoint_from_master (b
, bp_std_terminate
,
5909 &momentary_breakpoint_ops
);
5913 /* Delete all the std::terminate breakpoints. */
5915 delete_std_terminate_breakpoint (void)
5917 struct breakpoint
*b
, *b_tmp
;
5919 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
5920 if (b
->type
== bp_std_terminate
)
5921 delete_breakpoint (b
);
5925 create_thread_event_breakpoint (struct gdbarch
*gdbarch
, CORE_ADDR address
)
5927 struct breakpoint
*b
;
5929 b
= create_internal_breakpoint (gdbarch
, address
, bp_thread_event
,
5930 &internal_breakpoint_ops
);
5932 b
->enable_state
= bp_enabled
;
5933 /* addr_string has to be used or breakpoint_re_set will delete me. */
5935 = xstrprintf ("*%s", paddress (b
->loc
->gdbarch
, b
->loc
->address
));
5937 update_global_location_list_nothrow (1);
5943 remove_thread_event_breakpoints (void)
5945 struct breakpoint
*b
, *b_tmp
;
5947 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
5948 if (b
->type
== bp_thread_event
5949 && b
->loc
->pspace
== current_program_space
)
5950 delete_breakpoint (b
);
5953 struct lang_and_radix
5959 /* Create a breakpoint for JIT code registration and unregistration. */
5962 create_jit_event_breakpoint (struct gdbarch
*gdbarch
, CORE_ADDR address
)
5964 struct breakpoint
*b
;
5966 b
= create_internal_breakpoint (gdbarch
, address
, bp_jit_event
,
5967 &internal_breakpoint_ops
);
5968 update_global_location_list_nothrow (1);
5972 /* Remove JIT code registration and unregistration breakpoint(s). */
5975 remove_jit_event_breakpoints (void)
5977 struct breakpoint
*b
, *b_tmp
;
5979 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
5980 if (b
->type
== bp_jit_event
5981 && b
->loc
->pspace
== current_program_space
)
5982 delete_breakpoint (b
);
5986 remove_solib_event_breakpoints (void)
5988 struct breakpoint
*b
, *b_tmp
;
5990 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
5991 if (b
->type
== bp_shlib_event
5992 && b
->loc
->pspace
== current_program_space
)
5993 delete_breakpoint (b
);
5997 create_solib_event_breakpoint (struct gdbarch
*gdbarch
, CORE_ADDR address
)
5999 struct breakpoint
*b
;
6001 b
= create_internal_breakpoint (gdbarch
, address
, bp_shlib_event
,
6002 &internal_breakpoint_ops
);
6003 update_global_location_list_nothrow (1);
6007 /* Disable any breakpoints that are on code in shared libraries. Only
6008 apply to enabled breakpoints, disabled ones can just stay disabled. */
6011 disable_breakpoints_in_shlibs (void)
6013 struct bp_location
*loc
, **locp_tmp
;
6015 ALL_BP_LOCATIONS (loc
, locp_tmp
)
6017 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6018 struct breakpoint
*b
= loc
->owner
;
6020 /* We apply the check to all breakpoints, including disabled for
6021 those with loc->duplicate set. This is so that when breakpoint
6022 becomes enabled, or the duplicate is removed, gdb will try to
6023 insert all breakpoints. If we don't set shlib_disabled here,
6024 we'll try to insert those breakpoints and fail. */
6025 if (((b
->type
== bp_breakpoint
)
6026 || (b
->type
== bp_jit_event
)
6027 || (b
->type
== bp_hardware_breakpoint
)
6028 || (is_tracepoint (b
)))
6029 && loc
->pspace
== current_program_space
6030 && !loc
->shlib_disabled
6032 && PC_SOLIB (loc
->address
)
6034 && solib_name_from_address (loc
->pspace
, loc
->address
)
6038 loc
->shlib_disabled
= 1;
6043 /* Disable any breakpoints that are in an unloaded shared library.
6044 Only apply to enabled breakpoints, disabled ones can just stay
6048 disable_breakpoints_in_unloaded_shlib (struct so_list
*solib
)
6050 struct bp_location
*loc
, **locp_tmp
;
6051 int disabled_shlib_breaks
= 0;
6053 /* SunOS a.out shared libraries are always mapped, so do not
6054 disable breakpoints; they will only be reported as unloaded
6055 through clear_solib when GDB discards its shared library
6056 list. See clear_solib for more information. */
6057 if (exec_bfd
!= NULL
6058 && bfd_get_flavour (exec_bfd
) == bfd_target_aout_flavour
)
6061 ALL_BP_LOCATIONS (loc
, locp_tmp
)
6063 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6064 struct breakpoint
*b
= loc
->owner
;
6066 if ((loc
->loc_type
== bp_loc_hardware_breakpoint
6067 || loc
->loc_type
== bp_loc_software_breakpoint
)
6068 && solib
->pspace
== loc
->pspace
6069 && !loc
->shlib_disabled
6070 && (b
->type
== bp_breakpoint
6071 || b
->type
== bp_jit_event
6072 || b
->type
== bp_hardware_breakpoint
)
6073 && solib_contains_address_p (solib
, loc
->address
))
6075 loc
->shlib_disabled
= 1;
6076 /* At this point, we cannot rely on remove_breakpoint
6077 succeeding so we must mark the breakpoint as not inserted
6078 to prevent future errors occurring in remove_breakpoints. */
6081 /* This may cause duplicate notifications for the same breakpoint. */
6082 observer_notify_breakpoint_modified (b
);
6084 if (!disabled_shlib_breaks
)
6086 target_terminal_ours_for_output ();
6087 warning (_("Temporarily disabling breakpoints "
6088 "for unloaded shared library \"%s\""),
6091 disabled_shlib_breaks
= 1;
6096 /* FORK & VFORK catchpoints. */
6098 /* An instance of this type is used to represent a fork or vfork
6099 catchpoint. It includes a "struct breakpoint" as a kind of base
6100 class; users downcast to "struct breakpoint *" when needed. A
6101 breakpoint is really of this type iff its ops pointer points to
6102 CATCH_FORK_BREAKPOINT_OPS. */
6104 struct fork_catchpoint
6106 /* The base class. */
6107 struct breakpoint base
;
6109 /* Process id of a child process whose forking triggered this
6110 catchpoint. This field is only valid immediately after this
6111 catchpoint has triggered. */
6112 ptid_t forked_inferior_pid
;
6115 /* Implement the "insert" breakpoint_ops method for fork
6119 insert_catch_fork (struct bp_location
*bl
)
6121 return target_insert_fork_catchpoint (PIDGET (inferior_ptid
));
6124 /* Implement the "remove" breakpoint_ops method for fork
6128 remove_catch_fork (struct bp_location
*bl
)
6130 return target_remove_fork_catchpoint (PIDGET (inferior_ptid
));
6133 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
6137 breakpoint_hit_catch_fork (const struct bp_location
*bl
,
6138 struct address_space
*aspace
, CORE_ADDR bp_addr
)
6140 struct fork_catchpoint
*c
= (struct fork_catchpoint
*) bl
->owner
;
6142 return inferior_has_forked (inferior_ptid
, &c
->forked_inferior_pid
);
6145 /* Implement the "print_it" breakpoint_ops method for fork
6148 static enum print_stop_action
6149 print_it_catch_fork (bpstat bs
)
6151 struct breakpoint
*b
= bs
->breakpoint_at
;
6152 struct fork_catchpoint
*c
= (struct fork_catchpoint
*) bs
->breakpoint_at
;
6154 annotate_catchpoint (b
->number
);
6155 printf_filtered (_("\nCatchpoint %d (forked process %d), "),
6156 b
->number
, ptid_get_pid (c
->forked_inferior_pid
));
6157 return PRINT_SRC_AND_LOC
;
6160 /* Implement the "print_one" breakpoint_ops method for fork
6164 print_one_catch_fork (struct breakpoint
*b
, struct bp_location
**last_loc
)
6166 struct fork_catchpoint
*c
= (struct fork_catchpoint
*) b
;
6167 struct value_print_options opts
;
6169 get_user_print_options (&opts
);
6171 /* Field 4, the address, is omitted (which makes the columns not
6172 line up too nicely with the headers, but the effect is relatively
6174 if (opts
.addressprint
)
6175 ui_out_field_skip (uiout
, "addr");
6177 ui_out_text (uiout
, "fork");
6178 if (!ptid_equal (c
->forked_inferior_pid
, null_ptid
))
6180 ui_out_text (uiout
, ", process ");
6181 ui_out_field_int (uiout
, "what",
6182 ptid_get_pid (c
->forked_inferior_pid
));
6183 ui_out_spaces (uiout
, 1);
6187 /* Implement the "print_mention" breakpoint_ops method for fork
6191 print_mention_catch_fork (struct breakpoint
*b
)
6193 printf_filtered (_("Catchpoint %d (fork)"), b
->number
);
6196 /* Implement the "print_recreate" breakpoint_ops method for fork
6200 print_recreate_catch_fork (struct breakpoint
*b
, struct ui_file
*fp
)
6202 fprintf_unfiltered (fp
, "catch fork");
6203 print_recreate_thread (b
, fp
);
6206 /* The breakpoint_ops structure to be used in fork catchpoints. */
6208 static struct breakpoint_ops catch_fork_breakpoint_ops
;
6210 /* Implement the "insert" breakpoint_ops method for vfork
6214 insert_catch_vfork (struct bp_location
*bl
)
6216 return target_insert_vfork_catchpoint (PIDGET (inferior_ptid
));
6219 /* Implement the "remove" breakpoint_ops method for vfork
6223 remove_catch_vfork (struct bp_location
*bl
)
6225 return target_remove_vfork_catchpoint (PIDGET (inferior_ptid
));
6228 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
6232 breakpoint_hit_catch_vfork (const struct bp_location
*bl
,
6233 struct address_space
*aspace
, CORE_ADDR bp_addr
)
6235 struct fork_catchpoint
*c
= (struct fork_catchpoint
*) bl
->owner
;
6237 return inferior_has_vforked (inferior_ptid
, &c
->forked_inferior_pid
);
6240 /* Implement the "print_it" breakpoint_ops method for vfork
6243 static enum print_stop_action
6244 print_it_catch_vfork (bpstat bs
)
6246 struct breakpoint
*b
= bs
->breakpoint_at
;
6247 struct fork_catchpoint
*c
= (struct fork_catchpoint
*) b
;
6249 annotate_catchpoint (b
->number
);
6250 printf_filtered (_("\nCatchpoint %d (vforked process %d), "),
6251 b
->number
, ptid_get_pid (c
->forked_inferior_pid
));
6252 return PRINT_SRC_AND_LOC
;
6255 /* Implement the "print_one" breakpoint_ops method for vfork
6259 print_one_catch_vfork (struct breakpoint
*b
, struct bp_location
**last_loc
)
6261 struct fork_catchpoint
*c
= (struct fork_catchpoint
*) b
;
6262 struct value_print_options opts
;
6264 get_user_print_options (&opts
);
6265 /* Field 4, the address, is omitted (which makes the columns not
6266 line up too nicely with the headers, but the effect is relatively
6268 if (opts
.addressprint
)
6269 ui_out_field_skip (uiout
, "addr");
6271 ui_out_text (uiout
, "vfork");
6272 if (!ptid_equal (c
->forked_inferior_pid
, null_ptid
))
6274 ui_out_text (uiout
, ", process ");
6275 ui_out_field_int (uiout
, "what",
6276 ptid_get_pid (c
->forked_inferior_pid
));
6277 ui_out_spaces (uiout
, 1);
6281 /* Implement the "print_mention" breakpoint_ops method for vfork
6285 print_mention_catch_vfork (struct breakpoint
*b
)
6287 printf_filtered (_("Catchpoint %d (vfork)"), b
->number
);
6290 /* Implement the "print_recreate" breakpoint_ops method for vfork
6294 print_recreate_catch_vfork (struct breakpoint
*b
, struct ui_file
*fp
)
6296 fprintf_unfiltered (fp
, "catch vfork");
6297 print_recreate_thread (b
, fp
);
6300 /* The breakpoint_ops structure to be used in vfork catchpoints. */
6302 static struct breakpoint_ops catch_vfork_breakpoint_ops
;
6304 /* An instance of this type is used to represent a syscall catchpoint.
6305 It includes a "struct breakpoint" as a kind of base class; users
6306 downcast to "struct breakpoint *" when needed. A breakpoint is
6307 really of this type iff its ops pointer points to
6308 CATCH_SYSCALL_BREAKPOINT_OPS. */
6310 struct syscall_catchpoint
6312 /* The base class. */
6313 struct breakpoint base
;
6315 /* Syscall numbers used for the 'catch syscall' feature. If no
6316 syscall has been specified for filtering, its value is NULL.
6317 Otherwise, it holds a list of all syscalls to be caught. The
6318 list elements are allocated with xmalloc. */
6319 VEC(int) *syscalls_to_be_caught
;
6322 /* Implement the "dtor" breakpoint_ops method for syscall
6326 dtor_catch_syscall (struct breakpoint
*b
)
6328 struct syscall_catchpoint
*c
= (struct syscall_catchpoint
*) b
;
6330 VEC_free (int, c
->syscalls_to_be_caught
);
6332 base_breakpoint_ops
.dtor (b
);
6335 /* Implement the "insert" breakpoint_ops method for syscall
6339 insert_catch_syscall (struct bp_location
*bl
)
6341 struct syscall_catchpoint
*c
= (struct syscall_catchpoint
*) bl
->owner
;
6342 struct inferior
*inf
= current_inferior ();
6344 ++inf
->total_syscalls_count
;
6345 if (!c
->syscalls_to_be_caught
)
6346 ++inf
->any_syscall_count
;
6352 VEC_iterate (int, c
->syscalls_to_be_caught
, i
, iter
);
6357 if (iter
>= VEC_length (int, inf
->syscalls_counts
))
6359 int old_size
= VEC_length (int, inf
->syscalls_counts
);
6360 uintptr_t vec_addr_offset
6361 = old_size
* ((uintptr_t) sizeof (int));
6363 VEC_safe_grow (int, inf
->syscalls_counts
, iter
+ 1);
6364 vec_addr
= (uintptr_t) VEC_address (int, inf
->syscalls_counts
) +
6366 memset ((void *) vec_addr
, 0,
6367 (iter
+ 1 - old_size
) * sizeof (int));
6369 elem
= VEC_index (int, inf
->syscalls_counts
, iter
);
6370 VEC_replace (int, inf
->syscalls_counts
, iter
, ++elem
);
6374 return target_set_syscall_catchpoint (PIDGET (inferior_ptid
),
6375 inf
->total_syscalls_count
!= 0,
6376 inf
->any_syscall_count
,
6377 VEC_length (int, inf
->syscalls_counts
),
6378 VEC_address (int, inf
->syscalls_counts
));
6381 /* Implement the "remove" breakpoint_ops method for syscall
6385 remove_catch_syscall (struct bp_location
*bl
)
6387 struct syscall_catchpoint
*c
= (struct syscall_catchpoint
*) bl
->owner
;
6388 struct inferior
*inf
= current_inferior ();
6390 --inf
->total_syscalls_count
;
6391 if (!c
->syscalls_to_be_caught
)
6392 --inf
->any_syscall_count
;
6398 VEC_iterate (int, c
->syscalls_to_be_caught
, i
, iter
);
6402 if (iter
>= VEC_length (int, inf
->syscalls_counts
))
6403 /* Shouldn't happen. */
6405 elem
= VEC_index (int, inf
->syscalls_counts
, iter
);
6406 VEC_replace (int, inf
->syscalls_counts
, iter
, --elem
);
6410 return target_set_syscall_catchpoint (PIDGET (inferior_ptid
),
6411 inf
->total_syscalls_count
!= 0,
6412 inf
->any_syscall_count
,
6413 VEC_length (int, inf
->syscalls_counts
),
6415 inf
->syscalls_counts
));
6418 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
6422 breakpoint_hit_catch_syscall (const struct bp_location
*bl
,
6423 struct address_space
*aspace
, CORE_ADDR bp_addr
)
6425 /* We must check if we are catching specific syscalls in this
6426 breakpoint. If we are, then we must guarantee that the called
6427 syscall is the same syscall we are catching. */
6428 int syscall_number
= 0;
6429 const struct syscall_catchpoint
*c
6430 = (const struct syscall_catchpoint
*) bl
->owner
;
6432 if (!inferior_has_called_syscall (inferior_ptid
, &syscall_number
))
6435 /* Now, checking if the syscall is the same. */
6436 if (c
->syscalls_to_be_caught
)
6441 VEC_iterate (int, c
->syscalls_to_be_caught
, i
, iter
);
6443 if (syscall_number
== iter
)
6453 /* Implement the "print_it" breakpoint_ops method for syscall
6456 static enum print_stop_action
6457 print_it_catch_syscall (bpstat bs
)
6459 struct breakpoint
*b
= bs
->breakpoint_at
;
6460 /* These are needed because we want to know in which state a
6461 syscall is. It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
6462 or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
6463 must print "called syscall" or "returned from syscall". */
6465 struct target_waitstatus last
;
6467 struct cleanup
*old_chain
;
6470 get_last_target_status (&ptid
, &last
);
6472 get_syscall_by_number (last
.value
.syscall_number
, &s
);
6474 annotate_catchpoint (b
->number
);
6477 syscall_id
= xstrprintf ("%d", last
.value
.syscall_number
);
6479 syscall_id
= xstrprintf ("'%s'", s
.name
);
6481 old_chain
= make_cleanup (xfree
, syscall_id
);
6483 if (last
.kind
== TARGET_WAITKIND_SYSCALL_ENTRY
)
6484 printf_filtered (_("\nCatchpoint %d (call to syscall %s), "),
6485 b
->number
, syscall_id
);
6486 else if (last
.kind
== TARGET_WAITKIND_SYSCALL_RETURN
)
6487 printf_filtered (_("\nCatchpoint %d (returned from syscall %s), "),
6488 b
->number
, syscall_id
);
6490 do_cleanups (old_chain
);
6492 return PRINT_SRC_AND_LOC
;
6495 /* Implement the "print_one" breakpoint_ops method for syscall
6499 print_one_catch_syscall (struct breakpoint
*b
,
6500 struct bp_location
**last_loc
)
6502 struct syscall_catchpoint
*c
= (struct syscall_catchpoint
*) b
;
6503 struct value_print_options opts
;
6505 get_user_print_options (&opts
);
6506 /* Field 4, the address, is omitted (which makes the columns not
6507 line up too nicely with the headers, but the effect is relatively
6509 if (opts
.addressprint
)
6510 ui_out_field_skip (uiout
, "addr");
6513 if (c
->syscalls_to_be_caught
6514 && VEC_length (int, c
->syscalls_to_be_caught
) > 1)
6515 ui_out_text (uiout
, "syscalls \"");
6517 ui_out_text (uiout
, "syscall \"");
6519 if (c
->syscalls_to_be_caught
)
6522 char *text
= xstrprintf ("%s", "");
6525 VEC_iterate (int, c
->syscalls_to_be_caught
, i
, iter
);
6530 get_syscall_by_number (iter
, &s
);
6533 text
= xstrprintf ("%s%s, ", text
, s
.name
);
6535 text
= xstrprintf ("%s%d, ", text
, iter
);
6537 /* We have to xfree the last 'text' (now stored at 'x')
6538 because xstrprintf dynamically allocates new space for it
6542 /* Remove the last comma. */
6543 text
[strlen (text
) - 2] = '\0';
6544 ui_out_field_string (uiout
, "what", text
);
6547 ui_out_field_string (uiout
, "what", "<any syscall>");
6548 ui_out_text (uiout
, "\" ");
6551 /* Implement the "print_mention" breakpoint_ops method for syscall
6555 print_mention_catch_syscall (struct breakpoint
*b
)
6557 struct syscall_catchpoint
*c
= (struct syscall_catchpoint
*) b
;
6559 if (c
->syscalls_to_be_caught
)
6563 if (VEC_length (int, c
->syscalls_to_be_caught
) > 1)
6564 printf_filtered (_("Catchpoint %d (syscalls"), b
->number
);
6566 printf_filtered (_("Catchpoint %d (syscall"), b
->number
);
6569 VEC_iterate (int, c
->syscalls_to_be_caught
, i
, iter
);
6573 get_syscall_by_number (iter
, &s
);
6576 printf_filtered (" '%s' [%d]", s
.name
, s
.number
);
6578 printf_filtered (" %d", s
.number
);
6580 printf_filtered (")");
6583 printf_filtered (_("Catchpoint %d (any syscall)"),
6587 /* Implement the "print_recreate" breakpoint_ops method for syscall
6591 print_recreate_catch_syscall (struct breakpoint
*b
, struct ui_file
*fp
)
6593 struct syscall_catchpoint
*c
= (struct syscall_catchpoint
*) b
;
6595 fprintf_unfiltered (fp
, "catch syscall");
6597 if (c
->syscalls_to_be_caught
)
6602 VEC_iterate (int, c
->syscalls_to_be_caught
, i
, iter
);
6607 get_syscall_by_number (iter
, &s
);
6609 fprintf_unfiltered (fp
, " %s", s
.name
);
6611 fprintf_unfiltered (fp
, " %d", s
.number
);
6614 print_recreate_thread (b
, fp
);
6617 /* The breakpoint_ops structure to be used in syscall catchpoints. */
6619 static struct breakpoint_ops catch_syscall_breakpoint_ops
;
6621 /* Returns non-zero if 'b' is a syscall catchpoint. */
6624 syscall_catchpoint_p (struct breakpoint
*b
)
6626 return (b
->ops
== &catch_syscall_breakpoint_ops
);
6629 /* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
6630 is non-zero, then make the breakpoint temporary. If COND_STRING is
6631 not NULL, then store it in the breakpoint. OPS, if not NULL, is
6632 the breakpoint_ops structure associated to the catchpoint. */
6635 init_catchpoint (struct breakpoint
*b
,
6636 struct gdbarch
*gdbarch
, int tempflag
,
6638 const struct breakpoint_ops
*ops
)
6640 struct symtab_and_line sal
;
6643 sal
.pspace
= current_program_space
;
6645 init_raw_breakpoint (b
, gdbarch
, sal
, bp_catchpoint
, ops
);
6647 b
->cond_string
= (cond_string
== NULL
) ? NULL
: xstrdup (cond_string
);
6648 b
->disposition
= tempflag
? disp_del
: disp_donttouch
;
6652 install_breakpoint (int internal
, struct breakpoint
*b
)
6654 add_to_breakpoint_chain (b
);
6655 set_breakpoint_number (internal
, b
);
6658 observer_notify_breakpoint_created (b
);
6659 update_global_location_list (1);
6663 create_fork_vfork_event_catchpoint (struct gdbarch
*gdbarch
,
6664 int tempflag
, char *cond_string
,
6665 const struct breakpoint_ops
*ops
)
6667 struct fork_catchpoint
*c
= XNEW (struct fork_catchpoint
);
6669 init_catchpoint (&c
->base
, gdbarch
, tempflag
, cond_string
, ops
);
6671 c
->forked_inferior_pid
= null_ptid
;
6673 install_breakpoint (0, &c
->base
);
6676 /* Exec catchpoints. */
6678 /* An instance of this type is used to represent an exec catchpoint.
6679 It includes a "struct breakpoint" as a kind of base class; users
6680 downcast to "struct breakpoint *" when needed. A breakpoint is
6681 really of this type iff its ops pointer points to
6682 CATCH_EXEC_BREAKPOINT_OPS. */
6684 struct exec_catchpoint
6686 /* The base class. */
6687 struct breakpoint base
;
6689 /* Filename of a program whose exec triggered this catchpoint.
6690 This field is only valid immediately after this catchpoint has
6692 char *exec_pathname
;
6695 /* Implement the "dtor" breakpoint_ops method for exec
6699 dtor_catch_exec (struct breakpoint
*b
)
6701 struct exec_catchpoint
*c
= (struct exec_catchpoint
*) b
;
6703 xfree (c
->exec_pathname
);
6705 base_breakpoint_ops
.dtor (b
);
6709 insert_catch_exec (struct bp_location
*bl
)
6711 return target_insert_exec_catchpoint (PIDGET (inferior_ptid
));
6715 remove_catch_exec (struct bp_location
*bl
)
6717 return target_remove_exec_catchpoint (PIDGET (inferior_ptid
));
6721 breakpoint_hit_catch_exec (const struct bp_location
*bl
,
6722 struct address_space
*aspace
, CORE_ADDR bp_addr
)
6724 struct exec_catchpoint
*c
= (struct exec_catchpoint
*) bl
->owner
;
6726 return inferior_has_execd (inferior_ptid
, &c
->exec_pathname
);
6729 static enum print_stop_action
6730 print_it_catch_exec (bpstat bs
)
6732 struct breakpoint
*b
= bs
->breakpoint_at
;
6733 struct exec_catchpoint
*c
= (struct exec_catchpoint
*) b
;
6735 annotate_catchpoint (b
->number
);
6736 printf_filtered (_("\nCatchpoint %d (exec'd %s), "), b
->number
,
6738 return PRINT_SRC_AND_LOC
;
6742 print_one_catch_exec (struct breakpoint
*b
, struct bp_location
**last_loc
)
6744 struct exec_catchpoint
*c
= (struct exec_catchpoint
*) b
;
6745 struct value_print_options opts
;
6747 get_user_print_options (&opts
);
6749 /* Field 4, the address, is omitted (which makes the columns
6750 not line up too nicely with the headers, but the effect
6751 is relatively readable). */
6752 if (opts
.addressprint
)
6753 ui_out_field_skip (uiout
, "addr");
6755 ui_out_text (uiout
, "exec");
6756 if (c
->exec_pathname
!= NULL
)
6758 ui_out_text (uiout
, ", program \"");
6759 ui_out_field_string (uiout
, "what", c
->exec_pathname
);
6760 ui_out_text (uiout
, "\" ");
6765 print_mention_catch_exec (struct breakpoint
*b
)
6767 printf_filtered (_("Catchpoint %d (exec)"), b
->number
);
6770 /* Implement the "print_recreate" breakpoint_ops method for exec
6774 print_recreate_catch_exec (struct breakpoint
*b
, struct ui_file
*fp
)
6776 fprintf_unfiltered (fp
, "catch exec");
6777 print_recreate_thread (b
, fp
);
6780 static struct breakpoint_ops catch_exec_breakpoint_ops
;
6783 create_syscall_event_catchpoint (int tempflag
, VEC(int) *filter
,
6784 const struct breakpoint_ops
*ops
)
6786 struct syscall_catchpoint
*c
;
6787 struct gdbarch
*gdbarch
= get_current_arch ();
6789 c
= XNEW (struct syscall_catchpoint
);
6790 init_catchpoint (&c
->base
, gdbarch
, tempflag
, NULL
, ops
);
6791 c
->syscalls_to_be_caught
= filter
;
6793 install_breakpoint (0, &c
->base
);
6797 hw_breakpoint_used_count (void)
6800 struct breakpoint
*b
;
6801 struct bp_location
*bl
;
6805 if (b
->type
== bp_hardware_breakpoint
&& breakpoint_enabled (b
))
6806 for (bl
= b
->loc
; bl
; bl
= bl
->next
)
6808 /* Special types of hardware breakpoints may use more than
6810 i
+= b
->ops
->resources_needed (bl
);
6818 hw_watchpoint_used_count (enum bptype type
, int *other_type_used
)
6821 struct breakpoint
*b
;
6822 struct bp_location
*bl
;
6824 *other_type_used
= 0;
6827 if (!breakpoint_enabled (b
))
6830 if (b
->type
== type
)
6831 for (bl
= b
->loc
; bl
; bl
= bl
->next
)
6833 /* Special types of hardware watchpoints may use more than
6835 i
+= b
->ops
->resources_needed (bl
);
6837 else if (is_hardware_watchpoint (b
))
6838 *other_type_used
= 1;
6845 disable_watchpoints_before_interactive_call_start (void)
6847 struct breakpoint
*b
;
6851 if (is_watchpoint (b
) && breakpoint_enabled (b
))
6853 b
->enable_state
= bp_call_disabled
;
6854 update_global_location_list (0);
6860 enable_watchpoints_after_interactive_call_stop (void)
6862 struct breakpoint
*b
;
6866 if (is_watchpoint (b
) && b
->enable_state
== bp_call_disabled
)
6868 b
->enable_state
= bp_enabled
;
6869 update_global_location_list (1);
6875 disable_breakpoints_before_startup (void)
6877 struct breakpoint
*b
;
6882 if (b
->pspace
!= current_program_space
)
6885 if ((b
->type
== bp_breakpoint
6886 || b
->type
== bp_hardware_breakpoint
)
6887 && breakpoint_enabled (b
))
6889 b
->enable_state
= bp_startup_disabled
;
6895 update_global_location_list (0);
6897 current_program_space
->executing_startup
= 1;
6901 enable_breakpoints_after_startup (void)
6903 struct breakpoint
*b
;
6906 current_program_space
->executing_startup
= 0;
6910 if (b
->pspace
!= current_program_space
)
6913 if ((b
->type
== bp_breakpoint
6914 || b
->type
== bp_hardware_breakpoint
)
6915 && b
->enable_state
== bp_startup_disabled
)
6917 b
->enable_state
= bp_enabled
;
6923 breakpoint_re_set ();
6927 /* Set a breakpoint that will evaporate an end of command
6928 at address specified by SAL.
6929 Restrict it to frame FRAME if FRAME is nonzero. */
6932 set_momentary_breakpoint (struct gdbarch
*gdbarch
, struct symtab_and_line sal
,
6933 struct frame_id frame_id
, enum bptype type
)
6935 struct breakpoint
*b
;
6937 /* If FRAME_ID is valid, it should be a real frame, not an inlined
6939 gdb_assert (!frame_id_inlined_p (frame_id
));
6941 b
= set_raw_breakpoint (gdbarch
, sal
, type
, &momentary_breakpoint_ops
);
6942 b
->enable_state
= bp_enabled
;
6943 b
->disposition
= disp_donttouch
;
6944 b
->frame_id
= frame_id
;
6946 /* If we're debugging a multi-threaded program, then we want
6947 momentary breakpoints to be active in only a single thread of
6949 if (in_thread_list (inferior_ptid
))
6950 b
->thread
= pid_to_thread_id (inferior_ptid
);
6952 update_global_location_list_nothrow (1);
6957 /* Make a momentary breakpoint based on the master breakpoint ORIG.
6958 The new breakpoint will have type TYPE, and use OPS as it
6961 static struct breakpoint
*
6962 momentary_breakpoint_from_master (struct breakpoint
*orig
,
6964 const struct breakpoint_ops
*ops
)
6966 struct breakpoint
*copy
;
6968 copy
= set_raw_breakpoint_without_location (orig
->gdbarch
, type
, ops
);
6969 copy
->loc
= allocate_bp_location (copy
);
6970 set_breakpoint_location_function (copy
->loc
, 1);
6972 copy
->loc
->gdbarch
= orig
->loc
->gdbarch
;
6973 copy
->loc
->requested_address
= orig
->loc
->requested_address
;
6974 copy
->loc
->address
= orig
->loc
->address
;
6975 copy
->loc
->section
= orig
->loc
->section
;
6976 copy
->loc
->pspace
= orig
->loc
->pspace
;
6978 if (orig
->source_file
== NULL
)
6979 copy
->source_file
= NULL
;
6981 copy
->source_file
= xstrdup (orig
->source_file
);
6983 copy
->line_number
= orig
->line_number
;
6984 copy
->frame_id
= orig
->frame_id
;
6985 copy
->thread
= orig
->thread
;
6986 copy
->pspace
= orig
->pspace
;
6988 copy
->enable_state
= bp_enabled
;
6989 copy
->disposition
= disp_donttouch
;
6990 copy
->number
= internal_breakpoint_number
--;
6992 update_global_location_list_nothrow (0);
6996 /* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
7000 clone_momentary_breakpoint (struct breakpoint
*orig
)
7002 /* If there's nothing to clone, then return nothing. */
7006 return momentary_breakpoint_from_master (orig
, orig
->type
, orig
->ops
);
7010 set_momentary_breakpoint_at_pc (struct gdbarch
*gdbarch
, CORE_ADDR pc
,
7013 struct symtab_and_line sal
;
7015 sal
= find_pc_line (pc
, 0);
7017 sal
.section
= find_pc_overlay (pc
);
7018 sal
.explicit_pc
= 1;
7020 return set_momentary_breakpoint (gdbarch
, sal
, null_frame_id
, type
);
7024 /* Tell the user we have just set a breakpoint B. */
7027 mention (struct breakpoint
*b
)
7029 b
->ops
->print_mention (b
);
7030 if (ui_out_is_mi_like_p (uiout
))
7032 printf_filtered ("\n");
7036 static struct bp_location
*
7037 add_location_to_breakpoint (struct breakpoint
*b
,
7038 const struct symtab_and_line
*sal
)
7040 struct bp_location
*loc
, **tmp
;
7042 loc
= allocate_bp_location (b
);
7043 for (tmp
= &(b
->loc
); *tmp
!= NULL
; tmp
= &((*tmp
)->next
))
7046 loc
->gdbarch
= get_sal_arch (*sal
);
7048 loc
->gdbarch
= b
->gdbarch
;
7049 loc
->requested_address
= sal
->pc
;
7050 loc
->address
= adjust_breakpoint_address (loc
->gdbarch
,
7051 loc
->requested_address
, b
->type
);
7052 loc
->pspace
= sal
->pspace
;
7053 gdb_assert (loc
->pspace
!= NULL
);
7054 loc
->section
= sal
->section
;
7056 set_breakpoint_location_function (loc
,
7057 sal
->explicit_pc
|| sal
->explicit_line
);
7062 /* Return 1 if LOC is pointing to a permanent breakpoint,
7063 return 0 otherwise. */
7066 bp_loc_is_permanent (struct bp_location
*loc
)
7070 const gdb_byte
*brk
;
7071 gdb_byte
*target_mem
;
7072 struct cleanup
*cleanup
;
7075 gdb_assert (loc
!= NULL
);
7077 addr
= loc
->address
;
7078 brk
= gdbarch_breakpoint_from_pc (loc
->gdbarch
, &addr
, &len
);
7080 /* Software breakpoints unsupported? */
7084 target_mem
= alloca (len
);
7086 /* Enable the automatic memory restoration from breakpoints while
7087 we read the memory. Otherwise we could say about our temporary
7088 breakpoints they are permanent. */
7089 cleanup
= save_current_space_and_thread ();
7091 switch_to_program_space_and_thread (loc
->pspace
);
7092 make_show_memory_breakpoints_cleanup (0);
7094 if (target_read_memory (loc
->address
, target_mem
, len
) == 0
7095 && memcmp (target_mem
, brk
, len
) == 0)
7098 do_cleanups (cleanup
);
7105 /* Create a breakpoint with SAL as location. Use ADDR_STRING
7106 as textual description of the location, and COND_STRING
7107 as condition expression. */
7110 init_breakpoint_sal (struct breakpoint
*b
, struct gdbarch
*gdbarch
,
7111 struct symtabs_and_lines sals
, char *addr_string
,
7113 enum bptype type
, enum bpdisp disposition
,
7114 int thread
, int task
, int ignore_count
,
7115 const struct breakpoint_ops
*ops
, int from_tty
,
7116 int enabled
, int internal
, int display_canonical
)
7120 if (type
== bp_hardware_breakpoint
)
7122 int i
= hw_breakpoint_used_count ();
7123 int target_resources_ok
=
7124 target_can_use_hardware_watchpoint (bp_hardware_breakpoint
,
7126 if (target_resources_ok
== 0)
7127 error (_("No hardware breakpoint support in the target."));
7128 else if (target_resources_ok
< 0)
7129 error (_("Hardware breakpoints used exceeds limit."));
7132 gdb_assert (sals
.nelts
> 0);
7134 for (i
= 0; i
< sals
.nelts
; ++i
)
7136 struct symtab_and_line sal
= sals
.sals
[i
];
7137 struct bp_location
*loc
;
7141 struct gdbarch
*loc_gdbarch
= get_sal_arch (sal
);
7143 loc_gdbarch
= gdbarch
;
7145 describe_other_breakpoints (loc_gdbarch
,
7146 sal
.pspace
, sal
.pc
, sal
.section
, thread
);
7151 init_raw_breakpoint (b
, gdbarch
, sal
, type
, ops
);
7155 b
->cond_string
= cond_string
;
7156 b
->ignore_count
= ignore_count
;
7157 b
->enable_state
= enabled
? bp_enabled
: bp_disabled
;
7158 b
->disposition
= disposition
;
7159 b
->pspace
= sals
.sals
[0].pspace
;
7161 if (type
== bp_static_tracepoint
)
7163 struct tracepoint
*t
= (struct tracepoint
*) b
;
7164 struct static_tracepoint_marker marker
;
7166 if (is_marker_spec (addr_string
))
7168 /* We already know the marker exists, otherwise, we
7169 wouldn't see a sal for it. */
7170 char *p
= &addr_string
[3];
7175 p
= skip_spaces (p
);
7177 endp
= skip_to_space (p
);
7179 marker_str
= savestring (p
, endp
- p
);
7180 t
->static_trace_marker_id
= marker_str
;
7182 printf_filtered (_("Probed static tracepoint "
7184 t
->static_trace_marker_id
);
7186 else if (target_static_tracepoint_marker_at (sal
.pc
, &marker
))
7188 t
->static_trace_marker_id
= xstrdup (marker
.str_id
);
7189 release_static_tracepoint_marker (&marker
);
7191 printf_filtered (_("Probed static tracepoint "
7193 t
->static_trace_marker_id
);
7196 warning (_("Couldn't determine the static "
7197 "tracepoint marker to probe"));
7200 if (enabled
&& b
->pspace
->executing_startup
7201 && (b
->type
== bp_breakpoint
7202 || b
->type
== bp_hardware_breakpoint
))
7203 b
->enable_state
= bp_startup_disabled
;
7209 loc
= add_location_to_breakpoint (b
, &sal
);
7212 if (bp_loc_is_permanent (loc
))
7213 make_breakpoint_permanent (b
);
7217 char *arg
= b
->cond_string
;
7218 loc
->cond
= parse_exp_1 (&arg
, block_for_pc (loc
->address
), 0);
7220 error (_("Garbage %s follows condition"), arg
);
7224 b
->display_canonical
= display_canonical
;
7226 b
->addr_string
= addr_string
;
7228 /* addr_string has to be used or breakpoint_re_set will delete
7231 = xstrprintf ("*%s", paddress (b
->loc
->gdbarch
, b
->loc
->address
));
7235 create_breakpoint_sal (struct gdbarch
*gdbarch
,
7236 struct symtabs_and_lines sals
, char *addr_string
,
7238 enum bptype type
, enum bpdisp disposition
,
7239 int thread
, int task
, int ignore_count
,
7240 const struct breakpoint_ops
*ops
, int from_tty
,
7241 int enabled
, int internal
, int display_canonical
)
7243 struct breakpoint
*b
;
7244 struct cleanup
*old_chain
;
7246 if (is_tracepoint_type (type
))
7248 struct tracepoint
*t
;
7250 t
= XCNEW (struct tracepoint
);
7254 b
= XNEW (struct breakpoint
);
7256 old_chain
= make_cleanup (xfree
, b
);
7258 init_breakpoint_sal (b
, gdbarch
,
7262 thread
, task
, ignore_count
,
7264 enabled
, internal
, display_canonical
);
7265 discard_cleanups (old_chain
);
7267 install_breakpoint (internal
, b
);
7270 /* Remove element at INDEX_TO_REMOVE from SAL, shifting other
7271 elements to fill the void space. */
7273 remove_sal (struct symtabs_and_lines
*sal
, int index_to_remove
)
7275 int i
= index_to_remove
+1;
7276 int last_index
= sal
->nelts
-1;
7278 for (;i
<= last_index
; ++i
)
7279 sal
->sals
[i
-1] = sal
->sals
[i
];
7284 /* If appropriate, obtains all sals that correspond to the same file
7285 and line as SAL, in all program spaces. Users debugging with IDEs,
7286 will want to set a breakpoint at foo.c:line, and not really care
7287 about program spaces. This is done only if SAL does not have
7288 explicit PC and has line and file information. If we got just a
7289 single expanded sal, return the original.
7291 Otherwise, if SAL.explicit_line is not set, filter out all sals for
7292 which the name of enclosing function is different from SAL. This
7293 makes sure that if we have breakpoint originally set in template
7294 instantiation, say foo<int>(), we won't expand SAL to locations at
7295 the same line in all existing instantiations of 'foo'. */
7297 static struct symtabs_and_lines
7298 expand_line_sal_maybe (struct symtab_and_line sal
)
7300 struct symtabs_and_lines expanded
;
7301 CORE_ADDR original_pc
= sal
.pc
;
7302 char *original_function
= NULL
;
7305 struct cleanup
*old_chain
;
7307 /* If we have explicit pc, don't expand.
7308 If we have no line number, we can't expand. */
7309 if (sal
.explicit_pc
|| sal
.line
== 0 || sal
.symtab
== NULL
)
7312 expanded
.sals
= xmalloc (sizeof (struct symtab_and_line
));
7313 expanded
.sals
[0] = sal
;
7319 old_chain
= save_current_space_and_thread ();
7321 switch_to_program_space_and_thread (sal
.pspace
);
7323 find_pc_partial_function (original_pc
, &original_function
, NULL
, NULL
);
7325 /* Note that expand_line_sal visits *all* program spaces. */
7326 expanded
= expand_line_sal (sal
);
7328 if (expanded
.nelts
== 1)
7330 /* We had one sal, we got one sal. Return that sal, adjusting it
7331 past the function prologue if necessary. */
7332 xfree (expanded
.sals
);
7334 expanded
.sals
= xmalloc (sizeof (struct symtab_and_line
));
7335 sal
.pc
= original_pc
;
7336 expanded
.sals
[0] = sal
;
7337 skip_prologue_sal (&expanded
.sals
[0]);
7338 do_cleanups (old_chain
);
7342 if (!sal
.explicit_line
)
7344 CORE_ADDR func_addr
, func_end
;
7345 for (i
= 0; i
< expanded
.nelts
; ++i
)
7347 CORE_ADDR pc
= expanded
.sals
[i
].pc
;
7348 char *this_function
;
7350 /* We need to switch threads as well since we're about to
7352 switch_to_program_space_and_thread (expanded
.sals
[i
].pspace
);
7354 if (find_pc_partial_function (pc
, &this_function
,
7355 &func_addr
, &func_end
))
7358 && strcmp (this_function
, original_function
) != 0)
7360 remove_sal (&expanded
, i
);
7367 /* Skip the function prologue if necessary. */
7368 for (i
= 0; i
< expanded
.nelts
; ++i
)
7369 skip_prologue_sal (&expanded
.sals
[i
]);
7371 do_cleanups (old_chain
);
7373 if (expanded
.nelts
<= 1)
7375 /* This is an ugly workaround. If we get zero expanded sals
7376 then something is really wrong. Fix that by returning the
7379 xfree (expanded
.sals
);
7381 expanded
.sals
= xmalloc (sizeof (struct symtab_and_line
));
7382 sal
.pc
= original_pc
;
7383 expanded
.sals
[0] = sal
;
7390 for (i
= 0; i
< expanded
.nelts
; ++i
)
7391 if (expanded
.sals
[i
].pc
== original_pc
)
7402 /* Add SALS.nelts breakpoints to the breakpoint table. For each
7403 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
7404 value. COND_STRING, if not NULL, specified the condition to be
7405 used for all breakpoints. Essentially the only case where
7406 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
7407 function. In that case, it's still not possible to specify
7408 separate conditions for different overloaded functions, so
7409 we take just a single condition string.
7411 NOTE: If the function succeeds, the caller is expected to cleanup
7412 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
7413 array contents). If the function fails (error() is called), the
7414 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
7415 COND and SALS arrays and each of those arrays contents. */
7418 create_breakpoints_sal (struct gdbarch
*gdbarch
,
7419 struct symtabs_and_lines sals
,
7420 struct linespec_result
*canonical
,
7422 enum bptype type
, enum bpdisp disposition
,
7423 int thread
, int task
, int ignore_count
,
7424 const struct breakpoint_ops
*ops
, int from_tty
,
7425 int enabled
, int internal
)
7429 for (i
= 0; i
< sals
.nelts
; ++i
)
7431 struct symtabs_and_lines expanded
=
7432 expand_line_sal_maybe (sals
.sals
[i
]);
7434 create_breakpoint_sal (gdbarch
, expanded
, canonical
->canonical
[i
],
7435 cond_string
, type
, disposition
,
7436 thread
, task
, ignore_count
, ops
,
7437 from_tty
, enabled
, internal
,
7438 canonical
->special_display
);
7442 /* Parse ADDRESS which is assumed to be a SAL specification possibly
7443 followed by conditionals. On return, SALS contains an array of SAL
7444 addresses found. ADDR_STRING contains a vector of (canonical)
7445 address strings. ADDRESS points to the end of the SAL.
7447 The array and the line spec strings are allocated on the heap, it is
7448 the caller's responsibility to free them. */
7451 parse_breakpoint_sals (char **address
,
7452 struct symtabs_and_lines
*sals
,
7453 struct linespec_result
*canonical
)
7455 char *addr_start
= *address
;
7457 /* If no arg given, or if first arg is 'if ', use the default
7459 if ((*address
) == NULL
7460 || (strncmp ((*address
), "if", 2) == 0 && isspace ((*address
)[2])))
7462 if (default_breakpoint_valid
)
7464 struct symtab_and_line sal
;
7466 init_sal (&sal
); /* Initialize to zeroes. */
7467 sals
->sals
= (struct symtab_and_line
*)
7468 xmalloc (sizeof (struct symtab_and_line
));
7469 sal
.pc
= default_breakpoint_address
;
7470 sal
.line
= default_breakpoint_line
;
7471 sal
.symtab
= default_breakpoint_symtab
;
7472 sal
.pspace
= default_breakpoint_pspace
;
7473 sal
.section
= find_pc_overlay (sal
.pc
);
7475 /* "break" without arguments is equivalent to "break *PC"
7476 where PC is the default_breakpoint_address. So make sure
7477 to set sal.explicit_pc to prevent GDB from trying to
7478 expand the list of sals to include all other instances
7479 with the same symtab and line. */
7480 sal
.explicit_pc
= 1;
7482 sals
->sals
[0] = sal
;
7486 error (_("No default breakpoint address now."));
7490 /* Force almost all breakpoints to be in terms of the
7491 current_source_symtab (which is decode_line_1's default).
7492 This should produce the results we want almost all of the
7493 time while leaving default_breakpoint_* alone.
7495 ObjC: However, don't match an Objective-C method name which
7496 may have a '+' or '-' succeeded by a '[' */
7498 struct symtab_and_line cursal
= get_current_source_symtab_and_line ();
7500 if (default_breakpoint_valid
7502 || ((strchr ("+-", (*address
)[0]) != NULL
)
7503 && ((*address
)[1] != '['))))
7504 *sals
= decode_line_1 (address
, 1, default_breakpoint_symtab
,
7505 default_breakpoint_line
, canonical
);
7507 *sals
= decode_line_1 (address
, 1, (struct symtab
*) NULL
, 0,
7510 /* For any SAL that didn't have a canonical string, fill one in. */
7511 if (sals
->nelts
> 0 && canonical
->canonical
== NULL
)
7512 canonical
->canonical
= xcalloc (sals
->nelts
, sizeof (char *));
7513 if (addr_start
!= (*address
))
7517 for (i
= 0; i
< sals
->nelts
; i
++)
7519 /* Add the string if not present. */
7520 if (canonical
->canonical
[i
] == NULL
)
7521 canonical
->canonical
[i
] = savestring (addr_start
,
7522 (*address
) - addr_start
);
7528 /* Convert each SAL into a real PC. Verify that the PC can be
7529 inserted as a breakpoint. If it can't throw an error. */
7532 breakpoint_sals_to_pc (struct symtabs_and_lines
*sals
)
7536 for (i
= 0; i
< sals
->nelts
; i
++)
7537 resolve_sal_pc (&sals
->sals
[i
]);
7540 /* Fast tracepoints may have restrictions on valid locations. For
7541 instance, a fast tracepoint using a jump instead of a trap will
7542 likely have to overwrite more bytes than a trap would, and so can
7543 only be placed where the instruction is longer than the jump, or a
7544 multi-instruction sequence does not have a jump into the middle of
7548 check_fast_tracepoint_sals (struct gdbarch
*gdbarch
,
7549 struct symtabs_and_lines
*sals
)
7552 struct symtab_and_line
*sal
;
7554 struct cleanup
*old_chain
;
7556 for (i
= 0; i
< sals
->nelts
; i
++)
7558 sal
= &sals
->sals
[i
];
7560 rslt
= gdbarch_fast_tracepoint_valid_at (gdbarch
, sal
->pc
,
7562 old_chain
= make_cleanup (xfree
, msg
);
7565 error (_("May not have a fast tracepoint at 0x%s%s"),
7566 paddress (gdbarch
, sal
->pc
), (msg
? msg
: ""));
7568 do_cleanups (old_chain
);
7572 /* Given TOK, a string specification of condition and thread, as
7573 accepted by the 'break' command, extract the condition
7574 string and thread number and set *COND_STRING and *THREAD.
7575 PC identifies the context at which the condition should be parsed.
7576 If no condition is found, *COND_STRING is set to NULL.
7577 If no thread is found, *THREAD is set to -1. */
7579 find_condition_and_thread (char *tok
, CORE_ADDR pc
,
7580 char **cond_string
, int *thread
, int *task
)
7582 *cond_string
= NULL
;
7588 char *cond_start
= NULL
;
7589 char *cond_end
= NULL
;
7591 tok
= skip_spaces (tok
);
7593 end_tok
= skip_to_space (tok
);
7595 toklen
= end_tok
- tok
;
7597 if (toklen
>= 1 && strncmp (tok
, "if", toklen
) == 0)
7599 struct expression
*expr
;
7601 tok
= cond_start
= end_tok
+ 1;
7602 expr
= parse_exp_1 (&tok
, block_for_pc (pc
), 0);
7605 *cond_string
= savestring (cond_start
,
7606 cond_end
- cond_start
);
7608 else if (toklen
>= 1 && strncmp (tok
, "thread", toklen
) == 0)
7614 *thread
= strtol (tok
, &tok
, 0);
7616 error (_("Junk after thread keyword."));
7617 if (!valid_thread_id (*thread
))
7618 error (_("Unknown thread %d."), *thread
);
7620 else if (toklen
>= 1 && strncmp (tok
, "task", toklen
) == 0)
7626 *task
= strtol (tok
, &tok
, 0);
7628 error (_("Junk after task keyword."));
7629 if (!valid_task_id (*task
))
7630 error (_("Unknown task %d."), *task
);
7633 error (_("Junk at end of arguments."));
7637 /* Decode a static tracepoint marker spec. */
7639 static struct symtabs_and_lines
7640 decode_static_tracepoint_spec (char **arg_p
)
7642 VEC(static_tracepoint_marker_p
) *markers
= NULL
;
7643 struct symtabs_and_lines sals
;
7644 struct symtab_and_line sal
;
7646 struct cleanup
*old_chain
;
7647 char *p
= &(*arg_p
)[3];
7652 p
= skip_spaces (p
);
7654 endp
= skip_to_space (p
);
7656 marker_str
= savestring (p
, endp
- p
);
7657 old_chain
= make_cleanup (xfree
, marker_str
);
7659 markers
= target_static_tracepoint_markers_by_strid (marker_str
);
7660 if (VEC_empty(static_tracepoint_marker_p
, markers
))
7661 error (_("No known static tracepoint marker named %s"), marker_str
);
7663 sals
.nelts
= VEC_length(static_tracepoint_marker_p
, markers
);
7664 sals
.sals
= xmalloc (sizeof *sals
.sals
* sals
.nelts
);
7666 for (i
= 0; i
< sals
.nelts
; i
++)
7668 struct static_tracepoint_marker
*marker
;
7670 marker
= VEC_index (static_tracepoint_marker_p
, markers
, i
);
7672 init_sal (&sals
.sals
[i
]);
7674 sals
.sals
[i
] = find_pc_line (marker
->address
, 0);
7675 sals
.sals
[i
].pc
= marker
->address
;
7677 release_static_tracepoint_marker (marker
);
7680 do_cleanups (old_chain
);
7686 /* Set a breakpoint. This function is shared between CLI and MI
7687 functions for setting a breakpoint. This function has two major
7688 modes of operations, selected by the PARSE_CONDITION_AND_THREAD
7689 parameter. If non-zero, the function will parse arg, extracting
7690 breakpoint location, address and thread. Otherwise, ARG is just
7691 the location of breakpoint, with condition and thread specified by
7692 the COND_STRING and THREAD parameters. If INTERNAL is non-zero,
7693 the breakpoint number will be allocated from the internal
7694 breakpoint count. Returns true if any breakpoint was created;
7698 create_breakpoint (struct gdbarch
*gdbarch
,
7699 char *arg
, char *cond_string
, int thread
,
7700 int parse_condition_and_thread
,
7701 int tempflag
, enum bptype type_wanted
,
7703 enum auto_boolean pending_break_support
,
7704 const struct breakpoint_ops
*ops
,
7705 int from_tty
, int enabled
, int internal
)
7707 volatile struct gdb_exception e
;
7708 struct symtabs_and_lines sals
;
7709 struct symtab_and_line pending_sal
;
7711 char *addr_start
= arg
;
7712 struct linespec_result canonical
;
7713 struct cleanup
*old_chain
;
7714 struct cleanup
*bkpt_chain
= NULL
;
7718 int prev_bkpt_count
= breakpoint_count
;
7720 gdb_assert (ops
!= NULL
);
7724 init_linespec_result (&canonical
);
7726 if (type_wanted
== bp_static_tracepoint
&& is_marker_spec (arg
))
7730 sals
= decode_static_tracepoint_spec (&arg
);
7732 copy_arg
= savestring (addr_start
, arg
- addr_start
);
7733 canonical
.canonical
= xcalloc (sals
.nelts
, sizeof (char *));
7734 for (i
= 0; i
< sals
.nelts
; i
++)
7735 canonical
.canonical
[i
] = xstrdup (copy_arg
);
7739 TRY_CATCH (e
, RETURN_MASK_ALL
)
7741 parse_breakpoint_sals (&arg
, &sals
, &canonical
);
7744 /* If caller is interested in rc value from parse, set value. */
7748 throw_exception (e
);
7752 case NOT_FOUND_ERROR
:
7754 /* If pending breakpoint support is turned off, throw
7757 if (pending_break_support
== AUTO_BOOLEAN_FALSE
)
7758 throw_exception (e
);
7760 exception_print (gdb_stderr
, e
);
7762 /* If pending breakpoint support is auto query and the user
7763 selects no, then simply return the error code. */
7764 if (pending_break_support
== AUTO_BOOLEAN_AUTO
7765 && !nquery (_("Make breakpoint pending on "
7766 "future shared library load? ")))
7769 /* At this point, either the user was queried about setting
7770 a pending breakpoint and selected yes, or pending
7771 breakpoint behavior is on and thus a pending breakpoint
7772 is defaulted on behalf of the user. */
7773 copy_arg
= xstrdup (addr_start
);
7774 canonical
.canonical
= ©_arg
;
7776 sals
.sals
= &pending_sal
;
7781 throw_exception (e
);
7791 /* Create a chain of things that always need to be cleaned up. */
7792 old_chain
= make_cleanup (null_cleanup
, 0);
7796 /* Make sure that all storage allocated to SALS gets freed. */
7797 make_cleanup (xfree
, sals
.sals
);
7799 /* Cleanup the canonical array but not its contents. */
7800 make_cleanup (xfree
, canonical
.canonical
);
7803 /* ----------------------------- SNIP -----------------------------
7804 Anything added to the cleanup chain beyond this point is assumed
7805 to be part of a breakpoint. If the breakpoint create succeeds
7806 then the memory is not reclaimed. */
7807 bkpt_chain
= make_cleanup (null_cleanup
, 0);
7809 /* Mark the contents of the canonical for cleanup. These go on
7810 the bkpt_chain and only occur if the breakpoint create fails. */
7811 for (i
= 0; i
< sals
.nelts
; i
++)
7813 if (canonical
.canonical
[i
] != NULL
)
7814 make_cleanup (xfree
, canonical
.canonical
[i
]);
7817 /* Resolve all line numbers to PC's and verify that the addresses
7818 are ok for the target. */
7820 breakpoint_sals_to_pc (&sals
);
7822 /* Fast tracepoints may have additional restrictions on location. */
7823 if (type_wanted
== bp_fast_tracepoint
)
7824 check_fast_tracepoint_sals (gdbarch
, &sals
);
7826 /* Verify that condition can be parsed, before setting any
7827 breakpoints. Allocate a separate condition expression for each
7831 if (parse_condition_and_thread
)
7833 /* Here we only parse 'arg' to separate condition
7834 from thread number, so parsing in context of first
7835 sal is OK. When setting the breakpoint we'll
7836 re-parse it in context of each sal. */
7839 find_condition_and_thread (arg
, sals
.sals
[0].pc
, &cond_string
,
7842 make_cleanup (xfree
, cond_string
);
7846 /* Create a private copy of condition string. */
7849 cond_string
= xstrdup (cond_string
);
7850 make_cleanup (xfree
, cond_string
);
7854 /* If the user is creating a static tracepoint by marker id
7855 (strace -m MARKER_ID), then store the sals index, so that
7856 breakpoint_re_set can try to match up which of the newly
7857 found markers corresponds to this one, and, don't try to
7858 expand multiple locations for each sal, given than SALS
7859 already should contain all sals for MARKER_ID. */
7860 if (type_wanted
== bp_static_tracepoint
7861 && is_marker_spec (canonical
.canonical
[0]))
7865 for (i
= 0; i
< sals
.nelts
; ++i
)
7867 struct symtabs_and_lines expanded
;
7868 struct tracepoint
*tp
;
7869 struct cleanup
*old_chain
;
7872 expanded
.sals
= xmalloc (sizeof (struct symtab_and_line
));
7873 expanded
.sals
[0] = sals
.sals
[i
];
7874 old_chain
= make_cleanup (xfree
, expanded
.sals
);
7876 tp
= XCNEW (struct tracepoint
);
7877 init_breakpoint_sal (&tp
->base
, gdbarch
, expanded
,
7878 canonical
.canonical
[i
],
7879 cond_string
, type_wanted
,
7880 tempflag
? disp_del
: disp_donttouch
,
7881 thread
, task
, ignore_count
, ops
,
7882 from_tty
, enabled
, internal
,
7883 canonical
.special_display
);
7884 /* Given that its possible to have multiple markers with
7885 the same string id, if the user is creating a static
7886 tracepoint by marker id ("strace -m MARKER_ID"), then
7887 store the sals index, so that breakpoint_re_set can
7888 try to match up which of the newly found markers
7889 corresponds to this one */
7890 tp
->static_trace_marker_id_idx
= i
;
7892 install_breakpoint (internal
, &tp
->base
);
7894 do_cleanups (old_chain
);
7898 create_breakpoints_sal (gdbarch
, sals
, &canonical
, cond_string
,
7900 tempflag
? disp_del
: disp_donttouch
,
7901 thread
, task
, ignore_count
, ops
, from_tty
,
7906 struct breakpoint
*b
;
7908 make_cleanup (xfree
, copy_arg
);
7910 b
= set_raw_breakpoint_without_location (gdbarch
, type_wanted
, ops
);
7911 set_breakpoint_number (internal
, b
);
7913 b
->addr_string
= canonical
.canonical
[0];
7914 b
->cond_string
= NULL
;
7915 b
->ignore_count
= ignore_count
;
7916 b
->disposition
= tempflag
? disp_del
: disp_donttouch
;
7917 b
->condition_not_parsed
= 1;
7918 b
->enable_state
= enabled
? bp_enabled
: bp_disabled
;
7919 b
->pspace
= current_program_space
;
7920 b
->py_bp_object
= NULL
;
7922 if (enabled
&& b
->pspace
->executing_startup
7923 && (b
->type
== bp_breakpoint
7924 || b
->type
== bp_hardware_breakpoint
))
7925 b
->enable_state
= bp_startup_disabled
;
7928 /* Do not mention breakpoints with a negative number,
7929 but do notify observers. */
7931 observer_notify_breakpoint_created (b
);
7936 warning (_("Multiple breakpoints were set.\nUse the "
7937 "\"delete\" command to delete unwanted breakpoints."));
7938 prev_breakpoint_count
= prev_bkpt_count
;
7941 /* That's it. Discard the cleanups for data inserted into the
7943 discard_cleanups (bkpt_chain
);
7944 /* But cleanup everything else. */
7945 do_cleanups (old_chain
);
7947 /* error call may happen here - have BKPT_CHAIN already discarded. */
7948 update_global_location_list (1);
7953 /* Set a breakpoint.
7954 ARG is a string describing breakpoint address,
7955 condition, and thread.
7956 FLAG specifies if a breakpoint is hardware on,
7957 and if breakpoint is temporary, using BP_HARDWARE_FLAG
7961 break_command_1 (char *arg
, int flag
, int from_tty
)
7963 int tempflag
= flag
& BP_TEMPFLAG
;
7964 enum bptype type_wanted
= (flag
& BP_HARDWAREFLAG
7965 ? bp_hardware_breakpoint
7968 create_breakpoint (get_current_arch (),
7970 NULL
, 0, 1 /* parse arg */,
7971 tempflag
, type_wanted
,
7972 0 /* Ignore count */,
7973 pending_break_support
,
7974 &bkpt_breakpoint_ops
,
7980 /* Helper function for break_command_1 and disassemble_command. */
7983 resolve_sal_pc (struct symtab_and_line
*sal
)
7987 if (sal
->pc
== 0 && sal
->symtab
!= NULL
)
7989 if (!find_line_pc (sal
->symtab
, sal
->line
, &pc
))
7990 error (_("No line %d in file \"%s\"."),
7991 sal
->line
, sal
->symtab
->filename
);
7994 /* If this SAL corresponds to a breakpoint inserted using a line
7995 number, then skip the function prologue if necessary. */
7996 if (sal
->explicit_line
)
7997 skip_prologue_sal (sal
);
8000 if (sal
->section
== 0 && sal
->symtab
!= NULL
)
8002 struct blockvector
*bv
;
8006 bv
= blockvector_for_pc_sect (sal
->pc
, 0, &b
, sal
->symtab
);
8009 sym
= block_linkage_function (b
);
8012 fixup_symbol_section (sym
, sal
->symtab
->objfile
);
8013 sal
->section
= SYMBOL_OBJ_SECTION (sym
);
8017 /* It really is worthwhile to have the section, so we'll
8018 just have to look harder. This case can be executed
8019 if we have line numbers but no functions (as can
8020 happen in assembly source). */
8022 struct minimal_symbol
*msym
;
8023 struct cleanup
*old_chain
= save_current_space_and_thread ();
8025 switch_to_program_space_and_thread (sal
->pspace
);
8027 msym
= lookup_minimal_symbol_by_pc (sal
->pc
);
8029 sal
->section
= SYMBOL_OBJ_SECTION (msym
);
8031 do_cleanups (old_chain
);
8038 break_command (char *arg
, int from_tty
)
8040 break_command_1 (arg
, 0, from_tty
);
8044 tbreak_command (char *arg
, int from_tty
)
8046 break_command_1 (arg
, BP_TEMPFLAG
, from_tty
);
8050 hbreak_command (char *arg
, int from_tty
)
8052 break_command_1 (arg
, BP_HARDWAREFLAG
, from_tty
);
8056 thbreak_command (char *arg
, int from_tty
)
8058 break_command_1 (arg
, (BP_TEMPFLAG
| BP_HARDWAREFLAG
), from_tty
);
8062 stop_command (char *arg
, int from_tty
)
8064 printf_filtered (_("Specify the type of breakpoint to set.\n\
8065 Usage: stop in <function | address>\n\
8066 stop at <line>\n"));
8070 stopin_command (char *arg
, int from_tty
)
8074 if (arg
== (char *) NULL
)
8076 else if (*arg
!= '*')
8081 /* Look for a ':'. If this is a line number specification, then
8082 say it is bad, otherwise, it should be an address or
8083 function/method name. */
8084 while (*argptr
&& !hasColon
)
8086 hasColon
= (*argptr
== ':');
8091 badInput
= (*argptr
!= ':'); /* Not a class::method */
8093 badInput
= isdigit (*arg
); /* a simple line number */
8097 printf_filtered (_("Usage: stop in <function | address>\n"));
8099 break_command_1 (arg
, 0, from_tty
);
8103 stopat_command (char *arg
, int from_tty
)
8107 if (arg
== (char *) NULL
|| *arg
== '*') /* no line number */
8114 /* Look for a ':'. If there is a '::' then get out, otherwise
8115 it is probably a line number. */
8116 while (*argptr
&& !hasColon
)
8118 hasColon
= (*argptr
== ':');
8123 badInput
= (*argptr
== ':'); /* we have class::method */
8125 badInput
= !isdigit (*arg
); /* not a line number */
8129 printf_filtered (_("Usage: stop at <line>\n"));
8131 break_command_1 (arg
, 0, from_tty
);
8134 /* Implement the "breakpoint_hit" breakpoint_ops method for
8135 ranged breakpoints. */
8138 breakpoint_hit_ranged_breakpoint (const struct bp_location
*bl
,
8139 struct address_space
*aspace
,
8142 return breakpoint_address_match_range (bl
->pspace
->aspace
, bl
->address
,
8143 bl
->length
, aspace
, bp_addr
);
8146 /* Implement the "resources_needed" breakpoint_ops method for
8147 ranged breakpoints. */
8150 resources_needed_ranged_breakpoint (const struct bp_location
*bl
)
8152 return target_ranged_break_num_registers ();
8155 /* Implement the "print_it" breakpoint_ops method for
8156 ranged breakpoints. */
8158 static enum print_stop_action
8159 print_it_ranged_breakpoint (bpstat bs
)
8161 struct breakpoint
*b
= bs
->breakpoint_at
;
8162 struct bp_location
*bl
= b
->loc
;
8164 gdb_assert (b
->type
== bp_hardware_breakpoint
);
8166 /* Ranged breakpoints have only one location. */
8167 gdb_assert (bl
&& bl
->next
== NULL
);
8169 annotate_breakpoint (b
->number
);
8170 if (b
->disposition
== disp_del
)
8171 ui_out_text (uiout
, "\nTemporary ranged breakpoint ");
8173 ui_out_text (uiout
, "\nRanged breakpoint ");
8174 if (ui_out_is_mi_like_p (uiout
))
8176 ui_out_field_string (uiout
, "reason",
8177 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT
));
8178 ui_out_field_string (uiout
, "disp", bpdisp_text (b
->disposition
));
8180 ui_out_field_int (uiout
, "bkptno", b
->number
);
8181 ui_out_text (uiout
, ", ");
8183 return PRINT_SRC_AND_LOC
;
8186 /* Implement the "print_one" breakpoint_ops method for
8187 ranged breakpoints. */
8190 print_one_ranged_breakpoint (struct breakpoint
*b
,
8191 struct bp_location
**last_loc
)
8193 struct bp_location
*bl
= b
->loc
;
8194 struct value_print_options opts
;
8196 /* Ranged breakpoints have only one location. */
8197 gdb_assert (bl
&& bl
->next
== NULL
);
8199 get_user_print_options (&opts
);
8201 if (opts
.addressprint
)
8202 /* We don't print the address range here, it will be printed later
8203 by print_one_detail_ranged_breakpoint. */
8204 ui_out_field_skip (uiout
, "addr");
8206 print_breakpoint_location (b
, bl
);
8210 /* Implement the "print_one_detail" breakpoint_ops method for
8211 ranged breakpoints. */
8214 print_one_detail_ranged_breakpoint (const struct breakpoint
*b
,
8215 struct ui_out
*uiout
)
8217 CORE_ADDR address_start
, address_end
;
8218 struct bp_location
*bl
= b
->loc
;
8219 struct ui_stream
*stb
= ui_out_stream_new (uiout
);
8220 struct cleanup
*cleanup
= make_cleanup_ui_out_stream_delete (stb
);
8224 address_start
= bl
->address
;
8225 address_end
= address_start
+ bl
->length
- 1;
8227 ui_out_text (uiout
, "\taddress range: ");
8228 fprintf_unfiltered (stb
->stream
, "[%s, %s]",
8229 print_core_address (bl
->gdbarch
, address_start
),
8230 print_core_address (bl
->gdbarch
, address_end
));
8231 ui_out_field_stream (uiout
, "addr", stb
);
8232 ui_out_text (uiout
, "\n");
8234 do_cleanups (cleanup
);
8237 /* Implement the "print_mention" breakpoint_ops method for
8238 ranged breakpoints. */
8241 print_mention_ranged_breakpoint (struct breakpoint
*b
)
8243 struct bp_location
*bl
= b
->loc
;
8246 gdb_assert (b
->type
== bp_hardware_breakpoint
);
8248 if (ui_out_is_mi_like_p (uiout
))
8251 printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
8252 b
->number
, paddress (bl
->gdbarch
, bl
->address
),
8253 paddress (bl
->gdbarch
, bl
->address
+ bl
->length
- 1));
8256 /* Implement the "print_recreate" breakpoint_ops method for
8257 ranged breakpoints. */
8260 print_recreate_ranged_breakpoint (struct breakpoint
*b
, struct ui_file
*fp
)
8262 fprintf_unfiltered (fp
, "break-range %s, %s", b
->addr_string
,
8263 b
->addr_string_range_end
);
8264 print_recreate_thread (b
, fp
);
8267 /* The breakpoint_ops structure to be used in ranged breakpoints. */
8269 static struct breakpoint_ops ranged_breakpoint_ops
;
8271 /* Find the address where the end of the breakpoint range should be
8272 placed, given the SAL of the end of the range. This is so that if
8273 the user provides a line number, the end of the range is set to the
8274 last instruction of the given line. */
8277 find_breakpoint_range_end (struct symtab_and_line sal
)
8281 /* If the user provided a PC value, use it. Otherwise,
8282 find the address of the end of the given location. */
8283 if (sal
.explicit_pc
)
8290 ret
= find_line_pc_range (sal
, &start
, &end
);
8292 error (_("Could not find location of the end of the range."));
8294 /* find_line_pc_range returns the start of the next line. */
8301 /* Implement the "break-range" CLI command. */
8304 break_range_command (char *arg
, int from_tty
)
8306 char *arg_start
, *addr_string_start
, *addr_string_end
;
8307 struct linespec_result canonical_start
, canonical_end
;
8308 int bp_count
, can_use_bp
, length
;
8310 struct breakpoint
*b
;
8311 struct symtab_and_line sal_start
, sal_end
;
8312 struct symtabs_and_lines sals_start
, sals_end
;
8313 struct cleanup
*cleanup_bkpt
;
8315 /* We don't support software ranged breakpoints. */
8316 if (target_ranged_break_num_registers () < 0)
8317 error (_("This target does not support hardware ranged breakpoints."));
8319 bp_count
= hw_breakpoint_used_count ();
8320 bp_count
+= target_ranged_break_num_registers ();
8321 can_use_bp
= target_can_use_hardware_watchpoint (bp_hardware_breakpoint
,
8324 error (_("Hardware breakpoints used exceeds limit."));
8326 if (arg
== NULL
|| arg
[0] == '\0')
8327 error(_("No address range specified."));
8329 sals_start
.sals
= NULL
;
8330 sals_start
.nelts
= 0;
8331 init_linespec_result (&canonical_start
);
8333 while (*arg
== ' ' || *arg
== '\t')
8336 parse_breakpoint_sals (&arg
, &sals_start
, &canonical_start
);
8338 sal_start
= sals_start
.sals
[0];
8339 addr_string_start
= canonical_start
.canonical
[0];
8340 cleanup_bkpt
= make_cleanup (xfree
, addr_string_start
);
8341 xfree (sals_start
.sals
);
8342 xfree (canonical_start
.canonical
);
8345 error (_("Too few arguments."));
8346 else if (sals_start
.nelts
== 0)
8347 error (_("Could not find location of the beginning of the range."));
8348 else if (sals_start
.nelts
!= 1)
8349 error (_("Cannot create a ranged breakpoint with multiple locations."));
8351 resolve_sal_pc (&sal_start
);
8353 arg
++; /* Skip the comma. */
8354 while (*arg
== ' ' || *arg
== '\t')
8357 /* Parse the end location. */
8359 sals_end
.sals
= NULL
;
8361 init_linespec_result (&canonical_end
);
8364 /* We call decode_line_1 directly here instead of using
8365 parse_breakpoint_sals because we need to specify the start location's
8366 symtab and line as the default symtab and line for the end of the
8367 range. This makes it possible to have ranges like "foo.c:27, +14",
8368 where +14 means 14 lines from the start location. */
8369 sals_end
= decode_line_1 (&arg
, 1, sal_start
.symtab
, sal_start
.line
,
8372 /* canonical_end can be NULL if it was of the form "*0xdeadbeef". */
8373 if (canonical_end
.canonical
== NULL
)
8374 canonical_end
.canonical
= xcalloc (1, sizeof (char *));
8375 /* Add the string if not present. */
8376 if (arg_start
!= arg
&& canonical_end
.canonical
[0] == NULL
)
8377 canonical_end
.canonical
[0] = savestring (arg_start
, arg
- arg_start
);
8379 sal_end
= sals_end
.sals
[0];
8380 addr_string_end
= canonical_end
.canonical
[0];
8381 make_cleanup (xfree
, addr_string_end
);
8382 xfree (sals_end
.sals
);
8383 xfree (canonical_end
.canonical
);
8385 if (sals_end
.nelts
== 0)
8386 error (_("Could not find location of the end of the range."));
8387 else if (sals_end
.nelts
!= 1)
8388 error (_("Cannot create a ranged breakpoint with multiple locations."));
8390 resolve_sal_pc (&sal_end
);
8392 end
= find_breakpoint_range_end (sal_end
);
8393 if (sal_start
.pc
> end
)
8394 error (_("Invalid address range, end precedes start."));
8396 length
= end
- sal_start
.pc
+ 1;
8398 /* Length overflowed. */
8399 error (_("Address range too large."));
8400 else if (length
== 1)
8402 /* This range is simple enough to be handled by
8403 the `hbreak' command. */
8404 hbreak_command (addr_string_start
, 1);
8406 do_cleanups (cleanup_bkpt
);
8411 /* Now set up the breakpoint. */
8412 b
= set_raw_breakpoint (get_current_arch (), sal_start
,
8413 bp_hardware_breakpoint
, &ranged_breakpoint_ops
);
8414 set_breakpoint_count (breakpoint_count
+ 1);
8415 b
->number
= breakpoint_count
;
8416 b
->disposition
= disp_donttouch
;
8417 b
->addr_string
= addr_string_start
;
8418 b
->addr_string_range_end
= addr_string_end
;
8419 b
->loc
->length
= length
;
8421 discard_cleanups (cleanup_bkpt
);
8424 observer_notify_breakpoint_created (b
);
8425 update_global_location_list (1);
8428 /* Return non-zero if EXP is verified as constant. Returned zero
8429 means EXP is variable. Also the constant detection may fail for
8430 some constant expressions and in such case still falsely return
8433 watchpoint_exp_is_const (const struct expression
*exp
)
8441 /* We are only interested in the descriptor of each element. */
8442 operator_length (exp
, i
, &oplenp
, &argsp
);
8445 switch (exp
->elts
[i
].opcode
)
8455 case BINOP_LOGICAL_AND
:
8456 case BINOP_LOGICAL_OR
:
8457 case BINOP_BITWISE_AND
:
8458 case BINOP_BITWISE_IOR
:
8459 case BINOP_BITWISE_XOR
:
8461 case BINOP_NOTEQUAL
:
8477 case TERNOP_SLICE_COUNT
:
8489 case OP_OBJC_NSSTRING
:
8492 case UNOP_LOGICAL_NOT
:
8493 case UNOP_COMPLEMENT
:
8496 /* Unary, binary and ternary operators: We have to check
8497 their operands. If they are constant, then so is the
8498 result of that operation. For instance, if A and B are
8499 determined to be constants, then so is "A + B".
8501 UNOP_IND is one exception to the rule above, because the
8502 value of *ADDR is not necessarily a constant, even when
8507 /* Check whether the associated symbol is a constant.
8509 We use SYMBOL_CLASS rather than TYPE_CONST because it's
8510 possible that a buggy compiler could mark a variable as
8511 constant even when it is not, and TYPE_CONST would return
8512 true in this case, while SYMBOL_CLASS wouldn't.
8514 We also have to check for function symbols because they
8515 are always constant. */
8517 struct symbol
*s
= exp
->elts
[i
+ 2].symbol
;
8519 if (SYMBOL_CLASS (s
) != LOC_BLOCK
8520 && SYMBOL_CLASS (s
) != LOC_CONST
8521 && SYMBOL_CLASS (s
) != LOC_CONST_BYTES
)
8526 /* The default action is to return 0 because we are using
8527 the optimistic approach here: If we don't know something,
8528 then it is not a constant. */
8537 /* Implement the "dtor" breakpoint_ops method for watchpoints. */
8540 dtor_watchpoint (struct breakpoint
*self
)
8542 struct watchpoint
*w
= (struct watchpoint
*) self
;
8544 xfree (w
->cond_exp
);
8546 xfree (w
->exp_string
);
8547 xfree (w
->exp_string_reparse
);
8548 value_free (w
->val
);
8550 base_breakpoint_ops
.dtor (self
);
8553 /* Implement the "re_set" breakpoint_ops method for watchpoints. */
8556 re_set_watchpoint (struct breakpoint
*b
)
8558 struct watchpoint
*w
= (struct watchpoint
*) b
;
8560 /* Watchpoint can be either on expression using entirely global
8561 variables, or it can be on local variables.
8563 Watchpoints of the first kind are never auto-deleted, and even
8564 persist across program restarts. Since they can use variables
8565 from shared libraries, we need to reparse expression as libraries
8566 are loaded and unloaded.
8568 Watchpoints on local variables can also change meaning as result
8569 of solib event. For example, if a watchpoint uses both a local
8570 and a global variables in expression, it's a local watchpoint,
8571 but unloading of a shared library will make the expression
8572 invalid. This is not a very common use case, but we still
8573 re-evaluate expression, to avoid surprises to the user.
8575 Note that for local watchpoints, we re-evaluate it only if
8576 watchpoints frame id is still valid. If it's not, it means the
8577 watchpoint is out of scope and will be deleted soon. In fact,
8578 I'm not sure we'll ever be called in this case.
8580 If a local watchpoint's frame id is still valid, then
8581 w->exp_valid_block is likewise valid, and we can safely use it.
8583 Don't do anything about disabled watchpoints, since they will be
8584 reevaluated again when enabled. */
8585 update_watchpoint (w
, 1 /* reparse */);
8588 /* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
8591 insert_watchpoint (struct bp_location
*bl
)
8593 struct watchpoint
*w
= (struct watchpoint
*) bl
->owner
;
8594 int length
= w
->exact
? 1 : bl
->length
;
8596 return target_insert_watchpoint (bl
->address
, length
, bl
->watchpoint_type
,
8600 /* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
8603 remove_watchpoint (struct bp_location
*bl
)
8605 struct watchpoint
*w
= (struct watchpoint
*) bl
->owner
;
8606 int length
= w
->exact
? 1 : bl
->length
;
8608 return target_remove_watchpoint (bl
->address
, length
, bl
->watchpoint_type
,
8613 breakpoint_hit_watchpoint (const struct bp_location
*bl
,
8614 struct address_space
*aspace
, CORE_ADDR bp_addr
)
8616 struct breakpoint
*b
= bl
->owner
;
8617 struct watchpoint
*w
= (struct watchpoint
*) b
;
8619 /* Continuable hardware watchpoints are treated as non-existent if the
8620 reason we stopped wasn't a hardware watchpoint (we didn't stop on
8621 some data address). Otherwise gdb won't stop on a break instruction
8622 in the code (not from a breakpoint) when a hardware watchpoint has
8623 been defined. Also skip watchpoints which we know did not trigger
8624 (did not match the data address). */
8625 if (is_hardware_watchpoint (b
)
8626 && w
->watchpoint_triggered
== watch_triggered_no
)
8633 check_status_watchpoint (bpstat bs
)
8635 gdb_assert (is_watchpoint (bs
->breakpoint_at
));
8637 bpstat_check_watchpoint (bs
);
8640 /* Implement the "resources_needed" breakpoint_ops method for
8641 hardware watchpoints. */
8644 resources_needed_watchpoint (const struct bp_location
*bl
)
8646 struct watchpoint
*w
= (struct watchpoint
*) bl
->owner
;
8647 int length
= w
->exact
? 1 : bl
->length
;
8649 return target_region_ok_for_hw_watchpoint (bl
->address
, length
);
8652 /* Implement the "works_in_software_mode" breakpoint_ops method for
8653 hardware watchpoints. */
8656 works_in_software_mode_watchpoint (const struct breakpoint
*b
)
8658 /* Read and access watchpoints only work with hardware support. */
8659 return b
->type
== bp_watchpoint
|| b
->type
== bp_hardware_watchpoint
;
8662 static enum print_stop_action
8663 print_it_watchpoint (bpstat bs
)
8665 struct cleanup
*old_chain
;
8666 struct breakpoint
*b
;
8667 const struct bp_location
*bl
;
8668 struct ui_stream
*stb
;
8669 enum print_stop_action result
;
8670 struct watchpoint
*w
;
8672 gdb_assert (bs
->bp_location_at
!= NULL
);
8674 bl
= bs
->bp_location_at
;
8675 b
= bs
->breakpoint_at
;
8676 w
= (struct watchpoint
*) b
;
8678 stb
= ui_out_stream_new (uiout
);
8679 old_chain
= make_cleanup_ui_out_stream_delete (stb
);
8684 case bp_hardware_watchpoint
:
8685 annotate_watchpoint (b
->number
);
8686 if (ui_out_is_mi_like_p (uiout
))
8689 async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER
));
8691 make_cleanup_ui_out_tuple_begin_end (uiout
, "value");
8692 ui_out_text (uiout
, "\nOld value = ");
8693 watchpoint_value_print (bs
->old_val
, stb
->stream
);
8694 ui_out_field_stream (uiout
, "old", stb
);
8695 ui_out_text (uiout
, "\nNew value = ");
8696 watchpoint_value_print (w
->val
, stb
->stream
);
8697 ui_out_field_stream (uiout
, "new", stb
);
8698 ui_out_text (uiout
, "\n");
8699 /* More than one watchpoint may have been triggered. */
8700 result
= PRINT_UNKNOWN
;
8703 case bp_read_watchpoint
:
8704 if (ui_out_is_mi_like_p (uiout
))
8707 async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER
));
8709 make_cleanup_ui_out_tuple_begin_end (uiout
, "value");
8710 ui_out_text (uiout
, "\nValue = ");
8711 watchpoint_value_print (w
->val
, stb
->stream
);
8712 ui_out_field_stream (uiout
, "value", stb
);
8713 ui_out_text (uiout
, "\n");
8714 result
= PRINT_UNKNOWN
;
8717 case bp_access_watchpoint
:
8718 if (bs
->old_val
!= NULL
)
8720 annotate_watchpoint (b
->number
);
8721 if (ui_out_is_mi_like_p (uiout
))
8724 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER
));
8726 make_cleanup_ui_out_tuple_begin_end (uiout
, "value");
8727 ui_out_text (uiout
, "\nOld value = ");
8728 watchpoint_value_print (bs
->old_val
, stb
->stream
);
8729 ui_out_field_stream (uiout
, "old", stb
);
8730 ui_out_text (uiout
, "\nNew value = ");
8735 if (ui_out_is_mi_like_p (uiout
))
8738 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER
));
8739 make_cleanup_ui_out_tuple_begin_end (uiout
, "value");
8740 ui_out_text (uiout
, "\nValue = ");
8742 watchpoint_value_print (w
->val
, stb
->stream
);
8743 ui_out_field_stream (uiout
, "new", stb
);
8744 ui_out_text (uiout
, "\n");
8745 result
= PRINT_UNKNOWN
;
8748 result
= PRINT_UNKNOWN
;
8751 do_cleanups (old_chain
);
8755 /* Implement the "print_mention" breakpoint_ops method for hardware
8759 print_mention_watchpoint (struct breakpoint
*b
)
8761 struct cleanup
*ui_out_chain
;
8762 struct watchpoint
*w
= (struct watchpoint
*) b
;
8767 ui_out_text (uiout
, "Watchpoint ");
8768 ui_out_chain
= make_cleanup_ui_out_tuple_begin_end (uiout
, "wpt");
8770 case bp_hardware_watchpoint
:
8771 ui_out_text (uiout
, "Hardware watchpoint ");
8772 ui_out_chain
= make_cleanup_ui_out_tuple_begin_end (uiout
, "wpt");
8774 case bp_read_watchpoint
:
8775 ui_out_text (uiout
, "Hardware read watchpoint ");
8776 ui_out_chain
= make_cleanup_ui_out_tuple_begin_end (uiout
, "hw-rwpt");
8778 case bp_access_watchpoint
:
8779 ui_out_text (uiout
, "Hardware access (read/write) watchpoint ");
8780 ui_out_chain
= make_cleanup_ui_out_tuple_begin_end (uiout
, "hw-awpt");
8783 internal_error (__FILE__
, __LINE__
,
8784 _("Invalid hardware watchpoint type."));
8787 ui_out_field_int (uiout
, "number", b
->number
);
8788 ui_out_text (uiout
, ": ");
8789 ui_out_field_string (uiout
, "exp", w
->exp_string
);
8790 do_cleanups (ui_out_chain
);
8793 /* Implement the "print_recreate" breakpoint_ops method for
8797 print_recreate_watchpoint (struct breakpoint
*b
, struct ui_file
*fp
)
8799 struct watchpoint
*w
= (struct watchpoint
*) b
;
8804 case bp_hardware_watchpoint
:
8805 fprintf_unfiltered (fp
, "watch");
8807 case bp_read_watchpoint
:
8808 fprintf_unfiltered (fp
, "rwatch");
8810 case bp_access_watchpoint
:
8811 fprintf_unfiltered (fp
, "awatch");
8814 internal_error (__FILE__
, __LINE__
,
8815 _("Invalid watchpoint type."));
8818 fprintf_unfiltered (fp
, " %s", w
->exp_string
);
8819 print_recreate_thread (b
, fp
);
8822 /* The breakpoint_ops structure to be used in hardware watchpoints. */
8824 static struct breakpoint_ops watchpoint_breakpoint_ops
;
8826 /* Implement the "insert" breakpoint_ops method for
8827 masked hardware watchpoints. */
8830 insert_masked_watchpoint (struct bp_location
*bl
)
8832 struct watchpoint
*w
= (struct watchpoint
*) bl
->owner
;
8834 return target_insert_mask_watchpoint (bl
->address
, w
->hw_wp_mask
,
8835 bl
->watchpoint_type
);
8838 /* Implement the "remove" breakpoint_ops method for
8839 masked hardware watchpoints. */
8842 remove_masked_watchpoint (struct bp_location
*bl
)
8844 struct watchpoint
*w
= (struct watchpoint
*) bl
->owner
;
8846 return target_remove_mask_watchpoint (bl
->address
, w
->hw_wp_mask
,
8847 bl
->watchpoint_type
);
8850 /* Implement the "resources_needed" breakpoint_ops method for
8851 masked hardware watchpoints. */
8854 resources_needed_masked_watchpoint (const struct bp_location
*bl
)
8856 struct watchpoint
*w
= (struct watchpoint
*) bl
->owner
;
8858 return target_masked_watch_num_registers (bl
->address
, w
->hw_wp_mask
);
8861 /* Implement the "works_in_software_mode" breakpoint_ops method for
8862 masked hardware watchpoints. */
8865 works_in_software_mode_masked_watchpoint (const struct breakpoint
*b
)
8870 /* Implement the "print_it" breakpoint_ops method for
8871 masked hardware watchpoints. */
8873 static enum print_stop_action
8874 print_it_masked_watchpoint (bpstat bs
)
8876 struct breakpoint
*b
= bs
->breakpoint_at
;
8878 /* Masked watchpoints have only one location. */
8879 gdb_assert (b
->loc
&& b
->loc
->next
== NULL
);
8883 case bp_hardware_watchpoint
:
8884 annotate_watchpoint (b
->number
);
8885 if (ui_out_is_mi_like_p (uiout
))
8888 async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER
));
8891 case bp_read_watchpoint
:
8892 if (ui_out_is_mi_like_p (uiout
))
8895 async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER
));
8898 case bp_access_watchpoint
:
8899 if (ui_out_is_mi_like_p (uiout
))
8902 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER
));
8905 internal_error (__FILE__
, __LINE__
,
8906 _("Invalid hardware watchpoint type."));
8910 ui_out_text (uiout
, _("\n\
8911 Check the underlying instruction at PC for the memory\n\
8912 address and value which triggered this watchpoint.\n"));
8913 ui_out_text (uiout
, "\n");
8915 /* More than one watchpoint may have been triggered. */
8916 return PRINT_UNKNOWN
;
8919 /* Implement the "print_one_detail" breakpoint_ops method for
8920 masked hardware watchpoints. */
8923 print_one_detail_masked_watchpoint (const struct breakpoint
*b
,
8924 struct ui_out
*uiout
)
8926 struct watchpoint
*w
= (struct watchpoint
*) b
;
8928 /* Masked watchpoints have only one location. */
8929 gdb_assert (b
->loc
&& b
->loc
->next
== NULL
);
8931 ui_out_text (uiout
, "\tmask ");
8932 ui_out_field_core_addr (uiout
, "mask", b
->loc
->gdbarch
, w
->hw_wp_mask
);
8933 ui_out_text (uiout
, "\n");
8936 /* Implement the "print_mention" breakpoint_ops method for
8937 masked hardware watchpoints. */
8940 print_mention_masked_watchpoint (struct breakpoint
*b
)
8942 struct watchpoint
*w
= (struct watchpoint
*) b
;
8943 struct cleanup
*ui_out_chain
;
8947 case bp_hardware_watchpoint
:
8948 ui_out_text (uiout
, "Masked hardware watchpoint ");
8949 ui_out_chain
= make_cleanup_ui_out_tuple_begin_end (uiout
, "wpt");
8951 case bp_read_watchpoint
:
8952 ui_out_text (uiout
, "Masked hardware read watchpoint ");
8953 ui_out_chain
= make_cleanup_ui_out_tuple_begin_end (uiout
, "hw-rwpt");
8955 case bp_access_watchpoint
:
8956 ui_out_text (uiout
, "Masked hardware access (read/write) watchpoint ");
8957 ui_out_chain
= make_cleanup_ui_out_tuple_begin_end (uiout
, "hw-awpt");
8960 internal_error (__FILE__
, __LINE__
,
8961 _("Invalid hardware watchpoint type."));
8964 ui_out_field_int (uiout
, "number", b
->number
);
8965 ui_out_text (uiout
, ": ");
8966 ui_out_field_string (uiout
, "exp", w
->exp_string
);
8967 do_cleanups (ui_out_chain
);
8970 /* Implement the "print_recreate" breakpoint_ops method for
8971 masked hardware watchpoints. */
8974 print_recreate_masked_watchpoint (struct breakpoint
*b
, struct ui_file
*fp
)
8976 struct watchpoint
*w
= (struct watchpoint
*) b
;
8981 case bp_hardware_watchpoint
:
8982 fprintf_unfiltered (fp
, "watch");
8984 case bp_read_watchpoint
:
8985 fprintf_unfiltered (fp
, "rwatch");
8987 case bp_access_watchpoint
:
8988 fprintf_unfiltered (fp
, "awatch");
8991 internal_error (__FILE__
, __LINE__
,
8992 _("Invalid hardware watchpoint type."));
8995 sprintf_vma (tmp
, w
->hw_wp_mask
);
8996 fprintf_unfiltered (fp
, " %s mask 0x%s", w
->exp_string
, tmp
);
8997 print_recreate_thread (b
, fp
);
9000 /* The breakpoint_ops structure to be used in masked hardware watchpoints. */
9002 static struct breakpoint_ops masked_watchpoint_breakpoint_ops
;
9004 /* Tell whether the given watchpoint is a masked hardware watchpoint. */
9007 is_masked_watchpoint (const struct breakpoint
*b
)
9009 return b
->ops
== &masked_watchpoint_breakpoint_ops
;
9012 /* accessflag: hw_write: watch write,
9013 hw_read: watch read,
9014 hw_access: watch access (read or write) */
9016 watch_command_1 (char *arg
, int accessflag
, int from_tty
,
9017 int just_location
, int internal
)
9019 volatile struct gdb_exception e
;
9020 struct breakpoint
*b
, *scope_breakpoint
= NULL
;
9021 struct expression
*exp
;
9022 struct block
*exp_valid_block
= NULL
, *cond_exp_valid_block
= NULL
;
9023 struct value
*val
, *mark
, *result
;
9024 struct frame_info
*frame
;
9025 char *exp_start
= NULL
;
9026 char *exp_end
= NULL
;
9027 char *tok
, *end_tok
;
9029 char *cond_start
= NULL
;
9030 char *cond_end
= NULL
;
9031 enum bptype bp_type
;
9034 /* Flag to indicate whether we are going to use masks for
9035 the hardware watchpoint. */
9038 struct watchpoint
*w
;
9040 /* Make sure that we actually have parameters to parse. */
9041 if (arg
!= NULL
&& arg
[0] != '\0')
9045 /* Look for "parameter value" pairs at the end
9046 of the arguments string. */
9047 for (tok
= arg
+ strlen (arg
) - 1; tok
> arg
; tok
--)
9049 /* Skip whitespace at the end of the argument list. */
9050 while (tok
> arg
&& (*tok
== ' ' || *tok
== '\t'))
9053 /* Find the beginning of the last token.
9054 This is the value of the parameter. */
9055 while (tok
> arg
&& (*tok
!= ' ' && *tok
!= '\t'))
9057 value_start
= tok
+ 1;
9059 /* Skip whitespace. */
9060 while (tok
> arg
&& (*tok
== ' ' || *tok
== '\t'))
9065 /* Find the beginning of the second to last token.
9066 This is the parameter itself. */
9067 while (tok
> arg
&& (*tok
!= ' ' && *tok
!= '\t'))
9070 toklen
= end_tok
- tok
+ 1;
9072 if (toklen
== 6 && !strncmp (tok
, "thread", 6))
9074 /* At this point we've found a "thread" token, which means
9075 the user is trying to set a watchpoint that triggers
9076 only in a specific thread. */
9080 error(_("You can specify only one thread."));
9082 /* Extract the thread ID from the next token. */
9083 thread
= strtol (value_start
, &endp
, 0);
9085 /* Check if the user provided a valid numeric value for the
9087 if (*endp
!= ' ' && *endp
!= '\t' && *endp
!= '\0')
9088 error (_("Invalid thread ID specification %s."), value_start
);
9090 /* Check if the thread actually exists. */
9091 if (!valid_thread_id (thread
))
9092 error (_("Unknown thread %d."), thread
);
9094 else if (toklen
== 4 && !strncmp (tok
, "mask", 4))
9096 /* We've found a "mask" token, which means the user wants to
9097 create a hardware watchpoint that is going to have the mask
9099 struct value
*mask_value
, *mark
;
9102 error(_("You can specify only one mask."));
9104 use_mask
= just_location
= 1;
9106 mark
= value_mark ();
9107 mask_value
= parse_to_comma_and_eval (&value_start
);
9108 mask
= value_as_address (mask_value
);
9109 value_free_to_mark (mark
);
9112 /* We didn't recognize what we found. We should stop here. */
9115 /* Truncate the string and get rid of the "parameter value" pair before
9116 the arguments string is parsed by the parse_exp_1 function. */
9121 /* Parse the rest of the arguments. */
9122 innermost_block
= NULL
;
9124 exp
= parse_exp_1 (&arg
, 0, 0);
9126 /* Remove trailing whitespace from the expression before saving it.
9127 This makes the eventual display of the expression string a bit
9129 while (exp_end
> exp_start
&& (exp_end
[-1] == ' ' || exp_end
[-1] == '\t'))
9132 /* Checking if the expression is not constant. */
9133 if (watchpoint_exp_is_const (exp
))
9137 len
= exp_end
- exp_start
;
9138 while (len
> 0 && isspace (exp_start
[len
- 1]))
9140 error (_("Cannot watch constant value `%.*s'."), len
, exp_start
);
9143 exp_valid_block
= innermost_block
;
9144 mark
= value_mark ();
9145 fetch_subexp_value (exp
, &pc
, &val
, &result
, NULL
);
9151 exp_valid_block
= NULL
;
9152 val
= value_addr (result
);
9153 release_value (val
);
9154 value_free_to_mark (mark
);
9158 ret
= target_masked_watch_num_registers (value_as_address (val
),
9161 error (_("This target does not support masked watchpoints."));
9163 error (_("Invalid mask or memory region."));
9166 else if (val
!= NULL
)
9167 release_value (val
);
9169 tok
= skip_spaces (arg
);
9170 end_tok
= skip_to_space (tok
);
9172 toklen
= end_tok
- tok
;
9173 if (toklen
>= 1 && strncmp (tok
, "if", toklen
) == 0)
9175 struct expression
*cond
;
9177 innermost_block
= NULL
;
9178 tok
= cond_start
= end_tok
+ 1;
9179 cond
= parse_exp_1 (&tok
, 0, 0);
9181 /* The watchpoint expression may not be local, but the condition
9182 may still be. E.g.: `watch global if local > 0'. */
9183 cond_exp_valid_block
= innermost_block
;
9189 error (_("Junk at end of command."));
9191 if (accessflag
== hw_read
)
9192 bp_type
= bp_read_watchpoint
;
9193 else if (accessflag
== hw_access
)
9194 bp_type
= bp_access_watchpoint
;
9196 bp_type
= bp_hardware_watchpoint
;
9198 frame
= block_innermost_frame (exp_valid_block
);
9200 /* If the expression is "local", then set up a "watchpoint scope"
9201 breakpoint at the point where we've left the scope of the watchpoint
9202 expression. Create the scope breakpoint before the watchpoint, so
9203 that we will encounter it first in bpstat_stop_status. */
9204 if (exp_valid_block
&& frame
)
9206 if (frame_id_p (frame_unwind_caller_id (frame
)))
9209 = create_internal_breakpoint (frame_unwind_caller_arch (frame
),
9210 frame_unwind_caller_pc (frame
),
9211 bp_watchpoint_scope
,
9212 &momentary_breakpoint_ops
);
9214 scope_breakpoint
->enable_state
= bp_enabled
;
9216 /* Automatically delete the breakpoint when it hits. */
9217 scope_breakpoint
->disposition
= disp_del
;
9219 /* Only break in the proper frame (help with recursion). */
9220 scope_breakpoint
->frame_id
= frame_unwind_caller_id (frame
);
9222 /* Set the address at which we will stop. */
9223 scope_breakpoint
->loc
->gdbarch
9224 = frame_unwind_caller_arch (frame
);
9225 scope_breakpoint
->loc
->requested_address
9226 = frame_unwind_caller_pc (frame
);
9227 scope_breakpoint
->loc
->address
9228 = adjust_breakpoint_address (scope_breakpoint
->loc
->gdbarch
,
9229 scope_breakpoint
->loc
->requested_address
,
9230 scope_breakpoint
->type
);
9234 /* Now set up the breakpoint. */
9236 w
= XCNEW (struct watchpoint
);
9239 init_raw_breakpoint_without_location (b
, NULL
, bp_type
,
9240 &masked_watchpoint_breakpoint_ops
);
9242 init_raw_breakpoint_without_location (b
, NULL
, bp_type
,
9243 &watchpoint_breakpoint_ops
);
9245 b
->disposition
= disp_donttouch
;
9246 b
->pspace
= current_program_space
;
9248 w
->exp_valid_block
= exp_valid_block
;
9249 w
->cond_exp_valid_block
= cond_exp_valid_block
;
9252 struct type
*t
= value_type (val
);
9253 CORE_ADDR addr
= value_as_address (val
);
9256 t
= check_typedef (TYPE_TARGET_TYPE (check_typedef (t
)));
9257 name
= type_to_string (t
);
9259 w
->exp_string_reparse
= xstrprintf ("* (%s *) %s", name
,
9260 core_addr_to_string (addr
));
9263 w
->exp_string
= xstrprintf ("-location %.*s",
9264 (int) (exp_end
- exp_start
), exp_start
);
9266 /* The above expression is in C. */
9267 b
->language
= language_c
;
9270 w
->exp_string
= savestring (exp_start
, exp_end
- exp_start
);
9274 w
->hw_wp_mask
= mask
;
9283 b
->cond_string
= savestring (cond_start
, cond_end
- cond_start
);
9289 w
->watchpoint_frame
= get_frame_id (frame
);
9290 w
->watchpoint_thread
= inferior_ptid
;
9294 w
->watchpoint_frame
= null_frame_id
;
9295 w
->watchpoint_thread
= null_ptid
;
9298 if (scope_breakpoint
!= NULL
)
9300 /* The scope breakpoint is related to the watchpoint. We will
9301 need to act on them together. */
9302 b
->related_breakpoint
= scope_breakpoint
;
9303 scope_breakpoint
->related_breakpoint
= b
;
9307 value_free_to_mark (mark
);
9309 TRY_CATCH (e
, RETURN_MASK_ALL
)
9311 /* Finally update the new watchpoint. This creates the locations
9312 that should be inserted. */
9313 update_watchpoint (w
, 1);
9317 delete_breakpoint (b
);
9318 throw_exception (e
);
9321 install_breakpoint (internal
, b
);
9324 /* Return count of debug registers needed to watch the given expression.
9325 If the watchpoint cannot be handled in hardware return zero. */
9328 can_use_hardware_watchpoint (struct value
*v
)
9330 int found_memory_cnt
= 0;
9331 struct value
*head
= v
;
9333 /* Did the user specifically forbid us to use hardware watchpoints? */
9334 if (!can_use_hw_watchpoints
)
9337 /* Make sure that the value of the expression depends only upon
9338 memory contents, and values computed from them within GDB. If we
9339 find any register references or function calls, we can't use a
9340 hardware watchpoint.
9342 The idea here is that evaluating an expression generates a series
9343 of values, one holding the value of every subexpression. (The
9344 expression a*b+c has five subexpressions: a, b, a*b, c, and
9345 a*b+c.) GDB's values hold almost enough information to establish
9346 the criteria given above --- they identify memory lvalues,
9347 register lvalues, computed values, etcetera. So we can evaluate
9348 the expression, and then scan the chain of values that leaves
9349 behind to decide whether we can detect any possible change to the
9350 expression's final value using only hardware watchpoints.
9352 However, I don't think that the values returned by inferior
9353 function calls are special in any way. So this function may not
9354 notice that an expression involving an inferior function call
9355 can't be watched with hardware watchpoints. FIXME. */
9356 for (; v
; v
= value_next (v
))
9358 if (VALUE_LVAL (v
) == lval_memory
)
9360 if (v
!= head
&& value_lazy (v
))
9361 /* A lazy memory lvalue in the chain is one that GDB never
9362 needed to fetch; we either just used its address (e.g.,
9363 `a' in `a.b') or we never needed it at all (e.g., `a'
9364 in `a,b'). This doesn't apply to HEAD; if that is
9365 lazy then it was not readable, but watch it anyway. */
9369 /* Ahh, memory we actually used! Check if we can cover
9370 it with hardware watchpoints. */
9371 struct type
*vtype
= check_typedef (value_type (v
));
9373 /* We only watch structs and arrays if user asked for it
9374 explicitly, never if they just happen to appear in a
9375 middle of some value chain. */
9377 || (TYPE_CODE (vtype
) != TYPE_CODE_STRUCT
9378 && TYPE_CODE (vtype
) != TYPE_CODE_ARRAY
))
9380 CORE_ADDR vaddr
= value_address (v
);
9384 len
= (target_exact_watchpoints
9385 && is_scalar_type_recursive (vtype
))?
9386 1 : TYPE_LENGTH (value_type (v
));
9388 num_regs
= target_region_ok_for_hw_watchpoint (vaddr
, len
);
9392 found_memory_cnt
+= num_regs
;
9396 else if (VALUE_LVAL (v
) != not_lval
9397 && deprecated_value_modifiable (v
) == 0)
9398 return 0; /* These are values from the history (e.g., $1). */
9399 else if (VALUE_LVAL (v
) == lval_register
)
9400 return 0; /* Cannot watch a register with a HW watchpoint. */
9403 /* The expression itself looks suitable for using a hardware
9404 watchpoint, but give the target machine a chance to reject it. */
9405 return found_memory_cnt
;
9409 watch_command_wrapper (char *arg
, int from_tty
, int internal
)
9411 watch_command_1 (arg
, hw_write
, from_tty
, 0, internal
);
9414 /* A helper function that looks for an argument at the start of a
9415 string. The argument must also either be at the end of the string,
9416 or be followed by whitespace. Returns 1 if it finds the argument,
9417 0 otherwise. If the argument is found, it updates *STR. */
9420 check_for_argument (char **str
, char *arg
, int arg_len
)
9422 if (strncmp (*str
, arg
, arg_len
) == 0
9423 && ((*str
)[arg_len
] == '\0' || isspace ((*str
)[arg_len
])))
9431 /* A helper function that looks for the "-location" argument and then
9432 calls watch_command_1. */
9435 watch_maybe_just_location (char *arg
, int accessflag
, int from_tty
)
9437 int just_location
= 0;
9440 && (check_for_argument (&arg
, "-location", sizeof ("-location") - 1)
9441 || check_for_argument (&arg
, "-l", sizeof ("-l") - 1)))
9443 arg
= skip_spaces (arg
);
9447 watch_command_1 (arg
, accessflag
, from_tty
, just_location
, 0);
9451 watch_command (char *arg
, int from_tty
)
9453 watch_maybe_just_location (arg
, hw_write
, from_tty
);
9457 rwatch_command_wrapper (char *arg
, int from_tty
, int internal
)
9459 watch_command_1 (arg
, hw_read
, from_tty
, 0, internal
);
9463 rwatch_command (char *arg
, int from_tty
)
9465 watch_maybe_just_location (arg
, hw_read
, from_tty
);
9469 awatch_command_wrapper (char *arg
, int from_tty
, int internal
)
9471 watch_command_1 (arg
, hw_access
, from_tty
, 0, internal
);
9475 awatch_command (char *arg
, int from_tty
)
9477 watch_maybe_just_location (arg
, hw_access
, from_tty
);
9481 /* Helper routines for the until_command routine in infcmd.c. Here
9482 because it uses the mechanisms of breakpoints. */
9484 struct until_break_command_continuation_args
9486 struct breakpoint
*breakpoint
;
9487 struct breakpoint
*breakpoint2
;
9491 /* This function is called by fetch_inferior_event via the
9492 cmd_continuation pointer, to complete the until command. It takes
9493 care of cleaning up the temporary breakpoints set up by the until
9496 until_break_command_continuation (void *arg
, int err
)
9498 struct until_break_command_continuation_args
*a
= arg
;
9500 delete_breakpoint (a
->breakpoint
);
9502 delete_breakpoint (a
->breakpoint2
);
9503 delete_longjmp_breakpoint (a
->thread_num
);
9507 until_break_command (char *arg
, int from_tty
, int anywhere
)
9509 struct symtabs_and_lines sals
;
9510 struct symtab_and_line sal
;
9511 struct frame_info
*frame
= get_selected_frame (NULL
);
9512 struct breakpoint
*breakpoint
;
9513 struct breakpoint
*breakpoint2
= NULL
;
9514 struct cleanup
*old_chain
;
9516 struct thread_info
*tp
;
9518 clear_proceed_status ();
9520 /* Set a breakpoint where the user wants it and at return from
9523 if (default_breakpoint_valid
)
9524 sals
= decode_line_1 (&arg
, 1, default_breakpoint_symtab
,
9525 default_breakpoint_line
, NULL
);
9527 sals
= decode_line_1 (&arg
, 1, (struct symtab
*) NULL
, 0, NULL
);
9529 if (sals
.nelts
!= 1)
9530 error (_("Couldn't get information on specified line."));
9533 xfree (sals
.sals
); /* malloc'd, so freed. */
9536 error (_("Junk at end of arguments."));
9538 resolve_sal_pc (&sal
);
9541 /* If the user told us to continue until a specified location,
9542 we don't specify a frame at which we need to stop. */
9543 breakpoint
= set_momentary_breakpoint (get_frame_arch (frame
), sal
,
9544 null_frame_id
, bp_until
);
9546 /* Otherwise, specify the selected frame, because we want to stop
9547 only at the very same frame. */
9548 breakpoint
= set_momentary_breakpoint (get_frame_arch (frame
), sal
,
9549 get_stack_frame_id (frame
),
9552 old_chain
= make_cleanup_delete_breakpoint (breakpoint
);
9554 tp
= inferior_thread ();
9557 /* Keep within the current frame, or in frames called by the current
9560 if (frame_id_p (frame_unwind_caller_id (frame
)))
9562 sal
= find_pc_line (frame_unwind_caller_pc (frame
), 0);
9563 sal
.pc
= frame_unwind_caller_pc (frame
);
9564 breakpoint2
= set_momentary_breakpoint (frame_unwind_caller_arch (frame
),
9566 frame_unwind_caller_id (frame
),
9568 make_cleanup_delete_breakpoint (breakpoint2
);
9570 set_longjmp_breakpoint (tp
, frame_unwind_caller_id (frame
));
9571 make_cleanup (delete_longjmp_breakpoint_cleanup
, &thread
);
9574 proceed (-1, TARGET_SIGNAL_DEFAULT
, 0);
9576 /* If we are running asynchronously, and proceed call above has
9577 actually managed to start the target, arrange for breakpoints to
9578 be deleted when the target stops. Otherwise, we're already
9579 stopped and delete breakpoints via cleanup chain. */
9581 if (target_can_async_p () && is_running (inferior_ptid
))
9583 struct until_break_command_continuation_args
*args
;
9584 args
= xmalloc (sizeof (*args
));
9586 args
->breakpoint
= breakpoint
;
9587 args
->breakpoint2
= breakpoint2
;
9588 args
->thread_num
= thread
;
9590 discard_cleanups (old_chain
);
9591 add_continuation (inferior_thread (),
9592 until_break_command_continuation
, args
,
9596 do_cleanups (old_chain
);
9599 /* This function attempts to parse an optional "if <cond>" clause
9600 from the arg string. If one is not found, it returns NULL.
9602 Else, it returns a pointer to the condition string. (It does not
9603 attempt to evaluate the string against a particular block.) And,
9604 it updates arg to point to the first character following the parsed
9605 if clause in the arg string. */
9608 ep_parse_optional_if_clause (char **arg
)
9612 if (((*arg
)[0] != 'i') || ((*arg
)[1] != 'f') || !isspace ((*arg
)[2]))
9615 /* Skip the "if" keyword. */
9618 /* Skip any extra leading whitespace, and record the start of the
9619 condition string. */
9620 *arg
= skip_spaces (*arg
);
9623 /* Assume that the condition occupies the remainder of the arg
9625 (*arg
) += strlen (cond_string
);
9630 /* Commands to deal with catching events, such as signals, exceptions,
9631 process start/exit, etc. */
9635 catch_fork_temporary
, catch_vfork_temporary
,
9636 catch_fork_permanent
, catch_vfork_permanent
9641 catch_fork_command_1 (char *arg
, int from_tty
,
9642 struct cmd_list_element
*command
)
9644 struct gdbarch
*gdbarch
= get_current_arch ();
9645 char *cond_string
= NULL
;
9646 catch_fork_kind fork_kind
;
9649 fork_kind
= (catch_fork_kind
) (uintptr_t) get_cmd_context (command
);
9650 tempflag
= (fork_kind
== catch_fork_temporary
9651 || fork_kind
== catch_vfork_temporary
);
9655 arg
= skip_spaces (arg
);
9657 /* The allowed syntax is:
9659 catch [v]fork if <cond>
9661 First, check if there's an if clause. */
9662 cond_string
= ep_parse_optional_if_clause (&arg
);
9664 if ((*arg
!= '\0') && !isspace (*arg
))
9665 error (_("Junk at end of arguments."));
9667 /* If this target supports it, create a fork or vfork catchpoint
9668 and enable reporting of such events. */
9671 case catch_fork_temporary
:
9672 case catch_fork_permanent
:
9673 create_fork_vfork_event_catchpoint (gdbarch
, tempflag
, cond_string
,
9674 &catch_fork_breakpoint_ops
);
9676 case catch_vfork_temporary
:
9677 case catch_vfork_permanent
:
9678 create_fork_vfork_event_catchpoint (gdbarch
, tempflag
, cond_string
,
9679 &catch_vfork_breakpoint_ops
);
9682 error (_("unsupported or unknown fork kind; cannot catch it"));
9688 catch_exec_command_1 (char *arg
, int from_tty
,
9689 struct cmd_list_element
*command
)
9691 struct exec_catchpoint
*c
;
9692 struct gdbarch
*gdbarch
= get_current_arch ();
9694 char *cond_string
= NULL
;
9696 tempflag
= get_cmd_context (command
) == CATCH_TEMPORARY
;
9700 arg
= skip_spaces (arg
);
9702 /* The allowed syntax is:
9704 catch exec if <cond>
9706 First, check if there's an if clause. */
9707 cond_string
= ep_parse_optional_if_clause (&arg
);
9709 if ((*arg
!= '\0') && !isspace (*arg
))
9710 error (_("Junk at end of arguments."));
9712 c
= XNEW (struct exec_catchpoint
);
9713 init_catchpoint (&c
->base
, gdbarch
, tempflag
, cond_string
,
9714 &catch_exec_breakpoint_ops
);
9715 c
->exec_pathname
= NULL
;
9717 install_breakpoint (0, &c
->base
);
9720 static enum print_stop_action
9721 print_it_exception_catchpoint (bpstat bs
)
9723 struct breakpoint
*b
= bs
->breakpoint_at
;
9724 int bp_temp
, bp_throw
;
9726 annotate_catchpoint (b
->number
);
9728 bp_throw
= strstr (b
->addr_string
, "throw") != NULL
;
9729 if (b
->loc
->address
!= b
->loc
->requested_address
)
9730 breakpoint_adjustment_warning (b
->loc
->requested_address
,
9733 bp_temp
= b
->disposition
== disp_del
;
9735 bp_temp
? "Temporary catchpoint "
9737 if (!ui_out_is_mi_like_p (uiout
))
9738 ui_out_field_int (uiout
, "bkptno", b
->number
);
9740 bp_throw
? " (exception thrown), "
9741 : " (exception caught), ");
9742 if (ui_out_is_mi_like_p (uiout
))
9744 ui_out_field_string (uiout
, "reason",
9745 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT
));
9746 ui_out_field_string (uiout
, "disp", bpdisp_text (b
->disposition
));
9747 ui_out_field_int (uiout
, "bkptno", b
->number
);
9749 return PRINT_SRC_AND_LOC
;
9753 print_one_exception_catchpoint (struct breakpoint
*b
,
9754 struct bp_location
**last_loc
)
9756 struct value_print_options opts
;
9758 get_user_print_options (&opts
);
9759 if (opts
.addressprint
)
9762 if (b
->loc
== NULL
|| b
->loc
->shlib_disabled
)
9763 ui_out_field_string (uiout
, "addr", "<PENDING>");
9765 ui_out_field_core_addr (uiout
, "addr",
9766 b
->loc
->gdbarch
, b
->loc
->address
);
9771 if (strstr (b
->addr_string
, "throw") != NULL
)
9772 ui_out_field_string (uiout
, "what", "exception throw");
9774 ui_out_field_string (uiout
, "what", "exception catch");
9778 print_mention_exception_catchpoint (struct breakpoint
*b
)
9783 bp_temp
= b
->disposition
== disp_del
;
9784 bp_throw
= strstr (b
->addr_string
, "throw") != NULL
;
9785 ui_out_text (uiout
, bp_temp
? _("Temporary catchpoint ")
9786 : _("Catchpoint "));
9787 ui_out_field_int (uiout
, "bkptno", b
->number
);
9788 ui_out_text (uiout
, bp_throw
? _(" (throw)")
9792 /* Implement the "print_recreate" breakpoint_ops method for throw and
9793 catch catchpoints. */
9796 print_recreate_exception_catchpoint (struct breakpoint
*b
,
9802 bp_temp
= b
->disposition
== disp_del
;
9803 bp_throw
= strstr (b
->addr_string
, "throw") != NULL
;
9804 fprintf_unfiltered (fp
, bp_temp
? "tcatch " : "catch ");
9805 fprintf_unfiltered (fp
, bp_throw
? "throw" : "catch");
9806 print_recreate_thread (b
, fp
);
9809 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops
;
9812 handle_gnu_v3_exceptions (int tempflag
, char *cond_string
,
9813 enum exception_event_kind ex_event
, int from_tty
)
9815 char *trigger_func_name
;
9817 if (ex_event
== EX_EVENT_CATCH
)
9818 trigger_func_name
= "__cxa_begin_catch";
9820 trigger_func_name
= "__cxa_throw";
9822 create_breakpoint (get_current_arch (),
9823 trigger_func_name
, cond_string
, -1,
9824 0 /* condition and thread are valid. */,
9825 tempflag
, bp_breakpoint
,
9827 AUTO_BOOLEAN_TRUE
/* pending */,
9828 &gnu_v3_exception_catchpoint_ops
, from_tty
,
9835 /* Deal with "catch catch" and "catch throw" commands. */
9838 catch_exception_command_1 (enum exception_event_kind ex_event
, char *arg
,
9839 int tempflag
, int from_tty
)
9841 char *cond_string
= NULL
;
9845 arg
= skip_spaces (arg
);
9847 cond_string
= ep_parse_optional_if_clause (&arg
);
9849 if ((*arg
!= '\0') && !isspace (*arg
))
9850 error (_("Junk at end of arguments."));
9852 if (ex_event
!= EX_EVENT_THROW
9853 && ex_event
!= EX_EVENT_CATCH
)
9854 error (_("Unsupported or unknown exception event; cannot catch it"));
9856 if (handle_gnu_v3_exceptions (tempflag
, cond_string
, ex_event
, from_tty
))
9859 warning (_("Unsupported with this platform/compiler combination."));
9862 /* Implementation of "catch catch" command. */
9865 catch_catch_command (char *arg
, int from_tty
, struct cmd_list_element
*command
)
9867 int tempflag
= get_cmd_context (command
) == CATCH_TEMPORARY
;
9869 catch_exception_command_1 (EX_EVENT_CATCH
, arg
, tempflag
, from_tty
);
9872 /* Implementation of "catch throw" command. */
9875 catch_throw_command (char *arg
, int from_tty
, struct cmd_list_element
*command
)
9877 int tempflag
= get_cmd_context (command
) == CATCH_TEMPORARY
;
9879 catch_exception_command_1 (EX_EVENT_THROW
, arg
, tempflag
, from_tty
);
9883 init_ada_exception_breakpoint (struct breakpoint
*b
,
9884 struct gdbarch
*gdbarch
,
9885 struct symtab_and_line sal
,
9887 const struct breakpoint_ops
*ops
,
9893 struct gdbarch
*loc_gdbarch
= get_sal_arch (sal
);
9895 loc_gdbarch
= gdbarch
;
9897 describe_other_breakpoints (loc_gdbarch
,
9898 sal
.pspace
, sal
.pc
, sal
.section
, -1);
9899 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
9900 version for exception catchpoints, because two catchpoints
9901 used for different exception names will use the same address.
9902 In this case, a "breakpoint ... also set at..." warning is
9903 unproductive. Besides, the warning phrasing is also a bit
9904 inappropriate, we should use the word catchpoint, and tell
9905 the user what type of catchpoint it is. The above is good
9906 enough for now, though. */
9909 init_raw_breakpoint (b
, gdbarch
, sal
, bp_breakpoint
, ops
);
9911 b
->enable_state
= bp_enabled
;
9912 b
->disposition
= tempflag
? disp_del
: disp_donttouch
;
9913 b
->addr_string
= addr_string
;
9914 b
->language
= language_ada
;
9917 /* Cleanup function for a syscall filter list. */
9919 clean_up_filters (void *arg
)
9921 VEC(int) *iter
= *(VEC(int) **) arg
;
9922 VEC_free (int, iter
);
9925 /* Splits the argument using space as delimiter. Returns an xmalloc'd
9926 filter list, or NULL if no filtering is required. */
9928 catch_syscall_split_args (char *arg
)
9930 VEC(int) *result
= NULL
;
9931 struct cleanup
*cleanup
= make_cleanup (clean_up_filters
, &result
);
9933 while (*arg
!= '\0')
9935 int i
, syscall_number
;
9940 /* Skip whitespace. */
9941 while (isspace (*arg
))
9944 for (i
= 0; i
< 127 && arg
[i
] && !isspace (arg
[i
]); ++i
)
9945 cur_name
[i
] = arg
[i
];
9949 /* Check if the user provided a syscall name or a number. */
9950 syscall_number
= (int) strtol (cur_name
, &endptr
, 0);
9951 if (*endptr
== '\0')
9952 get_syscall_by_number (syscall_number
, &s
);
9955 /* We have a name. Let's check if it's valid and convert it
9957 get_syscall_by_name (cur_name
, &s
);
9959 if (s
.number
== UNKNOWN_SYSCALL
)
9960 /* Here we have to issue an error instead of a warning,
9961 because GDB cannot do anything useful if there's no
9962 syscall number to be caught. */
9963 error (_("Unknown syscall name '%s'."), cur_name
);
9966 /* Ok, it's valid. */
9967 VEC_safe_push (int, result
, s
.number
);
9970 discard_cleanups (cleanup
);
9974 /* Implement the "catch syscall" command. */
9977 catch_syscall_command_1 (char *arg
, int from_tty
,
9978 struct cmd_list_element
*command
)
9983 struct gdbarch
*gdbarch
= get_current_arch ();
9985 /* Checking if the feature if supported. */
9986 if (gdbarch_get_syscall_number_p (gdbarch
) == 0)
9987 error (_("The feature 'catch syscall' is not supported on \
9988 this architecture yet."));
9990 tempflag
= get_cmd_context (command
) == CATCH_TEMPORARY
;
9992 arg
= skip_spaces (arg
);
9994 /* We need to do this first "dummy" translation in order
9995 to get the syscall XML file loaded or, most important,
9996 to display a warning to the user if there's no XML file
9997 for his/her architecture. */
9998 get_syscall_by_number (0, &s
);
10000 /* The allowed syntax is:
10002 catch syscall <name | number> [<name | number> ... <name | number>]
10004 Let's check if there's a syscall name. */
10007 filter
= catch_syscall_split_args (arg
);
10011 create_syscall_event_catchpoint (tempflag
, filter
,
10012 &catch_syscall_breakpoint_ops
);
10016 catch_command (char *arg
, int from_tty
)
10018 error (_("Catch requires an event name."));
10023 tcatch_command (char *arg
, int from_tty
)
10025 error (_("Catch requires an event name."));
10028 /* Delete breakpoints by address or line. */
10031 clear_command (char *arg
, int from_tty
)
10033 struct breakpoint
*b
;
10034 VEC(breakpoint_p
) *found
= 0;
10037 struct symtabs_and_lines sals
;
10038 struct symtab_and_line sal
;
10043 sals
= decode_line_spec (arg
, 1);
10048 sals
.sals
= (struct symtab_and_line
*)
10049 xmalloc (sizeof (struct symtab_and_line
));
10050 make_cleanup (xfree
, sals
.sals
);
10051 init_sal (&sal
); /* Initialize to zeroes. */
10052 sal
.line
= default_breakpoint_line
;
10053 sal
.symtab
= default_breakpoint_symtab
;
10054 sal
.pc
= default_breakpoint_address
;
10055 sal
.pspace
= default_breakpoint_pspace
;
10056 if (sal
.symtab
== 0)
10057 error (_("No source file specified."));
10059 sals
.sals
[0] = sal
;
10065 /* We don't call resolve_sal_pc here. That's not as bad as it
10066 seems, because all existing breakpoints typically have both
10067 file/line and pc set. So, if clear is given file/line, we can
10068 match this to existing breakpoint without obtaining pc at all.
10070 We only support clearing given the address explicitly
10071 present in breakpoint table. Say, we've set breakpoint
10072 at file:line. There were several PC values for that file:line,
10073 due to optimization, all in one block.
10075 We've picked one PC value. If "clear" is issued with another
10076 PC corresponding to the same file:line, the breakpoint won't
10077 be cleared. We probably can still clear the breakpoint, but
10078 since the other PC value is never presented to user, user
10079 can only find it by guessing, and it does not seem important
10080 to support that. */
10082 /* For each line spec given, delete bps which correspond to it. Do
10083 it in two passes, solely to preserve the current behavior that
10084 from_tty is forced true if we delete more than one
10088 for (i
= 0; i
< sals
.nelts
; i
++)
10090 /* If exact pc given, clear bpts at that pc.
10091 If line given (pc == 0), clear all bpts on specified line.
10092 If defaulting, clear all bpts on default line
10095 defaulting sal.pc != 0 tests to do
10100 1 0 <can't happen> */
10102 sal
= sals
.sals
[i
];
10104 /* Find all matching breakpoints and add them to 'found'. */
10105 ALL_BREAKPOINTS (b
)
10108 /* Are we going to delete b? */
10109 if (b
->type
!= bp_none
&& !is_watchpoint (b
))
10111 struct bp_location
*loc
= b
->loc
;
10112 for (; loc
; loc
= loc
->next
)
10114 int pc_match
= sal
.pc
10115 && (loc
->pspace
== sal
.pspace
)
10116 && (loc
->address
== sal
.pc
)
10117 && (!section_is_overlay (loc
->section
)
10118 || loc
->section
== sal
.section
);
10119 int line_match
= ((default_match
|| (0 == sal
.pc
))
10120 && b
->source_file
!= NULL
10121 && sal
.symtab
!= NULL
10122 && sal
.pspace
== loc
->pspace
10123 && filename_cmp (b
->source_file
,
10124 sal
.symtab
->filename
) == 0
10125 && b
->line_number
== sal
.line
);
10126 if (pc_match
|| line_match
)
10135 VEC_safe_push(breakpoint_p
, found
, b
);
10138 /* Now go thru the 'found' chain and delete them. */
10139 if (VEC_empty(breakpoint_p
, found
))
10142 error (_("No breakpoint at %s."), arg
);
10144 error (_("No breakpoint at this line."));
10147 if (VEC_length(breakpoint_p
, found
) > 1)
10148 from_tty
= 1; /* Always report if deleted more than one. */
10151 if (VEC_length(breakpoint_p
, found
) == 1)
10152 printf_unfiltered (_("Deleted breakpoint "));
10154 printf_unfiltered (_("Deleted breakpoints "));
10156 breakpoints_changed ();
10158 for (ix
= 0; VEC_iterate(breakpoint_p
, found
, ix
, b
); ix
++)
10161 printf_unfiltered ("%d ", b
->number
);
10162 delete_breakpoint (b
);
10165 putchar_unfiltered ('\n');
10168 /* Delete breakpoint in BS if they are `delete' breakpoints and
10169 all breakpoints that are marked for deletion, whether hit or not.
10170 This is called after any breakpoint is hit, or after errors. */
10173 breakpoint_auto_delete (bpstat bs
)
10175 struct breakpoint
*b
, *b_tmp
;
10177 for (; bs
; bs
= bs
->next
)
10178 if (bs
->breakpoint_at
10179 && bs
->breakpoint_at
->disposition
== disp_del
10181 delete_breakpoint (bs
->breakpoint_at
);
10183 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
10185 if (b
->disposition
== disp_del_at_next_stop
)
10186 delete_breakpoint (b
);
10190 /* A comparison function for bp_location AP and BP being interfaced to
10191 qsort. Sort elements primarily by their ADDRESS (no matter what
10192 does breakpoint_address_is_meaningful say for its OWNER),
10193 secondarily by ordering first bp_permanent OWNERed elements and
10194 terciarily just ensuring the array is sorted stable way despite
10195 qsort being an unstable algorithm. */
10198 bp_location_compare (const void *ap
, const void *bp
)
10200 struct bp_location
*a
= *(void **) ap
;
10201 struct bp_location
*b
= *(void **) bp
;
10202 /* A and B come from existing breakpoints having non-NULL OWNER. */
10203 int a_perm
= a
->owner
->enable_state
== bp_permanent
;
10204 int b_perm
= b
->owner
->enable_state
== bp_permanent
;
10206 if (a
->address
!= b
->address
)
10207 return (a
->address
> b
->address
) - (a
->address
< b
->address
);
10209 /* Sort permanent breakpoints first. */
10210 if (a_perm
!= b_perm
)
10211 return (a_perm
< b_perm
) - (a_perm
> b_perm
);
10213 /* Make the user-visible order stable across GDB runs. Locations of
10214 the same breakpoint can be sorted in arbitrary order. */
10216 if (a
->owner
->number
!= b
->owner
->number
)
10217 return (a
->owner
->number
> b
->owner
->number
)
10218 - (a
->owner
->number
< b
->owner
->number
);
10220 return (a
> b
) - (a
< b
);
10223 /* Set bp_location_placed_address_before_address_max and
10224 bp_location_shadow_len_after_address_max according to the current
10225 content of the bp_location array. */
10228 bp_location_target_extensions_update (void)
10230 struct bp_location
*bl
, **blp_tmp
;
10232 bp_location_placed_address_before_address_max
= 0;
10233 bp_location_shadow_len_after_address_max
= 0;
10235 ALL_BP_LOCATIONS (bl
, blp_tmp
)
10237 CORE_ADDR start
, end
, addr
;
10239 if (!bp_location_has_shadow (bl
))
10242 start
= bl
->target_info
.placed_address
;
10243 end
= start
+ bl
->target_info
.shadow_len
;
10245 gdb_assert (bl
->address
>= start
);
10246 addr
= bl
->address
- start
;
10247 if (addr
> bp_location_placed_address_before_address_max
)
10248 bp_location_placed_address_before_address_max
= addr
;
10250 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
10252 gdb_assert (bl
->address
< end
);
10253 addr
= end
- bl
->address
;
10254 if (addr
> bp_location_shadow_len_after_address_max
)
10255 bp_location_shadow_len_after_address_max
= addr
;
10259 /* Swap the insertion/duplication state between two locations. */
10262 swap_insertion (struct bp_location
*left
, struct bp_location
*right
)
10264 const int left_inserted
= left
->inserted
;
10265 const int left_duplicate
= left
->duplicate
;
10266 const struct bp_target_info left_target_info
= left
->target_info
;
10268 left
->inserted
= right
->inserted
;
10269 left
->duplicate
= right
->duplicate
;
10270 left
->target_info
= right
->target_info
;
10271 right
->inserted
= left_inserted
;
10272 right
->duplicate
= left_duplicate
;
10273 right
->target_info
= left_target_info
;
10276 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
10277 into the inferior, only remove already-inserted locations that no
10278 longer should be inserted. Functions that delete a breakpoint or
10279 breakpoints should pass false, so that deleting a breakpoint
10280 doesn't have the side effect of inserting the locations of other
10281 breakpoints that are marked not-inserted, but should_be_inserted
10282 returns true on them.
10284 This behaviour is useful is situations close to tear-down -- e.g.,
10285 after an exec, while the target still has execution, but breakpoint
10286 shadows of the previous executable image should *NOT* be restored
10287 to the new image; or before detaching, where the target still has
10288 execution and wants to delete breakpoints from GDB's lists, and all
10289 breakpoints had already been removed from the inferior. */
10292 update_global_location_list (int should_insert
)
10294 struct breakpoint
*b
;
10295 struct bp_location
**locp
, *loc
;
10296 struct cleanup
*cleanups
;
10298 /* Used in the duplicates detection below. When iterating over all
10299 bp_locations, points to the first bp_location of a given address.
10300 Breakpoints and watchpoints of different types are never
10301 duplicates of each other. Keep one pointer for each type of
10302 breakpoint/watchpoint, so we only need to loop over all locations
10304 struct bp_location
*bp_loc_first
; /* breakpoint */
10305 struct bp_location
*wp_loc_first
; /* hardware watchpoint */
10306 struct bp_location
*awp_loc_first
; /* access watchpoint */
10307 struct bp_location
*rwp_loc_first
; /* read watchpoint */
10309 /* Saved former bp_location array which we compare against the newly
10310 built bp_location from the current state of ALL_BREAKPOINTS. */
10311 struct bp_location
**old_location
, **old_locp
;
10312 unsigned old_location_count
;
10314 old_location
= bp_location
;
10315 old_location_count
= bp_location_count
;
10316 bp_location
= NULL
;
10317 bp_location_count
= 0;
10318 cleanups
= make_cleanup (xfree
, old_location
);
10320 ALL_BREAKPOINTS (b
)
10321 for (loc
= b
->loc
; loc
; loc
= loc
->next
)
10322 bp_location_count
++;
10324 bp_location
= xmalloc (sizeof (*bp_location
) * bp_location_count
);
10325 locp
= bp_location
;
10326 ALL_BREAKPOINTS (b
)
10327 for (loc
= b
->loc
; loc
; loc
= loc
->next
)
10329 qsort (bp_location
, bp_location_count
, sizeof (*bp_location
),
10330 bp_location_compare
);
10332 bp_location_target_extensions_update ();
10334 /* Identify bp_location instances that are no longer present in the
10335 new list, and therefore should be freed. Note that it's not
10336 necessary that those locations should be removed from inferior --
10337 if there's another location at the same address (previously
10338 marked as duplicate), we don't need to remove/insert the
10341 LOCP is kept in sync with OLD_LOCP, each pointing to the current
10342 and former bp_location array state respectively. */
10344 locp
= bp_location
;
10345 for (old_locp
= old_location
; old_locp
< old_location
+ old_location_count
;
10348 struct bp_location
*old_loc
= *old_locp
;
10349 struct bp_location
**loc2p
;
10351 /* Tells if 'old_loc' is found among the new locations. If
10352 not, we have to free it. */
10353 int found_object
= 0;
10354 /* Tells if the location should remain inserted in the target. */
10355 int keep_in_target
= 0;
10358 /* Skip LOCP entries which will definitely never be needed.
10359 Stop either at or being the one matching OLD_LOC. */
10360 while (locp
< bp_location
+ bp_location_count
10361 && (*locp
)->address
< old_loc
->address
)
10365 (loc2p
< bp_location
+ bp_location_count
10366 && (*loc2p
)->address
== old_loc
->address
);
10369 if (*loc2p
== old_loc
)
10376 /* If this location is no longer present, and inserted, look if
10377 there's maybe a new location at the same address. If so,
10378 mark that one inserted, and don't remove this one. This is
10379 needed so that we don't have a time window where a breakpoint
10380 at certain location is not inserted. */
10382 if (old_loc
->inserted
)
10384 /* If the location is inserted now, we might have to remove
10387 if (found_object
&& should_be_inserted (old_loc
))
10389 /* The location is still present in the location list,
10390 and still should be inserted. Don't do anything. */
10391 keep_in_target
= 1;
10395 /* The location is either no longer present, or got
10396 disabled. See if there's another location at the
10397 same address, in which case we don't need to remove
10398 this one from the target. */
10400 /* OLD_LOC comes from existing struct breakpoint. */
10401 if (breakpoint_address_is_meaningful (old_loc
->owner
))
10404 (loc2p
< bp_location
+ bp_location_count
10405 && (*loc2p
)->address
== old_loc
->address
);
10408 struct bp_location
*loc2
= *loc2p
;
10410 if (breakpoint_locations_match (loc2
, old_loc
))
10412 /* Read watchpoint locations are switched to
10413 access watchpoints, if the former are not
10414 supported, but the latter are. */
10415 if (is_hardware_watchpoint (old_loc
->owner
))
10417 gdb_assert (is_hardware_watchpoint (loc2
->owner
));
10418 loc2
->watchpoint_type
= old_loc
->watchpoint_type
;
10421 /* loc2 is a duplicated location. We need to check
10422 if it should be inserted in case it will be
10424 if (loc2
!= old_loc
10425 && unduplicated_should_be_inserted (loc2
))
10427 swap_insertion (old_loc
, loc2
);
10428 keep_in_target
= 1;
10436 if (!keep_in_target
)
10438 if (remove_breakpoint (old_loc
, mark_uninserted
))
10440 /* This is just about all we can do. We could keep
10441 this location on the global list, and try to
10442 remove it next time, but there's no particular
10443 reason why we will succeed next time.
10445 Note that at this point, old_loc->owner is still
10446 valid, as delete_breakpoint frees the breakpoint
10447 only after calling us. */
10448 printf_filtered (_("warning: Error removing "
10449 "breakpoint %d\n"),
10450 old_loc
->owner
->number
);
10458 if (removed
&& non_stop
10459 && breakpoint_address_is_meaningful (old_loc
->owner
)
10460 && !is_hardware_watchpoint (old_loc
->owner
))
10462 /* This location was removed from the target. In
10463 non-stop mode, a race condition is possible where
10464 we've removed a breakpoint, but stop events for that
10465 breakpoint are already queued and will arrive later.
10466 We apply an heuristic to be able to distinguish such
10467 SIGTRAPs from other random SIGTRAPs: we keep this
10468 breakpoint location for a bit, and will retire it
10469 after we see some number of events. The theory here
10470 is that reporting of events should, "on the average",
10471 be fair, so after a while we'll see events from all
10472 threads that have anything of interest, and no longer
10473 need to keep this breakpoint location around. We
10474 don't hold locations forever so to reduce chances of
10475 mistaking a non-breakpoint SIGTRAP for a breakpoint
10478 The heuristic failing can be disastrous on
10479 decr_pc_after_break targets.
10481 On decr_pc_after_break targets, like e.g., x86-linux,
10482 if we fail to recognize a late breakpoint SIGTRAP,
10483 because events_till_retirement has reached 0 too
10484 soon, we'll fail to do the PC adjustment, and report
10485 a random SIGTRAP to the user. When the user resumes
10486 the inferior, it will most likely immediately crash
10487 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
10488 corrupted, because of being resumed e.g., in the
10489 middle of a multi-byte instruction, or skipped a
10490 one-byte instruction. This was actually seen happen
10491 on native x86-linux, and should be less rare on
10492 targets that do not support new thread events, like
10493 remote, due to the heuristic depending on
10496 Mistaking a random SIGTRAP for a breakpoint trap
10497 causes similar symptoms (PC adjustment applied when
10498 it shouldn't), but then again, playing with SIGTRAPs
10499 behind the debugger's back is asking for trouble.
10501 Since hardware watchpoint traps are always
10502 distinguishable from other traps, so we don't need to
10503 apply keep hardware watchpoint moribund locations
10504 around. We simply always ignore hardware watchpoint
10505 traps we can no longer explain. */
10507 old_loc
->events_till_retirement
= 3 * (thread_count () + 1);
10508 old_loc
->owner
= NULL
;
10510 VEC_safe_push (bp_location_p
, moribund_locations
, old_loc
);
10514 old_loc
->owner
= NULL
;
10515 decref_bp_location (&old_loc
);
10520 /* Rescan breakpoints at the same address and section, marking the
10521 first one as "first" and any others as "duplicates". This is so
10522 that the bpt instruction is only inserted once. If we have a
10523 permanent breakpoint at the same place as BPT, make that one the
10524 official one, and the rest as duplicates. Permanent breakpoints
10525 are sorted first for the same address.
10527 Do the same for hardware watchpoints, but also considering the
10528 watchpoint's type (regular/access/read) and length. */
10530 bp_loc_first
= NULL
;
10531 wp_loc_first
= NULL
;
10532 awp_loc_first
= NULL
;
10533 rwp_loc_first
= NULL
;
10534 ALL_BP_LOCATIONS (loc
, locp
)
10536 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
10538 struct breakpoint
*b
= loc
->owner
;
10539 struct bp_location
**loc_first_p
;
10541 if (b
->enable_state
== bp_disabled
10542 || b
->enable_state
== bp_call_disabled
10543 || b
->enable_state
== bp_startup_disabled
10545 || loc
->shlib_disabled
10546 || !breakpoint_address_is_meaningful (b
)
10547 || is_tracepoint (b
))
10550 /* Permanent breakpoint should always be inserted. */
10551 if (b
->enable_state
== bp_permanent
&& ! loc
->inserted
)
10552 internal_error (__FILE__
, __LINE__
,
10553 _("allegedly permanent breakpoint is not "
10554 "actually inserted"));
10556 if (b
->type
== bp_hardware_watchpoint
)
10557 loc_first_p
= &wp_loc_first
;
10558 else if (b
->type
== bp_read_watchpoint
)
10559 loc_first_p
= &rwp_loc_first
;
10560 else if (b
->type
== bp_access_watchpoint
)
10561 loc_first_p
= &awp_loc_first
;
10563 loc_first_p
= &bp_loc_first
;
10565 if (*loc_first_p
== NULL
10566 || (overlay_debugging
&& loc
->section
!= (*loc_first_p
)->section
)
10567 || !breakpoint_locations_match (loc
, *loc_first_p
))
10569 *loc_first_p
= loc
;
10570 loc
->duplicate
= 0;
10575 /* This and the above ensure the invariant that the first location
10576 is not duplicated, and is the inserted one.
10577 All following are marked as duplicated, and are not inserted. */
10579 swap_insertion (loc
, *loc_first_p
);
10580 loc
->duplicate
= 1;
10582 if ((*loc_first_p
)->owner
->enable_state
== bp_permanent
&& loc
->inserted
10583 && b
->enable_state
!= bp_permanent
)
10584 internal_error (__FILE__
, __LINE__
,
10585 _("another breakpoint was inserted on top of "
10586 "a permanent breakpoint"));
10589 if (breakpoints_always_inserted_mode () && should_insert
10590 && (have_live_inferiors ()
10591 || (gdbarch_has_global_breakpoints (target_gdbarch
))))
10592 insert_breakpoint_locations ();
10594 do_cleanups (cleanups
);
10598 breakpoint_retire_moribund (void)
10600 struct bp_location
*loc
;
10603 for (ix
= 0; VEC_iterate (bp_location_p
, moribund_locations
, ix
, loc
); ++ix
)
10604 if (--(loc
->events_till_retirement
) == 0)
10606 decref_bp_location (&loc
);
10607 VEC_unordered_remove (bp_location_p
, moribund_locations
, ix
);
10613 update_global_location_list_nothrow (int inserting
)
10615 struct gdb_exception e
;
10617 TRY_CATCH (e
, RETURN_MASK_ERROR
)
10618 update_global_location_list (inserting
);
10621 /* Clear BKP from a BPS. */
10624 bpstat_remove_bp_location (bpstat bps
, struct breakpoint
*bpt
)
10628 for (bs
= bps
; bs
; bs
= bs
->next
)
10629 if (bs
->breakpoint_at
== bpt
)
10631 bs
->breakpoint_at
= NULL
;
10632 bs
->old_val
= NULL
;
10633 /* bs->commands will be freed later. */
10637 /* Callback for iterate_over_threads. */
10639 bpstat_remove_breakpoint_callback (struct thread_info
*th
, void *data
)
10641 struct breakpoint
*bpt
= data
;
10643 bpstat_remove_bp_location (th
->control
.stop_bpstat
, bpt
);
10647 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
10651 say_where (struct breakpoint
*b
)
10653 struct value_print_options opts
;
10655 get_user_print_options (&opts
);
10657 /* i18n: cagney/2005-02-11: Below needs to be merged into a
10659 if (b
->loc
== NULL
)
10661 printf_filtered (_(" (%s) pending."), b
->addr_string
);
10665 if (opts
.addressprint
|| b
->source_file
== NULL
)
10667 printf_filtered (" at ");
10668 fputs_filtered (paddress (b
->loc
->gdbarch
, b
->loc
->address
),
10671 if (b
->source_file
)
10672 printf_filtered (": file %s, line %d.",
10673 b
->source_file
, b
->line_number
);
10677 struct bp_location
*loc
= b
->loc
;
10679 for (; loc
; loc
= loc
->next
)
10681 printf_filtered (" (%d locations)", n
);
10686 /* Default bp_location_ops methods. */
10689 bp_location_dtor (struct bp_location
*self
)
10691 xfree (self
->cond
);
10692 xfree (self
->function_name
);
10695 static const struct bp_location_ops bp_location_ops
=
10700 /* Default breakpoint_ops methods all breakpoint_ops ultimately
10704 base_breakpoint_dtor (struct breakpoint
*self
)
10706 decref_counted_command_line (&self
->commands
);
10707 xfree (self
->cond_string
);
10708 xfree (self
->addr_string
);
10709 xfree (self
->addr_string_range_end
);
10710 xfree (self
->source_file
);
10713 static struct bp_location
*
10714 base_breakpoint_allocate_location (struct breakpoint
*self
)
10716 struct bp_location
*loc
;
10718 loc
= XNEW (struct bp_location
);
10719 init_bp_location (loc
, &bp_location_ops
, self
);
10724 base_breakpoint_re_set (struct breakpoint
*b
)
10726 /* Nothing to re-set. */
10729 #define internal_error_pure_virtual_called() \
10730 gdb_assert_not_reached ("pure virtual function called")
10733 base_breakpoint_insert_location (struct bp_location
*bl
)
10735 internal_error_pure_virtual_called ();
10739 base_breakpoint_remove_location (struct bp_location
*bl
)
10741 internal_error_pure_virtual_called ();
10745 base_breakpoint_breakpoint_hit (const struct bp_location
*bl
,
10746 struct address_space
*aspace
,
10749 internal_error_pure_virtual_called ();
10753 base_breakpoint_check_status (bpstat bs
)
10758 /* A "works_in_software_mode" breakpoint_ops method that just internal
10762 base_breakpoint_works_in_software_mode (const struct breakpoint
*b
)
10764 internal_error_pure_virtual_called ();
10767 /* A "resources_needed" breakpoint_ops method that just internal
10771 base_breakpoint_resources_needed (const struct bp_location
*bl
)
10773 internal_error_pure_virtual_called ();
10776 static enum print_stop_action
10777 base_breakpoint_print_it (bpstat bs
)
10779 internal_error_pure_virtual_called ();
10783 base_breakpoint_print_one_detail (const struct breakpoint
*self
,
10784 struct ui_out
*uiout
)
10790 base_breakpoint_print_mention (struct breakpoint
*b
)
10792 internal_error_pure_virtual_called ();
10796 base_breakpoint_print_recreate (struct breakpoint
*b
, struct ui_file
*fp
)
10798 internal_error_pure_virtual_called ();
10801 static struct breakpoint_ops base_breakpoint_ops
=
10803 base_breakpoint_dtor
,
10804 base_breakpoint_allocate_location
,
10805 base_breakpoint_re_set
,
10806 base_breakpoint_insert_location
,
10807 base_breakpoint_remove_location
,
10808 base_breakpoint_breakpoint_hit
,
10809 base_breakpoint_check_status
,
10810 base_breakpoint_resources_needed
,
10811 base_breakpoint_works_in_software_mode
,
10812 base_breakpoint_print_it
,
10814 base_breakpoint_print_one_detail
,
10815 base_breakpoint_print_mention
,
10816 base_breakpoint_print_recreate
10819 /* Default breakpoint_ops methods. */
10822 bkpt_re_set (struct breakpoint
*b
)
10824 /* Do not attempt to re-set breakpoints disabled during startup. */
10825 if (b
->enable_state
== bp_startup_disabled
)
10828 /* FIXME: is this still reachable? */
10829 if (b
->addr_string
== NULL
)
10831 /* Anything without a string can't be re-set. */
10832 delete_breakpoint (b
);
10836 breakpoint_re_set_default (b
);
10840 bkpt_insert_location (struct bp_location
*bl
)
10842 if (bl
->loc_type
== bp_loc_hardware_breakpoint
)
10843 return target_insert_hw_breakpoint (bl
->gdbarch
,
10846 return target_insert_breakpoint (bl
->gdbarch
,
10851 bkpt_remove_location (struct bp_location
*bl
)
10853 if (bl
->loc_type
== bp_loc_hardware_breakpoint
)
10854 return target_remove_hw_breakpoint (bl
->gdbarch
, &bl
->target_info
);
10856 return target_remove_breakpoint (bl
->gdbarch
, &bl
->target_info
);
10860 bkpt_breakpoint_hit (const struct bp_location
*bl
,
10861 struct address_space
*aspace
, CORE_ADDR bp_addr
)
10863 struct breakpoint
*b
= bl
->owner
;
10865 if (!breakpoint_address_match (bl
->pspace
->aspace
, bl
->address
,
10869 if (overlay_debugging
/* unmapped overlay section */
10870 && section_is_overlay (bl
->section
)
10871 && !section_is_mapped (bl
->section
))
10878 bkpt_resources_needed (const struct bp_location
*bl
)
10880 gdb_assert (bl
->owner
->type
== bp_hardware_breakpoint
);
10885 static enum print_stop_action
10886 bkpt_print_it (bpstat bs
)
10888 struct breakpoint
*b
;
10889 const struct bp_location
*bl
;
10892 gdb_assert (bs
->bp_location_at
!= NULL
);
10894 bl
= bs
->bp_location_at
;
10895 b
= bs
->breakpoint_at
;
10897 bp_temp
= b
->disposition
== disp_del
;
10898 if (bl
->address
!= bl
->requested_address
)
10899 breakpoint_adjustment_warning (bl
->requested_address
,
10902 annotate_breakpoint (b
->number
);
10904 ui_out_text (uiout
, "\nTemporary breakpoint ");
10906 ui_out_text (uiout
, "\nBreakpoint ");
10907 if (ui_out_is_mi_like_p (uiout
))
10909 ui_out_field_string (uiout
, "reason",
10910 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT
));
10911 ui_out_field_string (uiout
, "disp", bpdisp_text (b
->disposition
));
10913 ui_out_field_int (uiout
, "bkptno", b
->number
);
10914 ui_out_text (uiout
, ", ");
10916 return PRINT_SRC_AND_LOC
;
10920 bkpt_print_mention (struct breakpoint
*b
)
10922 if (ui_out_is_mi_like_p (uiout
))
10927 case bp_breakpoint
:
10928 case bp_gnu_ifunc_resolver
:
10929 if (b
->disposition
== disp_del
)
10930 printf_filtered (_("Temporary breakpoint"));
10932 printf_filtered (_("Breakpoint"));
10933 printf_filtered (_(" %d"), b
->number
);
10934 if (b
->type
== bp_gnu_ifunc_resolver
)
10935 printf_filtered (_(" at gnu-indirect-function resolver"));
10937 case bp_hardware_breakpoint
:
10938 printf_filtered (_("Hardware assisted breakpoint %d"), b
->number
);
10946 bkpt_print_recreate (struct breakpoint
*tp
, struct ui_file
*fp
)
10948 if (tp
->type
== bp_breakpoint
&& tp
->disposition
== disp_del
)
10949 fprintf_unfiltered (fp
, "tbreak");
10950 else if (tp
->type
== bp_breakpoint
)
10951 fprintf_unfiltered (fp
, "break");
10952 else if (tp
->type
== bp_hardware_breakpoint
10953 && tp
->disposition
== disp_del
)
10954 fprintf_unfiltered (fp
, "thbreak");
10955 else if (tp
->type
== bp_hardware_breakpoint
)
10956 fprintf_unfiltered (fp
, "hbreak");
10958 internal_error (__FILE__
, __LINE__
,
10959 _("unhandled breakpoint type %d"), (int) tp
->type
);
10961 fprintf_unfiltered (fp
, " %s", tp
->addr_string
);
10964 /* Virtual table for internal breakpoints. */
10967 internal_bkpt_re_set (struct breakpoint
*b
)
10971 /* Delete overlay event and longjmp master breakpoints; they
10972 will be reset later by breakpoint_re_set. */
10973 case bp_overlay_event
:
10974 case bp_longjmp_master
:
10975 case bp_std_terminate_master
:
10976 case bp_exception_master
:
10977 delete_breakpoint (b
);
10980 /* This breakpoint is special, it's set up when the inferior
10981 starts and we really don't want to touch it. */
10982 case bp_shlib_event
:
10984 /* Like bp_shlib_event, this breakpoint type is special. Once
10985 it is set up, we do not want to touch it. */
10986 case bp_thread_event
:
10992 internal_bkpt_check_status (bpstat bs
)
10994 /* We do not stop for these. */
10998 static enum print_stop_action
10999 internal_bkpt_print_it (bpstat bs
)
11001 struct breakpoint
*b
;
11003 b
= bs
->breakpoint_at
;
11007 case bp_shlib_event
:
11008 /* Did we stop because the user set the stop_on_solib_events
11009 variable? (If so, we report this as a generic, "Stopped due
11010 to shlib event" message.) */
11011 printf_filtered (_("Stopped due to shared library event\n"));
11014 case bp_thread_event
:
11015 /* Not sure how we will get here.
11016 GDB should not stop for these breakpoints. */
11017 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
11020 case bp_overlay_event
:
11021 /* By analogy with the thread event, GDB should not stop for these. */
11022 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
11025 case bp_longjmp_master
:
11026 /* These should never be enabled. */
11027 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
11030 case bp_std_terminate_master
:
11031 /* These should never be enabled. */
11032 printf_filtered (_("std::terminate Master Breakpoint: "
11033 "gdb should not stop!\n"));
11036 case bp_exception_master
:
11037 /* These should never be enabled. */
11038 printf_filtered (_("Exception Master Breakpoint: "
11039 "gdb should not stop!\n"));
11043 return PRINT_NOTHING
;
11047 internal_bkpt_print_mention (struct breakpoint
*b
)
11049 /* Nothing to mention. These breakpoints are internal. */
11052 /* Virtual table for momentary breakpoints */
11055 momentary_bkpt_re_set (struct breakpoint
*b
)
11057 /* Keep temporary breakpoints, which can be encountered when we step
11058 over a dlopen call and SOLIB_ADD is resetting the breakpoints.
11059 Otherwise these should have been blown away via the cleanup chain
11060 or by breakpoint_init_inferior when we rerun the executable. */
11064 momentary_bkpt_check_status (bpstat bs
)
11066 /* Nothing. The point of these breakpoints is causing a stop. */
11069 static enum print_stop_action
11070 momentary_bkpt_print_it (bpstat bs
)
11072 if (ui_out_is_mi_like_p (uiout
))
11074 struct breakpoint
*b
= bs
->breakpoint_at
;
11079 ui_out_field_string
11081 async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED
));
11085 ui_out_field_string
11087 async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED
));
11092 return PRINT_UNKNOWN
;
11096 momentary_bkpt_print_mention (struct breakpoint
*b
)
11098 /* Nothing to mention. These breakpoints are internal. */
11101 /* The breakpoint_ops structure to be used in tracepoints. */
11104 tracepoint_re_set (struct breakpoint
*b
)
11106 breakpoint_re_set_default (b
);
11110 tracepoint_breakpoint_hit (const struct bp_location
*bl
,
11111 struct address_space
*aspace
, CORE_ADDR bp_addr
)
11113 /* By definition, the inferior does not report stops at
11119 tracepoint_print_one_detail (const struct breakpoint
*self
,
11120 struct ui_out
*uiout
)
11122 struct tracepoint
*tp
= (struct tracepoint
*) self
;
11123 if (tp
->static_trace_marker_id
)
11125 gdb_assert (self
->type
== bp_static_tracepoint
);
11127 ui_out_text (uiout
, "\tmarker id is ");
11128 ui_out_field_string (uiout
, "static-tracepoint-marker-string-id",
11129 tp
->static_trace_marker_id
);
11130 ui_out_text (uiout
, "\n");
11135 tracepoint_print_mention (struct breakpoint
*b
)
11137 if (ui_out_is_mi_like_p (uiout
))
11142 case bp_tracepoint
:
11143 printf_filtered (_("Tracepoint"));
11144 printf_filtered (_(" %d"), b
->number
);
11146 case bp_fast_tracepoint
:
11147 printf_filtered (_("Fast tracepoint"));
11148 printf_filtered (_(" %d"), b
->number
);
11150 case bp_static_tracepoint
:
11151 printf_filtered (_("Static tracepoint"));
11152 printf_filtered (_(" %d"), b
->number
);
11155 internal_error (__FILE__
, __LINE__
,
11156 _("unhandled tracepoint type %d"), (int) b
->type
);
11163 tracepoint_print_recreate (struct breakpoint
*self
, struct ui_file
*fp
)
11165 struct tracepoint
*tp
= (struct tracepoint
*) self
;
11167 if (self
->type
== bp_fast_tracepoint
)
11168 fprintf_unfiltered (fp
, "ftrace");
11169 if (self
->type
== bp_static_tracepoint
)
11170 fprintf_unfiltered (fp
, "strace");
11171 else if (self
->type
== bp_tracepoint
)
11172 fprintf_unfiltered (fp
, "trace");
11174 internal_error (__FILE__
, __LINE__
,
11175 _("unhandled tracepoint type %d"), (int) self
->type
);
11177 fprintf_unfiltered (fp
, " %s", self
->addr_string
);
11178 print_recreate_thread (self
, fp
);
11180 if (tp
->pass_count
)
11181 fprintf_unfiltered (fp
, " passcount %d\n", tp
->pass_count
);
11184 struct breakpoint_ops tracepoint_breakpoint_ops
;
11186 /* Delete a breakpoint and clean up all traces of it in the data
11190 delete_breakpoint (struct breakpoint
*bpt
)
11192 struct breakpoint
*b
;
11194 gdb_assert (bpt
!= NULL
);
11196 /* Has this bp already been deleted? This can happen because
11197 multiple lists can hold pointers to bp's. bpstat lists are
11200 One example of this happening is a watchpoint's scope bp. When
11201 the scope bp triggers, we notice that the watchpoint is out of
11202 scope, and delete it. We also delete its scope bp. But the
11203 scope bp is marked "auto-deleting", and is already on a bpstat.
11204 That bpstat is then checked for auto-deleting bp's, which are
11207 A real solution to this problem might involve reference counts in
11208 bp's, and/or giving them pointers back to their referencing
11209 bpstat's, and teaching delete_breakpoint to only free a bp's
11210 storage when no more references were extent. A cheaper bandaid
11212 if (bpt
->type
== bp_none
)
11215 /* At least avoid this stale reference until the reference counting
11216 of breakpoints gets resolved. */
11217 if (bpt
->related_breakpoint
!= bpt
)
11219 struct breakpoint
*related
;
11220 struct watchpoint
*w
;
11222 if (bpt
->type
== bp_watchpoint_scope
)
11223 w
= (struct watchpoint
*) bpt
->related_breakpoint
;
11224 else if (bpt
->related_breakpoint
->type
== bp_watchpoint_scope
)
11225 w
= (struct watchpoint
*) bpt
;
11229 watchpoint_del_at_next_stop (w
);
11231 /* Unlink bpt from the bpt->related_breakpoint ring. */
11232 for (related
= bpt
; related
->related_breakpoint
!= bpt
;
11233 related
= related
->related_breakpoint
);
11234 related
->related_breakpoint
= bpt
->related_breakpoint
;
11235 bpt
->related_breakpoint
= bpt
;
11238 /* watch_command_1 creates a watchpoint but only sets its number if
11239 update_watchpoint succeeds in creating its bp_locations. If there's
11240 a problem in that process, we'll be asked to delete the half-created
11241 watchpoint. In that case, don't announce the deletion. */
11243 observer_notify_breakpoint_deleted (bpt
);
11245 if (breakpoint_chain
== bpt
)
11246 breakpoint_chain
= bpt
->next
;
11248 ALL_BREAKPOINTS (b
)
11249 if (b
->next
== bpt
)
11251 b
->next
= bpt
->next
;
11255 /* Be sure no bpstat's are pointing at the breakpoint after it's
11257 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
11258 in all threads for now. Note that we cannot just remove bpstats
11259 pointing at bpt from the stop_bpstat list entirely, as breakpoint
11260 commands are associated with the bpstat; if we remove it here,
11261 then the later call to bpstat_do_actions (&stop_bpstat); in
11262 event-top.c won't do anything, and temporary breakpoints with
11263 commands won't work. */
11265 iterate_over_threads (bpstat_remove_breakpoint_callback
, bpt
);
11267 /* Now that breakpoint is removed from breakpoint list, update the
11268 global location list. This will remove locations that used to
11269 belong to this breakpoint. Do this before freeing the breakpoint
11270 itself, since remove_breakpoint looks at location's owner. It
11271 might be better design to have location completely
11272 self-contained, but it's not the case now. */
11273 update_global_location_list (0);
11275 bpt
->ops
->dtor (bpt
);
11276 /* On the chance that someone will soon try again to delete this
11277 same bp, we mark it as deleted before freeing its storage. */
11278 bpt
->type
= bp_none
;
11283 do_delete_breakpoint_cleanup (void *b
)
11285 delete_breakpoint (b
);
11289 make_cleanup_delete_breakpoint (struct breakpoint
*b
)
11291 return make_cleanup (do_delete_breakpoint_cleanup
, b
);
11294 /* Iterator function to call a user-provided callback function once
11295 for each of B and its related breakpoints. */
11298 iterate_over_related_breakpoints (struct breakpoint
*b
,
11299 void (*function
) (struct breakpoint
*,
11303 struct breakpoint
*related
;
11308 struct breakpoint
*next
;
11310 /* FUNCTION may delete RELATED. */
11311 next
= related
->related_breakpoint
;
11313 if (next
== related
)
11315 /* RELATED is the last ring entry. */
11316 function (related
, data
);
11318 /* FUNCTION may have deleted it, so we'd never reach back to
11319 B. There's nothing left to do anyway, so just break
11324 function (related
, data
);
11328 while (related
!= b
);
11332 do_delete_breakpoint (struct breakpoint
*b
, void *ignore
)
11334 delete_breakpoint (b
);
11337 /* A callback for map_breakpoint_numbers that calls
11338 delete_breakpoint. */
11341 do_map_delete_breakpoint (struct breakpoint
*b
, void *ignore
)
11343 iterate_over_related_breakpoints (b
, do_delete_breakpoint
, NULL
);
11347 delete_command (char *arg
, int from_tty
)
11349 struct breakpoint
*b
, *b_tmp
;
11355 int breaks_to_delete
= 0;
11357 /* Delete all breakpoints if no argument. Do not delete
11358 internal breakpoints, these have to be deleted with an
11359 explicit breakpoint number argument. */
11360 ALL_BREAKPOINTS (b
)
11361 if (user_breakpoint_p (b
))
11363 breaks_to_delete
= 1;
11367 /* Ask user only if there are some breakpoints to delete. */
11369 || (breaks_to_delete
&& query (_("Delete all breakpoints? "))))
11371 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
11372 if (user_breakpoint_p (b
))
11373 delete_breakpoint (b
);
11377 map_breakpoint_numbers (arg
, do_map_delete_breakpoint
, NULL
);
11381 all_locations_are_pending (struct bp_location
*loc
)
11383 for (; loc
; loc
= loc
->next
)
11384 if (!loc
->shlib_disabled
)
11389 /* Subroutine of update_breakpoint_locations to simplify it.
11390 Return non-zero if multiple fns in list LOC have the same name.
11391 Null names are ignored. */
11394 ambiguous_names_p (struct bp_location
*loc
)
11396 struct bp_location
*l
;
11397 htab_t htab
= htab_create_alloc (13, htab_hash_string
,
11398 (int (*) (const void *,
11399 const void *)) streq
,
11400 NULL
, xcalloc
, xfree
);
11402 for (l
= loc
; l
!= NULL
; l
= l
->next
)
11405 const char *name
= l
->function_name
;
11407 /* Allow for some names to be NULL, ignore them. */
11411 slot
= (const char **) htab_find_slot (htab
, (const void *) name
,
11413 /* NOTE: We can assume slot != NULL here because xcalloc never
11417 htab_delete (htab
);
11423 htab_delete (htab
);
11427 /* When symbols change, it probably means the sources changed as well,
11428 and it might mean the static tracepoint markers are no longer at
11429 the same address or line numbers they used to be at last we
11430 checked. Losing your static tracepoints whenever you rebuild is
11431 undesirable. This function tries to resync/rematch gdb static
11432 tracepoints with the markers on the target, for static tracepoints
11433 that have not been set by marker id. Static tracepoint that have
11434 been set by marker id are reset by marker id in breakpoint_re_set.
11437 1) For a tracepoint set at a specific address, look for a marker at
11438 the old PC. If one is found there, assume to be the same marker.
11439 If the name / string id of the marker found is different from the
11440 previous known name, assume that means the user renamed the marker
11441 in the sources, and output a warning.
11443 2) For a tracepoint set at a given line number, look for a marker
11444 at the new address of the old line number. If one is found there,
11445 assume to be the same marker. If the name / string id of the
11446 marker found is different from the previous known name, assume that
11447 means the user renamed the marker in the sources, and output a
11450 3) If a marker is no longer found at the same address or line, it
11451 may mean the marker no longer exists. But it may also just mean
11452 the code changed a bit. Maybe the user added a few lines of code
11453 that made the marker move up or down (in line number terms). Ask
11454 the target for info about the marker with the string id as we knew
11455 it. If found, update line number and address in the matching
11456 static tracepoint. This will get confused if there's more than one
11457 marker with the same ID (possible in UST, although unadvised
11458 precisely because it confuses tools). */
11460 static struct symtab_and_line
11461 update_static_tracepoint (struct breakpoint
*b
, struct symtab_and_line sal
)
11463 struct tracepoint
*tp
= (struct tracepoint
*) b
;
11464 struct static_tracepoint_marker marker
;
11470 find_line_pc (sal
.symtab
, sal
.line
, &pc
);
11472 if (target_static_tracepoint_marker_at (pc
, &marker
))
11474 if (strcmp (tp
->static_trace_marker_id
, marker
.str_id
) != 0)
11475 warning (_("static tracepoint %d changed probed marker from %s to %s"),
11477 tp
->static_trace_marker_id
, marker
.str_id
);
11479 xfree (tp
->static_trace_marker_id
);
11480 tp
->static_trace_marker_id
= xstrdup (marker
.str_id
);
11481 release_static_tracepoint_marker (&marker
);
11486 /* Old marker wasn't found on target at lineno. Try looking it up
11488 if (!sal
.explicit_pc
11490 && sal
.symtab
!= NULL
11491 && tp
->static_trace_marker_id
!= NULL
)
11493 VEC(static_tracepoint_marker_p
) *markers
;
11496 = target_static_tracepoint_markers_by_strid (tp
->static_trace_marker_id
);
11498 if (!VEC_empty(static_tracepoint_marker_p
, markers
))
11500 struct symtab_and_line sal
;
11501 struct symbol
*sym
;
11502 struct static_tracepoint_marker
*marker
;
11504 marker
= VEC_index (static_tracepoint_marker_p
, markers
, 0);
11506 xfree (tp
->static_trace_marker_id
);
11507 tp
->static_trace_marker_id
= xstrdup (marker
->str_id
);
11509 warning (_("marker for static tracepoint %d (%s) not "
11510 "found at previous line number"),
11511 b
->number
, tp
->static_trace_marker_id
);
11515 sal
.pc
= marker
->address
;
11517 sal
= find_pc_line (marker
->address
, 0);
11518 sym
= find_pc_sect_function (marker
->address
, NULL
);
11519 ui_out_text (uiout
, "Now in ");
11522 ui_out_field_string (uiout
, "func",
11523 SYMBOL_PRINT_NAME (sym
));
11524 ui_out_text (uiout
, " at ");
11526 ui_out_field_string (uiout
, "file", sal
.symtab
->filename
);
11527 ui_out_text (uiout
, ":");
11529 if (ui_out_is_mi_like_p (uiout
))
11531 char *fullname
= symtab_to_fullname (sal
.symtab
);
11534 ui_out_field_string (uiout
, "fullname", fullname
);
11537 ui_out_field_int (uiout
, "line", sal
.line
);
11538 ui_out_text (uiout
, "\n");
11540 b
->line_number
= sal
.line
;
11542 xfree (b
->source_file
);
11544 b
->source_file
= xstrdup (sal
.symtab
->filename
);
11546 b
->source_file
= NULL
;
11548 xfree (b
->addr_string
);
11549 b
->addr_string
= xstrprintf ("%s:%d",
11550 sal
.symtab
->filename
, b
->line_number
);
11552 /* Might be nice to check if function changed, and warn if
11555 release_static_tracepoint_marker (marker
);
11561 /* Returns 1 iff locations A and B are sufficiently same that
11562 we don't need to report breakpoint as changed. */
11565 locations_are_equal (struct bp_location
*a
, struct bp_location
*b
)
11569 if (a
->address
!= b
->address
)
11572 if (a
->shlib_disabled
!= b
->shlib_disabled
)
11575 if (a
->enabled
!= b
->enabled
)
11582 if ((a
== NULL
) != (b
== NULL
))
11588 /* Create new breakpoint locations for B (a hardware or software breakpoint)
11589 based on SALS and SALS_END. If SALS_END.NELTS is not zero, then B is
11590 a ranged breakpoint. */
11593 update_breakpoint_locations (struct breakpoint
*b
,
11594 struct symtabs_and_lines sals
,
11595 struct symtabs_and_lines sals_end
)
11598 struct bp_location
*existing_locations
= b
->loc
;
11600 /* Ranged breakpoints have only one start location and one end location. */
11601 gdb_assert (sals_end
.nelts
== 0 || (sals
.nelts
== 1 && sals_end
.nelts
== 1));
11603 /* If there's no new locations, and all existing locations are
11604 pending, don't do anything. This optimizes the common case where
11605 all locations are in the same shared library, that was unloaded.
11606 We'd like to retain the location, so that when the library is
11607 loaded again, we don't loose the enabled/disabled status of the
11608 individual locations. */
11609 if (all_locations_are_pending (existing_locations
) && sals
.nelts
== 0)
11614 for (i
= 0; i
< sals
.nelts
; ++i
)
11616 struct bp_location
*new_loc
=
11617 add_location_to_breakpoint (b
, &(sals
.sals
[i
]));
11619 /* Reparse conditions, they might contain references to the
11621 if (b
->cond_string
!= NULL
)
11624 struct gdb_exception e
;
11626 s
= b
->cond_string
;
11627 TRY_CATCH (e
, RETURN_MASK_ERROR
)
11629 new_loc
->cond
= parse_exp_1 (&s
, block_for_pc (sals
.sals
[i
].pc
),
11634 warning (_("failed to reevaluate condition "
11635 "for breakpoint %d: %s"),
11636 b
->number
, e
.message
);
11637 new_loc
->enabled
= 0;
11641 if (b
->source_file
!= NULL
)
11642 xfree (b
->source_file
);
11643 if (sals
.sals
[i
].symtab
== NULL
)
11644 b
->source_file
= NULL
;
11646 b
->source_file
= xstrdup (sals
.sals
[i
].symtab
->filename
);
11648 if (b
->line_number
== 0)
11649 b
->line_number
= sals
.sals
[i
].line
;
11651 if (sals_end
.nelts
)
11653 CORE_ADDR end
= find_breakpoint_range_end (sals_end
.sals
[0]);
11655 new_loc
->length
= end
- sals
.sals
[0].pc
+ 1;
11659 /* Update locations of permanent breakpoints. */
11660 if (b
->enable_state
== bp_permanent
)
11661 make_breakpoint_permanent (b
);
11663 /* If possible, carry over 'disable' status from existing
11666 struct bp_location
*e
= existing_locations
;
11667 /* If there are multiple breakpoints with the same function name,
11668 e.g. for inline functions, comparing function names won't work.
11669 Instead compare pc addresses; this is just a heuristic as things
11670 may have moved, but in practice it gives the correct answer
11671 often enough until a better solution is found. */
11672 int have_ambiguous_names
= ambiguous_names_p (b
->loc
);
11674 for (; e
; e
= e
->next
)
11676 if (!e
->enabled
&& e
->function_name
)
11678 struct bp_location
*l
= b
->loc
;
11679 if (have_ambiguous_names
)
11681 for (; l
; l
= l
->next
)
11682 if (breakpoint_locations_match (e
, l
))
11690 for (; l
; l
= l
->next
)
11691 if (l
->function_name
11692 && strcmp (e
->function_name
, l
->function_name
) == 0)
11702 if (!locations_are_equal (existing_locations
, b
->loc
))
11703 observer_notify_breakpoint_modified (b
);
11705 update_global_location_list (1);
11708 /* Find the SaL locations corresponding to the given ADDR_STRING.
11709 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
11711 static struct symtabs_and_lines
11712 addr_string_to_sals (struct breakpoint
*b
, char *addr_string
, int *found
)
11716 struct symtabs_and_lines sals
= {0};
11717 struct gdb_exception e
;
11720 marker_spec
= b
->type
== bp_static_tracepoint
&& is_marker_spec (s
);
11722 TRY_CATCH (e
, RETURN_MASK_ERROR
)
11726 struct tracepoint
*tp
= (struct tracepoint
*) b
;
11728 sals
= decode_static_tracepoint_spec (&s
);
11729 if (sals
.nelts
> tp
->static_trace_marker_id_idx
)
11731 sals
.sals
[0] = sals
.sals
[tp
->static_trace_marker_id_idx
];
11735 error (_("marker %s not found"), tp
->static_trace_marker_id
);
11738 sals
= decode_line_1 (&s
, 1, (struct symtab
*) NULL
, 0, NULL
);
11742 int not_found_and_ok
= 0;
11743 /* For pending breakpoints, it's expected that parsing will
11744 fail until the right shared library is loaded. User has
11745 already told to create pending breakpoints and don't need
11746 extra messages. If breakpoint is in bp_shlib_disabled
11747 state, then user already saw the message about that
11748 breakpoint being disabled, and don't want to see more
11750 if (e
.error
== NOT_FOUND_ERROR
11751 && (b
->condition_not_parsed
11752 || (b
->loc
&& b
->loc
->shlib_disabled
)
11753 || b
->enable_state
== bp_disabled
))
11754 not_found_and_ok
= 1;
11756 if (!not_found_and_ok
)
11758 /* We surely don't want to warn about the same breakpoint
11759 10 times. One solution, implemented here, is disable
11760 the breakpoint on error. Another solution would be to
11761 have separate 'warning emitted' flag. Since this
11762 happens only when a binary has changed, I don't know
11763 which approach is better. */
11764 b
->enable_state
= bp_disabled
;
11765 throw_exception (e
);
11769 if (e
.reason
== 0 || e
.error
!= NOT_FOUND_ERROR
)
11771 gdb_assert (sals
.nelts
== 1);
11773 resolve_sal_pc (&sals
.sals
[0]);
11774 if (b
->condition_not_parsed
&& s
&& s
[0])
11776 char *cond_string
= 0;
11780 find_condition_and_thread (s
, sals
.sals
[0].pc
,
11781 &cond_string
, &thread
, &task
);
11783 b
->cond_string
= cond_string
;
11784 b
->thread
= thread
;
11786 b
->condition_not_parsed
= 0;
11789 if (b
->type
== bp_static_tracepoint
&& !marker_spec
)
11790 sals
.sals
[0] = update_static_tracepoint (b
, sals
.sals
[0]);
11800 /* The default re_set method, for typical hardware or software
11801 breakpoints. Reevaluate the breakpoint and recreate its
11805 breakpoint_re_set_default (struct breakpoint
*b
)
11808 struct symtabs_and_lines sals
, sals_end
;
11809 struct symtabs_and_lines expanded
= {0};
11810 struct symtabs_and_lines expanded_end
= {0};
11812 sals
= addr_string_to_sals (b
, b
->addr_string
, &found
);
11815 make_cleanup (xfree
, sals
.sals
);
11816 expanded
= expand_line_sal_maybe (sals
.sals
[0]);
11819 if (b
->addr_string_range_end
)
11821 sals_end
= addr_string_to_sals (b
, b
->addr_string_range_end
, &found
);
11824 make_cleanup (xfree
, sals_end
.sals
);
11825 expanded_end
= expand_line_sal_maybe (sals_end
.sals
[0]);
11829 update_breakpoint_locations (b
, expanded
, expanded_end
);
11832 /* Prepare the global context for a re-set of breakpoint B. */
11834 static struct cleanup
*
11835 prepare_re_set_context (struct breakpoint
*b
)
11837 struct cleanup
*cleanups
;
11839 input_radix
= b
->input_radix
;
11840 cleanups
= save_current_space_and_thread ();
11841 switch_to_program_space_and_thread (b
->pspace
);
11842 set_language (b
->language
);
11847 /* Reset a breakpoint given it's struct breakpoint * BINT.
11848 The value we return ends up being the return value from catch_errors.
11849 Unused in this case. */
11852 breakpoint_re_set_one (void *bint
)
11854 /* Get past catch_errs. */
11855 struct breakpoint
*b
= (struct breakpoint
*) bint
;
11856 struct cleanup
*cleanups
;
11858 cleanups
= prepare_re_set_context (b
);
11859 b
->ops
->re_set (b
);
11860 do_cleanups (cleanups
);
11864 /* Re-set all breakpoints after symbols have been re-loaded. */
11866 breakpoint_re_set (void)
11868 struct breakpoint
*b
, *b_tmp
;
11869 enum language save_language
;
11870 int save_input_radix
;
11871 struct cleanup
*old_chain
;
11873 save_language
= current_language
->la_language
;
11874 save_input_radix
= input_radix
;
11875 old_chain
= save_current_program_space ();
11877 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
11879 /* Format possible error msg. */
11880 char *message
= xstrprintf ("Error in re-setting breakpoint %d: ",
11882 struct cleanup
*cleanups
= make_cleanup (xfree
, message
);
11883 catch_errors (breakpoint_re_set_one
, b
, message
, RETURN_MASK_ALL
);
11884 do_cleanups (cleanups
);
11886 set_language (save_language
);
11887 input_radix
= save_input_radix
;
11889 jit_breakpoint_re_set ();
11891 do_cleanups (old_chain
);
11893 create_overlay_event_breakpoint ();
11894 create_longjmp_master_breakpoint ();
11895 create_std_terminate_master_breakpoint ();
11896 create_exception_master_breakpoint ();
11899 /* Reset the thread number of this breakpoint:
11901 - If the breakpoint is for all threads, leave it as-is.
11902 - Else, reset it to the current thread for inferior_ptid. */
11904 breakpoint_re_set_thread (struct breakpoint
*b
)
11906 if (b
->thread
!= -1)
11908 if (in_thread_list (inferior_ptid
))
11909 b
->thread
= pid_to_thread_id (inferior_ptid
);
11911 /* We're being called after following a fork. The new fork is
11912 selected as current, and unless this was a vfork will have a
11913 different program space from the original thread. Reset that
11915 b
->loc
->pspace
= current_program_space
;
11919 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
11920 If from_tty is nonzero, it prints a message to that effect,
11921 which ends with a period (no newline). */
11924 set_ignore_count (int bptnum
, int count
, int from_tty
)
11926 struct breakpoint
*b
;
11931 ALL_BREAKPOINTS (b
)
11932 if (b
->number
== bptnum
)
11934 if (is_tracepoint (b
))
11936 if (from_tty
&& count
!= 0)
11937 printf_filtered (_("Ignore count ignored for tracepoint %d."),
11942 b
->ignore_count
= count
;
11946 printf_filtered (_("Will stop next time "
11947 "breakpoint %d is reached."),
11949 else if (count
== 1)
11950 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
11953 printf_filtered (_("Will ignore next %d "
11954 "crossings of breakpoint %d."),
11957 breakpoints_changed ();
11958 observer_notify_breakpoint_modified (b
);
11962 error (_("No breakpoint number %d."), bptnum
);
11965 /* Command to set ignore-count of breakpoint N to COUNT. */
11968 ignore_command (char *args
, int from_tty
)
11974 error_no_arg (_("a breakpoint number"));
11976 num
= get_number (&p
);
11978 error (_("bad breakpoint number: '%s'"), args
);
11980 error (_("Second argument (specified ignore-count) is missing."));
11982 set_ignore_count (num
,
11983 longest_to_int (value_as_long (parse_and_eval (p
))),
11986 printf_filtered ("\n");
11989 /* Call FUNCTION on each of the breakpoints
11990 whose numbers are given in ARGS. */
11993 map_breakpoint_numbers (char *args
, void (*function
) (struct breakpoint
*,
11998 struct breakpoint
*b
, *tmp
;
12000 struct get_number_or_range_state state
;
12003 error_no_arg (_("one or more breakpoint numbers"));
12005 init_number_or_range (&state
, args
);
12007 while (!state
.finished
)
12009 char *p
= state
.string
;
12013 num
= get_number_or_range (&state
);
12016 warning (_("bad breakpoint number at or near '%s'"), p
);
12020 ALL_BREAKPOINTS_SAFE (b
, tmp
)
12021 if (b
->number
== num
)
12024 function (b
, data
);
12028 printf_unfiltered (_("No breakpoint number %d.\n"), num
);
12033 static struct bp_location
*
12034 find_location_by_number (char *number
)
12036 char *dot
= strchr (number
, '.');
12040 struct breakpoint
*b
;
12041 struct bp_location
*loc
;
12046 bp_num
= get_number (&p1
);
12048 error (_("Bad breakpoint number '%s'"), number
);
12050 ALL_BREAKPOINTS (b
)
12051 if (b
->number
== bp_num
)
12056 if (!b
|| b
->number
!= bp_num
)
12057 error (_("Bad breakpoint number '%s'"), number
);
12060 loc_num
= get_number (&p1
);
12062 error (_("Bad breakpoint location number '%s'"), number
);
12066 for (;loc_num
&& loc
; --loc_num
, loc
= loc
->next
)
12069 error (_("Bad breakpoint location number '%s'"), dot
+1);
12075 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
12076 If from_tty is nonzero, it prints a message to that effect,
12077 which ends with a period (no newline). */
12080 disable_breakpoint (struct breakpoint
*bpt
)
12082 /* Never disable a watchpoint scope breakpoint; we want to
12083 hit them when we leave scope so we can delete both the
12084 watchpoint and its scope breakpoint at that time. */
12085 if (bpt
->type
== bp_watchpoint_scope
)
12088 /* You can't disable permanent breakpoints. */
12089 if (bpt
->enable_state
== bp_permanent
)
12092 bpt
->enable_state
= bp_disabled
;
12094 if (target_supports_enable_disable_tracepoint ()
12095 && current_trace_status ()->running
&& is_tracepoint (bpt
))
12097 struct bp_location
*location
;
12099 for (location
= bpt
->loc
; location
; location
= location
->next
)
12100 target_disable_tracepoint (location
);
12103 update_global_location_list (0);
12105 observer_notify_breakpoint_modified (bpt
);
12108 /* A callback for iterate_over_related_breakpoints. */
12111 do_disable_breakpoint (struct breakpoint
*b
, void *ignore
)
12113 disable_breakpoint (b
);
12116 /* A callback for map_breakpoint_numbers that calls
12117 disable_breakpoint. */
12120 do_map_disable_breakpoint (struct breakpoint
*b
, void *ignore
)
12122 iterate_over_related_breakpoints (b
, do_disable_breakpoint
, NULL
);
12126 disable_command (char *args
, int from_tty
)
12130 struct breakpoint
*bpt
;
12132 ALL_BREAKPOINTS (bpt
)
12133 if (user_breakpoint_p (bpt
))
12134 disable_breakpoint (bpt
);
12136 else if (strchr (args
, '.'))
12138 struct bp_location
*loc
= find_location_by_number (args
);
12142 if (target_supports_enable_disable_tracepoint ()
12143 && current_trace_status ()->running
&& loc
->owner
12144 && is_tracepoint (loc
->owner
))
12145 target_disable_tracepoint (loc
);
12147 update_global_location_list (0);
12150 map_breakpoint_numbers (args
, do_map_disable_breakpoint
, NULL
);
12154 enable_breakpoint_disp (struct breakpoint
*bpt
, enum bpdisp disposition
)
12156 int target_resources_ok
;
12158 if (bpt
->type
== bp_hardware_breakpoint
)
12161 i
= hw_breakpoint_used_count ();
12162 target_resources_ok
=
12163 target_can_use_hardware_watchpoint (bp_hardware_breakpoint
,
12165 if (target_resources_ok
== 0)
12166 error (_("No hardware breakpoint support in the target."));
12167 else if (target_resources_ok
< 0)
12168 error (_("Hardware breakpoints used exceeds limit."));
12171 if (is_watchpoint (bpt
))
12173 /* Initialize it just to avoid a GCC false warning. */
12174 enum enable_state orig_enable_state
= 0;
12175 struct gdb_exception e
;
12177 TRY_CATCH (e
, RETURN_MASK_ALL
)
12179 struct watchpoint
*w
= (struct watchpoint
*) bpt
;
12181 orig_enable_state
= bpt
->enable_state
;
12182 bpt
->enable_state
= bp_enabled
;
12183 update_watchpoint (w
, 1 /* reparse */);
12187 bpt
->enable_state
= orig_enable_state
;
12188 exception_fprintf (gdb_stderr
, e
, _("Cannot enable watchpoint %d: "),
12194 if (bpt
->enable_state
!= bp_permanent
)
12195 bpt
->enable_state
= bp_enabled
;
12197 if (target_supports_enable_disable_tracepoint ()
12198 && current_trace_status ()->running
&& is_tracepoint (bpt
))
12200 struct bp_location
*location
;
12202 for (location
= bpt
->loc
; location
; location
= location
->next
)
12203 target_enable_tracepoint (location
);
12206 bpt
->disposition
= disposition
;
12207 update_global_location_list (1);
12208 breakpoints_changed ();
12210 observer_notify_breakpoint_modified (bpt
);
12215 enable_breakpoint (struct breakpoint
*bpt
)
12217 enable_breakpoint_disp (bpt
, bpt
->disposition
);
12221 do_enable_breakpoint (struct breakpoint
*bpt
, void *arg
)
12223 enable_breakpoint (bpt
);
12226 /* A callback for map_breakpoint_numbers that calls
12227 enable_breakpoint. */
12230 do_map_enable_breakpoint (struct breakpoint
*b
, void *ignore
)
12232 iterate_over_related_breakpoints (b
, do_enable_breakpoint
, NULL
);
12235 /* The enable command enables the specified breakpoints (or all defined
12236 breakpoints) so they once again become (or continue to be) effective
12237 in stopping the inferior. */
12240 enable_command (char *args
, int from_tty
)
12244 struct breakpoint
*bpt
;
12246 ALL_BREAKPOINTS (bpt
)
12247 if (user_breakpoint_p (bpt
))
12248 enable_breakpoint (bpt
);
12250 else if (strchr (args
, '.'))
12252 struct bp_location
*loc
= find_location_by_number (args
);
12256 if (target_supports_enable_disable_tracepoint ()
12257 && current_trace_status ()->running
&& loc
->owner
12258 && is_tracepoint (loc
->owner
))
12259 target_enable_tracepoint (loc
);
12261 update_global_location_list (1);
12264 map_breakpoint_numbers (args
, do_map_enable_breakpoint
, NULL
);
12268 do_enable_breakpoint_disp (struct breakpoint
*bpt
, void *arg
)
12270 enum bpdisp disp
= *(enum bpdisp
*) arg
;
12272 enable_breakpoint_disp (bpt
, disp
);
12276 do_map_enable_once_breakpoint (struct breakpoint
*bpt
, void *ignore
)
12278 enum bpdisp disp
= disp_disable
;
12280 iterate_over_related_breakpoints (bpt
, do_enable_breakpoint_disp
, &disp
);
12284 enable_once_command (char *args
, int from_tty
)
12286 map_breakpoint_numbers (args
, do_map_enable_once_breakpoint
, NULL
);
12290 do_map_enable_delete_breakpoint (struct breakpoint
*bpt
, void *ignore
)
12292 enum bpdisp disp
= disp_del
;
12294 iterate_over_related_breakpoints (bpt
, do_enable_breakpoint_disp
, &disp
);
12298 enable_delete_command (char *args
, int from_tty
)
12300 map_breakpoint_numbers (args
, do_map_enable_delete_breakpoint
, NULL
);
12304 set_breakpoint_cmd (char *args
, int from_tty
)
12309 show_breakpoint_cmd (char *args
, int from_tty
)
12313 /* Invalidate last known value of any hardware watchpoint if
12314 the memory which that value represents has been written to by
12318 invalidate_bp_value_on_memory_change (CORE_ADDR addr
, int len
,
12319 const bfd_byte
*data
)
12321 struct breakpoint
*bp
;
12323 ALL_BREAKPOINTS (bp
)
12324 if (bp
->enable_state
== bp_enabled
12325 && bp
->type
== bp_hardware_watchpoint
)
12327 struct watchpoint
*wp
= (struct watchpoint
*) bp
;
12329 if (wp
->val_valid
&& wp
->val
)
12331 struct bp_location
*loc
;
12333 for (loc
= bp
->loc
; loc
!= NULL
; loc
= loc
->next
)
12334 if (loc
->loc_type
== bp_loc_hardware_watchpoint
12335 && loc
->address
+ loc
->length
> addr
12336 && addr
+ len
> loc
->address
)
12338 value_free (wp
->val
);
12346 /* Use default_breakpoint_'s, or nothing if they aren't valid. */
12348 struct symtabs_and_lines
12349 decode_line_spec_1 (char *string
, int funfirstline
)
12351 struct symtabs_and_lines sals
;
12354 error (_("Empty line specification."));
12355 if (default_breakpoint_valid
)
12356 sals
= decode_line_1 (&string
, funfirstline
,
12357 default_breakpoint_symtab
,
12358 default_breakpoint_line
,
12361 sals
= decode_line_1 (&string
, funfirstline
,
12362 (struct symtab
*) NULL
, 0, NULL
);
12364 error (_("Junk at end of line specification: %s"), string
);
12368 /* Create and insert a raw software breakpoint at PC. Return an
12369 identifier, which should be used to remove the breakpoint later.
12370 In general, places which call this should be using something on the
12371 breakpoint chain instead; this function should be eliminated
12375 deprecated_insert_raw_breakpoint (struct gdbarch
*gdbarch
,
12376 struct address_space
*aspace
, CORE_ADDR pc
)
12378 struct bp_target_info
*bp_tgt
;
12380 bp_tgt
= XZALLOC (struct bp_target_info
);
12382 bp_tgt
->placed_address_space
= aspace
;
12383 bp_tgt
->placed_address
= pc
;
12385 if (target_insert_breakpoint (gdbarch
, bp_tgt
) != 0)
12387 /* Could not insert the breakpoint. */
12395 /* Remove a breakpoint BP inserted by
12396 deprecated_insert_raw_breakpoint. */
12399 deprecated_remove_raw_breakpoint (struct gdbarch
*gdbarch
, void *bp
)
12401 struct bp_target_info
*bp_tgt
= bp
;
12404 ret
= target_remove_breakpoint (gdbarch
, bp_tgt
);
12410 /* One (or perhaps two) breakpoints used for software single
12413 static void *single_step_breakpoints
[2];
12414 static struct gdbarch
*single_step_gdbarch
[2];
12416 /* Create and insert a breakpoint for software single step. */
12419 insert_single_step_breakpoint (struct gdbarch
*gdbarch
,
12420 struct address_space
*aspace
,
12425 if (single_step_breakpoints
[0] == NULL
)
12427 bpt_p
= &single_step_breakpoints
[0];
12428 single_step_gdbarch
[0] = gdbarch
;
12432 gdb_assert (single_step_breakpoints
[1] == NULL
);
12433 bpt_p
= &single_step_breakpoints
[1];
12434 single_step_gdbarch
[1] = gdbarch
;
12437 /* NOTE drow/2006-04-11: A future improvement to this function would
12438 be to only create the breakpoints once, and actually put them on
12439 the breakpoint chain. That would let us use set_raw_breakpoint.
12440 We could adjust the addresses each time they were needed. Doing
12441 this requires corresponding changes elsewhere where single step
12442 breakpoints are handled, however. So, for now, we use this. */
12444 *bpt_p
= deprecated_insert_raw_breakpoint (gdbarch
, aspace
, next_pc
);
12445 if (*bpt_p
== NULL
)
12446 error (_("Could not insert single-step breakpoint at %s"),
12447 paddress (gdbarch
, next_pc
));
12450 /* Check if the breakpoints used for software single stepping
12451 were inserted or not. */
12454 single_step_breakpoints_inserted (void)
12456 return (single_step_breakpoints
[0] != NULL
12457 || single_step_breakpoints
[1] != NULL
);
12460 /* Remove and delete any breakpoints used for software single step. */
12463 remove_single_step_breakpoints (void)
12465 gdb_assert (single_step_breakpoints
[0] != NULL
);
12467 /* See insert_single_step_breakpoint for more about this deprecated
12469 deprecated_remove_raw_breakpoint (single_step_gdbarch
[0],
12470 single_step_breakpoints
[0]);
12471 single_step_gdbarch
[0] = NULL
;
12472 single_step_breakpoints
[0] = NULL
;
12474 if (single_step_breakpoints
[1] != NULL
)
12476 deprecated_remove_raw_breakpoint (single_step_gdbarch
[1],
12477 single_step_breakpoints
[1]);
12478 single_step_gdbarch
[1] = NULL
;
12479 single_step_breakpoints
[1] = NULL
;
12483 /* Delete software single step breakpoints without removing them from
12484 the inferior. This is intended to be used if the inferior's address
12485 space where they were inserted is already gone, e.g. after exit or
12489 cancel_single_step_breakpoints (void)
12493 for (i
= 0; i
< 2; i
++)
12494 if (single_step_breakpoints
[i
])
12496 xfree (single_step_breakpoints
[i
]);
12497 single_step_breakpoints
[i
] = NULL
;
12498 single_step_gdbarch
[i
] = NULL
;
12502 /* Detach software single-step breakpoints from INFERIOR_PTID without
12506 detach_single_step_breakpoints (void)
12510 for (i
= 0; i
< 2; i
++)
12511 if (single_step_breakpoints
[i
])
12512 target_remove_breakpoint (single_step_gdbarch
[i
],
12513 single_step_breakpoints
[i
]);
12516 /* Check whether a software single-step breakpoint is inserted at
12520 single_step_breakpoint_inserted_here_p (struct address_space
*aspace
,
12525 for (i
= 0; i
< 2; i
++)
12527 struct bp_target_info
*bp_tgt
= single_step_breakpoints
[i
];
12529 && breakpoint_address_match (bp_tgt
->placed_address_space
,
12530 bp_tgt
->placed_address
,
12538 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
12539 non-zero otherwise. */
12541 is_syscall_catchpoint_enabled (struct breakpoint
*bp
)
12543 if (syscall_catchpoint_p (bp
)
12544 && bp
->enable_state
!= bp_disabled
12545 && bp
->enable_state
!= bp_call_disabled
)
12552 catch_syscall_enabled (void)
12554 struct inferior
*inf
= current_inferior ();
12556 return inf
->total_syscalls_count
!= 0;
12560 catching_syscall_number (int syscall_number
)
12562 struct breakpoint
*bp
;
12564 ALL_BREAKPOINTS (bp
)
12565 if (is_syscall_catchpoint_enabled (bp
))
12567 struct syscall_catchpoint
*c
= (struct syscall_catchpoint
*) bp
;
12569 if (c
->syscalls_to_be_caught
)
12573 VEC_iterate (int, c
->syscalls_to_be_caught
, i
, iter
);
12575 if (syscall_number
== iter
)
12585 /* Complete syscall names. Used by "catch syscall". */
12587 catch_syscall_completer (struct cmd_list_element
*cmd
,
12588 char *text
, char *word
)
12590 const char **list
= get_syscall_names ();
12592 = (list
== NULL
) ? NULL
: complete_on_enum (list
, text
, word
);
12598 /* Tracepoint-specific operations. */
12600 /* Set tracepoint count to NUM. */
12602 set_tracepoint_count (int num
)
12604 tracepoint_count
= num
;
12605 set_internalvar_integer (lookup_internalvar ("tpnum"), num
);
12609 trace_command (char *arg
, int from_tty
)
12611 if (create_breakpoint (get_current_arch (),
12613 NULL
, 0, 1 /* parse arg */,
12615 bp_tracepoint
/* type_wanted */,
12616 0 /* Ignore count */,
12617 pending_break_support
,
12618 &tracepoint_breakpoint_ops
,
12622 set_tracepoint_count (breakpoint_count
);
12626 ftrace_command (char *arg
, int from_tty
)
12628 if (create_breakpoint (get_current_arch (),
12630 NULL
, 0, 1 /* parse arg */,
12632 bp_fast_tracepoint
/* type_wanted */,
12633 0 /* Ignore count */,
12634 pending_break_support
,
12635 &tracepoint_breakpoint_ops
,
12639 set_tracepoint_count (breakpoint_count
);
12642 /* strace command implementation. Creates a static tracepoint. */
12645 strace_command (char *arg
, int from_tty
)
12647 if (create_breakpoint (get_current_arch (),
12649 NULL
, 0, 1 /* parse arg */,
12651 bp_static_tracepoint
/* type_wanted */,
12652 0 /* Ignore count */,
12653 pending_break_support
,
12654 &tracepoint_breakpoint_ops
,
12658 set_tracepoint_count (breakpoint_count
);
12661 /* Set up a fake reader function that gets command lines from a linked
12662 list that was acquired during tracepoint uploading. */
12664 static struct uploaded_tp
*this_utp
;
12665 static int next_cmd
;
12668 read_uploaded_action (void)
12672 VEC_iterate (char_ptr
, this_utp
->cmd_strings
, next_cmd
, rslt
);
12679 /* Given information about a tracepoint as recorded on a target (which
12680 can be either a live system or a trace file), attempt to create an
12681 equivalent GDB tracepoint. This is not a reliable process, since
12682 the target does not necessarily have all the information used when
12683 the tracepoint was originally defined. */
12685 struct tracepoint
*
12686 create_tracepoint_from_upload (struct uploaded_tp
*utp
)
12688 char *addr_str
, small_buf
[100];
12689 struct tracepoint
*tp
;
12691 if (utp
->at_string
)
12692 addr_str
= utp
->at_string
;
12695 /* In the absence of a source location, fall back to raw
12696 address. Since there is no way to confirm that the address
12697 means the same thing as when the trace was started, warn the
12699 warning (_("Uploaded tracepoint %d has no "
12700 "source location, using raw address"),
12702 sprintf (small_buf
, "*%s", hex_string (utp
->addr
));
12703 addr_str
= small_buf
;
12706 /* There's not much we can do with a sequence of bytecodes. */
12707 if (utp
->cond
&& !utp
->cond_string
)
12708 warning (_("Uploaded tracepoint %d condition "
12709 "has no source form, ignoring it"),
12712 if (!create_breakpoint (get_current_arch (),
12714 utp
->cond_string
, -1, 0 /* parse cond/thread */,
12716 utp
->type
/* type_wanted */,
12717 0 /* Ignore count */,
12718 pending_break_support
,
12719 &tracepoint_breakpoint_ops
,
12721 utp
->enabled
/* enabled */,
12725 set_tracepoint_count (breakpoint_count
);
12727 /* Get the tracepoint we just created. */
12728 tp
= get_tracepoint (tracepoint_count
);
12729 gdb_assert (tp
!= NULL
);
12733 sprintf (small_buf
, "%d %d", utp
->pass
, tp
->base
.number
);
12735 trace_pass_command (small_buf
, 0);
12738 /* If we have uploaded versions of the original commands, set up a
12739 special-purpose "reader" function and call the usual command line
12740 reader, then pass the result to the breakpoint command-setting
12742 if (!VEC_empty (char_ptr
, utp
->cmd_strings
))
12744 struct command_line
*cmd_list
;
12749 cmd_list
= read_command_lines_1 (read_uploaded_action
, 1, NULL
, NULL
);
12751 breakpoint_set_commands (&tp
->base
, cmd_list
);
12753 else if (!VEC_empty (char_ptr
, utp
->actions
)
12754 || !VEC_empty (char_ptr
, utp
->step_actions
))
12755 warning (_("Uploaded tracepoint %d actions "
12756 "have no source form, ignoring them"),
12762 /* Print information on tracepoint number TPNUM_EXP, or all if
12766 tracepoints_info (char *args
, int from_tty
)
12770 num_printed
= breakpoint_1 (args
, 0, is_tracepoint
);
12772 if (num_printed
== 0)
12774 if (args
== NULL
|| *args
== '\0')
12775 ui_out_message (uiout
, 0, "No tracepoints.\n");
12777 ui_out_message (uiout
, 0, "No tracepoint matching '%s'.\n", args
);
12780 default_collect_info ();
12783 /* The 'enable trace' command enables tracepoints.
12784 Not supported by all targets. */
12786 enable_trace_command (char *args
, int from_tty
)
12788 enable_command (args
, from_tty
);
12791 /* The 'disable trace' command disables tracepoints.
12792 Not supported by all targets. */
12794 disable_trace_command (char *args
, int from_tty
)
12796 disable_command (args
, from_tty
);
12799 /* Remove a tracepoint (or all if no argument). */
12801 delete_trace_command (char *arg
, int from_tty
)
12803 struct breakpoint
*b
, *b_tmp
;
12809 int breaks_to_delete
= 0;
12811 /* Delete all breakpoints if no argument.
12812 Do not delete internal or call-dummy breakpoints, these
12813 have to be deleted with an explicit breakpoint number
12815 ALL_TRACEPOINTS (b
)
12816 if (is_tracepoint (b
) && user_breakpoint_p (b
))
12818 breaks_to_delete
= 1;
12822 /* Ask user only if there are some breakpoints to delete. */
12824 || (breaks_to_delete
&& query (_("Delete all tracepoints? "))))
12826 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
12827 if (is_tracepoint (b
) && user_breakpoint_p (b
))
12828 delete_breakpoint (b
);
12832 map_breakpoint_numbers (arg
, do_map_delete_breakpoint
, NULL
);
12835 /* Helper function for trace_pass_command. */
12838 trace_pass_set_count (struct tracepoint
*tp
, int count
, int from_tty
)
12840 tp
->pass_count
= count
;
12841 observer_notify_tracepoint_modified (tp
->base
.number
);
12843 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
12844 tp
->base
.number
, count
);
12847 /* Set passcount for tracepoint.
12849 First command argument is passcount, second is tracepoint number.
12850 If tracepoint number omitted, apply to most recently defined.
12851 Also accepts special argument "all". */
12854 trace_pass_command (char *args
, int from_tty
)
12856 struct tracepoint
*t1
;
12857 unsigned int count
;
12859 if (args
== 0 || *args
== 0)
12860 error (_("passcount command requires an "
12861 "argument (count + optional TP num)"));
12863 count
= strtoul (args
, &args
, 10); /* Count comes first, then TP num. */
12865 while (*args
&& isspace ((int) *args
))
12868 if (*args
&& strncasecmp (args
, "all", 3) == 0)
12870 struct breakpoint
*b
;
12872 args
+= 3; /* Skip special argument "all". */
12874 error (_("Junk at end of arguments."));
12876 ALL_TRACEPOINTS (b
)
12878 t1
= (struct tracepoint
*) b
;
12879 trace_pass_set_count (t1
, count
, from_tty
);
12882 else if (*args
== '\0')
12884 t1
= get_tracepoint_by_number (&args
, NULL
, 1);
12886 trace_pass_set_count (t1
, count
, from_tty
);
12890 struct get_number_or_range_state state
;
12892 init_number_or_range (&state
, args
);
12893 while (!state
.finished
)
12895 t1
= get_tracepoint_by_number (&args
, &state
, 1);
12897 trace_pass_set_count (t1
, count
, from_tty
);
12902 struct tracepoint
*
12903 get_tracepoint (int num
)
12905 struct breakpoint
*t
;
12907 ALL_TRACEPOINTS (t
)
12908 if (t
->number
== num
)
12909 return (struct tracepoint
*) t
;
12914 /* Find the tracepoint with the given target-side number (which may be
12915 different from the tracepoint number after disconnecting and
12918 struct tracepoint
*
12919 get_tracepoint_by_number_on_target (int num
)
12921 struct breakpoint
*b
;
12923 ALL_TRACEPOINTS (b
)
12925 struct tracepoint
*t
= (struct tracepoint
*) b
;
12927 if (t
->number_on_target
== num
)
12934 /* Utility: parse a tracepoint number and look it up in the list.
12935 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
12936 If OPTIONAL_P is true, then if the argument is missing, the most
12937 recent tracepoint (tracepoint_count) is returned. */
12938 struct tracepoint
*
12939 get_tracepoint_by_number (char **arg
,
12940 struct get_number_or_range_state
*state
,
12943 extern int tracepoint_count
;
12944 struct breakpoint
*t
;
12946 char *instring
= arg
== NULL
? NULL
: *arg
;
12950 gdb_assert (!state
->finished
);
12951 tpnum
= get_number_or_range (state
);
12953 else if (arg
== NULL
|| *arg
== NULL
|| ! **arg
)
12956 tpnum
= tracepoint_count
;
12958 error_no_arg (_("tracepoint number"));
12961 tpnum
= get_number (arg
);
12965 if (instring
&& *instring
)
12966 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
12969 printf_filtered (_("Tracepoint argument missing "
12970 "and no previous tracepoint\n"));
12974 ALL_TRACEPOINTS (t
)
12975 if (t
->number
== tpnum
)
12977 return (struct tracepoint
*) t
;
12980 printf_unfiltered ("No tracepoint number %d.\n", tpnum
);
12985 print_recreate_thread (struct breakpoint
*b
, struct ui_file
*fp
)
12987 if (b
->thread
!= -1)
12988 fprintf_unfiltered (fp
, " thread %d", b
->thread
);
12991 fprintf_unfiltered (fp
, " task %d", b
->task
);
12993 fprintf_unfiltered (fp
, "\n");
12996 /* Save information on user settable breakpoints (watchpoints, etc) to
12997 a new script file named FILENAME. If FILTER is non-NULL, call it
12998 on each breakpoint and only include the ones for which it returns
13002 save_breakpoints (char *filename
, int from_tty
,
13003 int (*filter
) (const struct breakpoint
*))
13005 struct breakpoint
*tp
;
13008 struct cleanup
*cleanup
;
13009 struct ui_file
*fp
;
13010 int extra_trace_bits
= 0;
13012 if (filename
== 0 || *filename
== 0)
13013 error (_("Argument required (file name in which to save)"));
13015 /* See if we have anything to save. */
13016 ALL_BREAKPOINTS (tp
)
13018 /* Skip internal and momentary breakpoints. */
13019 if (!user_breakpoint_p (tp
))
13022 /* If we have a filter, only save the breakpoints it accepts. */
13023 if (filter
&& !filter (tp
))
13028 if (is_tracepoint (tp
))
13030 extra_trace_bits
= 1;
13032 /* We can stop searching. */
13039 warning (_("Nothing to save."));
13043 pathname
= tilde_expand (filename
);
13044 cleanup
= make_cleanup (xfree
, pathname
);
13045 fp
= gdb_fopen (pathname
, "w");
13047 error (_("Unable to open file '%s' for saving (%s)"),
13048 filename
, safe_strerror (errno
));
13049 make_cleanup_ui_file_delete (fp
);
13051 if (extra_trace_bits
)
13052 save_trace_state_variables (fp
);
13054 ALL_BREAKPOINTS (tp
)
13056 /* Skip internal and momentary breakpoints. */
13057 if (!user_breakpoint_p (tp
))
13060 /* If we have a filter, only save the breakpoints it accepts. */
13061 if (filter
&& !filter (tp
))
13064 tp
->ops
->print_recreate (tp
, fp
);
13066 /* Note, we can't rely on tp->number for anything, as we can't
13067 assume the recreated breakpoint numbers will match. Use $bpnum
13070 if (tp
->cond_string
)
13071 fprintf_unfiltered (fp
, " condition $bpnum %s\n", tp
->cond_string
);
13073 if (tp
->ignore_count
)
13074 fprintf_unfiltered (fp
, " ignore $bpnum %d\n", tp
->ignore_count
);
13078 volatile struct gdb_exception ex
;
13080 fprintf_unfiltered (fp
, " commands\n");
13082 ui_out_redirect (uiout
, fp
);
13083 TRY_CATCH (ex
, RETURN_MASK_ALL
)
13085 print_command_lines (uiout
, tp
->commands
->commands
, 2);
13087 ui_out_redirect (uiout
, NULL
);
13090 throw_exception (ex
);
13092 fprintf_unfiltered (fp
, " end\n");
13095 if (tp
->enable_state
== bp_disabled
)
13096 fprintf_unfiltered (fp
, "disable\n");
13098 /* If this is a multi-location breakpoint, check if the locations
13099 should be individually disabled. Watchpoint locations are
13100 special, and not user visible. */
13101 if (!is_watchpoint (tp
) && tp
->loc
&& tp
->loc
->next
)
13103 struct bp_location
*loc
;
13106 for (loc
= tp
->loc
; loc
!= NULL
; loc
= loc
->next
, n
++)
13108 fprintf_unfiltered (fp
, "disable $bpnum.%d\n", n
);
13112 if (extra_trace_bits
&& *default_collect
)
13113 fprintf_unfiltered (fp
, "set default-collect %s\n", default_collect
);
13115 do_cleanups (cleanup
);
13117 printf_filtered (_("Saved to file '%s'.\n"), filename
);
13120 /* The `save breakpoints' command. */
13123 save_breakpoints_command (char *args
, int from_tty
)
13125 save_breakpoints (args
, from_tty
, NULL
);
13128 /* The `save tracepoints' command. */
13131 save_tracepoints_command (char *args
, int from_tty
)
13133 save_breakpoints (args
, from_tty
, is_tracepoint
);
13136 /* Create a vector of all tracepoints. */
13138 VEC(breakpoint_p
) *
13139 all_tracepoints (void)
13141 VEC(breakpoint_p
) *tp_vec
= 0;
13142 struct breakpoint
*tp
;
13144 ALL_TRACEPOINTS (tp
)
13146 VEC_safe_push (breakpoint_p
, tp_vec
, tp
);
13153 /* This help string is used for the break, hbreak, tbreak and thbreak
13154 commands. It is defined as a macro to prevent duplication.
13155 COMMAND should be a string constant containing the name of the
13157 #define BREAK_ARGS_HELP(command) \
13158 command" [LOCATION] [thread THREADNUM] [if CONDITION]\n\
13159 LOCATION may be a line number, function name, or \"*\" and an address.\n\
13160 If a line number is specified, break at start of code for that line.\n\
13161 If a function is specified, break at start of code for that function.\n\
13162 If an address is specified, break at that exact address.\n\
13163 With no LOCATION, uses current execution address of the selected\n\
13164 stack frame. This is useful for breaking on return to a stack frame.\n\
13166 THREADNUM is the number from \"info threads\".\n\
13167 CONDITION is a boolean expression.\n\
13169 Multiple breakpoints at one place are permitted, and useful if their\n\
13170 conditions are different.\n\
13172 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
13174 /* List of subcommands for "catch". */
13175 static struct cmd_list_element
*catch_cmdlist
;
13177 /* List of subcommands for "tcatch". */
13178 static struct cmd_list_element
*tcatch_cmdlist
;
13181 add_catch_command (char *name
, char *docstring
,
13182 void (*sfunc
) (char *args
, int from_tty
,
13183 struct cmd_list_element
*command
),
13184 char **(*completer
) (struct cmd_list_element
*cmd
,
13185 char *text
, char *word
),
13186 void *user_data_catch
,
13187 void *user_data_tcatch
)
13189 struct cmd_list_element
*command
;
13191 command
= add_cmd (name
, class_breakpoint
, NULL
, docstring
,
13193 set_cmd_sfunc (command
, sfunc
);
13194 set_cmd_context (command
, user_data_catch
);
13195 set_cmd_completer (command
, completer
);
13197 command
= add_cmd (name
, class_breakpoint
, NULL
, docstring
,
13199 set_cmd_sfunc (command
, sfunc
);
13200 set_cmd_context (command
, user_data_tcatch
);
13201 set_cmd_completer (command
, completer
);
13205 clear_syscall_counts (struct inferior
*inf
)
13207 inf
->total_syscalls_count
= 0;
13208 inf
->any_syscall_count
= 0;
13209 VEC_free (int, inf
->syscalls_counts
);
13213 save_command (char *arg
, int from_tty
)
13215 printf_unfiltered (_("\"save\" must be followed by "
13216 "the name of a save subcommand.\n"));
13217 help_list (save_cmdlist
, "save ", -1, gdb_stdout
);
13220 struct breakpoint
*
13221 iterate_over_breakpoints (int (*callback
) (struct breakpoint
*, void *),
13224 struct breakpoint
*b
, *b_tmp
;
13226 ALL_BREAKPOINTS_SAFE (b
, b_tmp
)
13228 if ((*callback
) (b
, data
))
13236 initialize_breakpoint_ops (void)
13238 static int initialized
= 0;
13240 struct breakpoint_ops
*ops
;
13246 /* The breakpoint_ops structure to be inherit by all kinds of
13247 breakpoints (real breakpoints, i.e., user "break" breakpoints,
13248 internal and momentary breakpoints, etc.). */
13249 ops
= &bkpt_base_breakpoint_ops
;
13250 *ops
= base_breakpoint_ops
;
13251 ops
->re_set
= bkpt_re_set
;
13252 ops
->insert_location
= bkpt_insert_location
;
13253 ops
->remove_location
= bkpt_remove_location
;
13254 ops
->breakpoint_hit
= bkpt_breakpoint_hit
;
13256 /* The breakpoint_ops structure to be used in regular breakpoints. */
13257 ops
= &bkpt_breakpoint_ops
;
13258 *ops
= bkpt_base_breakpoint_ops
;
13259 ops
->re_set
= bkpt_re_set
;
13260 ops
->resources_needed
= bkpt_resources_needed
;
13261 ops
->print_it
= bkpt_print_it
;
13262 ops
->print_mention
= bkpt_print_mention
;
13263 ops
->print_recreate
= bkpt_print_recreate
;
13265 /* Ranged breakpoints. */
13266 ops
= &ranged_breakpoint_ops
;
13267 *ops
= bkpt_breakpoint_ops
;
13268 ops
->breakpoint_hit
= breakpoint_hit_ranged_breakpoint
;
13269 ops
->resources_needed
= resources_needed_ranged_breakpoint
;
13270 ops
->print_it
= print_it_ranged_breakpoint
;
13271 ops
->print_one
= print_one_ranged_breakpoint
;
13272 ops
->print_one_detail
= print_one_detail_ranged_breakpoint
;
13273 ops
->print_mention
= print_mention_ranged_breakpoint
;
13274 ops
->print_recreate
= print_recreate_ranged_breakpoint
;
13276 /* Internal breakpoints. */
13277 ops
= &internal_breakpoint_ops
;
13278 *ops
= bkpt_base_breakpoint_ops
;
13279 ops
->re_set
= internal_bkpt_re_set
;
13280 ops
->check_status
= internal_bkpt_check_status
;
13281 ops
->print_it
= internal_bkpt_print_it
;
13282 ops
->print_mention
= internal_bkpt_print_mention
;
13284 /* Momentary breakpoints. */
13285 ops
= &momentary_breakpoint_ops
;
13286 *ops
= bkpt_base_breakpoint_ops
;
13287 ops
->re_set
= momentary_bkpt_re_set
;
13288 ops
->check_status
= momentary_bkpt_check_status
;
13289 ops
->print_it
= momentary_bkpt_print_it
;
13290 ops
->print_mention
= momentary_bkpt_print_mention
;
13292 /* GNU v3 exception catchpoints. */
13293 ops
= &gnu_v3_exception_catchpoint_ops
;
13294 *ops
= bkpt_breakpoint_ops
;
13295 ops
->print_it
= print_it_exception_catchpoint
;
13296 ops
->print_one
= print_one_exception_catchpoint
;
13297 ops
->print_mention
= print_mention_exception_catchpoint
;
13298 ops
->print_recreate
= print_recreate_exception_catchpoint
;
13301 ops
= &watchpoint_breakpoint_ops
;
13302 *ops
= base_breakpoint_ops
;
13303 ops
->dtor
= dtor_watchpoint
;
13304 ops
->re_set
= re_set_watchpoint
;
13305 ops
->insert_location
= insert_watchpoint
;
13306 ops
->remove_location
= remove_watchpoint
;
13307 ops
->breakpoint_hit
= breakpoint_hit_watchpoint
;
13308 ops
->check_status
= check_status_watchpoint
;
13309 ops
->resources_needed
= resources_needed_watchpoint
;
13310 ops
->works_in_software_mode
= works_in_software_mode_watchpoint
;
13311 ops
->print_it
= print_it_watchpoint
;
13312 ops
->print_mention
= print_mention_watchpoint
;
13313 ops
->print_recreate
= print_recreate_watchpoint
;
13315 /* Masked watchpoints. */
13316 ops
= &masked_watchpoint_breakpoint_ops
;
13317 *ops
= watchpoint_breakpoint_ops
;
13318 ops
->insert_location
= insert_masked_watchpoint
;
13319 ops
->remove_location
= remove_masked_watchpoint
;
13320 ops
->resources_needed
= resources_needed_masked_watchpoint
;
13321 ops
->works_in_software_mode
= works_in_software_mode_masked_watchpoint
;
13322 ops
->print_it
= print_it_masked_watchpoint
;
13323 ops
->print_one_detail
= print_one_detail_masked_watchpoint
;
13324 ops
->print_mention
= print_mention_masked_watchpoint
;
13325 ops
->print_recreate
= print_recreate_masked_watchpoint
;
13328 ops
= &tracepoint_breakpoint_ops
;
13329 *ops
= base_breakpoint_ops
;
13330 ops
->re_set
= tracepoint_re_set
;
13331 ops
->breakpoint_hit
= tracepoint_breakpoint_hit
;
13332 ops
->print_one_detail
= tracepoint_print_one_detail
;
13333 ops
->print_mention
= tracepoint_print_mention
;
13334 ops
->print_recreate
= tracepoint_print_recreate
;
13336 /* Fork catchpoints. */
13337 ops
= &catch_fork_breakpoint_ops
;
13338 *ops
= base_breakpoint_ops
;
13339 ops
->insert_location
= insert_catch_fork
;
13340 ops
->remove_location
= remove_catch_fork
;
13341 ops
->breakpoint_hit
= breakpoint_hit_catch_fork
;
13342 ops
->print_it
= print_it_catch_fork
;
13343 ops
->print_one
= print_one_catch_fork
;
13344 ops
->print_mention
= print_mention_catch_fork
;
13345 ops
->print_recreate
= print_recreate_catch_fork
;
13347 /* Vfork catchpoints. */
13348 ops
= &catch_vfork_breakpoint_ops
;
13349 *ops
= base_breakpoint_ops
;
13350 ops
->insert_location
= insert_catch_vfork
;
13351 ops
->remove_location
= remove_catch_vfork
;
13352 ops
->breakpoint_hit
= breakpoint_hit_catch_vfork
;
13353 ops
->print_it
= print_it_catch_vfork
;
13354 ops
->print_one
= print_one_catch_vfork
;
13355 ops
->print_mention
= print_mention_catch_vfork
;
13356 ops
->print_recreate
= print_recreate_catch_vfork
;
13358 /* Exec catchpoints. */
13359 ops
= &catch_exec_breakpoint_ops
;
13360 *ops
= base_breakpoint_ops
;
13361 ops
->dtor
= dtor_catch_exec
;
13362 ops
->insert_location
= insert_catch_exec
;
13363 ops
->remove_location
= remove_catch_exec
;
13364 ops
->breakpoint_hit
= breakpoint_hit_catch_exec
;
13365 ops
->print_it
= print_it_catch_exec
;
13366 ops
->print_one
= print_one_catch_exec
;
13367 ops
->print_mention
= print_mention_catch_exec
;
13368 ops
->print_recreate
= print_recreate_catch_exec
;
13370 /* Syscall catchpoints. */
13371 ops
= &catch_syscall_breakpoint_ops
;
13372 *ops
= base_breakpoint_ops
;
13373 ops
->dtor
= dtor_catch_syscall
;
13374 ops
->insert_location
= insert_catch_syscall
;
13375 ops
->remove_location
= remove_catch_syscall
;
13376 ops
->breakpoint_hit
= breakpoint_hit_catch_syscall
;
13377 ops
->print_it
= print_it_catch_syscall
;
13378 ops
->print_one
= print_one_catch_syscall
;
13379 ops
->print_mention
= print_mention_catch_syscall
;
13380 ops
->print_recreate
= print_recreate_catch_syscall
;
13384 _initialize_breakpoint (void)
13386 struct cmd_list_element
*c
;
13388 initialize_breakpoint_ops ();
13390 observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib
);
13391 observer_attach_inferior_exit (clear_syscall_counts
);
13392 observer_attach_memory_changed (invalidate_bp_value_on_memory_change
);
13394 breakpoint_objfile_key
= register_objfile_data ();
13396 breakpoint_chain
= 0;
13397 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
13398 before a breakpoint is set. */
13399 breakpoint_count
= 0;
13401 tracepoint_count
= 0;
13403 add_com ("ignore", class_breakpoint
, ignore_command
, _("\
13404 Set ignore-count of breakpoint number N to COUNT.\n\
13405 Usage is `ignore N COUNT'."));
13407 add_com_alias ("bc", "ignore", class_breakpoint
, 1);
13409 add_com ("commands", class_breakpoint
, commands_command
, _("\
13410 Set commands to be executed when a breakpoint is hit.\n\
13411 Give breakpoint number as argument after \"commands\".\n\
13412 With no argument, the targeted breakpoint is the last one set.\n\
13413 The commands themselves follow starting on the next line.\n\
13414 Type a line containing \"end\" to indicate the end of them.\n\
13415 Give \"silent\" as the first line to make the breakpoint silent;\n\
13416 then no output is printed when it is hit, except what the commands print."));
13418 add_com ("condition", class_breakpoint
, condition_command
, _("\
13419 Specify breakpoint number N to break only if COND is true.\n\
13420 Usage is `condition N COND', where N is an integer and COND is an\n\
13421 expression to be evaluated whenever breakpoint N is reached."));
13423 c
= add_com ("tbreak", class_breakpoint
, tbreak_command
, _("\
13424 Set a temporary breakpoint.\n\
13425 Like \"break\" except the breakpoint is only temporary,\n\
13426 so it will be deleted when hit. Equivalent to \"break\" followed\n\
13427 by using \"enable delete\" on the breakpoint number.\n\
13429 BREAK_ARGS_HELP ("tbreak")));
13430 set_cmd_completer (c
, location_completer
);
13432 c
= add_com ("hbreak", class_breakpoint
, hbreak_command
, _("\
13433 Set a hardware assisted breakpoint.\n\
13434 Like \"break\" except the breakpoint requires hardware support,\n\
13435 some target hardware may not have this support.\n\
13437 BREAK_ARGS_HELP ("hbreak")));
13438 set_cmd_completer (c
, location_completer
);
13440 c
= add_com ("thbreak", class_breakpoint
, thbreak_command
, _("\
13441 Set a temporary hardware assisted breakpoint.\n\
13442 Like \"hbreak\" except the breakpoint is only temporary,\n\
13443 so it will be deleted when hit.\n\
13445 BREAK_ARGS_HELP ("thbreak")));
13446 set_cmd_completer (c
, location_completer
);
13448 add_prefix_cmd ("enable", class_breakpoint
, enable_command
, _("\
13449 Enable some breakpoints.\n\
13450 Give breakpoint numbers (separated by spaces) as arguments.\n\
13451 With no subcommand, breakpoints are enabled until you command otherwise.\n\
13452 This is used to cancel the effect of the \"disable\" command.\n\
13453 With a subcommand you can enable temporarily."),
13454 &enablelist
, "enable ", 1, &cmdlist
);
13456 add_com ("ab", class_breakpoint
, enable_command
, _("\
13457 Enable some breakpoints.\n\
13458 Give breakpoint numbers (separated by spaces) as arguments.\n\
13459 With no subcommand, breakpoints are enabled until you command otherwise.\n\
13460 This is used to cancel the effect of the \"disable\" command.\n\
13461 With a subcommand you can enable temporarily."));
13463 add_com_alias ("en", "enable", class_breakpoint
, 1);
13465 add_prefix_cmd ("breakpoints", class_breakpoint
, enable_command
, _("\
13466 Enable some breakpoints.\n\
13467 Give breakpoint numbers (separated by spaces) as arguments.\n\
13468 This is used to cancel the effect of the \"disable\" command.\n\
13469 May be abbreviated to simply \"enable\".\n"),
13470 &enablebreaklist
, "enable breakpoints ", 1, &enablelist
);
13472 add_cmd ("once", no_class
, enable_once_command
, _("\
13473 Enable breakpoints for one hit. Give breakpoint numbers.\n\
13474 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
13477 add_cmd ("delete", no_class
, enable_delete_command
, _("\
13478 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
13479 If a breakpoint is hit while enabled in this fashion, it is deleted."),
13482 add_cmd ("delete", no_class
, enable_delete_command
, _("\
13483 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
13484 If a breakpoint is hit while enabled in this fashion, it is deleted."),
13487 add_cmd ("once", no_class
, enable_once_command
, _("\
13488 Enable breakpoints for one hit. Give breakpoint numbers.\n\
13489 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
13492 add_prefix_cmd ("disable", class_breakpoint
, disable_command
, _("\
13493 Disable some breakpoints.\n\
13494 Arguments are breakpoint numbers with spaces in between.\n\
13495 To disable all breakpoints, give no argument.\n\
13496 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
13497 &disablelist
, "disable ", 1, &cmdlist
);
13498 add_com_alias ("dis", "disable", class_breakpoint
, 1);
13499 add_com_alias ("disa", "disable", class_breakpoint
, 1);
13501 add_com ("sb", class_breakpoint
, disable_command
, _("\
13502 Disable some breakpoints.\n\
13503 Arguments are breakpoint numbers with spaces in between.\n\
13504 To disable all breakpoints, give no argument.\n\
13505 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
13507 add_cmd ("breakpoints", class_alias
, disable_command
, _("\
13508 Disable some breakpoints.\n\
13509 Arguments are breakpoint numbers with spaces in between.\n\
13510 To disable all breakpoints, give no argument.\n\
13511 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
13512 This command may be abbreviated \"disable\"."),
13515 add_prefix_cmd ("delete", class_breakpoint
, delete_command
, _("\
13516 Delete some breakpoints or auto-display expressions.\n\
13517 Arguments are breakpoint numbers with spaces in between.\n\
13518 To delete all breakpoints, give no argument.\n\
13520 Also a prefix command for deletion of other GDB objects.\n\
13521 The \"unset\" command is also an alias for \"delete\"."),
13522 &deletelist
, "delete ", 1, &cmdlist
);
13523 add_com_alias ("d", "delete", class_breakpoint
, 1);
13524 add_com_alias ("del", "delete", class_breakpoint
, 1);
13526 add_com ("db", class_breakpoint
, delete_command
, _("\
13527 Delete some breakpoints.\n\
13528 Arguments are breakpoint numbers with spaces in between.\n\
13529 To delete all breakpoints, give no argument.\n"));
13531 add_cmd ("breakpoints", class_alias
, delete_command
, _("\
13532 Delete some breakpoints or auto-display expressions.\n\
13533 Arguments are breakpoint numbers with spaces in between.\n\
13534 To delete all breakpoints, give no argument.\n\
13535 This command may be abbreviated \"delete\"."),
13538 add_com ("clear", class_breakpoint
, clear_command
, _("\
13539 Clear breakpoint at specified line or function.\n\
13540 Argument may be line number, function name, or \"*\" and an address.\n\
13541 If line number is specified, all breakpoints in that line are cleared.\n\
13542 If function is specified, breakpoints at beginning of function are cleared.\n\
13543 If an address is specified, breakpoints at that address are cleared.\n\
13545 With no argument, clears all breakpoints in the line that the selected frame\n\
13546 is executing in.\n\
13548 See also the \"delete\" command which clears breakpoints by number."));
13549 add_com_alias ("cl", "clear", class_breakpoint
, 1);
13551 c
= add_com ("break", class_breakpoint
, break_command
, _("\
13552 Set breakpoint at specified line or function.\n"
13553 BREAK_ARGS_HELP ("break")));
13554 set_cmd_completer (c
, location_completer
);
13556 add_com_alias ("b", "break", class_run
, 1);
13557 add_com_alias ("br", "break", class_run
, 1);
13558 add_com_alias ("bre", "break", class_run
, 1);
13559 add_com_alias ("brea", "break", class_run
, 1);
13562 add_com_alias ("ba", "break", class_breakpoint
, 1);
13566 add_abbrev_prefix_cmd ("stop", class_breakpoint
, stop_command
, _("\
13567 Break in function/address or break at a line in the current file."),
13568 &stoplist
, "stop ", 1, &cmdlist
);
13569 add_cmd ("in", class_breakpoint
, stopin_command
,
13570 _("Break in function or address."), &stoplist
);
13571 add_cmd ("at", class_breakpoint
, stopat_command
,
13572 _("Break at a line in the current file."), &stoplist
);
13573 add_com ("status", class_info
, breakpoints_info
, _("\
13574 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
13575 The \"Type\" column indicates one of:\n\
13576 \tbreakpoint - normal breakpoint\n\
13577 \twatchpoint - watchpoint\n\
13578 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
13579 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
13580 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
13581 address and file/line number respectively.\n\
13583 Convenience variable \"$_\" and default examine address for \"x\"\n\
13584 are set to the address of the last breakpoint listed unless the command\n\
13585 is prefixed with \"server \".\n\n\
13586 Convenience variable \"$bpnum\" contains the number of the last\n\
13587 breakpoint set."));
13590 add_info ("breakpoints", breakpoints_info
, _("\
13591 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
13592 The \"Type\" column indicates one of:\n\
13593 \tbreakpoint - normal breakpoint\n\
13594 \twatchpoint - watchpoint\n\
13595 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
13596 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
13597 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
13598 address and file/line number respectively.\n\
13600 Convenience variable \"$_\" and default examine address for \"x\"\n\
13601 are set to the address of the last breakpoint listed unless the command\n\
13602 is prefixed with \"server \".\n\n\
13603 Convenience variable \"$bpnum\" contains the number of the last\n\
13604 breakpoint set."));
13606 add_info_alias ("b", "breakpoints", 1);
13609 add_com ("lb", class_breakpoint
, breakpoints_info
, _("\
13610 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
13611 The \"Type\" column indicates one of:\n\
13612 \tbreakpoint - normal breakpoint\n\
13613 \twatchpoint - watchpoint\n\
13614 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
13615 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
13616 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
13617 address and file/line number respectively.\n\
13619 Convenience variable \"$_\" and default examine address for \"x\"\n\
13620 are set to the address of the last breakpoint listed unless the command\n\
13621 is prefixed with \"server \".\n\n\
13622 Convenience variable \"$bpnum\" contains the number of the last\n\
13623 breakpoint set."));
13625 add_cmd ("breakpoints", class_maintenance
, maintenance_info_breakpoints
, _("\
13626 Status of all breakpoints, or breakpoint number NUMBER.\n\
13627 The \"Type\" column indicates one of:\n\
13628 \tbreakpoint - normal breakpoint\n\
13629 \twatchpoint - watchpoint\n\
13630 \tlongjmp - internal breakpoint used to step through longjmp()\n\
13631 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
13632 \tuntil - internal breakpoint used by the \"until\" command\n\
13633 \tfinish - internal breakpoint used by the \"finish\" command\n\
13634 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
13635 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
13636 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
13637 address and file/line number respectively.\n\
13639 Convenience variable \"$_\" and default examine address for \"x\"\n\
13640 are set to the address of the last breakpoint listed unless the command\n\
13641 is prefixed with \"server \".\n\n\
13642 Convenience variable \"$bpnum\" contains the number of the last\n\
13644 &maintenanceinfolist
);
13646 add_prefix_cmd ("catch", class_breakpoint
, catch_command
, _("\
13647 Set catchpoints to catch events."),
13648 &catch_cmdlist
, "catch ",
13649 0/*allow-unknown*/, &cmdlist
);
13651 add_prefix_cmd ("tcatch", class_breakpoint
, tcatch_command
, _("\
13652 Set temporary catchpoints to catch events."),
13653 &tcatch_cmdlist
, "tcatch ",
13654 0/*allow-unknown*/, &cmdlist
);
13656 /* Add catch and tcatch sub-commands. */
13657 add_catch_command ("catch", _("\
13658 Catch an exception, when caught.\n\
13659 With an argument, catch only exceptions with the given name."),
13660 catch_catch_command
,
13664 add_catch_command ("throw", _("\
13665 Catch an exception, when thrown.\n\
13666 With an argument, catch only exceptions with the given name."),
13667 catch_throw_command
,
13671 add_catch_command ("fork", _("Catch calls to fork."),
13672 catch_fork_command_1
,
13674 (void *) (uintptr_t) catch_fork_permanent
,
13675 (void *) (uintptr_t) catch_fork_temporary
);
13676 add_catch_command ("vfork", _("Catch calls to vfork."),
13677 catch_fork_command_1
,
13679 (void *) (uintptr_t) catch_vfork_permanent
,
13680 (void *) (uintptr_t) catch_vfork_temporary
);
13681 add_catch_command ("exec", _("Catch calls to exec."),
13682 catch_exec_command_1
,
13686 add_catch_command ("syscall", _("\
13687 Catch system calls by their names and/or numbers.\n\
13688 Arguments say which system calls to catch. If no arguments\n\
13689 are given, every system call will be caught.\n\
13690 Arguments, if given, should be one or more system call names\n\
13691 (if your system supports that), or system call numbers."),
13692 catch_syscall_command_1
,
13693 catch_syscall_completer
,
13697 c
= add_com ("watch", class_breakpoint
, watch_command
, _("\
13698 Set a watchpoint for an expression.\n\
13699 Usage: watch [-l|-location] EXPRESSION\n\
13700 A watchpoint stops execution of your program whenever the value of\n\
13701 an expression changes.\n\
13702 If -l or -location is given, this evaluates EXPRESSION and watches\n\
13703 the memory to which it refers."));
13704 set_cmd_completer (c
, expression_completer
);
13706 c
= add_com ("rwatch", class_breakpoint
, rwatch_command
, _("\
13707 Set a read watchpoint for an expression.\n\
13708 Usage: rwatch [-l|-location] EXPRESSION\n\
13709 A watchpoint stops execution of your program whenever the value of\n\
13710 an expression is read.\n\
13711 If -l or -location is given, this evaluates EXPRESSION and watches\n\
13712 the memory to which it refers."));
13713 set_cmd_completer (c
, expression_completer
);
13715 c
= add_com ("awatch", class_breakpoint
, awatch_command
, _("\
13716 Set a watchpoint for an expression.\n\
13717 Usage: awatch [-l|-location] EXPRESSION\n\
13718 A watchpoint stops execution of your program whenever the value of\n\
13719 an expression is either read or written.\n\
13720 If -l or -location is given, this evaluates EXPRESSION and watches\n\
13721 the memory to which it refers."));
13722 set_cmd_completer (c
, expression_completer
);
13724 add_info ("watchpoints", watchpoints_info
, _("\
13725 Status of specified watchpoints (all watchpoints if no argument)."));
13727 /* XXX: cagney/2005-02-23: This should be a boolean, and should
13728 respond to changes - contrary to the description. */
13729 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support
,
13730 &can_use_hw_watchpoints
, _("\
13731 Set debugger's willingness to use watchpoint hardware."), _("\
13732 Show debugger's willingness to use watchpoint hardware."), _("\
13733 If zero, gdb will not use hardware for new watchpoints, even if\n\
13734 such is available. (However, any hardware watchpoints that were\n\
13735 created before setting this to nonzero, will continue to use watchpoint\n\
13738 show_can_use_hw_watchpoints
,
13739 &setlist
, &showlist
);
13741 can_use_hw_watchpoints
= 1;
13743 /* Tracepoint manipulation commands. */
13745 c
= add_com ("trace", class_breakpoint
, trace_command
, _("\
13746 Set a tracepoint at specified line or function.\n\
13748 BREAK_ARGS_HELP ("trace") "\n\
13749 Do \"help tracepoints\" for info on other tracepoint commands."));
13750 set_cmd_completer (c
, location_completer
);
13752 add_com_alias ("tp", "trace", class_alias
, 0);
13753 add_com_alias ("tr", "trace", class_alias
, 1);
13754 add_com_alias ("tra", "trace", class_alias
, 1);
13755 add_com_alias ("trac", "trace", class_alias
, 1);
13757 c
= add_com ("ftrace", class_breakpoint
, ftrace_command
, _("\
13758 Set a fast tracepoint at specified line or function.\n\
13760 BREAK_ARGS_HELP ("ftrace") "\n\
13761 Do \"help tracepoints\" for info on other tracepoint commands."));
13762 set_cmd_completer (c
, location_completer
);
13764 c
= add_com ("strace", class_breakpoint
, strace_command
, _("\
13765 Set a static tracepoint at specified line, function or marker.\n\
13767 strace [LOCATION] [if CONDITION]\n\
13768 LOCATION may be a line number, function name, \"*\" and an address,\n\
13769 or -m MARKER_ID.\n\
13770 If a line number is specified, probe the marker at start of code\n\
13771 for that line. If a function is specified, probe the marker at start\n\
13772 of code for that function. If an address is specified, probe the marker\n\
13773 at that exact address. If a marker id is specified, probe the marker\n\
13774 with that name. With no LOCATION, uses current execution address of\n\
13775 the selected stack frame.\n\
13776 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
13777 This collects arbitrary user data passed in the probe point call to the\n\
13778 tracing library. You can inspect it when analyzing the trace buffer,\n\
13779 by printing the $_sdata variable like any other convenience variable.\n\
13781 CONDITION is a boolean expression.\n\
13783 Multiple tracepoints at one place are permitted, and useful if their\n\
13784 conditions are different.\n\
13786 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
13787 Do \"help tracepoints\" for info on other tracepoint commands."));
13788 set_cmd_completer (c
, location_completer
);
13790 add_info ("tracepoints", tracepoints_info
, _("\
13791 Status of specified tracepoints (all tracepoints if no argument).\n\
13792 Convenience variable \"$tpnum\" contains the number of the\n\
13793 last tracepoint set."));
13795 add_info_alias ("tp", "tracepoints", 1);
13797 add_cmd ("tracepoints", class_trace
, delete_trace_command
, _("\
13798 Delete specified tracepoints.\n\
13799 Arguments are tracepoint numbers, separated by spaces.\n\
13800 No argument means delete all tracepoints."),
13803 c
= add_cmd ("tracepoints", class_trace
, disable_trace_command
, _("\
13804 Disable specified tracepoints.\n\
13805 Arguments are tracepoint numbers, separated by spaces.\n\
13806 No argument means disable all tracepoints."),
13808 deprecate_cmd (c
, "disable");
13810 c
= add_cmd ("tracepoints", class_trace
, enable_trace_command
, _("\
13811 Enable specified tracepoints.\n\
13812 Arguments are tracepoint numbers, separated by spaces.\n\
13813 No argument means enable all tracepoints."),
13815 deprecate_cmd (c
, "enable");
13817 add_com ("passcount", class_trace
, trace_pass_command
, _("\
13818 Set the passcount for a tracepoint.\n\
13819 The trace will end when the tracepoint has been passed 'count' times.\n\
13820 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
13821 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
13823 add_prefix_cmd ("save", class_breakpoint
, save_command
,
13824 _("Save breakpoint definitions as a script."),
13825 &save_cmdlist
, "save ",
13826 0/*allow-unknown*/, &cmdlist
);
13828 c
= add_cmd ("breakpoints", class_breakpoint
, save_breakpoints_command
, _("\
13829 Save current breakpoint definitions as a script.\n\
13830 This includes all types of breakpoints (breakpoints, watchpoints,\n\
13831 catchpoints, tracepoints). Use the 'source' command in another debug\n\
13832 session to restore them."),
13834 set_cmd_completer (c
, filename_completer
);
13836 c
= add_cmd ("tracepoints", class_trace
, save_tracepoints_command
, _("\
13837 Save current tracepoint definitions as a script.\n\
13838 Use the 'source' command in another debug session to restore them."),
13840 set_cmd_completer (c
, filename_completer
);
13842 c
= add_com_alias ("save-tracepoints", "save tracepoints", class_trace
, 0);
13843 deprecate_cmd (c
, "save tracepoints");
13845 add_prefix_cmd ("breakpoint", class_maintenance
, set_breakpoint_cmd
, _("\
13846 Breakpoint specific settings\n\
13847 Configure various breakpoint-specific variables such as\n\
13848 pending breakpoint behavior"),
13849 &breakpoint_set_cmdlist
, "set breakpoint ",
13850 0/*allow-unknown*/, &setlist
);
13851 add_prefix_cmd ("breakpoint", class_maintenance
, show_breakpoint_cmd
, _("\
13852 Breakpoint specific settings\n\
13853 Configure various breakpoint-specific variables such as\n\
13854 pending breakpoint behavior"),
13855 &breakpoint_show_cmdlist
, "show breakpoint ",
13856 0/*allow-unknown*/, &showlist
);
13858 add_setshow_auto_boolean_cmd ("pending", no_class
,
13859 &pending_break_support
, _("\
13860 Set debugger's behavior regarding pending breakpoints."), _("\
13861 Show debugger's behavior regarding pending breakpoints."), _("\
13862 If on, an unrecognized breakpoint location will cause gdb to create a\n\
13863 pending breakpoint. If off, an unrecognized breakpoint location results in\n\
13864 an error. If auto, an unrecognized breakpoint location results in a\n\
13865 user-query to see if a pending breakpoint should be created."),
13867 show_pending_break_support
,
13868 &breakpoint_set_cmdlist
,
13869 &breakpoint_show_cmdlist
);
13871 pending_break_support
= AUTO_BOOLEAN_AUTO
;
13873 add_setshow_boolean_cmd ("auto-hw", no_class
,
13874 &automatic_hardware_breakpoints
, _("\
13875 Set automatic usage of hardware breakpoints."), _("\
13876 Show automatic usage of hardware breakpoints."), _("\
13877 If set, the debugger will automatically use hardware breakpoints for\n\
13878 breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
13879 a warning will be emitted for such breakpoints."),
13881 show_automatic_hardware_breakpoints
,
13882 &breakpoint_set_cmdlist
,
13883 &breakpoint_show_cmdlist
);
13885 add_setshow_enum_cmd ("always-inserted", class_support
,
13886 always_inserted_enums
, &always_inserted_mode
, _("\
13887 Set mode for inserting breakpoints."), _("\
13888 Show mode for inserting breakpoints."), _("\
13889 When this mode is off, breakpoints are inserted in inferior when it is\n\
13890 resumed, and removed when execution stops. When this mode is on,\n\
13891 breakpoints are inserted immediately and removed only when the user\n\
13892 deletes the breakpoint. When this mode is auto (which is the default),\n\
13893 the behaviour depends on the non-stop setting (see help set non-stop).\n\
13894 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
13895 behaves as if always-inserted mode is on; if gdb is controlling the\n\
13896 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
13898 &show_always_inserted_mode
,
13899 &breakpoint_set_cmdlist
,
13900 &breakpoint_show_cmdlist
);
13902 add_com ("break-range", class_breakpoint
, break_range_command
, _("\
13903 Set a breakpoint for an address range.\n\
13904 break-range START-LOCATION, END-LOCATION\n\
13905 where START-LOCATION and END-LOCATION can be one of the following:\n\
13906 LINENUM, for that line in the current file,\n\
13907 FILE:LINENUM, for that line in that file,\n\
13908 +OFFSET, for that number of lines after the current line\n\
13909 or the start of the range\n\
13910 FUNCTION, for the first line in that function,\n\
13911 FILE:FUNCTION, to distinguish among like-named static functions.\n\
13912 *ADDRESS, for the instruction at that address.\n\
13914 The breakpoint will stop execution of the inferior whenever it executes\n\
13915 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
13916 range (including START-LOCATION and END-LOCATION)."));
13918 automatic_hardware_breakpoints
= 1;
13920 observer_attach_about_to_proceed (breakpoint_about_to_proceed
);