1 /* Everything about breakpoints, for GDB.
3 Copyright (C) 1986-2014 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21 #include "arch-utils.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
29 #include "expression.h"
36 #include "gdbthread.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
46 #include "completer.h"
49 #include "cli/cli-script.h"
54 #include "exceptions.h"
60 #include "xml-syscall.h"
61 #include "parser-defs.h"
62 #include "gdb_regex.h"
64 #include "cli/cli-utils.h"
65 #include "continuations.h"
69 #include "dummy-frame.h"
73 /* readline include files */
74 #include "readline/readline.h"
75 #include "readline/history.h"
77 /* readline defines this. */
80 #include "mi/mi-common.h"
81 #include "extension.h"
83 /* Enums for exception-handling support. */
84 enum exception_event_kind
91 /* Prototypes for local functions. */
93 static void enable_delete_command (char *, int);
95 static void enable_once_command (char *, int);
97 static void enable_count_command (char *, int);
99 static void disable_command (char *, int);
101 static void enable_command (char *, int);
103 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
107 static void ignore_command (char *, int);
109 static int breakpoint_re_set_one (void *);
111 static void breakpoint_re_set_default (struct breakpoint *);
113 static void create_sals_from_address_default (char **,
114 struct linespec_result *,
118 static void create_breakpoints_sal_default (struct gdbarch *,
119 struct linespec_result *,
120 char *, char *, enum bptype,
121 enum bpdisp, int, int,
123 const struct breakpoint_ops *,
124 int, int, int, unsigned);
126 static void decode_linespec_default (struct breakpoint *, char **,
127 struct symtabs_and_lines *);
129 static void clear_command (char *, int);
131 static void catch_command (char *, int);
133 static int can_use_hardware_watchpoint (struct value *);
135 static void break_command_1 (char *, int, int);
137 static void mention (struct breakpoint *);
139 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
141 const struct breakpoint_ops *);
142 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
143 const struct symtab_and_line *);
145 /* This function is used in gdbtk sources and thus can not be made
147 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
148 struct symtab_and_line,
150 const struct breakpoint_ops *);
152 static struct breakpoint *
153 momentary_breakpoint_from_master (struct breakpoint *orig,
155 const struct breakpoint_ops *ops,
158 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
160 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
164 static void describe_other_breakpoints (struct gdbarch *,
165 struct program_space *, CORE_ADDR,
166 struct obj_section *, int);
168 static int watchpoint_locations_match (struct bp_location *loc1,
169 struct bp_location *loc2);
171 static int breakpoint_location_address_match (struct bp_location *bl,
172 struct address_space *aspace,
175 static void breakpoints_info (char *, int);
177 static void watchpoints_info (char *, int);
179 static int breakpoint_1 (char *, int,
180 int (*) (const struct breakpoint *));
182 static int breakpoint_cond_eval (void *);
184 static void cleanup_executing_breakpoints (void *);
186 static void commands_command (char *, int);
188 static void condition_command (char *, int);
197 static int remove_breakpoint (struct bp_location *, insertion_state_t);
198 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
200 static enum print_stop_action print_bp_stop_message (bpstat bs);
202 static int watchpoint_check (void *);
204 static void maintenance_info_breakpoints (char *, int);
206 static int hw_breakpoint_used_count (void);
208 static int hw_watchpoint_use_count (struct breakpoint *);
210 static int hw_watchpoint_used_count_others (struct breakpoint *except,
212 int *other_type_used);
214 static void hbreak_command (char *, int);
216 static void thbreak_command (char *, int);
218 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
221 static void stop_command (char *arg, int from_tty);
223 static void stopin_command (char *arg, int from_tty);
225 static void stopat_command (char *arg, int from_tty);
227 static void tcatch_command (char *arg, int from_tty);
229 static void detach_single_step_breakpoints (void);
231 static int find_single_step_breakpoint (struct address_space *aspace,
234 static void free_bp_location (struct bp_location *loc);
235 static void incref_bp_location (struct bp_location *loc);
236 static void decref_bp_location (struct bp_location **loc);
238 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
240 /* update_global_location_list's modes of operation wrt to whether to
241 insert locations now. */
242 enum ugll_insert_mode
244 /* Don't insert any breakpoint locations into the inferior, only
245 remove already-inserted locations that no longer should be
246 inserted. Functions that delete a breakpoint or breakpoints
247 should specify this mode, so that deleting a breakpoint doesn't
248 have the side effect of inserting the locations of other
249 breakpoints that are marked not-inserted, but should_be_inserted
250 returns true on them.
252 This behavior is useful is situations close to tear-down -- e.g.,
253 after an exec, while the target still has execution, but
254 breakpoint shadows of the previous executable image should *NOT*
255 be restored to the new image; or before detaching, where the
256 target still has execution and wants to delete breakpoints from
257 GDB's lists, and all breakpoints had already been removed from
261 /* May insert breakpoints iff breakpoints_should_be_inserted_now
262 claims breakpoints should be inserted now. */
265 /* Insert locations now, irrespective of
266 breakpoints_should_be_inserted_now. E.g., say all threads are
267 stopped right now, and the user did "continue". We need to
268 insert breakpoints _before_ resuming the target, but
269 UGLL_MAY_INSERT wouldn't insert them, because
270 breakpoints_should_be_inserted_now returns false at that point,
271 as no thread is running yet. */
275 static void update_global_location_list (enum ugll_insert_mode);
277 static void update_global_location_list_nothrow (enum ugll_insert_mode);
279 static int is_hardware_watchpoint (const struct breakpoint *bpt);
281 static void insert_breakpoint_locations (void);
283 static int syscall_catchpoint_p (struct breakpoint *b);
285 static void tracepoints_info (char *, int);
287 static void delete_trace_command (char *, int);
289 static void enable_trace_command (char *, int);
291 static void disable_trace_command (char *, int);
293 static void trace_pass_command (char *, int);
295 static void set_tracepoint_count (int num);
297 static int is_masked_watchpoint (const struct breakpoint *b);
299 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
301 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
304 static int strace_marker_p (struct breakpoint *b);
306 /* The abstract base class all breakpoint_ops structures inherit
308 struct breakpoint_ops base_breakpoint_ops;
310 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
311 that are implemented on top of software or hardware breakpoints
312 (user breakpoints, internal and momentary breakpoints, etc.). */
313 static struct breakpoint_ops bkpt_base_breakpoint_ops;
315 /* Internal breakpoints class type. */
316 static struct breakpoint_ops internal_breakpoint_ops;
318 /* Momentary breakpoints class type. */
319 static struct breakpoint_ops momentary_breakpoint_ops;
321 /* Momentary breakpoints for bp_longjmp and bp_exception class type. */
322 static struct breakpoint_ops longjmp_breakpoint_ops;
324 /* The breakpoint_ops structure to be used in regular user created
326 struct breakpoint_ops bkpt_breakpoint_ops;
328 /* Breakpoints set on probes. */
329 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
331 /* Dynamic printf class type. */
332 struct breakpoint_ops dprintf_breakpoint_ops;
334 /* One (or perhaps two) breakpoints used for software single
337 static void *single_step_breakpoints[2];
338 static struct gdbarch *single_step_gdbarch[2];
340 /* The style in which to perform a dynamic printf. This is a user
341 option because different output options have different tradeoffs;
342 if GDB does the printing, there is better error handling if there
343 is a problem with any of the arguments, but using an inferior
344 function lets you have special-purpose printers and sending of
345 output to the same place as compiled-in print functions. */
347 static const char dprintf_style_gdb[] = "gdb";
348 static const char dprintf_style_call[] = "call";
349 static const char dprintf_style_agent[] = "agent";
350 static const char *const dprintf_style_enums[] = {
356 static const char *dprintf_style = dprintf_style_gdb;
358 /* The function to use for dynamic printf if the preferred style is to
359 call into the inferior. The value is simply a string that is
360 copied into the command, so it can be anything that GDB can
361 evaluate to a callable address, not necessarily a function name. */
363 static char *dprintf_function = "";
365 /* The channel to use for dynamic printf if the preferred style is to
366 call into the inferior; if a nonempty string, it will be passed to
367 the call as the first argument, with the format string as the
368 second. As with the dprintf function, this can be anything that
369 GDB knows how to evaluate, so in addition to common choices like
370 "stderr", this could be an app-specific expression like
371 "mystreams[curlogger]". */
373 static char *dprintf_channel = "";
375 /* True if dprintf commands should continue to operate even if GDB
377 static int disconnected_dprintf = 1;
379 /* A reference-counted struct command_line. This lets multiple
380 breakpoints share a single command list. */
381 struct counted_command_line
383 /* The reference count. */
386 /* The command list. */
387 struct command_line *commands;
390 struct command_line *
391 breakpoint_commands (struct breakpoint *b)
393 return b->commands ? b->commands->commands : NULL;
396 /* Flag indicating that a command has proceeded the inferior past the
397 current breakpoint. */
399 static int breakpoint_proceeded;
402 bpdisp_text (enum bpdisp disp)
404 /* NOTE: the following values are a part of MI protocol and
405 represent values of 'disp' field returned when inferior stops at
407 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
409 return bpdisps[(int) disp];
412 /* Prototypes for exported functions. */
413 /* If FALSE, gdb will not use hardware support for watchpoints, even
414 if such is available. */
415 static int can_use_hw_watchpoints;
418 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
419 struct cmd_list_element *c,
422 fprintf_filtered (file,
423 _("Debugger's willingness to use "
424 "watchpoint hardware is %s.\n"),
428 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
429 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
430 for unrecognized breakpoint locations.
431 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
432 static enum auto_boolean pending_break_support;
434 show_pending_break_support (struct ui_file *file, int from_tty,
435 struct cmd_list_element *c,
438 fprintf_filtered (file,
439 _("Debugger's behavior regarding "
440 "pending breakpoints is %s.\n"),
444 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
445 set with "break" but falling in read-only memory.
446 If 0, gdb will warn about such breakpoints, but won't automatically
447 use hardware breakpoints. */
448 static int automatic_hardware_breakpoints;
450 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
451 struct cmd_list_element *c,
454 fprintf_filtered (file,
455 _("Automatic usage of hardware breakpoints is %s.\n"),
459 /* If on, GDB keeps breakpoints inserted even if the inferior is
460 stopped, and immediately inserts any new breakpoints as soon as
461 they're created. If off (default), GDB keeps breakpoints off of
462 the target as long as possible. That is, it delays inserting
463 breakpoints until the next resume, and removes them again when the
464 target fully stops. This is a bit safer in case GDB crashes while
465 processing user input. */
466 static int always_inserted_mode = 0;
469 show_always_inserted_mode (struct ui_file *file, int from_tty,
470 struct cmd_list_element *c, const char *value)
472 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
477 breakpoints_should_be_inserted_now (void)
479 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
481 /* If breakpoints are global, they should be inserted even if no
482 thread under gdb's control is running, or even if there are
483 no threads under GDB's control yet. */
486 else if (target_has_execution)
488 struct thread_info *tp;
490 if (always_inserted_mode)
492 /* The user wants breakpoints inserted even if all threads
497 ALL_NON_EXITED_THREADS (tp)
506 static const char condition_evaluation_both[] = "host or target";
508 /* Modes for breakpoint condition evaluation. */
509 static const char condition_evaluation_auto[] = "auto";
510 static const char condition_evaluation_host[] = "host";
511 static const char condition_evaluation_target[] = "target";
512 static const char *const condition_evaluation_enums[] = {
513 condition_evaluation_auto,
514 condition_evaluation_host,
515 condition_evaluation_target,
519 /* Global that holds the current mode for breakpoint condition evaluation. */
520 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
522 /* Global that we use to display information to the user (gets its value from
523 condition_evaluation_mode_1. */
524 static const char *condition_evaluation_mode = condition_evaluation_auto;
526 /* Translate a condition evaluation mode MODE into either "host"
527 or "target". This is used mostly to translate from "auto" to the
528 real setting that is being used. It returns the translated
532 translate_condition_evaluation_mode (const char *mode)
534 if (mode == condition_evaluation_auto)
536 if (target_supports_evaluation_of_breakpoint_conditions ())
537 return condition_evaluation_target;
539 return condition_evaluation_host;
545 /* Discovers what condition_evaluation_auto translates to. */
548 breakpoint_condition_evaluation_mode (void)
550 return translate_condition_evaluation_mode (condition_evaluation_mode);
553 /* Return true if GDB should evaluate breakpoint conditions or false
557 gdb_evaluates_breakpoint_condition_p (void)
559 const char *mode = breakpoint_condition_evaluation_mode ();
561 return (mode == condition_evaluation_host);
564 void _initialize_breakpoint (void);
566 /* Are we executing breakpoint commands? */
567 static int executing_breakpoint_commands;
569 /* Are overlay event breakpoints enabled? */
570 static int overlay_events_enabled;
572 /* See description in breakpoint.h. */
573 int target_exact_watchpoints = 0;
575 /* Walk the following statement or block through all breakpoints.
576 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
577 current breakpoint. */
579 #define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
581 #define ALL_BREAKPOINTS_SAFE(B,TMP) \
582 for (B = breakpoint_chain; \
583 B ? (TMP=B->next, 1): 0; \
586 /* Similar iterator for the low-level breakpoints. SAFE variant is
587 not provided so update_global_location_list must not be called
588 while executing the block of ALL_BP_LOCATIONS. */
590 #define ALL_BP_LOCATIONS(B,BP_TMP) \
591 for (BP_TMP = bp_location; \
592 BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
595 /* Iterates through locations with address ADDRESS for the currently selected
596 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
597 to where the loop should start from.
598 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
599 appropriate location to start with. */
601 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
602 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
603 BP_LOCP_TMP = BP_LOCP_START; \
605 && (BP_LOCP_TMP < bp_location + bp_location_count \
606 && (*BP_LOCP_TMP)->address == ADDRESS); \
609 /* Iterator for tracepoints only. */
611 #define ALL_TRACEPOINTS(B) \
612 for (B = breakpoint_chain; B; B = B->next) \
613 if (is_tracepoint (B))
615 /* Chains of all breakpoints defined. */
617 struct breakpoint *breakpoint_chain;
619 /* Array is sorted by bp_location_compare - primarily by the ADDRESS. */
621 static struct bp_location **bp_location;
623 /* Number of elements of BP_LOCATION. */
625 static unsigned bp_location_count;
627 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
628 ADDRESS for the current elements of BP_LOCATION which get a valid
629 result from bp_location_has_shadow. You can use it for roughly
630 limiting the subrange of BP_LOCATION to scan for shadow bytes for
631 an address you need to read. */
633 static CORE_ADDR bp_location_placed_address_before_address_max;
635 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
636 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
637 BP_LOCATION which get a valid result from bp_location_has_shadow.
638 You can use it for roughly limiting the subrange of BP_LOCATION to
639 scan for shadow bytes for an address you need to read. */
641 static CORE_ADDR bp_location_shadow_len_after_address_max;
643 /* The locations that no longer correspond to any breakpoint, unlinked
644 from bp_location array, but for which a hit may still be reported
646 VEC(bp_location_p) *moribund_locations = NULL;
648 /* Number of last breakpoint made. */
650 static int breakpoint_count;
652 /* The value of `breakpoint_count' before the last command that
653 created breakpoints. If the last (break-like) command created more
654 than one breakpoint, then the difference between BREAKPOINT_COUNT
655 and PREV_BREAKPOINT_COUNT is more than one. */
656 static int prev_breakpoint_count;
658 /* Number of last tracepoint made. */
660 static int tracepoint_count;
662 static struct cmd_list_element *breakpoint_set_cmdlist;
663 static struct cmd_list_element *breakpoint_show_cmdlist;
664 struct cmd_list_element *save_cmdlist;
666 /* Return whether a breakpoint is an active enabled breakpoint. */
668 breakpoint_enabled (struct breakpoint *b)
670 return (b->enable_state == bp_enabled);
673 /* Set breakpoint count to NUM. */
676 set_breakpoint_count (int num)
678 prev_breakpoint_count = breakpoint_count;
679 breakpoint_count = num;
680 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
683 /* Used by `start_rbreak_breakpoints' below, to record the current
684 breakpoint count before "rbreak" creates any breakpoint. */
685 static int rbreak_start_breakpoint_count;
687 /* Called at the start an "rbreak" command to record the first
691 start_rbreak_breakpoints (void)
693 rbreak_start_breakpoint_count = breakpoint_count;
696 /* Called at the end of an "rbreak" command to record the last
700 end_rbreak_breakpoints (void)
702 prev_breakpoint_count = rbreak_start_breakpoint_count;
705 /* Used in run_command to zero the hit count when a new run starts. */
708 clear_breakpoint_hit_counts (void)
710 struct breakpoint *b;
716 /* Allocate a new counted_command_line with reference count of 1.
717 The new structure owns COMMANDS. */
719 static struct counted_command_line *
720 alloc_counted_command_line (struct command_line *commands)
722 struct counted_command_line *result
723 = xmalloc (sizeof (struct counted_command_line));
726 result->commands = commands;
730 /* Increment reference count. This does nothing if CMD is NULL. */
733 incref_counted_command_line (struct counted_command_line *cmd)
739 /* Decrement reference count. If the reference count reaches 0,
740 destroy the counted_command_line. Sets *CMDP to NULL. This does
741 nothing if *CMDP is NULL. */
744 decref_counted_command_line (struct counted_command_line **cmdp)
748 if (--(*cmdp)->refc == 0)
750 free_command_lines (&(*cmdp)->commands);
757 /* A cleanup function that calls decref_counted_command_line. */
760 do_cleanup_counted_command_line (void *arg)
762 decref_counted_command_line (arg);
765 /* Create a cleanup that calls decref_counted_command_line on the
768 static struct cleanup *
769 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
771 return make_cleanup (do_cleanup_counted_command_line, cmdp);
775 /* Return the breakpoint with the specified number, or NULL
776 if the number does not refer to an existing breakpoint. */
779 get_breakpoint (int num)
781 struct breakpoint *b;
784 if (b->number == num)
792 /* Mark locations as "conditions have changed" in case the target supports
793 evaluating conditions on its side. */
796 mark_breakpoint_modified (struct breakpoint *b)
798 struct bp_location *loc;
800 /* This is only meaningful if the target is
801 evaluating conditions and if the user has
802 opted for condition evaluation on the target's
804 if (gdb_evaluates_breakpoint_condition_p ()
805 || !target_supports_evaluation_of_breakpoint_conditions ())
808 if (!is_breakpoint (b))
811 for (loc = b->loc; loc; loc = loc->next)
812 loc->condition_changed = condition_modified;
815 /* Mark location as "conditions have changed" in case the target supports
816 evaluating conditions on its side. */
819 mark_breakpoint_location_modified (struct bp_location *loc)
821 /* This is only meaningful if the target is
822 evaluating conditions and if the user has
823 opted for condition evaluation on the target's
825 if (gdb_evaluates_breakpoint_condition_p ()
826 || !target_supports_evaluation_of_breakpoint_conditions ())
830 if (!is_breakpoint (loc->owner))
833 loc->condition_changed = condition_modified;
836 /* Sets the condition-evaluation mode using the static global
837 condition_evaluation_mode. */
840 set_condition_evaluation_mode (char *args, int from_tty,
841 struct cmd_list_element *c)
843 const char *old_mode, *new_mode;
845 if ((condition_evaluation_mode_1 == condition_evaluation_target)
846 && !target_supports_evaluation_of_breakpoint_conditions ())
848 condition_evaluation_mode_1 = condition_evaluation_mode;
849 warning (_("Target does not support breakpoint condition evaluation.\n"
850 "Using host evaluation mode instead."));
854 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
855 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
857 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
858 settings was "auto". */
859 condition_evaluation_mode = condition_evaluation_mode_1;
861 /* Only update the mode if the user picked a different one. */
862 if (new_mode != old_mode)
864 struct bp_location *loc, **loc_tmp;
865 /* If the user switched to a different evaluation mode, we
866 need to synch the changes with the target as follows:
868 "host" -> "target": Send all (valid) conditions to the target.
869 "target" -> "host": Remove all the conditions from the target.
872 if (new_mode == condition_evaluation_target)
874 /* Mark everything modified and synch conditions with the
876 ALL_BP_LOCATIONS (loc, loc_tmp)
877 mark_breakpoint_location_modified (loc);
881 /* Manually mark non-duplicate locations to synch conditions
882 with the target. We do this to remove all the conditions the
883 target knows about. */
884 ALL_BP_LOCATIONS (loc, loc_tmp)
885 if (is_breakpoint (loc->owner) && loc->inserted)
886 loc->needs_update = 1;
890 update_global_location_list (UGLL_MAY_INSERT);
896 /* Shows the current mode of breakpoint condition evaluation. Explicitly shows
897 what "auto" is translating to. */
900 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
901 struct cmd_list_element *c, const char *value)
903 if (condition_evaluation_mode == condition_evaluation_auto)
904 fprintf_filtered (file,
905 _("Breakpoint condition evaluation "
906 "mode is %s (currently %s).\n"),
908 breakpoint_condition_evaluation_mode ());
910 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
914 /* A comparison function for bp_location AP and BP that is used by
915 bsearch. This comparison function only cares about addresses, unlike
916 the more general bp_location_compare function. */
919 bp_location_compare_addrs (const void *ap, const void *bp)
921 struct bp_location *a = *(void **) ap;
922 struct bp_location *b = *(void **) bp;
924 if (a->address == b->address)
927 return ((a->address > b->address) - (a->address < b->address));
930 /* Helper function to skip all bp_locations with addresses
931 less than ADDRESS. It returns the first bp_location that
932 is greater than or equal to ADDRESS. If none is found, just
935 static struct bp_location **
936 get_first_locp_gte_addr (CORE_ADDR address)
938 struct bp_location dummy_loc;
939 struct bp_location *dummy_locp = &dummy_loc;
940 struct bp_location **locp_found = NULL;
942 /* Initialize the dummy location's address field. */
943 memset (&dummy_loc, 0, sizeof (struct bp_location));
944 dummy_loc.address = address;
946 /* Find a close match to the first location at ADDRESS. */
947 locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
948 sizeof (struct bp_location **),
949 bp_location_compare_addrs);
951 /* Nothing was found, nothing left to do. */
952 if (locp_found == NULL)
955 /* We may have found a location that is at ADDRESS but is not the first in the
956 location's list. Go backwards (if possible) and locate the first one. */
957 while ((locp_found - 1) >= bp_location
958 && (*(locp_found - 1))->address == address)
965 set_breakpoint_condition (struct breakpoint *b, char *exp,
968 xfree (b->cond_string);
969 b->cond_string = NULL;
971 if (is_watchpoint (b))
973 struct watchpoint *w = (struct watchpoint *) b;
980 struct bp_location *loc;
982 for (loc = b->loc; loc; loc = loc->next)
987 /* No need to free the condition agent expression
988 bytecode (if we have one). We will handle this
989 when we go through update_global_location_list. */
996 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
1000 const char *arg = exp;
1002 /* I don't know if it matters whether this is the string the user
1003 typed in or the decompiled expression. */
1004 b->cond_string = xstrdup (arg);
1005 b->condition_not_parsed = 0;
1007 if (is_watchpoint (b))
1009 struct watchpoint *w = (struct watchpoint *) b;
1011 innermost_block = NULL;
1013 w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
1015 error (_("Junk at end of expression"));
1016 w->cond_exp_valid_block = innermost_block;
1020 struct bp_location *loc;
1022 for (loc = b->loc; loc; loc = loc->next)
1026 parse_exp_1 (&arg, loc->address,
1027 block_for_pc (loc->address), 0);
1029 error (_("Junk at end of expression"));
1033 mark_breakpoint_modified (b);
1035 observer_notify_breakpoint_modified (b);
1038 /* Completion for the "condition" command. */
1040 static VEC (char_ptr) *
1041 condition_completer (struct cmd_list_element *cmd,
1042 const char *text, const char *word)
1046 text = skip_spaces_const (text);
1047 space = skip_to_space_const (text);
1051 struct breakpoint *b;
1052 VEC (char_ptr) *result = NULL;
1056 /* We don't support completion of history indices. */
1057 if (isdigit (text[1]))
1059 return complete_internalvar (&text[1]);
1062 /* We're completing the breakpoint number. */
1063 len = strlen (text);
1069 xsnprintf (number, sizeof (number), "%d", b->number);
1071 if (strncmp (number, text, len) == 0)
1072 VEC_safe_push (char_ptr, result, xstrdup (number));
1078 /* We're completing the expression part. */
1079 text = skip_spaces_const (space);
1080 return expression_completer (cmd, text, word);
1083 /* condition N EXP -- set break condition of breakpoint N to EXP. */
1086 condition_command (char *arg, int from_tty)
1088 struct breakpoint *b;
1093 error_no_arg (_("breakpoint number"));
1096 bnum = get_number (&p);
1098 error (_("Bad breakpoint argument: '%s'"), arg);
1101 if (b->number == bnum)
1103 /* Check if this breakpoint has a "stop" method implemented in an
1104 extension language. This method and conditions entered into GDB
1105 from the CLI are mutually exclusive. */
1106 const struct extension_language_defn *extlang
1107 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1109 if (extlang != NULL)
1111 error (_("Only one stop condition allowed. There is currently"
1112 " a %s stop condition defined for this breakpoint."),
1113 ext_lang_capitalized_name (extlang));
1115 set_breakpoint_condition (b, p, from_tty);
1117 if (is_breakpoint (b))
1118 update_global_location_list (UGLL_MAY_INSERT);
1123 error (_("No breakpoint number %d."), bnum);
1126 /* Check that COMMAND do not contain commands that are suitable
1127 only for tracepoints and not suitable for ordinary breakpoints.
1128 Throw if any such commands is found. */
1131 check_no_tracepoint_commands (struct command_line *commands)
1133 struct command_line *c;
1135 for (c = commands; c; c = c->next)
1139 if (c->control_type == while_stepping_control)
1140 error (_("The 'while-stepping' command can "
1141 "only be used for tracepoints"));
1143 for (i = 0; i < c->body_count; ++i)
1144 check_no_tracepoint_commands ((c->body_list)[i]);
1146 /* Not that command parsing removes leading whitespace and comment
1147 lines and also empty lines. So, we only need to check for
1148 command directly. */
1149 if (strstr (c->line, "collect ") == c->line)
1150 error (_("The 'collect' command can only be used for tracepoints"));
1152 if (strstr (c->line, "teval ") == c->line)
1153 error (_("The 'teval' command can only be used for tracepoints"));
1157 /* Encapsulate tests for different types of tracepoints. */
1160 is_tracepoint_type (enum bptype type)
1162 return (type == bp_tracepoint
1163 || type == bp_fast_tracepoint
1164 || type == bp_static_tracepoint);
1168 is_tracepoint (const struct breakpoint *b)
1170 return is_tracepoint_type (b->type);
1173 /* A helper function that validates that COMMANDS are valid for a
1174 breakpoint. This function will throw an exception if a problem is
1178 validate_commands_for_breakpoint (struct breakpoint *b,
1179 struct command_line *commands)
1181 if (is_tracepoint (b))
1183 struct tracepoint *t = (struct tracepoint *) b;
1184 struct command_line *c;
1185 struct command_line *while_stepping = 0;
1187 /* Reset the while-stepping step count. The previous commands
1188 might have included a while-stepping action, while the new
1192 /* We need to verify that each top-level element of commands is
1193 valid for tracepoints, that there's at most one
1194 while-stepping element, and that the while-stepping's body
1195 has valid tracing commands excluding nested while-stepping.
1196 We also need to validate the tracepoint action line in the
1197 context of the tracepoint --- validate_actionline actually
1198 has side effects, like setting the tracepoint's
1199 while-stepping STEP_COUNT, in addition to checking if the
1200 collect/teval actions parse and make sense in the
1201 tracepoint's context. */
1202 for (c = commands; c; c = c->next)
1204 if (c->control_type == while_stepping_control)
1206 if (b->type == bp_fast_tracepoint)
1207 error (_("The 'while-stepping' command "
1208 "cannot be used for fast tracepoint"));
1209 else if (b->type == bp_static_tracepoint)
1210 error (_("The 'while-stepping' command "
1211 "cannot be used for static tracepoint"));
1214 error (_("The 'while-stepping' command "
1215 "can be used only once"));
1220 validate_actionline (c->line, b);
1224 struct command_line *c2;
1226 gdb_assert (while_stepping->body_count == 1);
1227 c2 = while_stepping->body_list[0];
1228 for (; c2; c2 = c2->next)
1230 if (c2->control_type == while_stepping_control)
1231 error (_("The 'while-stepping' command cannot be nested"));
1237 check_no_tracepoint_commands (commands);
1241 /* Return a vector of all the static tracepoints set at ADDR. The
1242 caller is responsible for releasing the vector. */
1245 static_tracepoints_here (CORE_ADDR addr)
1247 struct breakpoint *b;
1248 VEC(breakpoint_p) *found = 0;
1249 struct bp_location *loc;
1252 if (b->type == bp_static_tracepoint)
1254 for (loc = b->loc; loc; loc = loc->next)
1255 if (loc->address == addr)
1256 VEC_safe_push(breakpoint_p, found, b);
1262 /* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
1263 validate that only allowed commands are included. */
1266 breakpoint_set_commands (struct breakpoint *b,
1267 struct command_line *commands)
1269 validate_commands_for_breakpoint (b, commands);
1271 decref_counted_command_line (&b->commands);
1272 b->commands = alloc_counted_command_line (commands);
1273 observer_notify_breakpoint_modified (b);
1276 /* Set the internal `silent' flag on the breakpoint. Note that this
1277 is not the same as the "silent" that may appear in the breakpoint's
1281 breakpoint_set_silent (struct breakpoint *b, int silent)
1283 int old_silent = b->silent;
1286 if (old_silent != silent)
1287 observer_notify_breakpoint_modified (b);
1290 /* Set the thread for this breakpoint. If THREAD is -1, make the
1291 breakpoint work for any thread. */
1294 breakpoint_set_thread (struct breakpoint *b, int thread)
1296 int old_thread = b->thread;
1299 if (old_thread != thread)
1300 observer_notify_breakpoint_modified (b);
1303 /* Set the task for this breakpoint. If TASK is 0, make the
1304 breakpoint work for any task. */
1307 breakpoint_set_task (struct breakpoint *b, int task)
1309 int old_task = b->task;
1312 if (old_task != task)
1313 observer_notify_breakpoint_modified (b);
1317 check_tracepoint_command (char *line, void *closure)
1319 struct breakpoint *b = closure;
1321 validate_actionline (line, b);
1324 /* A structure used to pass information through
1325 map_breakpoint_numbers. */
1327 struct commands_info
1329 /* True if the command was typed at a tty. */
1332 /* The breakpoint range spec. */
1335 /* Non-NULL if the body of the commands are being read from this
1336 already-parsed command. */
1337 struct command_line *control;
1339 /* The command lines read from the user, or NULL if they have not
1341 struct counted_command_line *cmd;
1344 /* A callback for map_breakpoint_numbers that sets the commands for
1345 commands_command. */
1348 do_map_commands_command (struct breakpoint *b, void *data)
1350 struct commands_info *info = data;
1352 if (info->cmd == NULL)
1354 struct command_line *l;
1356 if (info->control != NULL)
1357 l = copy_command_lines (info->control->body_list[0]);
1360 struct cleanup *old_chain;
1363 str = xstrprintf (_("Type commands for breakpoint(s) "
1364 "%s, one per line."),
1367 old_chain = make_cleanup (xfree, str);
1369 l = read_command_lines (str,
1372 ? check_tracepoint_command : 0),
1375 do_cleanups (old_chain);
1378 info->cmd = alloc_counted_command_line (l);
1381 /* If a breakpoint was on the list more than once, we don't need to
1383 if (b->commands != info->cmd)
1385 validate_commands_for_breakpoint (b, info->cmd->commands);
1386 incref_counted_command_line (info->cmd);
1387 decref_counted_command_line (&b->commands);
1388 b->commands = info->cmd;
1389 observer_notify_breakpoint_modified (b);
1394 commands_command_1 (char *arg, int from_tty,
1395 struct command_line *control)
1397 struct cleanup *cleanups;
1398 struct commands_info info;
1400 info.from_tty = from_tty;
1401 info.control = control;
1403 /* If we read command lines from the user, then `info' will hold an
1404 extra reference to the commands that we must clean up. */
1405 cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1407 if (arg == NULL || !*arg)
1409 if (breakpoint_count - prev_breakpoint_count > 1)
1410 arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1,
1412 else if (breakpoint_count > 0)
1413 arg = xstrprintf ("%d", breakpoint_count);
1416 /* So that we don't try to free the incoming non-NULL
1417 argument in the cleanup below. Mapping breakpoint
1418 numbers will fail in this case. */
1423 /* The command loop has some static state, so we need to preserve
1425 arg = xstrdup (arg);
1428 make_cleanup (xfree, arg);
1432 map_breakpoint_numbers (arg, do_map_commands_command, &info);
1434 if (info.cmd == NULL)
1435 error (_("No breakpoints specified."));
1437 do_cleanups (cleanups);
1441 commands_command (char *arg, int from_tty)
1443 commands_command_1 (arg, from_tty, NULL);
1446 /* Like commands_command, but instead of reading the commands from
1447 input stream, takes them from an already parsed command structure.
1449 This is used by cli-script.c to DTRT with breakpoint commands
1450 that are part of if and while bodies. */
1451 enum command_control_type
1452 commands_from_control_command (char *arg, struct command_line *cmd)
1454 commands_command_1 (arg, 0, cmd);
1455 return simple_control;
1458 /* Return non-zero if BL->TARGET_INFO contains valid information. */
1461 bp_location_has_shadow (struct bp_location *bl)
1463 if (bl->loc_type != bp_loc_software_breakpoint)
1467 if (bl->target_info.shadow_len == 0)
1468 /* BL isn't valid, or doesn't shadow memory. */
1473 /* Update BUF, which is LEN bytes read from the target address
1474 MEMADDR, by replacing a memory breakpoint with its shadowed
1477 If READBUF is not NULL, this buffer must not overlap with the of
1478 the breakpoint location's shadow_contents buffer. Otherwise, a
1479 failed assertion internal error will be raised. */
1482 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1483 const gdb_byte *writebuf_org,
1484 ULONGEST memaddr, LONGEST len,
1485 struct bp_target_info *target_info,
1486 struct gdbarch *gdbarch)
1488 /* Now do full processing of the found relevant range of elements. */
1489 CORE_ADDR bp_addr = 0;
1493 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1494 current_program_space->aspace, 0))
1496 /* The breakpoint is inserted in a different address space. */
1500 /* Addresses and length of the part of the breakpoint that
1502 bp_addr = target_info->placed_address;
1503 bp_size = target_info->shadow_len;
1505 if (bp_addr + bp_size <= memaddr)
1507 /* The breakpoint is entirely before the chunk of memory we are
1512 if (bp_addr >= memaddr + len)
1514 /* The breakpoint is entirely after the chunk of memory we are
1519 /* Offset within shadow_contents. */
1520 if (bp_addr < memaddr)
1522 /* Only copy the second part of the breakpoint. */
1523 bp_size -= memaddr - bp_addr;
1524 bptoffset = memaddr - bp_addr;
1528 if (bp_addr + bp_size > memaddr + len)
1530 /* Only copy the first part of the breakpoint. */
1531 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1534 if (readbuf != NULL)
1536 /* Verify that the readbuf buffer does not overlap with the
1537 shadow_contents buffer. */
1538 gdb_assert (target_info->shadow_contents >= readbuf + len
1539 || readbuf >= (target_info->shadow_contents
1540 + target_info->shadow_len));
1542 /* Update the read buffer with this inserted breakpoint's
1544 memcpy (readbuf + bp_addr - memaddr,
1545 target_info->shadow_contents + bptoffset, bp_size);
1549 const unsigned char *bp;
1550 CORE_ADDR placed_address = target_info->placed_address;
1551 int placed_size = target_info->placed_size;
1553 /* Update the shadow with what we want to write to memory. */
1554 memcpy (target_info->shadow_contents + bptoffset,
1555 writebuf_org + bp_addr - memaddr, bp_size);
1557 /* Determine appropriate breakpoint contents and size for this
1559 bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1561 /* Update the final write buffer with this inserted
1562 breakpoint's INSN. */
1563 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1567 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1568 by replacing any memory breakpoints with their shadowed contents.
1570 If READBUF is not NULL, this buffer must not overlap with any of
1571 the breakpoint location's shadow_contents buffers. Otherwise,
1572 a failed assertion internal error will be raised.
1574 The range of shadowed area by each bp_location is:
1575 bl->address - bp_location_placed_address_before_address_max
1576 up to bl->address + bp_location_shadow_len_after_address_max
1577 The range we were requested to resolve shadows for is:
1578 memaddr ... memaddr + len
1579 Thus the safe cutoff boundaries for performance optimization are
1580 memaddr + len <= (bl->address
1581 - bp_location_placed_address_before_address_max)
1583 bl->address + bp_location_shadow_len_after_address_max <= memaddr */
1586 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1587 const gdb_byte *writebuf_org,
1588 ULONGEST memaddr, LONGEST len)
1590 /* Left boundary, right boundary and median element of our binary
1592 unsigned bc_l, bc_r, bc;
1595 /* Find BC_L which is a leftmost element which may affect BUF
1596 content. It is safe to report lower value but a failure to
1597 report higher one. */
1600 bc_r = bp_location_count;
1601 while (bc_l + 1 < bc_r)
1603 struct bp_location *bl;
1605 bc = (bc_l + bc_r) / 2;
1606 bl = bp_location[bc];
1608 /* Check first BL->ADDRESS will not overflow due to the added
1609 constant. Then advance the left boundary only if we are sure
1610 the BC element can in no way affect the BUF content (MEMADDR
1611 to MEMADDR + LEN range).
1613 Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1614 offset so that we cannot miss a breakpoint with its shadow
1615 range tail still reaching MEMADDR. */
1617 if ((bl->address + bp_location_shadow_len_after_address_max
1619 && (bl->address + bp_location_shadow_len_after_address_max
1626 /* Due to the binary search above, we need to make sure we pick the
1627 first location that's at BC_L's address. E.g., if there are
1628 multiple locations at the same address, BC_L may end up pointing
1629 at a duplicate location, and miss the "master"/"inserted"
1630 location. Say, given locations L1, L2 and L3 at addresses A and
1633 L1@A, L2@A, L3@B, ...
1635 BC_L could end up pointing at location L2, while the "master"
1636 location could be L1. Since the `loc->inserted' flag is only set
1637 on "master" locations, we'd forget to restore the shadow of L1
1640 && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1643 /* Now do full processing of the found relevant range of elements. */
1645 for (bc = bc_l; bc < bp_location_count; bc++)
1647 struct bp_location *bl = bp_location[bc];
1648 CORE_ADDR bp_addr = 0;
1652 /* bp_location array has BL->OWNER always non-NULL. */
1653 if (bl->owner->type == bp_none)
1654 warning (_("reading through apparently deleted breakpoint #%d?"),
1657 /* Performance optimization: any further element can no longer affect BUF
1660 if (bl->address >= bp_location_placed_address_before_address_max
1661 && memaddr + len <= (bl->address
1662 - bp_location_placed_address_before_address_max))
1665 if (!bp_location_has_shadow (bl))
1668 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1669 memaddr, len, &bl->target_info, bl->gdbarch);
1672 /* Now process single-step breakpoints. These are not found in the
1673 bp_location array. */
1674 for (i = 0; i < 2; i++)
1676 struct bp_target_info *bp_tgt = single_step_breakpoints[i];
1680 struct gdbarch *gdbarch = single_step_gdbarch[i];
1682 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1683 memaddr, len, bp_tgt, gdbarch);
1690 /* Return true if BPT is either a software breakpoint or a hardware
1694 is_breakpoint (const struct breakpoint *bpt)
1696 return (bpt->type == bp_breakpoint
1697 || bpt->type == bp_hardware_breakpoint
1698 || bpt->type == bp_dprintf);
1701 /* Return true if BPT is of any hardware watchpoint kind. */
1704 is_hardware_watchpoint (const struct breakpoint *bpt)
1706 return (bpt->type == bp_hardware_watchpoint
1707 || bpt->type == bp_read_watchpoint
1708 || bpt->type == bp_access_watchpoint);
1711 /* Return true if BPT is of any watchpoint kind, hardware or
1715 is_watchpoint (const struct breakpoint *bpt)
1717 return (is_hardware_watchpoint (bpt)
1718 || bpt->type == bp_watchpoint);
1721 /* Returns true if the current thread and its running state are safe
1722 to evaluate or update watchpoint B. Watchpoints on local
1723 expressions need to be evaluated in the context of the thread that
1724 was current when the watchpoint was created, and, that thread needs
1725 to be stopped to be able to select the correct frame context.
1726 Watchpoints on global expressions can be evaluated on any thread,
1727 and in any state. It is presently left to the target allowing
1728 memory accesses when threads are running. */
1731 watchpoint_in_thread_scope (struct watchpoint *b)
1733 return (b->base.pspace == current_program_space
1734 && (ptid_equal (b->watchpoint_thread, null_ptid)
1735 || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1736 && !is_executing (inferior_ptid))));
1739 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1740 associated bp_watchpoint_scope breakpoint. */
1743 watchpoint_del_at_next_stop (struct watchpoint *w)
1745 struct breakpoint *b = &w->base;
1747 if (b->related_breakpoint != b)
1749 gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1750 gdb_assert (b->related_breakpoint->related_breakpoint == b);
1751 b->related_breakpoint->disposition = disp_del_at_next_stop;
1752 b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1753 b->related_breakpoint = b;
1755 b->disposition = disp_del_at_next_stop;
1758 /* Extract a bitfield value from value VAL using the bit parameters contained in
1761 static struct value *
1762 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1764 struct value *bit_val;
1769 bit_val = allocate_value (value_type (val));
1771 unpack_value_bitfield (bit_val,
1774 value_contents_for_printing (val),
1781 /* Assuming that B is a watchpoint:
1782 - Reparse watchpoint expression, if REPARSE is non-zero
1783 - Evaluate expression and store the result in B->val
1784 - Evaluate the condition if there is one, and store the result
1786 - Update the list of values that must be watched in B->loc.
1788 If the watchpoint disposition is disp_del_at_next_stop, then do
1789 nothing. If this is local watchpoint that is out of scope, delete
1792 Even with `set breakpoint always-inserted on' the watchpoints are
1793 removed + inserted on each stop here. Normal breakpoints must
1794 never be removed because they might be missed by a running thread
1795 when debugging in non-stop mode. On the other hand, hardware
1796 watchpoints (is_hardware_watchpoint; processed here) are specific
1797 to each LWP since they are stored in each LWP's hardware debug
1798 registers. Therefore, such LWP must be stopped first in order to
1799 be able to modify its hardware watchpoints.
1801 Hardware watchpoints must be reset exactly once after being
1802 presented to the user. It cannot be done sooner, because it would
1803 reset the data used to present the watchpoint hit to the user. And
1804 it must not be done later because it could display the same single
1805 watchpoint hit during multiple GDB stops. Note that the latter is
1806 relevant only to the hardware watchpoint types bp_read_watchpoint
1807 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1808 not user-visible - its hit is suppressed if the memory content has
1811 The following constraints influence the location where we can reset
1812 hardware watchpoints:
1814 * target_stopped_by_watchpoint and target_stopped_data_address are
1815 called several times when GDB stops.
1818 * Multiple hardware watchpoints can be hit at the same time,
1819 causing GDB to stop. GDB only presents one hardware watchpoint
1820 hit at a time as the reason for stopping, and all the other hits
1821 are presented later, one after the other, each time the user
1822 requests the execution to be resumed. Execution is not resumed
1823 for the threads still having pending hit event stored in
1824 LWP_INFO->STATUS. While the watchpoint is already removed from
1825 the inferior on the first stop the thread hit event is kept being
1826 reported from its cached value by linux_nat_stopped_data_address
1827 until the real thread resume happens after the watchpoint gets
1828 presented and thus its LWP_INFO->STATUS gets reset.
1830 Therefore the hardware watchpoint hit can get safely reset on the
1831 watchpoint removal from inferior. */
1834 update_watchpoint (struct watchpoint *b, int reparse)
1836 int within_current_scope;
1837 struct frame_id saved_frame_id;
1840 /* If this is a local watchpoint, we only want to check if the
1841 watchpoint frame is in scope if the current thread is the thread
1842 that was used to create the watchpoint. */
1843 if (!watchpoint_in_thread_scope (b))
1846 if (b->base.disposition == disp_del_at_next_stop)
1851 /* Determine if the watchpoint is within scope. */
1852 if (b->exp_valid_block == NULL)
1853 within_current_scope = 1;
1856 struct frame_info *fi = get_current_frame ();
1857 struct gdbarch *frame_arch = get_frame_arch (fi);
1858 CORE_ADDR frame_pc = get_frame_pc (fi);
1860 /* If we're in a function epilogue, unwinding may not work
1861 properly, so do not attempt to recreate locations at this
1862 point. See similar comments in watchpoint_check. */
1863 if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1866 /* Save the current frame's ID so we can restore it after
1867 evaluating the watchpoint expression on its own frame. */
1868 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1869 took a frame parameter, so that we didn't have to change the
1872 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1874 fi = frame_find_by_id (b->watchpoint_frame);
1875 within_current_scope = (fi != NULL);
1876 if (within_current_scope)
1880 /* We don't free locations. They are stored in the bp_location array
1881 and update_global_location_list will eventually delete them and
1882 remove breakpoints if needed. */
1885 if (within_current_scope && reparse)
1894 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1895 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1896 /* If the meaning of expression itself changed, the old value is
1897 no longer relevant. We don't want to report a watchpoint hit
1898 to the user when the old value and the new value may actually
1899 be completely different objects. */
1900 value_free (b->val);
1904 /* Note that unlike with breakpoints, the watchpoint's condition
1905 expression is stored in the breakpoint object, not in the
1906 locations (re)created below. */
1907 if (b->base.cond_string != NULL)
1909 if (b->cond_exp != NULL)
1911 xfree (b->cond_exp);
1915 s = b->base.cond_string;
1916 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1920 /* If we failed to parse the expression, for example because
1921 it refers to a global variable in a not-yet-loaded shared library,
1922 don't try to insert watchpoint. We don't automatically delete
1923 such watchpoint, though, since failure to parse expression
1924 is different from out-of-scope watchpoint. */
1925 if (!target_has_execution)
1927 /* Without execution, memory can't change. No use to try and
1928 set watchpoint locations. The watchpoint will be reset when
1929 the target gains execution, through breakpoint_re_set. */
1930 if (!can_use_hw_watchpoints)
1932 if (b->base.ops->works_in_software_mode (&b->base))
1933 b->base.type = bp_watchpoint;
1935 error (_("Can't set read/access watchpoint when "
1936 "hardware watchpoints are disabled."));
1939 else if (within_current_scope && b->exp)
1942 struct value *val_chain, *v, *result, *next;
1943 struct program_space *frame_pspace;
1945 fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain, 0);
1947 /* Avoid setting b->val if it's already set. The meaning of
1948 b->val is 'the last value' user saw, and we should update
1949 it only if we reported that last value to user. As it
1950 happens, the code that reports it updates b->val directly.
1951 We don't keep track of the memory value for masked
1953 if (!b->val_valid && !is_masked_watchpoint (&b->base))
1955 if (b->val_bitsize != 0)
1957 v = extract_bitfield_from_watchpoint_value (b, v);
1965 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1967 /* Look at each value on the value chain. */
1968 for (v = val_chain; v; v = value_next (v))
1970 /* If it's a memory location, and GDB actually needed
1971 its contents to evaluate the expression, then we
1972 must watch it. If the first value returned is
1973 still lazy, that means an error occurred reading it;
1974 watch it anyway in case it becomes readable. */
1975 if (VALUE_LVAL (v) == lval_memory
1976 && (v == val_chain || ! value_lazy (v)))
1978 struct type *vtype = check_typedef (value_type (v));
1980 /* We only watch structs and arrays if user asked
1981 for it explicitly, never if they just happen to
1982 appear in the middle of some value chain. */
1984 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1985 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1989 struct bp_location *loc, **tmp;
1990 int bitpos = 0, bitsize = 0;
1992 if (value_bitsize (v) != 0)
1994 /* Extract the bit parameters out from the bitfield
1996 bitpos = value_bitpos (v);
1997 bitsize = value_bitsize (v);
1999 else if (v == result && b->val_bitsize != 0)
2001 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
2002 lvalue whose bit parameters are saved in the fields
2003 VAL_BITPOS and VAL_BITSIZE. */
2004 bitpos = b->val_bitpos;
2005 bitsize = b->val_bitsize;
2008 addr = value_address (v);
2011 /* Skip the bytes that don't contain the bitfield. */
2016 if (b->base.type == bp_read_watchpoint)
2018 else if (b->base.type == bp_access_watchpoint)
2021 loc = allocate_bp_location (&b->base);
2022 for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
2025 loc->gdbarch = get_type_arch (value_type (v));
2027 loc->pspace = frame_pspace;
2028 loc->address = addr;
2032 /* Just cover the bytes that make up the bitfield. */
2033 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2036 loc->length = TYPE_LENGTH (value_type (v));
2038 loc->watchpoint_type = type;
2043 /* Change the type of breakpoint between hardware assisted or
2044 an ordinary watchpoint depending on the hardware support
2045 and free hardware slots. REPARSE is set when the inferior
2050 enum bp_loc_type loc_type;
2051 struct bp_location *bl;
2053 reg_cnt = can_use_hardware_watchpoint (val_chain);
2057 int i, target_resources_ok, other_type_used;
2060 /* Use an exact watchpoint when there's only one memory region to be
2061 watched, and only one debug register is needed to watch it. */
2062 b->exact = target_exact_watchpoints && reg_cnt == 1;
2064 /* We need to determine how many resources are already
2065 used for all other hardware watchpoints plus this one
2066 to see if we still have enough resources to also fit
2067 this watchpoint in as well. */
2069 /* If this is a software watchpoint, we try to turn it
2070 to a hardware one -- count resources as if B was of
2071 hardware watchpoint type. */
2072 type = b->base.type;
2073 if (type == bp_watchpoint)
2074 type = bp_hardware_watchpoint;
2076 /* This watchpoint may or may not have been placed on
2077 the list yet at this point (it won't be in the list
2078 if we're trying to create it for the first time,
2079 through watch_command), so always account for it
2082 /* Count resources used by all watchpoints except B. */
2083 i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
2085 /* Add in the resources needed for B. */
2086 i += hw_watchpoint_use_count (&b->base);
2089 = target_can_use_hardware_watchpoint (type, i, other_type_used);
2090 if (target_resources_ok <= 0)
2092 int sw_mode = b->base.ops->works_in_software_mode (&b->base);
2094 if (target_resources_ok == 0 && !sw_mode)
2095 error (_("Target does not support this type of "
2096 "hardware watchpoint."));
2097 else if (target_resources_ok < 0 && !sw_mode)
2098 error (_("There are not enough available hardware "
2099 "resources for this watchpoint."));
2101 /* Downgrade to software watchpoint. */
2102 b->base.type = bp_watchpoint;
2106 /* If this was a software watchpoint, we've just
2107 found we have enough resources to turn it to a
2108 hardware watchpoint. Otherwise, this is a
2110 b->base.type = type;
2113 else if (!b->base.ops->works_in_software_mode (&b->base))
2115 if (!can_use_hw_watchpoints)
2116 error (_("Can't set read/access watchpoint when "
2117 "hardware watchpoints are disabled."));
2119 error (_("Expression cannot be implemented with "
2120 "read/access watchpoint."));
2123 b->base.type = bp_watchpoint;
2125 loc_type = (b->base.type == bp_watchpoint? bp_loc_other
2126 : bp_loc_hardware_watchpoint);
2127 for (bl = b->base.loc; bl; bl = bl->next)
2128 bl->loc_type = loc_type;
2131 for (v = val_chain; v; v = next)
2133 next = value_next (v);
2138 /* If a software watchpoint is not watching any memory, then the
2139 above left it without any location set up. But,
2140 bpstat_stop_status requires a location to be able to report
2141 stops, so make sure there's at least a dummy one. */
2142 if (b->base.type == bp_watchpoint && b->base.loc == NULL)
2144 struct breakpoint *base = &b->base;
2145 base->loc = allocate_bp_location (base);
2146 base->loc->pspace = frame_pspace;
2147 base->loc->address = -1;
2148 base->loc->length = -1;
2149 base->loc->watchpoint_type = -1;
2152 else if (!within_current_scope)
2154 printf_filtered (_("\
2155 Watchpoint %d deleted because the program has left the block\n\
2156 in which its expression is valid.\n"),
2158 watchpoint_del_at_next_stop (b);
2161 /* Restore the selected frame. */
2163 select_frame (frame_find_by_id (saved_frame_id));
2167 /* Returns 1 iff breakpoint location should be
2168 inserted in the inferior. We don't differentiate the type of BL's owner
2169 (breakpoint vs. tracepoint), although insert_location in tracepoint's
2170 breakpoint_ops is not defined, because in insert_bp_location,
2171 tracepoint's insert_location will not be called. */
2173 should_be_inserted (struct bp_location *bl)
2175 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2178 if (bl->owner->disposition == disp_del_at_next_stop)
2181 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2184 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2187 /* This is set for example, when we're attached to the parent of a
2188 vfork, and have detached from the child. The child is running
2189 free, and we expect it to do an exec or exit, at which point the
2190 OS makes the parent schedulable again (and the target reports
2191 that the vfork is done). Until the child is done with the shared
2192 memory region, do not insert breakpoints in the parent, otherwise
2193 the child could still trip on the parent's breakpoints. Since
2194 the parent is blocked anyway, it won't miss any breakpoint. */
2195 if (bl->pspace->breakpoints_not_allowed)
2198 /* Don't insert a breakpoint if we're trying to step past its
2200 if ((bl->loc_type == bp_loc_software_breakpoint
2201 || bl->loc_type == bp_loc_hardware_breakpoint)
2202 && stepping_past_instruction_at (bl->pspace->aspace,
2207 fprintf_unfiltered (gdb_stdlog,
2208 "infrun: skipping breakpoint: "
2209 "stepping past insn at: %s\n",
2210 paddress (bl->gdbarch, bl->address));
2218 /* Same as should_be_inserted but does the check assuming
2219 that the location is not duplicated. */
2222 unduplicated_should_be_inserted (struct bp_location *bl)
2225 const int save_duplicate = bl->duplicate;
2228 result = should_be_inserted (bl);
2229 bl->duplicate = save_duplicate;
2233 /* Parses a conditional described by an expression COND into an
2234 agent expression bytecode suitable for evaluation
2235 by the bytecode interpreter. Return NULL if there was
2236 any error during parsing. */
2238 static struct agent_expr *
2239 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2241 struct agent_expr *aexpr = NULL;
2242 volatile struct gdb_exception ex;
2247 /* We don't want to stop processing, so catch any errors
2248 that may show up. */
2249 TRY_CATCH (ex, RETURN_MASK_ERROR)
2251 aexpr = gen_eval_for_expr (scope, cond);
2256 /* If we got here, it means the condition could not be parsed to a valid
2257 bytecode expression and thus can't be evaluated on the target's side.
2258 It's no use iterating through the conditions. */
2262 /* We have a valid agent expression. */
2266 /* Based on location BL, create a list of breakpoint conditions to be
2267 passed on to the target. If we have duplicated locations with different
2268 conditions, we will add such conditions to the list. The idea is that the
2269 target will evaluate the list of conditions and will only notify GDB when
2270 one of them is true. */
2273 build_target_condition_list (struct bp_location *bl)
2275 struct bp_location **locp = NULL, **loc2p;
2276 int null_condition_or_parse_error = 0;
2277 int modified = bl->needs_update;
2278 struct bp_location *loc;
2280 /* Release conditions left over from a previous insert. */
2281 VEC_free (agent_expr_p, bl->target_info.conditions);
2283 /* This is only meaningful if the target is
2284 evaluating conditions and if the user has
2285 opted for condition evaluation on the target's
2287 if (gdb_evaluates_breakpoint_condition_p ()
2288 || !target_supports_evaluation_of_breakpoint_conditions ())
2291 /* Do a first pass to check for locations with no assigned
2292 conditions or conditions that fail to parse to a valid agent expression
2293 bytecode. If any of these happen, then it's no use to send conditions
2294 to the target since this location will always trigger and generate a
2295 response back to GDB. */
2296 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2299 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2303 struct agent_expr *aexpr;
2305 /* Re-parse the conditions since something changed. In that
2306 case we already freed the condition bytecodes (see
2307 force_breakpoint_reinsertion). We just
2308 need to parse the condition to bytecodes again. */
2309 aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2310 loc->cond_bytecode = aexpr;
2312 /* Check if we managed to parse the conditional expression
2313 correctly. If not, we will not send this condition
2319 /* If we have a NULL bytecode expression, it means something
2320 went wrong or we have a null condition expression. */
2321 if (!loc->cond_bytecode)
2323 null_condition_or_parse_error = 1;
2329 /* If any of these happened, it means we will have to evaluate the conditions
2330 for the location's address on gdb's side. It is no use keeping bytecodes
2331 for all the other duplicate locations, thus we free all of them here.
2333 This is so we have a finer control over which locations' conditions are
2334 being evaluated by GDB or the remote stub. */
2335 if (null_condition_or_parse_error)
2337 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2340 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2342 /* Only go as far as the first NULL bytecode is
2344 if (!loc->cond_bytecode)
2347 free_agent_expr (loc->cond_bytecode);
2348 loc->cond_bytecode = NULL;
2353 /* No NULL conditions or failed bytecode generation. Build a condition list
2354 for this location's address. */
2355 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2359 && is_breakpoint (loc->owner)
2360 && loc->pspace->num == bl->pspace->num
2361 && loc->owner->enable_state == bp_enabled
2363 /* Add the condition to the vector. This will be used later to send the
2364 conditions to the target. */
2365 VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2366 loc->cond_bytecode);
2372 /* Parses a command described by string CMD into an agent expression
2373 bytecode suitable for evaluation by the bytecode interpreter.
2374 Return NULL if there was any error during parsing. */
2376 static struct agent_expr *
2377 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2379 struct cleanup *old_cleanups = 0;
2380 struct expression *expr, **argvec;
2381 struct agent_expr *aexpr = NULL;
2382 volatile struct gdb_exception ex;
2383 const char *cmdrest;
2384 const char *format_start, *format_end;
2385 struct format_piece *fpieces;
2387 struct gdbarch *gdbarch = get_current_arch ();
2394 if (*cmdrest == ',')
2396 cmdrest = skip_spaces_const (cmdrest);
2398 if (*cmdrest++ != '"')
2399 error (_("No format string following the location"));
2401 format_start = cmdrest;
2403 fpieces = parse_format_string (&cmdrest);
2405 old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2407 format_end = cmdrest;
2409 if (*cmdrest++ != '"')
2410 error (_("Bad format string, non-terminated '\"'."));
2412 cmdrest = skip_spaces_const (cmdrest);
2414 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2415 error (_("Invalid argument syntax"));
2417 if (*cmdrest == ',')
2419 cmdrest = skip_spaces_const (cmdrest);
2421 /* For each argument, make an expression. */
2423 argvec = (struct expression **) alloca (strlen (cmd)
2424 * sizeof (struct expression *));
2427 while (*cmdrest != '\0')
2432 expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2433 argvec[nargs++] = expr;
2435 if (*cmdrest == ',')
2439 /* We don't want to stop processing, so catch any errors
2440 that may show up. */
2441 TRY_CATCH (ex, RETURN_MASK_ERROR)
2443 aexpr = gen_printf (scope, gdbarch, 0, 0,
2444 format_start, format_end - format_start,
2445 fpieces, nargs, argvec);
2448 do_cleanups (old_cleanups);
2452 /* If we got here, it means the command could not be parsed to a valid
2453 bytecode expression and thus can't be evaluated on the target's side.
2454 It's no use iterating through the other commands. */
2458 /* We have a valid agent expression, return it. */
2462 /* Based on location BL, create a list of breakpoint commands to be
2463 passed on to the target. If we have duplicated locations with
2464 different commands, we will add any such to the list. */
2467 build_target_command_list (struct bp_location *bl)
2469 struct bp_location **locp = NULL, **loc2p;
2470 int null_command_or_parse_error = 0;
2471 int modified = bl->needs_update;
2472 struct bp_location *loc;
2474 /* Release commands left over from a previous insert. */
2475 VEC_free (agent_expr_p, bl->target_info.tcommands);
2477 if (!target_can_run_breakpoint_commands ())
2480 /* For now, limit to agent-style dprintf breakpoints. */
2481 if (dprintf_style != dprintf_style_agent)
2484 /* For now, if we have any duplicate location that isn't a dprintf,
2485 don't install the target-side commands, as that would make the
2486 breakpoint not be reported to the core, and we'd lose
2488 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2491 if (is_breakpoint (loc->owner)
2492 && loc->pspace->num == bl->pspace->num
2493 && loc->owner->type != bp_dprintf)
2497 /* Do a first pass to check for locations with no assigned
2498 conditions or conditions that fail to parse to a valid agent expression
2499 bytecode. If any of these happen, then it's no use to send conditions
2500 to the target since this location will always trigger and generate a
2501 response back to GDB. */
2502 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2505 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2509 struct agent_expr *aexpr;
2511 /* Re-parse the commands since something changed. In that
2512 case we already freed the command bytecodes (see
2513 force_breakpoint_reinsertion). We just
2514 need to parse the command to bytecodes again. */
2515 aexpr = parse_cmd_to_aexpr (bl->address,
2516 loc->owner->extra_string);
2517 loc->cmd_bytecode = aexpr;
2523 /* If we have a NULL bytecode expression, it means something
2524 went wrong or we have a null command expression. */
2525 if (!loc->cmd_bytecode)
2527 null_command_or_parse_error = 1;
2533 /* If anything failed, then we're not doing target-side commands,
2535 if (null_command_or_parse_error)
2537 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2540 if (is_breakpoint (loc->owner)
2541 && loc->pspace->num == bl->pspace->num)
2543 /* Only go as far as the first NULL bytecode is
2545 if (loc->cmd_bytecode == NULL)
2548 free_agent_expr (loc->cmd_bytecode);
2549 loc->cmd_bytecode = NULL;
2554 /* No NULL commands or failed bytecode generation. Build a command list
2555 for this location's address. */
2556 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2559 if (loc->owner->extra_string
2560 && is_breakpoint (loc->owner)
2561 && loc->pspace->num == bl->pspace->num
2562 && loc->owner->enable_state == bp_enabled
2564 /* Add the command to the vector. This will be used later
2565 to send the commands to the target. */
2566 VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2570 bl->target_info.persist = 0;
2571 /* Maybe flag this location as persistent. */
2572 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2573 bl->target_info.persist = 1;
2576 /* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2577 location. Any error messages are printed to TMP_ERROR_STREAM; and
2578 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2579 Returns 0 for success, 1 if the bp_location type is not supported or
2582 NOTE drow/2003-09-09: This routine could be broken down to an
2583 object-style method for each breakpoint or catchpoint type. */
2585 insert_bp_location (struct bp_location *bl,
2586 struct ui_file *tmp_error_stream,
2587 int *disabled_breaks,
2588 int *hw_breakpoint_error,
2589 int *hw_bp_error_explained_already)
2591 enum errors bp_err = GDB_NO_ERROR;
2592 const char *bp_err_message = NULL;
2593 volatile struct gdb_exception e;
2595 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2598 /* Note we don't initialize bl->target_info, as that wipes out
2599 the breakpoint location's shadow_contents if the breakpoint
2600 is still inserted at that location. This in turn breaks
2601 target_read_memory which depends on these buffers when
2602 a memory read is requested at the breakpoint location:
2603 Once the target_info has been wiped, we fail to see that
2604 we have a breakpoint inserted at that address and thus
2605 read the breakpoint instead of returning the data saved in
2606 the breakpoint location's shadow contents. */
2607 bl->target_info.placed_address = bl->address;
2608 bl->target_info.placed_address_space = bl->pspace->aspace;
2609 bl->target_info.length = bl->length;
2611 /* When working with target-side conditions, we must pass all the conditions
2612 for the same breakpoint address down to the target since GDB will not
2613 insert those locations. With a list of breakpoint conditions, the target
2614 can decide when to stop and notify GDB. */
2616 if (is_breakpoint (bl->owner))
2618 build_target_condition_list (bl);
2619 build_target_command_list (bl);
2620 /* Reset the modification marker. */
2621 bl->needs_update = 0;
2624 if (bl->loc_type == bp_loc_software_breakpoint
2625 || bl->loc_type == bp_loc_hardware_breakpoint)
2627 if (bl->owner->type != bp_hardware_breakpoint)
2629 /* If the explicitly specified breakpoint type
2630 is not hardware breakpoint, check the memory map to see
2631 if the breakpoint address is in read only memory or not.
2633 Two important cases are:
2634 - location type is not hardware breakpoint, memory
2635 is readonly. We change the type of the location to
2636 hardware breakpoint.
2637 - location type is hardware breakpoint, memory is
2638 read-write. This means we've previously made the
2639 location hardware one, but then the memory map changed,
2642 When breakpoints are removed, remove_breakpoints will use
2643 location types we've just set here, the only possible
2644 problem is that memory map has changed during running
2645 program, but it's not going to work anyway with current
2647 struct mem_region *mr
2648 = lookup_mem_region (bl->target_info.placed_address);
2652 if (automatic_hardware_breakpoints)
2654 enum bp_loc_type new_type;
2656 if (mr->attrib.mode != MEM_RW)
2657 new_type = bp_loc_hardware_breakpoint;
2659 new_type = bp_loc_software_breakpoint;
2661 if (new_type != bl->loc_type)
2663 static int said = 0;
2665 bl->loc_type = new_type;
2668 fprintf_filtered (gdb_stdout,
2669 _("Note: automatically using "
2670 "hardware breakpoints for "
2671 "read-only addresses.\n"));
2676 else if (bl->loc_type == bp_loc_software_breakpoint
2677 && mr->attrib.mode != MEM_RW)
2679 fprintf_unfiltered (tmp_error_stream,
2680 _("Cannot insert breakpoint %d.\n"
2681 "Cannot set software breakpoint "
2682 "at read-only address %s\n"),
2684 paddress (bl->gdbarch, bl->address));
2690 /* First check to see if we have to handle an overlay. */
2691 if (overlay_debugging == ovly_off
2692 || bl->section == NULL
2693 || !(section_is_overlay (bl->section)))
2695 /* No overlay handling: just set the breakpoint. */
2696 TRY_CATCH (e, RETURN_MASK_ALL)
2700 val = bl->owner->ops->insert_location (bl);
2702 bp_err = GENERIC_ERROR;
2707 bp_err_message = e.message;
2712 /* This breakpoint is in an overlay section.
2713 Shall we set a breakpoint at the LMA? */
2714 if (!overlay_events_enabled)
2716 /* Yes -- overlay event support is not active,
2717 so we must try to set a breakpoint at the LMA.
2718 This will not work for a hardware breakpoint. */
2719 if (bl->loc_type == bp_loc_hardware_breakpoint)
2720 warning (_("hardware breakpoint %d not supported in overlay!"),
2724 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2726 /* Set a software (trap) breakpoint at the LMA. */
2727 bl->overlay_target_info = bl->target_info;
2728 bl->overlay_target_info.placed_address = addr;
2730 /* No overlay handling: just set the breakpoint. */
2731 TRY_CATCH (e, RETURN_MASK_ALL)
2735 val = target_insert_breakpoint (bl->gdbarch,
2736 &bl->overlay_target_info);
2738 bp_err = GENERIC_ERROR;
2743 bp_err_message = e.message;
2746 if (bp_err != GDB_NO_ERROR)
2747 fprintf_unfiltered (tmp_error_stream,
2748 "Overlay breakpoint %d "
2749 "failed: in ROM?\n",
2753 /* Shall we set a breakpoint at the VMA? */
2754 if (section_is_mapped (bl->section))
2756 /* Yes. This overlay section is mapped into memory. */
2757 TRY_CATCH (e, RETURN_MASK_ALL)
2761 val = bl->owner->ops->insert_location (bl);
2763 bp_err = GENERIC_ERROR;
2768 bp_err_message = e.message;
2773 /* No. This breakpoint will not be inserted.
2774 No error, but do not mark the bp as 'inserted'. */
2779 if (bp_err != GDB_NO_ERROR)
2781 /* Can't set the breakpoint. */
2783 /* In some cases, we might not be able to insert a
2784 breakpoint in a shared library that has already been
2785 removed, but we have not yet processed the shlib unload
2786 event. Unfortunately, some targets that implement
2787 breakpoint insertion themselves can't tell why the
2788 breakpoint insertion failed (e.g., the remote target
2789 doesn't define error codes), so we must treat generic
2790 errors as memory errors. */
2791 if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
2792 && bl->loc_type == bp_loc_software_breakpoint
2793 && (solib_name_from_address (bl->pspace, bl->address)
2794 || shared_objfile_contains_address_p (bl->pspace,
2797 /* See also: disable_breakpoints_in_shlibs. */
2798 bl->shlib_disabled = 1;
2799 observer_notify_breakpoint_modified (bl->owner);
2800 if (!*disabled_breaks)
2802 fprintf_unfiltered (tmp_error_stream,
2803 "Cannot insert breakpoint %d.\n",
2805 fprintf_unfiltered (tmp_error_stream,
2806 "Temporarily disabling shared "
2807 "library breakpoints:\n");
2809 *disabled_breaks = 1;
2810 fprintf_unfiltered (tmp_error_stream,
2811 "breakpoint #%d\n", bl->owner->number);
2816 if (bl->loc_type == bp_loc_hardware_breakpoint)
2818 *hw_breakpoint_error = 1;
2819 *hw_bp_error_explained_already = bp_err_message != NULL;
2820 fprintf_unfiltered (tmp_error_stream,
2821 "Cannot insert hardware breakpoint %d%s",
2822 bl->owner->number, bp_err_message ? ":" : ".\n");
2823 if (bp_err_message != NULL)
2824 fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
2828 if (bp_err_message == NULL)
2831 = memory_error_message (TARGET_XFER_E_IO,
2832 bl->gdbarch, bl->address);
2833 struct cleanup *old_chain = make_cleanup (xfree, message);
2835 fprintf_unfiltered (tmp_error_stream,
2836 "Cannot insert breakpoint %d.\n"
2838 bl->owner->number, message);
2839 do_cleanups (old_chain);
2843 fprintf_unfiltered (tmp_error_stream,
2844 "Cannot insert breakpoint %d: %s\n",
2859 else if (bl->loc_type == bp_loc_hardware_watchpoint
2860 /* NOTE drow/2003-09-08: This state only exists for removing
2861 watchpoints. It's not clear that it's necessary... */
2862 && bl->owner->disposition != disp_del_at_next_stop)
2866 gdb_assert (bl->owner->ops != NULL
2867 && bl->owner->ops->insert_location != NULL);
2869 val = bl->owner->ops->insert_location (bl);
2871 /* If trying to set a read-watchpoint, and it turns out it's not
2872 supported, try emulating one with an access watchpoint. */
2873 if (val == 1 && bl->watchpoint_type == hw_read)
2875 struct bp_location *loc, **loc_temp;
2877 /* But don't try to insert it, if there's already another
2878 hw_access location that would be considered a duplicate
2880 ALL_BP_LOCATIONS (loc, loc_temp)
2882 && loc->watchpoint_type == hw_access
2883 && watchpoint_locations_match (bl, loc))
2887 bl->target_info = loc->target_info;
2888 bl->watchpoint_type = hw_access;
2895 bl->watchpoint_type = hw_access;
2896 val = bl->owner->ops->insert_location (bl);
2899 /* Back to the original value. */
2900 bl->watchpoint_type = hw_read;
2904 bl->inserted = (val == 0);
2907 else if (bl->owner->type == bp_catchpoint)
2911 gdb_assert (bl->owner->ops != NULL
2912 && bl->owner->ops->insert_location != NULL);
2914 val = bl->owner->ops->insert_location (bl);
2917 bl->owner->enable_state = bp_disabled;
2921 Error inserting catchpoint %d: Your system does not support this type\n\
2922 of catchpoint."), bl->owner->number);
2924 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2927 bl->inserted = (val == 0);
2929 /* We've already printed an error message if there was a problem
2930 inserting this catchpoint, and we've disabled the catchpoint,
2931 so just return success. */
2938 /* This function is called when program space PSPACE is about to be
2939 deleted. It takes care of updating breakpoints to not reference
2943 breakpoint_program_space_exit (struct program_space *pspace)
2945 struct breakpoint *b, *b_temp;
2946 struct bp_location *loc, **loc_temp;
2948 /* Remove any breakpoint that was set through this program space. */
2949 ALL_BREAKPOINTS_SAFE (b, b_temp)
2951 if (b->pspace == pspace)
2952 delete_breakpoint (b);
2955 /* Breakpoints set through other program spaces could have locations
2956 bound to PSPACE as well. Remove those. */
2957 ALL_BP_LOCATIONS (loc, loc_temp)
2959 struct bp_location *tmp;
2961 if (loc->pspace == pspace)
2963 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
2964 if (loc->owner->loc == loc)
2965 loc->owner->loc = loc->next;
2967 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2968 if (tmp->next == loc)
2970 tmp->next = loc->next;
2976 /* Now update the global location list to permanently delete the
2977 removed locations above. */
2978 update_global_location_list (UGLL_DONT_INSERT);
2981 /* Make sure all breakpoints are inserted in inferior.
2982 Throws exception on any error.
2983 A breakpoint that is already inserted won't be inserted
2984 again, so calling this function twice is safe. */
2986 insert_breakpoints (void)
2988 struct breakpoint *bpt;
2990 ALL_BREAKPOINTS (bpt)
2991 if (is_hardware_watchpoint (bpt))
2993 struct watchpoint *w = (struct watchpoint *) bpt;
2995 update_watchpoint (w, 0 /* don't reparse. */);
2998 /* Updating watchpoints creates new locations, so update the global
2999 location list. Explicitly tell ugll to insert locations and
3000 ignore breakpoints_always_inserted_mode. */
3001 update_global_location_list (UGLL_INSERT);
3004 /* Invoke CALLBACK for each of bp_location. */
3007 iterate_over_bp_locations (walk_bp_location_callback callback)
3009 struct bp_location *loc, **loc_tmp;
3011 ALL_BP_LOCATIONS (loc, loc_tmp)
3013 callback (loc, NULL);
3017 /* This is used when we need to synch breakpoint conditions between GDB and the
3018 target. It is the case with deleting and disabling of breakpoints when using
3019 always-inserted mode. */
3022 update_inserted_breakpoint_locations (void)
3024 struct bp_location *bl, **blp_tmp;
3027 int disabled_breaks = 0;
3028 int hw_breakpoint_error = 0;
3029 int hw_bp_details_reported = 0;
3031 struct ui_file *tmp_error_stream = mem_fileopen ();
3032 struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
3034 /* Explicitly mark the warning -- this will only be printed if
3035 there was an error. */
3036 fprintf_unfiltered (tmp_error_stream, "Warning:\n");
3038 save_current_space_and_thread ();
3040 ALL_BP_LOCATIONS (bl, blp_tmp)
3042 /* We only want to update software breakpoints and hardware
3044 if (!is_breakpoint (bl->owner))
3047 /* We only want to update locations that are already inserted
3048 and need updating. This is to avoid unwanted insertion during
3049 deletion of breakpoints. */
3050 if (!bl->inserted || (bl->inserted && !bl->needs_update))
3053 switch_to_program_space_and_thread (bl->pspace);
3055 /* For targets that support global breakpoints, there's no need
3056 to select an inferior to insert breakpoint to. In fact, even
3057 if we aren't attached to any process yet, we should still
3058 insert breakpoints. */
3059 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3060 && ptid_equal (inferior_ptid, null_ptid))
3063 val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
3064 &hw_breakpoint_error, &hw_bp_details_reported);
3071 target_terminal_ours_for_output ();
3072 error_stream (tmp_error_stream);
3075 do_cleanups (cleanups);
3078 /* Used when starting or continuing the program. */
3081 insert_breakpoint_locations (void)
3083 struct breakpoint *bpt;
3084 struct bp_location *bl, **blp_tmp;
3087 int disabled_breaks = 0;
3088 int hw_breakpoint_error = 0;
3089 int hw_bp_error_explained_already = 0;
3091 struct ui_file *tmp_error_stream = mem_fileopen ();
3092 struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
3094 /* Explicitly mark the warning -- this will only be printed if
3095 there was an error. */
3096 fprintf_unfiltered (tmp_error_stream, "Warning:\n");
3098 save_current_space_and_thread ();
3100 ALL_BP_LOCATIONS (bl, blp_tmp)
3102 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
3105 /* There is no point inserting thread-specific breakpoints if
3106 the thread no longer exists. ALL_BP_LOCATIONS bp_location
3107 has BL->OWNER always non-NULL. */
3108 if (bl->owner->thread != -1
3109 && !valid_thread_id (bl->owner->thread))
3112 switch_to_program_space_and_thread (bl->pspace);
3114 /* For targets that support global breakpoints, there's no need
3115 to select an inferior to insert breakpoint to. In fact, even
3116 if we aren't attached to any process yet, we should still
3117 insert breakpoints. */
3118 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3119 && ptid_equal (inferior_ptid, null_ptid))
3122 val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
3123 &hw_breakpoint_error, &hw_bp_error_explained_already);
3128 /* If we failed to insert all locations of a watchpoint, remove
3129 them, as half-inserted watchpoint is of limited use. */
3130 ALL_BREAKPOINTS (bpt)
3132 int some_failed = 0;
3133 struct bp_location *loc;
3135 if (!is_hardware_watchpoint (bpt))
3138 if (!breakpoint_enabled (bpt))
3141 if (bpt->disposition == disp_del_at_next_stop)
3144 for (loc = bpt->loc; loc; loc = loc->next)
3145 if (!loc->inserted && should_be_inserted (loc))
3152 for (loc = bpt->loc; loc; loc = loc->next)
3154 remove_breakpoint (loc, mark_uninserted);
3156 hw_breakpoint_error = 1;
3157 fprintf_unfiltered (tmp_error_stream,
3158 "Could not insert hardware watchpoint %d.\n",
3166 /* If a hardware breakpoint or watchpoint was inserted, add a
3167 message about possibly exhausted resources. */
3168 if (hw_breakpoint_error && !hw_bp_error_explained_already)
3170 fprintf_unfiltered (tmp_error_stream,
3171 "Could not insert hardware breakpoints:\n\
3172 You may have requested too many hardware breakpoints/watchpoints.\n");
3174 target_terminal_ours_for_output ();
3175 error_stream (tmp_error_stream);
3178 do_cleanups (cleanups);
3181 /* Used when the program stops.
3182 Returns zero if successful, or non-zero if there was a problem
3183 removing a breakpoint location. */
3186 remove_breakpoints (void)
3188 struct bp_location *bl, **blp_tmp;
3191 ALL_BP_LOCATIONS (bl, blp_tmp)
3193 if (bl->inserted && !is_tracepoint (bl->owner))
3194 val |= remove_breakpoint (bl, mark_uninserted);
3199 /* When a thread exits, remove breakpoints that are related to
3203 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3205 struct breakpoint *b, *b_tmp;
3207 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3209 if (b->thread == tp->num && user_breakpoint_p (b))
3211 b->disposition = disp_del_at_next_stop;
3213 printf_filtered (_("\
3214 Thread-specific breakpoint %d deleted - thread %d no longer in the thread list.\n"),
3215 b->number, tp->num);
3217 /* Hide it from the user. */
3223 /* Remove breakpoints of process PID. */
3226 remove_breakpoints_pid (int pid)
3228 struct bp_location *bl, **blp_tmp;
3230 struct inferior *inf = find_inferior_pid (pid);
3232 ALL_BP_LOCATIONS (bl, blp_tmp)
3234 if (bl->pspace != inf->pspace)
3237 if (bl->owner->type == bp_dprintf)
3242 val = remove_breakpoint (bl, mark_uninserted);
3251 reattach_breakpoints (int pid)
3253 struct cleanup *old_chain;
3254 struct bp_location *bl, **blp_tmp;
3256 struct ui_file *tmp_error_stream;
3257 int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3258 struct inferior *inf;
3259 struct thread_info *tp;
3261 tp = any_live_thread_of_process (pid);
3265 inf = find_inferior_pid (pid);
3266 old_chain = save_inferior_ptid ();
3268 inferior_ptid = tp->ptid;
3270 tmp_error_stream = mem_fileopen ();
3271 make_cleanup_ui_file_delete (tmp_error_stream);
3273 ALL_BP_LOCATIONS (bl, blp_tmp)
3275 if (bl->pspace != inf->pspace)
3281 val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
3284 do_cleanups (old_chain);
3289 do_cleanups (old_chain);
3293 static int internal_breakpoint_number = -1;
3295 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3296 If INTERNAL is non-zero, the breakpoint number will be populated
3297 from internal_breakpoint_number and that variable decremented.
3298 Otherwise the breakpoint number will be populated from
3299 breakpoint_count and that value incremented. Internal breakpoints
3300 do not set the internal var bpnum. */
3302 set_breakpoint_number (int internal, struct breakpoint *b)
3305 b->number = internal_breakpoint_number--;
3308 set_breakpoint_count (breakpoint_count + 1);
3309 b->number = breakpoint_count;
3313 static struct breakpoint *
3314 create_internal_breakpoint (struct gdbarch *gdbarch,
3315 CORE_ADDR address, enum bptype type,
3316 const struct breakpoint_ops *ops)
3318 struct symtab_and_line sal;
3319 struct breakpoint *b;
3321 init_sal (&sal); /* Initialize to zeroes. */
3324 sal.section = find_pc_overlay (sal.pc);
3325 sal.pspace = current_program_space;
3327 b = set_raw_breakpoint (gdbarch, sal, type, ops);
3328 b->number = internal_breakpoint_number--;
3329 b->disposition = disp_donttouch;
3334 static const char *const longjmp_names[] =
3336 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3338 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3340 /* Per-objfile data private to breakpoint.c. */
3341 struct breakpoint_objfile_data
3343 /* Minimal symbol for "_ovly_debug_event" (if any). */
3344 struct bound_minimal_symbol overlay_msym;
3346 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
3347 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3349 /* True if we have looked for longjmp probes. */
3350 int longjmp_searched;
3352 /* SystemTap probe points for longjmp (if any). */
3353 VEC (probe_p) *longjmp_probes;
3355 /* Minimal symbol for "std::terminate()" (if any). */
3356 struct bound_minimal_symbol terminate_msym;
3358 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
3359 struct bound_minimal_symbol exception_msym;
3361 /* True if we have looked for exception probes. */
3362 int exception_searched;
3364 /* SystemTap probe points for unwinding (if any). */
3365 VEC (probe_p) *exception_probes;
3368 static const struct objfile_data *breakpoint_objfile_key;
3370 /* Minimal symbol not found sentinel. */
3371 static struct minimal_symbol msym_not_found;
3373 /* Returns TRUE if MSYM point to the "not found" sentinel. */
3376 msym_not_found_p (const struct minimal_symbol *msym)
3378 return msym == &msym_not_found;
3381 /* Return per-objfile data needed by breakpoint.c.
3382 Allocate the data if necessary. */
3384 static struct breakpoint_objfile_data *
3385 get_breakpoint_objfile_data (struct objfile *objfile)
3387 struct breakpoint_objfile_data *bp_objfile_data;
3389 bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3390 if (bp_objfile_data == NULL)
3392 bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3393 sizeof (*bp_objfile_data));
3395 memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3396 set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3398 return bp_objfile_data;
3402 free_breakpoint_probes (struct objfile *obj, void *data)
3404 struct breakpoint_objfile_data *bp_objfile_data = data;
3406 VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3407 VEC_free (probe_p, bp_objfile_data->exception_probes);
3411 create_overlay_event_breakpoint (void)
3413 struct objfile *objfile;
3414 const char *const func_name = "_ovly_debug_event";
3416 ALL_OBJFILES (objfile)
3418 struct breakpoint *b;
3419 struct breakpoint_objfile_data *bp_objfile_data;
3422 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3424 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3427 if (bp_objfile_data->overlay_msym.minsym == NULL)
3429 struct bound_minimal_symbol m;
3431 m = lookup_minimal_symbol_text (func_name, objfile);
3432 if (m.minsym == NULL)
3434 /* Avoid future lookups in this objfile. */
3435 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3438 bp_objfile_data->overlay_msym = m;
3441 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3442 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3444 &internal_breakpoint_ops);
3445 b->addr_string = xstrdup (func_name);
3447 if (overlay_debugging == ovly_auto)
3449 b->enable_state = bp_enabled;
3450 overlay_events_enabled = 1;
3454 b->enable_state = bp_disabled;
3455 overlay_events_enabled = 0;
3458 update_global_location_list (UGLL_MAY_INSERT);
3462 create_longjmp_master_breakpoint (void)
3464 struct program_space *pspace;
3465 struct cleanup *old_chain;
3467 old_chain = save_current_program_space ();
3469 ALL_PSPACES (pspace)
3471 struct objfile *objfile;
3473 set_current_program_space (pspace);
3475 ALL_OBJFILES (objfile)
3478 struct gdbarch *gdbarch;
3479 struct breakpoint_objfile_data *bp_objfile_data;
3481 gdbarch = get_objfile_arch (objfile);
3483 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3485 if (!bp_objfile_data->longjmp_searched)
3489 ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3492 /* We are only interested in checking one element. */
3493 struct probe *p = VEC_index (probe_p, ret, 0);
3495 if (!can_evaluate_probe_arguments (p))
3497 /* We cannot use the probe interface here, because it does
3498 not know how to evaluate arguments. */
3499 VEC_free (probe_p, ret);
3503 bp_objfile_data->longjmp_probes = ret;
3504 bp_objfile_data->longjmp_searched = 1;
3507 if (bp_objfile_data->longjmp_probes != NULL)
3510 struct probe *probe;
3511 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3514 VEC_iterate (probe_p,
3515 bp_objfile_data->longjmp_probes,
3519 struct breakpoint *b;
3521 b = create_internal_breakpoint (gdbarch,
3522 get_probe_address (probe,
3525 &internal_breakpoint_ops);
3526 b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3527 b->enable_state = bp_disabled;
3533 if (!gdbarch_get_longjmp_target_p (gdbarch))
3536 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3538 struct breakpoint *b;
3539 const char *func_name;
3542 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3545 func_name = longjmp_names[i];
3546 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3548 struct bound_minimal_symbol m;
3550 m = lookup_minimal_symbol_text (func_name, objfile);
3551 if (m.minsym == NULL)
3553 /* Prevent future lookups in this objfile. */
3554 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3557 bp_objfile_data->longjmp_msym[i] = m;
3560 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3561 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3562 &internal_breakpoint_ops);
3563 b->addr_string = xstrdup (func_name);
3564 b->enable_state = bp_disabled;
3568 update_global_location_list (UGLL_MAY_INSERT);
3570 do_cleanups (old_chain);
3573 /* Create a master std::terminate breakpoint. */
3575 create_std_terminate_master_breakpoint (void)
3577 struct program_space *pspace;
3578 struct cleanup *old_chain;
3579 const char *const func_name = "std::terminate()";
3581 old_chain = save_current_program_space ();
3583 ALL_PSPACES (pspace)
3585 struct objfile *objfile;
3588 set_current_program_space (pspace);
3590 ALL_OBJFILES (objfile)
3592 struct breakpoint *b;
3593 struct breakpoint_objfile_data *bp_objfile_data;
3595 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3597 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3600 if (bp_objfile_data->terminate_msym.minsym == NULL)
3602 struct bound_minimal_symbol m;
3604 m = lookup_minimal_symbol (func_name, NULL, objfile);
3605 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3606 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3608 /* Prevent future lookups in this objfile. */
3609 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3612 bp_objfile_data->terminate_msym = m;
3615 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3616 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3617 bp_std_terminate_master,
3618 &internal_breakpoint_ops);
3619 b->addr_string = xstrdup (func_name);
3620 b->enable_state = bp_disabled;
3624 update_global_location_list (UGLL_MAY_INSERT);
3626 do_cleanups (old_chain);
3629 /* Install a master breakpoint on the unwinder's debug hook. */
3632 create_exception_master_breakpoint (void)
3634 struct objfile *objfile;
3635 const char *const func_name = "_Unwind_DebugHook";
3637 ALL_OBJFILES (objfile)
3639 struct breakpoint *b;
3640 struct gdbarch *gdbarch;
3641 struct breakpoint_objfile_data *bp_objfile_data;
3644 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3646 /* We prefer the SystemTap probe point if it exists. */
3647 if (!bp_objfile_data->exception_searched)
3651 ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3655 /* We are only interested in checking one element. */
3656 struct probe *p = VEC_index (probe_p, ret, 0);
3658 if (!can_evaluate_probe_arguments (p))
3660 /* We cannot use the probe interface here, because it does
3661 not know how to evaluate arguments. */
3662 VEC_free (probe_p, ret);
3666 bp_objfile_data->exception_probes = ret;
3667 bp_objfile_data->exception_searched = 1;
3670 if (bp_objfile_data->exception_probes != NULL)
3672 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3674 struct probe *probe;
3677 VEC_iterate (probe_p,
3678 bp_objfile_data->exception_probes,
3682 struct breakpoint *b;
3684 b = create_internal_breakpoint (gdbarch,
3685 get_probe_address (probe,
3687 bp_exception_master,
3688 &internal_breakpoint_ops);
3689 b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3690 b->enable_state = bp_disabled;
3696 /* Otherwise, try the hook function. */
3698 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3701 gdbarch = get_objfile_arch (objfile);
3703 if (bp_objfile_data->exception_msym.minsym == NULL)
3705 struct bound_minimal_symbol debug_hook;
3707 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3708 if (debug_hook.minsym == NULL)
3710 bp_objfile_data->exception_msym.minsym = &msym_not_found;
3714 bp_objfile_data->exception_msym = debug_hook;
3717 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3718 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3720 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3721 &internal_breakpoint_ops);
3722 b->addr_string = xstrdup (func_name);
3723 b->enable_state = bp_disabled;
3726 update_global_location_list (UGLL_MAY_INSERT);
3730 update_breakpoints_after_exec (void)
3732 struct breakpoint *b, *b_tmp;
3733 struct bp_location *bploc, **bplocp_tmp;
3735 /* We're about to delete breakpoints from GDB's lists. If the
3736 INSERTED flag is true, GDB will try to lift the breakpoints by
3737 writing the breakpoints' "shadow contents" back into memory. The
3738 "shadow contents" are NOT valid after an exec, so GDB should not
3739 do that. Instead, the target is responsible from marking
3740 breakpoints out as soon as it detects an exec. We don't do that
3741 here instead, because there may be other attempts to delete
3742 breakpoints after detecting an exec and before reaching here. */
3743 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3744 if (bploc->pspace == current_program_space)
3745 gdb_assert (!bploc->inserted);
3747 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3749 if (b->pspace != current_program_space)
3752 /* Solib breakpoints must be explicitly reset after an exec(). */
3753 if (b->type == bp_shlib_event)
3755 delete_breakpoint (b);
3759 /* JIT breakpoints must be explicitly reset after an exec(). */
3760 if (b->type == bp_jit_event)
3762 delete_breakpoint (b);
3766 /* Thread event breakpoints must be set anew after an exec(),
3767 as must overlay event and longjmp master breakpoints. */
3768 if (b->type == bp_thread_event || b->type == bp_overlay_event
3769 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3770 || b->type == bp_exception_master)
3772 delete_breakpoint (b);
3776 /* Step-resume breakpoints are meaningless after an exec(). */
3777 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3779 delete_breakpoint (b);
3783 /* Longjmp and longjmp-resume breakpoints are also meaningless
3785 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3786 || b->type == bp_longjmp_call_dummy
3787 || b->type == bp_exception || b->type == bp_exception_resume)
3789 delete_breakpoint (b);
3793 if (b->type == bp_catchpoint)
3795 /* For now, none of the bp_catchpoint breakpoints need to
3796 do anything at this point. In the future, if some of
3797 the catchpoints need to something, we will need to add
3798 a new method, and call this method from here. */
3802 /* bp_finish is a special case. The only way we ought to be able
3803 to see one of these when an exec() has happened, is if the user
3804 caught a vfork, and then said "finish". Ordinarily a finish just
3805 carries them to the call-site of the current callee, by setting
3806 a temporary bp there and resuming. But in this case, the finish
3807 will carry them entirely through the vfork & exec.
3809 We don't want to allow a bp_finish to remain inserted now. But
3810 we can't safely delete it, 'cause finish_command has a handle to
3811 the bp on a bpstat, and will later want to delete it. There's a
3812 chance (and I've seen it happen) that if we delete the bp_finish
3813 here, that its storage will get reused by the time finish_command
3814 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3815 We really must allow finish_command to delete a bp_finish.
3817 In the absence of a general solution for the "how do we know
3818 it's safe to delete something others may have handles to?"
3819 problem, what we'll do here is just uninsert the bp_finish, and
3820 let finish_command delete it.
3822 (We know the bp_finish is "doomed" in the sense that it's
3823 momentary, and will be deleted as soon as finish_command sees
3824 the inferior stopped. So it doesn't matter that the bp's
3825 address is probably bogus in the new a.out, unlike e.g., the
3826 solib breakpoints.) */
3828 if (b->type == bp_finish)
3833 /* Without a symbolic address, we have little hope of the
3834 pre-exec() address meaning the same thing in the post-exec()
3836 if (b->addr_string == NULL)
3838 delete_breakpoint (b);
3842 /* FIXME what about longjmp breakpoints? Re-create them here? */
3843 create_overlay_event_breakpoint ();
3844 create_longjmp_master_breakpoint ();
3845 create_std_terminate_master_breakpoint ();
3846 create_exception_master_breakpoint ();
3850 detach_breakpoints (ptid_t ptid)
3852 struct bp_location *bl, **blp_tmp;
3854 struct cleanup *old_chain = save_inferior_ptid ();
3855 struct inferior *inf = current_inferior ();
3857 if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3858 error (_("Cannot detach breakpoints of inferior_ptid"));
3860 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
3861 inferior_ptid = ptid;
3862 ALL_BP_LOCATIONS (bl, blp_tmp)
3864 if (bl->pspace != inf->pspace)
3867 /* This function must physically remove breakpoints locations
3868 from the specified ptid, without modifying the breakpoint
3869 package's state. Locations of type bp_loc_other are only
3870 maintained at GDB side. So, there is no need to remove
3871 these bp_loc_other locations. Moreover, removing these
3872 would modify the breakpoint package's state. */
3873 if (bl->loc_type == bp_loc_other)
3877 val |= remove_breakpoint_1 (bl, mark_inserted);
3880 /* Detach single-step breakpoints as well. */
3881 detach_single_step_breakpoints ();
3883 do_cleanups (old_chain);
3887 /* Remove the breakpoint location BL from the current address space.
3888 Note that this is used to detach breakpoints from a child fork.
3889 When we get here, the child isn't in the inferior list, and neither
3890 do we have objects to represent its address space --- we should
3891 *not* look at bl->pspace->aspace here. */
3894 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3898 /* BL is never in moribund_locations by our callers. */
3899 gdb_assert (bl->owner != NULL);
3901 if (bl->owner->enable_state == bp_permanent)
3902 /* Permanent breakpoints cannot be inserted or removed. */
3905 /* The type of none suggests that owner is actually deleted.
3906 This should not ever happen. */
3907 gdb_assert (bl->owner->type != bp_none);
3909 if (bl->loc_type == bp_loc_software_breakpoint
3910 || bl->loc_type == bp_loc_hardware_breakpoint)
3912 /* "Normal" instruction breakpoint: either the standard
3913 trap-instruction bp (bp_breakpoint), or a
3914 bp_hardware_breakpoint. */
3916 /* First check to see if we have to handle an overlay. */
3917 if (overlay_debugging == ovly_off
3918 || bl->section == NULL
3919 || !(section_is_overlay (bl->section)))
3921 /* No overlay handling: just remove the breakpoint. */
3923 /* If we're trying to uninsert a memory breakpoint that we
3924 know is set in a dynamic object that is marked
3925 shlib_disabled, then either the dynamic object was
3926 removed with "remove-symbol-file" or with
3927 "nosharedlibrary". In the former case, we don't know
3928 whether another dynamic object might have loaded over the
3929 breakpoint's address -- the user might well let us know
3930 about it next with add-symbol-file (the whole point of
3931 add-symbol-file is letting the user manually maintain a
3932 list of dynamically loaded objects). If we have the
3933 breakpoint's shadow memory, that is, this is a software
3934 breakpoint managed by GDB, check whether the breakpoint
3935 is still inserted in memory, to avoid overwriting wrong
3936 code with stale saved shadow contents. Note that HW
3937 breakpoints don't have shadow memory, as they're
3938 implemented using a mechanism that is not dependent on
3939 being able to modify the target's memory, and as such
3940 they should always be removed. */
3941 if (bl->shlib_disabled
3942 && bl->target_info.shadow_len != 0
3943 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3946 val = bl->owner->ops->remove_location (bl);
3950 /* This breakpoint is in an overlay section.
3951 Did we set a breakpoint at the LMA? */
3952 if (!overlay_events_enabled)
3954 /* Yes -- overlay event support is not active, so we
3955 should have set a breakpoint at the LMA. Remove it.
3957 /* Ignore any failures: if the LMA is in ROM, we will
3958 have already warned when we failed to insert it. */
3959 if (bl->loc_type == bp_loc_hardware_breakpoint)
3960 target_remove_hw_breakpoint (bl->gdbarch,
3961 &bl->overlay_target_info);
3963 target_remove_breakpoint (bl->gdbarch,
3964 &bl->overlay_target_info);
3966 /* Did we set a breakpoint at the VMA?
3967 If so, we will have marked the breakpoint 'inserted'. */
3970 /* Yes -- remove it. Previously we did not bother to
3971 remove the breakpoint if the section had been
3972 unmapped, but let's not rely on that being safe. We
3973 don't know what the overlay manager might do. */
3975 /* However, we should remove *software* breakpoints only
3976 if the section is still mapped, or else we overwrite
3977 wrong code with the saved shadow contents. */
3978 if (bl->loc_type == bp_loc_hardware_breakpoint
3979 || section_is_mapped (bl->section))
3980 val = bl->owner->ops->remove_location (bl);
3986 /* No -- not inserted, so no need to remove. No error. */
3991 /* In some cases, we might not be able to remove a breakpoint in
3992 a shared library that has already been removed, but we have
3993 not yet processed the shlib unload event. Similarly for an
3994 unloaded add-symbol-file object - the user might not yet have
3995 had the chance to remove-symbol-file it. shlib_disabled will
3996 be set if the library/object has already been removed, but
3997 the breakpoint hasn't been uninserted yet, e.g., after
3998 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3999 always-inserted mode. */
4001 && (bl->loc_type == bp_loc_software_breakpoint
4002 && (bl->shlib_disabled
4003 || solib_name_from_address (bl->pspace, bl->address)
4004 || shared_objfile_contains_address_p (bl->pspace,
4010 bl->inserted = (is == mark_inserted);
4012 else if (bl->loc_type == bp_loc_hardware_watchpoint)
4014 gdb_assert (bl->owner->ops != NULL
4015 && bl->owner->ops->remove_location != NULL);
4017 bl->inserted = (is == mark_inserted);
4018 bl->owner->ops->remove_location (bl);
4020 /* Failure to remove any of the hardware watchpoints comes here. */
4021 if ((is == mark_uninserted) && (bl->inserted))
4022 warning (_("Could not remove hardware watchpoint %d."),
4025 else if (bl->owner->type == bp_catchpoint
4026 && breakpoint_enabled (bl->owner)
4029 gdb_assert (bl->owner->ops != NULL
4030 && bl->owner->ops->remove_location != NULL);
4032 val = bl->owner->ops->remove_location (bl);
4036 bl->inserted = (is == mark_inserted);
4043 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
4046 struct cleanup *old_chain;
4048 /* BL is never in moribund_locations by our callers. */
4049 gdb_assert (bl->owner != NULL);
4051 if (bl->owner->enable_state == bp_permanent)
4052 /* Permanent breakpoints cannot be inserted or removed. */
4055 /* The type of none suggests that owner is actually deleted.
4056 This should not ever happen. */
4057 gdb_assert (bl->owner->type != bp_none);
4059 old_chain = save_current_space_and_thread ();
4061 switch_to_program_space_and_thread (bl->pspace);
4063 ret = remove_breakpoint_1 (bl, is);
4065 do_cleanups (old_chain);
4069 /* Clear the "inserted" flag in all breakpoints. */
4072 mark_breakpoints_out (void)
4074 struct bp_location *bl, **blp_tmp;
4076 ALL_BP_LOCATIONS (bl, blp_tmp)
4077 if (bl->pspace == current_program_space)
4081 /* Clear the "inserted" flag in all breakpoints and delete any
4082 breakpoints which should go away between runs of the program.
4084 Plus other such housekeeping that has to be done for breakpoints
4087 Note: this function gets called at the end of a run (by
4088 generic_mourn_inferior) and when a run begins (by
4089 init_wait_for_inferior). */
4094 breakpoint_init_inferior (enum inf_context context)
4096 struct breakpoint *b, *b_tmp;
4097 struct bp_location *bl, **blp_tmp;
4099 struct program_space *pspace = current_program_space;
4101 /* If breakpoint locations are shared across processes, then there's
4103 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
4106 ALL_BP_LOCATIONS (bl, blp_tmp)
4108 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
4109 if (bl->pspace == pspace
4110 && bl->owner->enable_state != bp_permanent)
4114 ALL_BREAKPOINTS_SAFE (b, b_tmp)
4116 if (b->loc && b->loc->pspace != pspace)
4122 case bp_longjmp_call_dummy:
4124 /* If the call dummy breakpoint is at the entry point it will
4125 cause problems when the inferior is rerun, so we better get
4128 case bp_watchpoint_scope:
4130 /* Also get rid of scope breakpoints. */
4132 case bp_shlib_event:
4134 /* Also remove solib event breakpoints. Their addresses may
4135 have changed since the last time we ran the program.
4136 Actually we may now be debugging against different target;
4137 and so the solib backend that installed this breakpoint may
4138 not be used in by the target. E.g.,
4140 (gdb) file prog-linux
4141 (gdb) run # native linux target
4144 (gdb) file prog-win.exe
4145 (gdb) tar rem :9999 # remote Windows gdbserver.
4148 case bp_step_resume:
4150 /* Also remove step-resume breakpoints. */
4152 delete_breakpoint (b);
4156 case bp_hardware_watchpoint:
4157 case bp_read_watchpoint:
4158 case bp_access_watchpoint:
4160 struct watchpoint *w = (struct watchpoint *) b;
4162 /* Likewise for watchpoints on local expressions. */
4163 if (w->exp_valid_block != NULL)
4164 delete_breakpoint (b);
4165 else if (context == inf_starting)
4167 /* Reset val field to force reread of starting value in
4168 insert_breakpoints. */
4170 value_free (w->val);
4181 /* Get rid of the moribund locations. */
4182 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4183 decref_bp_location (&bl);
4184 VEC_free (bp_location_p, moribund_locations);
4187 /* These functions concern about actual breakpoints inserted in the
4188 target --- to e.g. check if we need to do decr_pc adjustment or if
4189 we need to hop over the bkpt --- so we check for address space
4190 match, not program space. */
4192 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4193 exists at PC. It returns ordinary_breakpoint_here if it's an
4194 ordinary breakpoint, or permanent_breakpoint_here if it's a
4195 permanent breakpoint.
4196 - When continuing from a location with an ordinary breakpoint, we
4197 actually single step once before calling insert_breakpoints.
4198 - When continuing from a location with a permanent breakpoint, we
4199 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4200 the target, to advance the PC past the breakpoint. */
4202 enum breakpoint_here
4203 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4205 struct bp_location *bl, **blp_tmp;
4206 int any_breakpoint_here = 0;
4208 ALL_BP_LOCATIONS (bl, blp_tmp)
4210 if (bl->loc_type != bp_loc_software_breakpoint
4211 && bl->loc_type != bp_loc_hardware_breakpoint)
4214 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
4215 if ((breakpoint_enabled (bl->owner)
4216 || bl->owner->enable_state == bp_permanent)
4217 && breakpoint_location_address_match (bl, aspace, pc))
4219 if (overlay_debugging
4220 && section_is_overlay (bl->section)
4221 && !section_is_mapped (bl->section))
4222 continue; /* unmapped overlay -- can't be a match */
4223 else if (bl->owner->enable_state == bp_permanent)
4224 return permanent_breakpoint_here;
4226 any_breakpoint_here = 1;
4230 return any_breakpoint_here ? ordinary_breakpoint_here : 0;
4233 /* Return true if there's a moribund breakpoint at PC. */
4236 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4238 struct bp_location *loc;
4241 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4242 if (breakpoint_location_address_match (loc, aspace, pc))
4248 /* Returns non-zero if there's a breakpoint inserted at PC, which is
4249 inserted using regular breakpoint_chain / bp_location array
4250 mechanism. This does not check for single-step breakpoints, which
4251 are inserted and removed using direct target manipulation. */
4254 regular_breakpoint_inserted_here_p (struct address_space *aspace,
4257 struct bp_location *bl, **blp_tmp;
4259 ALL_BP_LOCATIONS (bl, blp_tmp)
4261 if (bl->loc_type != bp_loc_software_breakpoint
4262 && bl->loc_type != bp_loc_hardware_breakpoint)
4266 && breakpoint_location_address_match (bl, aspace, pc))
4268 if (overlay_debugging
4269 && section_is_overlay (bl->section)
4270 && !section_is_mapped (bl->section))
4271 continue; /* unmapped overlay -- can't be a match */
4279 /* Returns non-zero iff there's either regular breakpoint
4280 or a single step breakpoint inserted at PC. */
4283 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4285 if (regular_breakpoint_inserted_here_p (aspace, pc))
4288 if (single_step_breakpoint_inserted_here_p (aspace, pc))
4294 /* Ignoring deprecated raw breakpoints, return non-zero iff there is a
4295 software breakpoint inserted at PC. */
4297 static struct bp_location *
4298 find_non_raw_software_breakpoint_inserted_here (struct address_space *aspace,
4301 struct bp_location *bl, **blp_tmp;
4303 ALL_BP_LOCATIONS (bl, blp_tmp)
4305 if (bl->loc_type != bp_loc_software_breakpoint)
4309 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4312 if (overlay_debugging
4313 && section_is_overlay (bl->section)
4314 && !section_is_mapped (bl->section))
4315 continue; /* unmapped overlay -- can't be a match */
4324 /* This function returns non-zero iff there is a software breakpoint
4328 software_breakpoint_inserted_here_p (struct address_space *aspace,
4331 if (find_non_raw_software_breakpoint_inserted_here (aspace, pc) != NULL)
4334 /* Also check for software single-step breakpoints. */
4335 if (single_step_breakpoint_inserted_here_p (aspace, pc))
4342 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4343 CORE_ADDR addr, ULONGEST len)
4345 struct breakpoint *bpt;
4347 ALL_BREAKPOINTS (bpt)
4349 struct bp_location *loc;
4351 if (bpt->type != bp_hardware_watchpoint
4352 && bpt->type != bp_access_watchpoint)
4355 if (!breakpoint_enabled (bpt))
4358 for (loc = bpt->loc; loc; loc = loc->next)
4359 if (loc->pspace->aspace == aspace && loc->inserted)
4363 /* Check for intersection. */
4364 l = max (loc->address, addr);
4365 h = min (loc->address + loc->length, addr + len);
4373 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
4374 PC is valid for process/thread PTID. */
4377 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
4380 struct bp_location *bl, **blp_tmp;
4381 /* The thread and task IDs associated to PTID, computed lazily. */
4385 ALL_BP_LOCATIONS (bl, blp_tmp)
4387 if (bl->loc_type != bp_loc_software_breakpoint
4388 && bl->loc_type != bp_loc_hardware_breakpoint)
4391 /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL. */
4392 if (!breakpoint_enabled (bl->owner)
4393 && bl->owner->enable_state != bp_permanent)
4396 if (!breakpoint_location_address_match (bl, aspace, pc))
4399 if (bl->owner->thread != -1)
4401 /* This is a thread-specific breakpoint. Check that ptid
4402 matches that thread. If thread hasn't been computed yet,
4403 it is now time to do so. */
4405 thread = pid_to_thread_id (ptid);
4406 if (bl->owner->thread != thread)
4410 if (bl->owner->task != 0)
4412 /* This is a task-specific breakpoint. Check that ptid
4413 matches that task. If task hasn't been computed yet,
4414 it is now time to do so. */
4416 task = ada_get_task_number (ptid);
4417 if (bl->owner->task != task)
4421 if (overlay_debugging
4422 && section_is_overlay (bl->section)
4423 && !section_is_mapped (bl->section))
4424 continue; /* unmapped overlay -- can't be a match */
4433 /* bpstat stuff. External routines' interfaces are documented
4437 is_catchpoint (struct breakpoint *ep)
4439 return (ep->type == bp_catchpoint);
4442 /* Frees any storage that is part of a bpstat. Does not walk the
4446 bpstat_free (bpstat bs)
4448 if (bs->old_val != NULL)
4449 value_free (bs->old_val);
4450 decref_counted_command_line (&bs->commands);
4451 decref_bp_location (&bs->bp_location_at);
4455 /* Clear a bpstat so that it says we are not at any breakpoint.
4456 Also free any storage that is part of a bpstat. */
4459 bpstat_clear (bpstat *bsp)
4476 /* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4477 is part of the bpstat is copied as well. */
4480 bpstat_copy (bpstat bs)
4484 bpstat retval = NULL;
4489 for (; bs != NULL; bs = bs->next)
4491 tmp = (bpstat) xmalloc (sizeof (*tmp));
4492 memcpy (tmp, bs, sizeof (*tmp));
4493 incref_counted_command_line (tmp->commands);
4494 incref_bp_location (tmp->bp_location_at);
4495 if (bs->old_val != NULL)
4497 tmp->old_val = value_copy (bs->old_val);
4498 release_value (tmp->old_val);
4502 /* This is the first thing in the chain. */
4512 /* Find the bpstat associated with this breakpoint. */
4515 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4520 for (; bsp != NULL; bsp = bsp->next)
4522 if (bsp->breakpoint_at == breakpoint)
4528 /* See breakpoint.h. */
4531 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4533 for (; bsp != NULL; bsp = bsp->next)
4535 if (bsp->breakpoint_at == NULL)
4537 /* A moribund location can never explain a signal other than
4539 if (sig == GDB_SIGNAL_TRAP)
4544 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4553 /* Put in *NUM the breakpoint number of the first breakpoint we are
4554 stopped at. *BSP upon return is a bpstat which points to the
4555 remaining breakpoints stopped at (but which is not guaranteed to be
4556 good for anything but further calls to bpstat_num).
4558 Return 0 if passed a bpstat which does not indicate any breakpoints.
4559 Return -1 if stopped at a breakpoint that has been deleted since
4561 Return 1 otherwise. */
4564 bpstat_num (bpstat *bsp, int *num)
4566 struct breakpoint *b;
4569 return 0; /* No more breakpoint values */
4571 /* We assume we'll never have several bpstats that correspond to a
4572 single breakpoint -- otherwise, this function might return the
4573 same number more than once and this will look ugly. */
4574 b = (*bsp)->breakpoint_at;
4575 *bsp = (*bsp)->next;
4577 return -1; /* breakpoint that's been deleted since */
4579 *num = b->number; /* We have its number */
4583 /* See breakpoint.h. */
4586 bpstat_clear_actions (void)
4588 struct thread_info *tp;
4591 if (ptid_equal (inferior_ptid, null_ptid))
4594 tp = find_thread_ptid (inferior_ptid);
4598 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4600 decref_counted_command_line (&bs->commands);
4602 if (bs->old_val != NULL)
4604 value_free (bs->old_val);
4610 /* Called when a command is about to proceed the inferior. */
4613 breakpoint_about_to_proceed (void)
4615 if (!ptid_equal (inferior_ptid, null_ptid))
4617 struct thread_info *tp = inferior_thread ();
4619 /* Allow inferior function calls in breakpoint commands to not
4620 interrupt the command list. When the call finishes
4621 successfully, the inferior will be standing at the same
4622 breakpoint as if nothing happened. */
4623 if (tp->control.in_infcall)
4627 breakpoint_proceeded = 1;
4630 /* Stub for cleaning up our state if we error-out of a breakpoint
4633 cleanup_executing_breakpoints (void *ignore)
4635 executing_breakpoint_commands = 0;
4638 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4639 or its equivalent. */
4642 command_line_is_silent (struct command_line *cmd)
4644 return cmd && (strcmp ("silent", cmd->line) == 0
4645 || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4648 /* Execute all the commands associated with all the breakpoints at
4649 this location. Any of these commands could cause the process to
4650 proceed beyond this point, etc. We look out for such changes by
4651 checking the global "breakpoint_proceeded" after each command.
4653 Returns true if a breakpoint command resumed the inferior. In that
4654 case, it is the caller's responsibility to recall it again with the
4655 bpstat of the current thread. */
4658 bpstat_do_actions_1 (bpstat *bsp)
4661 struct cleanup *old_chain;
4664 /* Avoid endless recursion if a `source' command is contained
4666 if (executing_breakpoint_commands)
4669 executing_breakpoint_commands = 1;
4670 old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4672 prevent_dont_repeat ();
4674 /* This pointer will iterate over the list of bpstat's. */
4677 breakpoint_proceeded = 0;
4678 for (; bs != NULL; bs = bs->next)
4680 struct counted_command_line *ccmd;
4681 struct command_line *cmd;
4682 struct cleanup *this_cmd_tree_chain;
4684 /* Take ownership of the BSP's command tree, if it has one.
4686 The command tree could legitimately contain commands like
4687 'step' and 'next', which call clear_proceed_status, which
4688 frees stop_bpstat's command tree. To make sure this doesn't
4689 free the tree we're executing out from under us, we need to
4690 take ownership of the tree ourselves. Since a given bpstat's
4691 commands are only executed once, we don't need to copy it; we
4692 can clear the pointer in the bpstat, and make sure we free
4693 the tree when we're done. */
4694 ccmd = bs->commands;
4695 bs->commands = NULL;
4696 this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4697 cmd = ccmd ? ccmd->commands : NULL;
4698 if (command_line_is_silent (cmd))
4700 /* The action has been already done by bpstat_stop_status. */
4706 execute_control_command (cmd);
4708 if (breakpoint_proceeded)
4714 /* We can free this command tree now. */
4715 do_cleanups (this_cmd_tree_chain);
4717 if (breakpoint_proceeded)
4719 if (target_can_async_p ())
4720 /* If we are in async mode, then the target might be still
4721 running, not stopped at any breakpoint, so nothing for
4722 us to do here -- just return to the event loop. */
4725 /* In sync mode, when execute_control_command returns
4726 we're already standing on the next breakpoint.
4727 Breakpoint commands for that stop were not run, since
4728 execute_command does not run breakpoint commands --
4729 only command_line_handler does, but that one is not
4730 involved in execution of breakpoint commands. So, we
4731 can now execute breakpoint commands. It should be
4732 noted that making execute_command do bpstat actions is
4733 not an option -- in this case we'll have recursive
4734 invocation of bpstat for each breakpoint with a
4735 command, and can easily blow up GDB stack. Instead, we
4736 return true, which will trigger the caller to recall us
4737 with the new stop_bpstat. */
4742 do_cleanups (old_chain);
4747 bpstat_do_actions (void)
4749 struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4751 /* Do any commands attached to breakpoint we are stopped at. */
4752 while (!ptid_equal (inferior_ptid, null_ptid)
4753 && target_has_execution
4754 && !is_exited (inferior_ptid)
4755 && !is_executing (inferior_ptid))
4756 /* Since in sync mode, bpstat_do_actions may resume the inferior,
4757 and only return when it is stopped at the next breakpoint, we
4758 keep doing breakpoint actions until it returns false to
4759 indicate the inferior was not resumed. */
4760 if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4763 discard_cleanups (cleanup_if_error);
4766 /* Print out the (old or new) value associated with a watchpoint. */
4769 watchpoint_value_print (struct value *val, struct ui_file *stream)
4772 fprintf_unfiltered (stream, _("<unreadable>"));
4775 struct value_print_options opts;
4776 get_user_print_options (&opts);
4777 value_print (val, stream, &opts);
4781 /* Generic routine for printing messages indicating why we
4782 stopped. The behavior of this function depends on the value
4783 'print_it' in the bpstat structure. Under some circumstances we
4784 may decide not to print anything here and delegate the task to
4787 static enum print_stop_action
4788 print_bp_stop_message (bpstat bs)
4790 switch (bs->print_it)
4793 /* Nothing should be printed for this bpstat entry. */
4794 return PRINT_UNKNOWN;
4798 /* We still want to print the frame, but we already printed the
4799 relevant messages. */
4800 return PRINT_SRC_AND_LOC;
4803 case print_it_normal:
4805 struct breakpoint *b = bs->breakpoint_at;
4807 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4808 which has since been deleted. */
4810 return PRINT_UNKNOWN;
4812 /* Normal case. Call the breakpoint's print_it method. */
4813 return b->ops->print_it (bs);
4818 internal_error (__FILE__, __LINE__,
4819 _("print_bp_stop_message: unrecognized enum value"));
4824 /* A helper function that prints a shared library stopped event. */
4827 print_solib_event (int is_catchpoint)
4830 = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4832 = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4836 if (any_added || any_deleted)
4837 ui_out_text (current_uiout,
4838 _("Stopped due to shared library event:\n"));
4840 ui_out_text (current_uiout,
4841 _("Stopped due to shared library event (no "
4842 "libraries added or removed)\n"));
4845 if (ui_out_is_mi_like_p (current_uiout))
4846 ui_out_field_string (current_uiout, "reason",
4847 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4851 struct cleanup *cleanup;
4855 ui_out_text (current_uiout, _(" Inferior unloaded "));
4856 cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4859 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4864 ui_out_text (current_uiout, " ");
4865 ui_out_field_string (current_uiout, "library", name);
4866 ui_out_text (current_uiout, "\n");
4869 do_cleanups (cleanup);
4874 struct so_list *iter;
4876 struct cleanup *cleanup;
4878 ui_out_text (current_uiout, _(" Inferior loaded "));
4879 cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4882 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4887 ui_out_text (current_uiout, " ");
4888 ui_out_field_string (current_uiout, "library", iter->so_name);
4889 ui_out_text (current_uiout, "\n");
4892 do_cleanups (cleanup);
4896 /* Print a message indicating what happened. This is called from
4897 normal_stop(). The input to this routine is the head of the bpstat
4898 list - a list of the eventpoints that caused this stop. KIND is
4899 the target_waitkind for the stopping event. This
4900 routine calls the generic print routine for printing a message
4901 about reasons for stopping. This will print (for example) the
4902 "Breakpoint n," part of the output. The return value of this
4905 PRINT_UNKNOWN: Means we printed nothing.
4906 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4907 code to print the location. An example is
4908 "Breakpoint 1, " which should be followed by
4910 PRINT_SRC_ONLY: Means we printed something, but there is no need
4911 to also print the location part of the message.
4912 An example is the catch/throw messages, which
4913 don't require a location appended to the end.
4914 PRINT_NOTHING: We have done some printing and we don't need any
4915 further info to be printed. */
4917 enum print_stop_action
4918 bpstat_print (bpstat bs, int kind)
4922 /* Maybe another breakpoint in the chain caused us to stop.
4923 (Currently all watchpoints go on the bpstat whether hit or not.
4924 That probably could (should) be changed, provided care is taken
4925 with respect to bpstat_explains_signal). */
4926 for (; bs; bs = bs->next)
4928 val = print_bp_stop_message (bs);
4929 if (val == PRINT_SRC_ONLY
4930 || val == PRINT_SRC_AND_LOC
4931 || val == PRINT_NOTHING)
4935 /* If we had hit a shared library event breakpoint,
4936 print_bp_stop_message would print out this message. If we hit an
4937 OS-level shared library event, do the same thing. */
4938 if (kind == TARGET_WAITKIND_LOADED)
4940 print_solib_event (0);
4941 return PRINT_NOTHING;
4944 /* We reached the end of the chain, or we got a null BS to start
4945 with and nothing was printed. */
4946 return PRINT_UNKNOWN;
4949 /* Evaluate the expression EXP and return 1 if value is zero.
4950 This returns the inverse of the condition because it is called
4951 from catch_errors which returns 0 if an exception happened, and if an
4952 exception happens we want execution to stop.
4953 The argument is a "struct expression *" that has been cast to a
4954 "void *" to make it pass through catch_errors. */
4957 breakpoint_cond_eval (void *exp)
4959 struct value *mark = value_mark ();
4960 int i = !value_true (evaluate_expression ((struct expression *) exp));
4962 value_free_to_mark (mark);
4966 /* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
4969 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4973 bs = (bpstat) xmalloc (sizeof (*bs));
4975 **bs_link_pointer = bs;
4976 *bs_link_pointer = &bs->next;
4977 bs->breakpoint_at = bl->owner;
4978 bs->bp_location_at = bl;
4979 incref_bp_location (bl);
4980 /* If the condition is false, etc., don't do the commands. */
4981 bs->commands = NULL;
4983 bs->print_it = print_it_normal;
4987 /* The target has stopped with waitstatus WS. Check if any hardware
4988 watchpoints have triggered, according to the target. */
4991 watchpoints_triggered (struct target_waitstatus *ws)
4993 int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4995 struct breakpoint *b;
4997 if (!stopped_by_watchpoint)
4999 /* We were not stopped by a watchpoint. Mark all watchpoints
5000 as not triggered. */
5002 if (is_hardware_watchpoint (b))
5004 struct watchpoint *w = (struct watchpoint *) b;
5006 w->watchpoint_triggered = watch_triggered_no;
5012 if (!target_stopped_data_address (¤t_target, &addr))
5014 /* We were stopped by a watchpoint, but we don't know where.
5015 Mark all watchpoints as unknown. */
5017 if (is_hardware_watchpoint (b))
5019 struct watchpoint *w = (struct watchpoint *) b;
5021 w->watchpoint_triggered = watch_triggered_unknown;
5027 /* The target could report the data address. Mark watchpoints
5028 affected by this data address as triggered, and all others as not
5032 if (is_hardware_watchpoint (b))
5034 struct watchpoint *w = (struct watchpoint *) b;
5035 struct bp_location *loc;
5037 w->watchpoint_triggered = watch_triggered_no;
5038 for (loc = b->loc; loc; loc = loc->next)
5040 if (is_masked_watchpoint (b))
5042 CORE_ADDR newaddr = addr & w->hw_wp_mask;
5043 CORE_ADDR start = loc->address & w->hw_wp_mask;
5045 if (newaddr == start)
5047 w->watchpoint_triggered = watch_triggered_yes;
5051 /* Exact match not required. Within range is sufficient. */
5052 else if (target_watchpoint_addr_within_range (¤t_target,
5056 w->watchpoint_triggered = watch_triggered_yes;
5065 /* Possible return values for watchpoint_check (this can't be an enum
5066 because of check_errors). */
5067 /* The watchpoint has been deleted. */
5068 #define WP_DELETED 1
5069 /* The value has changed. */
5070 #define WP_VALUE_CHANGED 2
5071 /* The value has not changed. */
5072 #define WP_VALUE_NOT_CHANGED 3
5073 /* Ignore this watchpoint, no matter if the value changed or not. */
5076 #define BP_TEMPFLAG 1
5077 #define BP_HARDWAREFLAG 2
5079 /* Evaluate watchpoint condition expression and check if its value
5082 P should be a pointer to struct bpstat, but is defined as a void *
5083 in order for this function to be usable with catch_errors. */
5086 watchpoint_check (void *p)
5088 bpstat bs = (bpstat) p;
5089 struct watchpoint *b;
5090 struct frame_info *fr;
5091 int within_current_scope;
5093 /* BS is built from an existing struct breakpoint. */
5094 gdb_assert (bs->breakpoint_at != NULL);
5095 b = (struct watchpoint *) bs->breakpoint_at;
5097 /* If this is a local watchpoint, we only want to check if the
5098 watchpoint frame is in scope if the current thread is the thread
5099 that was used to create the watchpoint. */
5100 if (!watchpoint_in_thread_scope (b))
5103 if (b->exp_valid_block == NULL)
5104 within_current_scope = 1;
5107 struct frame_info *frame = get_current_frame ();
5108 struct gdbarch *frame_arch = get_frame_arch (frame);
5109 CORE_ADDR frame_pc = get_frame_pc (frame);
5111 /* in_function_epilogue_p() returns a non-zero value if we're
5112 still in the function but the stack frame has already been
5113 invalidated. Since we can't rely on the values of local
5114 variables after the stack has been destroyed, we are treating
5115 the watchpoint in that state as `not changed' without further
5116 checking. Don't mark watchpoints as changed if the current
5117 frame is in an epilogue - even if they are in some other
5118 frame, our view of the stack is likely to be wrong and
5119 frame_find_by_id could error out. */
5120 if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
5123 fr = frame_find_by_id (b->watchpoint_frame);
5124 within_current_scope = (fr != NULL);
5126 /* If we've gotten confused in the unwinder, we might have
5127 returned a frame that can't describe this variable. */
5128 if (within_current_scope)
5130 struct symbol *function;
5132 function = get_frame_function (fr);
5133 if (function == NULL
5134 || !contained_in (b->exp_valid_block,
5135 SYMBOL_BLOCK_VALUE (function)))
5136 within_current_scope = 0;
5139 if (within_current_scope)
5140 /* If we end up stopping, the current frame will get selected
5141 in normal_stop. So this call to select_frame won't affect
5146 if (within_current_scope)
5148 /* We use value_{,free_to_}mark because it could be a *long*
5149 time before we return to the command level and call
5150 free_all_values. We can't call free_all_values because we
5151 might be in the middle of evaluating a function call. */
5155 struct value *new_val;
5157 if (is_masked_watchpoint (&b->base))
5158 /* Since we don't know the exact trigger address (from
5159 stopped_data_address), just tell the user we've triggered
5160 a mask watchpoint. */
5161 return WP_VALUE_CHANGED;
5163 mark = value_mark ();
5164 fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL, 0);
5166 if (b->val_bitsize != 0)
5167 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5169 /* We use value_equal_contents instead of value_equal because
5170 the latter coerces an array to a pointer, thus comparing just
5171 the address of the array instead of its contents. This is
5172 not what we want. */
5173 if ((b->val != NULL) != (new_val != NULL)
5174 || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5176 if (new_val != NULL)
5178 release_value (new_val);
5179 value_free_to_mark (mark);
5181 bs->old_val = b->val;
5184 return WP_VALUE_CHANGED;
5188 /* Nothing changed. */
5189 value_free_to_mark (mark);
5190 return WP_VALUE_NOT_CHANGED;
5195 struct ui_out *uiout = current_uiout;
5197 /* This seems like the only logical thing to do because
5198 if we temporarily ignored the watchpoint, then when
5199 we reenter the block in which it is valid it contains
5200 garbage (in the case of a function, it may have two
5201 garbage values, one before and one after the prologue).
5202 So we can't even detect the first assignment to it and
5203 watch after that (since the garbage may or may not equal
5204 the first value assigned). */
5205 /* We print all the stop information in
5206 breakpoint_ops->print_it, but in this case, by the time we
5207 call breakpoint_ops->print_it this bp will be deleted
5208 already. So we have no choice but print the information
5210 if (ui_out_is_mi_like_p (uiout))
5212 (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5213 ui_out_text (uiout, "\nWatchpoint ");
5214 ui_out_field_int (uiout, "wpnum", b->base.number);
5216 " deleted because the program has left the block in\n\
5217 which its expression is valid.\n");
5219 /* Make sure the watchpoint's commands aren't executed. */
5220 decref_counted_command_line (&b->base.commands);
5221 watchpoint_del_at_next_stop (b);
5227 /* Return true if it looks like target has stopped due to hitting
5228 breakpoint location BL. This function does not check if we should
5229 stop, only if BL explains the stop. */
5232 bpstat_check_location (const struct bp_location *bl,
5233 struct address_space *aspace, CORE_ADDR bp_addr,
5234 const struct target_waitstatus *ws)
5236 struct breakpoint *b = bl->owner;
5238 /* BL is from an existing breakpoint. */
5239 gdb_assert (b != NULL);
5241 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5244 /* Determine if the watched values have actually changed, and we
5245 should stop. If not, set BS->stop to 0. */
5248 bpstat_check_watchpoint (bpstat bs)
5250 const struct bp_location *bl;
5251 struct watchpoint *b;
5253 /* BS is built for existing struct breakpoint. */
5254 bl = bs->bp_location_at;
5255 gdb_assert (bl != NULL);
5256 b = (struct watchpoint *) bs->breakpoint_at;
5257 gdb_assert (b != NULL);
5260 int must_check_value = 0;
5262 if (b->base.type == bp_watchpoint)
5263 /* For a software watchpoint, we must always check the
5265 must_check_value = 1;
5266 else if (b->watchpoint_triggered == watch_triggered_yes)
5267 /* We have a hardware watchpoint (read, write, or access)
5268 and the target earlier reported an address watched by
5270 must_check_value = 1;
5271 else if (b->watchpoint_triggered == watch_triggered_unknown
5272 && b->base.type == bp_hardware_watchpoint)
5273 /* We were stopped by a hardware watchpoint, but the target could
5274 not report the data address. We must check the watchpoint's
5275 value. Access and read watchpoints are out of luck; without
5276 a data address, we can't figure it out. */
5277 must_check_value = 1;
5279 if (must_check_value)
5282 = xstrprintf ("Error evaluating expression for watchpoint %d\n",
5284 struct cleanup *cleanups = make_cleanup (xfree, message);
5285 int e = catch_errors (watchpoint_check, bs, message,
5287 do_cleanups (cleanups);
5291 /* We've already printed what needs to be printed. */
5292 bs->print_it = print_it_done;
5296 bs->print_it = print_it_noop;
5299 case WP_VALUE_CHANGED:
5300 if (b->base.type == bp_read_watchpoint)
5302 /* There are two cases to consider here:
5304 1. We're watching the triggered memory for reads.
5305 In that case, trust the target, and always report
5306 the watchpoint hit to the user. Even though
5307 reads don't cause value changes, the value may
5308 have changed since the last time it was read, and
5309 since we're not trapping writes, we will not see
5310 those, and as such we should ignore our notion of
5313 2. We're watching the triggered memory for both
5314 reads and writes. There are two ways this may
5317 2.1. This is a target that can't break on data
5318 reads only, but can break on accesses (reads or
5319 writes), such as e.g., x86. We detect this case
5320 at the time we try to insert read watchpoints.
5322 2.2. Otherwise, the target supports read
5323 watchpoints, but, the user set an access or write
5324 watchpoint watching the same memory as this read
5327 If we're watching memory writes as well as reads,
5328 ignore watchpoint hits when we find that the
5329 value hasn't changed, as reads don't cause
5330 changes. This still gives false positives when
5331 the program writes the same value to memory as
5332 what there was already in memory (we will confuse
5333 it for a read), but it's much better than
5336 int other_write_watchpoint = 0;
5338 if (bl->watchpoint_type == hw_read)
5340 struct breakpoint *other_b;
5342 ALL_BREAKPOINTS (other_b)
5343 if (other_b->type == bp_hardware_watchpoint
5344 || other_b->type == bp_access_watchpoint)
5346 struct watchpoint *other_w =
5347 (struct watchpoint *) other_b;
5349 if (other_w->watchpoint_triggered
5350 == watch_triggered_yes)
5352 other_write_watchpoint = 1;
5358 if (other_write_watchpoint
5359 || bl->watchpoint_type == hw_access)
5361 /* We're watching the same memory for writes,
5362 and the value changed since the last time we
5363 updated it, so this trap must be for a write.
5365 bs->print_it = print_it_noop;
5370 case WP_VALUE_NOT_CHANGED:
5371 if (b->base.type == bp_hardware_watchpoint
5372 || b->base.type == bp_watchpoint)
5374 /* Don't stop: write watchpoints shouldn't fire if
5375 the value hasn't changed. */
5376 bs->print_it = print_it_noop;
5384 /* Error from catch_errors. */
5385 printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5386 watchpoint_del_at_next_stop (b);
5387 /* We've already printed what needs to be printed. */
5388 bs->print_it = print_it_done;
5392 else /* must_check_value == 0 */
5394 /* This is a case where some watchpoint(s) triggered, but
5395 not at the address of this watchpoint, or else no
5396 watchpoint triggered after all. So don't print
5397 anything for this watchpoint. */
5398 bs->print_it = print_it_noop;
5404 /* For breakpoints that are currently marked as telling gdb to stop,
5405 check conditions (condition proper, frame, thread and ignore count)
5406 of breakpoint referred to by BS. If we should not stop for this
5407 breakpoint, set BS->stop to 0. */
5410 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5412 const struct bp_location *bl;
5413 struct breakpoint *b;
5414 int value_is_zero = 0;
5415 struct expression *cond;
5417 gdb_assert (bs->stop);
5419 /* BS is built for existing struct breakpoint. */
5420 bl = bs->bp_location_at;
5421 gdb_assert (bl != NULL);
5422 b = bs->breakpoint_at;
5423 gdb_assert (b != NULL);
5425 /* Even if the target evaluated the condition on its end and notified GDB, we
5426 need to do so again since GDB does not know if we stopped due to a
5427 breakpoint or a single step breakpoint. */
5429 if (frame_id_p (b->frame_id)
5430 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5436 /* If this is a thread/task-specific breakpoint, don't waste cpu
5437 evaluating the condition if this isn't the specified
5439 if ((b->thread != -1 && b->thread != pid_to_thread_id (ptid))
5440 || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5447 /* Evaluate extension language breakpoints that have a "stop" method
5449 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5451 if (is_watchpoint (b))
5453 struct watchpoint *w = (struct watchpoint *) b;
5460 if (cond && b->disposition != disp_del_at_next_stop)
5462 int within_current_scope = 1;
5463 struct watchpoint * w;
5465 /* We use value_mark and value_free_to_mark because it could
5466 be a long time before we return to the command level and
5467 call free_all_values. We can't call free_all_values
5468 because we might be in the middle of evaluating a
5470 struct value *mark = value_mark ();
5472 if (is_watchpoint (b))
5473 w = (struct watchpoint *) b;
5477 /* Need to select the frame, with all that implies so that
5478 the conditions will have the right context. Because we
5479 use the frame, we will not see an inlined function's
5480 variables when we arrive at a breakpoint at the start
5481 of the inlined function; the current frame will be the
5483 if (w == NULL || w->cond_exp_valid_block == NULL)
5484 select_frame (get_current_frame ());
5487 struct frame_info *frame;
5489 /* For local watchpoint expressions, which particular
5490 instance of a local is being watched matters, so we
5491 keep track of the frame to evaluate the expression
5492 in. To evaluate the condition however, it doesn't
5493 really matter which instantiation of the function
5494 where the condition makes sense triggers the
5495 watchpoint. This allows an expression like "watch
5496 global if q > 10" set in `func', catch writes to
5497 global on all threads that call `func', or catch
5498 writes on all recursive calls of `func' by a single
5499 thread. We simply always evaluate the condition in
5500 the innermost frame that's executing where it makes
5501 sense to evaluate the condition. It seems
5503 frame = block_innermost_frame (w->cond_exp_valid_block);
5505 select_frame (frame);
5507 within_current_scope = 0;
5509 if (within_current_scope)
5511 = catch_errors (breakpoint_cond_eval, cond,
5512 "Error in testing breakpoint condition:\n",
5516 warning (_("Watchpoint condition cannot be tested "
5517 "in the current scope"));
5518 /* If we failed to set the right context for this
5519 watchpoint, unconditionally report it. */
5522 /* FIXME-someday, should give breakpoint #. */
5523 value_free_to_mark (mark);
5526 if (cond && value_is_zero)
5530 else if (b->ignore_count > 0)
5534 /* Increase the hit count even though we don't stop. */
5536 observer_notify_breakpoint_modified (b);
5541 /* Get a bpstat associated with having just stopped at address
5542 BP_ADDR in thread PTID.
5544 Determine whether we stopped at a breakpoint, etc, or whether we
5545 don't understand this stop. Result is a chain of bpstat's such
5548 if we don't understand the stop, the result is a null pointer.
5550 if we understand why we stopped, the result is not null.
5552 Each element of the chain refers to a particular breakpoint or
5553 watchpoint at which we have stopped. (We may have stopped for
5554 several reasons concurrently.)
5556 Each element of the chain has valid next, breakpoint_at,
5557 commands, FIXME??? fields. */
5560 bpstat_stop_status (struct address_space *aspace,
5561 CORE_ADDR bp_addr, ptid_t ptid,
5562 const struct target_waitstatus *ws)
5564 struct breakpoint *b = NULL;
5565 struct bp_location *bl;
5566 struct bp_location *loc;
5567 /* First item of allocated bpstat's. */
5568 bpstat bs_head = NULL, *bs_link = &bs_head;
5569 /* Pointer to the last thing in the chain currently. */
5572 int need_remove_insert;
5575 /* First, build the bpstat chain with locations that explain a
5576 target stop, while being careful to not set the target running,
5577 as that may invalidate locations (in particular watchpoint
5578 locations are recreated). Resuming will happen here with
5579 breakpoint conditions or watchpoint expressions that include
5580 inferior function calls. */
5584 if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5587 for (bl = b->loc; bl != NULL; bl = bl->next)
5589 /* For hardware watchpoints, we look only at the first
5590 location. The watchpoint_check function will work on the
5591 entire expression, not the individual locations. For
5592 read watchpoints, the watchpoints_triggered function has
5593 checked all locations already. */
5594 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5597 if (!bl->enabled || bl->shlib_disabled)
5600 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5603 /* Come here if it's a watchpoint, or if the break address
5606 bs = bpstat_alloc (bl, &bs_link); /* Alloc a bpstat to
5609 /* Assume we stop. Should we find a watchpoint that is not
5610 actually triggered, or if the condition of the breakpoint
5611 evaluates as false, we'll reset 'stop' to 0. */
5615 /* If this is a scope breakpoint, mark the associated
5616 watchpoint as triggered so that we will handle the
5617 out-of-scope event. We'll get to the watchpoint next
5619 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5621 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5623 w->watchpoint_triggered = watch_triggered_yes;
5628 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5630 if (breakpoint_location_address_match (loc, aspace, bp_addr))
5632 bs = bpstat_alloc (loc, &bs_link);
5633 /* For hits of moribund locations, we should just proceed. */
5636 bs->print_it = print_it_noop;
5640 /* A bit of special processing for shlib breakpoints. We need to
5641 process solib loading here, so that the lists of loaded and
5642 unloaded libraries are correct before we handle "catch load" and
5644 for (bs = bs_head; bs != NULL; bs = bs->next)
5646 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5648 handle_solib_event ();
5653 /* Now go through the locations that caused the target to stop, and
5654 check whether we're interested in reporting this stop to higher
5655 layers, or whether we should resume the target transparently. */
5659 for (bs = bs_head; bs != NULL; bs = bs->next)
5664 b = bs->breakpoint_at;
5665 b->ops->check_status (bs);
5668 bpstat_check_breakpoint_conditions (bs, ptid);
5673 observer_notify_breakpoint_modified (b);
5675 /* We will stop here. */
5676 if (b->disposition == disp_disable)
5678 --(b->enable_count);
5679 if (b->enable_count <= 0
5680 && b->enable_state != bp_permanent)
5681 b->enable_state = bp_disabled;
5686 bs->commands = b->commands;
5687 incref_counted_command_line (bs->commands);
5688 if (command_line_is_silent (bs->commands
5689 ? bs->commands->commands : NULL))
5692 b->ops->after_condition_true (bs);
5697 /* Print nothing for this entry if we don't stop or don't
5699 if (!bs->stop || !bs->print)
5700 bs->print_it = print_it_noop;
5703 /* If we aren't stopping, the value of some hardware watchpoint may
5704 not have changed, but the intermediate memory locations we are
5705 watching may have. Don't bother if we're stopping; this will get
5707 need_remove_insert = 0;
5708 if (! bpstat_causes_stop (bs_head))
5709 for (bs = bs_head; bs != NULL; bs = bs->next)
5711 && bs->breakpoint_at
5712 && is_hardware_watchpoint (bs->breakpoint_at))
5714 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5716 update_watchpoint (w, 0 /* don't reparse. */);
5717 need_remove_insert = 1;
5720 if (need_remove_insert)
5721 update_global_location_list (UGLL_MAY_INSERT);
5722 else if (removed_any)
5723 update_global_location_list (UGLL_DONT_INSERT);
5729 handle_jit_event (void)
5731 struct frame_info *frame;
5732 struct gdbarch *gdbarch;
5734 /* Switch terminal for any messages produced by
5735 breakpoint_re_set. */
5736 target_terminal_ours_for_output ();
5738 frame = get_current_frame ();
5739 gdbarch = get_frame_arch (frame);
5741 jit_event_handler (gdbarch);
5743 target_terminal_inferior ();
5746 /* Prepare WHAT final decision for infrun. */
5748 /* Decide what infrun needs to do with this bpstat. */
5751 bpstat_what (bpstat bs_head)
5753 struct bpstat_what retval;
5757 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5758 retval.call_dummy = STOP_NONE;
5759 retval.is_longjmp = 0;
5761 for (bs = bs_head; bs != NULL; bs = bs->next)
5763 /* Extract this BS's action. After processing each BS, we check
5764 if its action overrides all we've seem so far. */
5765 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5768 if (bs->breakpoint_at == NULL)
5770 /* I suspect this can happen if it was a momentary
5771 breakpoint which has since been deleted. */
5775 bptype = bs->breakpoint_at->type;
5782 case bp_hardware_breakpoint:
5785 case bp_shlib_event:
5789 this_action = BPSTAT_WHAT_STOP_NOISY;
5791 this_action = BPSTAT_WHAT_STOP_SILENT;
5794 this_action = BPSTAT_WHAT_SINGLE;
5797 case bp_hardware_watchpoint:
5798 case bp_read_watchpoint:
5799 case bp_access_watchpoint:
5803 this_action = BPSTAT_WHAT_STOP_NOISY;
5805 this_action = BPSTAT_WHAT_STOP_SILENT;
5809 /* There was a watchpoint, but we're not stopping.
5810 This requires no further action. */
5814 case bp_longjmp_call_dummy:
5816 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5817 retval.is_longjmp = bptype != bp_exception;
5819 case bp_longjmp_resume:
5820 case bp_exception_resume:
5821 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5822 retval.is_longjmp = bptype == bp_longjmp_resume;
5824 case bp_step_resume:
5826 this_action = BPSTAT_WHAT_STEP_RESUME;
5829 /* It is for the wrong frame. */
5830 this_action = BPSTAT_WHAT_SINGLE;
5833 case bp_hp_step_resume:
5835 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5838 /* It is for the wrong frame. */
5839 this_action = BPSTAT_WHAT_SINGLE;
5842 case bp_watchpoint_scope:
5843 case bp_thread_event:
5844 case bp_overlay_event:
5845 case bp_longjmp_master:
5846 case bp_std_terminate_master:
5847 case bp_exception_master:
5848 this_action = BPSTAT_WHAT_SINGLE;
5854 this_action = BPSTAT_WHAT_STOP_NOISY;
5856 this_action = BPSTAT_WHAT_STOP_SILENT;
5860 /* There was a catchpoint, but we're not stopping.
5861 This requires no further action. */
5866 this_action = BPSTAT_WHAT_SINGLE;
5869 /* Make sure the action is stop (silent or noisy),
5870 so infrun.c pops the dummy frame. */
5871 retval.call_dummy = STOP_STACK_DUMMY;
5872 this_action = BPSTAT_WHAT_STOP_SILENT;
5874 case bp_std_terminate:
5875 /* Make sure the action is stop (silent or noisy),
5876 so infrun.c pops the dummy frame. */
5877 retval.call_dummy = STOP_STD_TERMINATE;
5878 this_action = BPSTAT_WHAT_STOP_SILENT;
5881 case bp_fast_tracepoint:
5882 case bp_static_tracepoint:
5883 /* Tracepoint hits should not be reported back to GDB, and
5884 if one got through somehow, it should have been filtered
5886 internal_error (__FILE__, __LINE__,
5887 _("bpstat_what: tracepoint encountered"));
5889 case bp_gnu_ifunc_resolver:
5890 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5891 this_action = BPSTAT_WHAT_SINGLE;
5893 case bp_gnu_ifunc_resolver_return:
5894 /* The breakpoint will be removed, execution will restart from the
5895 PC of the former breakpoint. */
5896 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5901 this_action = BPSTAT_WHAT_STOP_SILENT;
5903 this_action = BPSTAT_WHAT_SINGLE;
5907 internal_error (__FILE__, __LINE__,
5908 _("bpstat_what: unhandled bptype %d"), (int) bptype);
5911 retval.main_action = max (retval.main_action, this_action);
5914 /* These operations may affect the bs->breakpoint_at state so they are
5915 delayed after MAIN_ACTION is decided above. */
5920 fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5922 handle_jit_event ();
5925 for (bs = bs_head; bs != NULL; bs = bs->next)
5927 struct breakpoint *b = bs->breakpoint_at;
5933 case bp_gnu_ifunc_resolver:
5934 gnu_ifunc_resolver_stop (b);
5936 case bp_gnu_ifunc_resolver_return:
5937 gnu_ifunc_resolver_return_stop (b);
5945 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5946 without hardware support). This isn't related to a specific bpstat,
5947 just to things like whether watchpoints are set. */
5950 bpstat_should_step (void)
5952 struct breakpoint *b;
5955 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5961 bpstat_causes_stop (bpstat bs)
5963 for (; bs != NULL; bs = bs->next)
5972 /* Compute a string of spaces suitable to indent the next line
5973 so it starts at the position corresponding to the table column
5974 named COL_NAME in the currently active table of UIOUT. */
5977 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5979 static char wrap_indent[80];
5980 int i, total_width, width, align;
5984 for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5986 if (strcmp (text, col_name) == 0)
5988 gdb_assert (total_width < sizeof wrap_indent);
5989 memset (wrap_indent, ' ', total_width);
5990 wrap_indent[total_width] = 0;
5995 total_width += width + 1;
6001 /* Determine if the locations of this breakpoint will have their conditions
6002 evaluated by the target, host or a mix of both. Returns the following:
6004 "host": Host evals condition.
6005 "host or target": Host or Target evals condition.
6006 "target": Target evals condition.
6010 bp_condition_evaluator (struct breakpoint *b)
6012 struct bp_location *bl;
6013 char host_evals = 0;
6014 char target_evals = 0;
6019 if (!is_breakpoint (b))
6022 if (gdb_evaluates_breakpoint_condition_p ()
6023 || !target_supports_evaluation_of_breakpoint_conditions ())
6024 return condition_evaluation_host;
6026 for (bl = b->loc; bl; bl = bl->next)
6028 if (bl->cond_bytecode)
6034 if (host_evals && target_evals)
6035 return condition_evaluation_both;
6036 else if (target_evals)
6037 return condition_evaluation_target;
6039 return condition_evaluation_host;
6042 /* Determine the breakpoint location's condition evaluator. This is
6043 similar to bp_condition_evaluator, but for locations. */
6046 bp_location_condition_evaluator (struct bp_location *bl)
6048 if (bl && !is_breakpoint (bl->owner))
6051 if (gdb_evaluates_breakpoint_condition_p ()
6052 || !target_supports_evaluation_of_breakpoint_conditions ())
6053 return condition_evaluation_host;
6055 if (bl && bl->cond_bytecode)
6056 return condition_evaluation_target;
6058 return condition_evaluation_host;
6061 /* Print the LOC location out of the list of B->LOC locations. */
6064 print_breakpoint_location (struct breakpoint *b,
6065 struct bp_location *loc)
6067 struct ui_out *uiout = current_uiout;
6068 struct cleanup *old_chain = save_current_program_space ();
6070 if (loc != NULL && loc->shlib_disabled)
6074 set_current_program_space (loc->pspace);
6076 if (b->display_canonical)
6077 ui_out_field_string (uiout, "what", b->addr_string);
6078 else if (loc && loc->symtab)
6081 = find_pc_sect_function (loc->address, loc->section);
6084 ui_out_text (uiout, "in ");
6085 ui_out_field_string (uiout, "func",
6086 SYMBOL_PRINT_NAME (sym));
6087 ui_out_text (uiout, " ");
6088 ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
6089 ui_out_text (uiout, "at ");
6091 ui_out_field_string (uiout, "file",
6092 symtab_to_filename_for_display (loc->symtab));
6093 ui_out_text (uiout, ":");
6095 if (ui_out_is_mi_like_p (uiout))
6096 ui_out_field_string (uiout, "fullname",
6097 symtab_to_fullname (loc->symtab));
6099 ui_out_field_int (uiout, "line", loc->line_number);
6103 struct ui_file *stb = mem_fileopen ();
6104 struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
6106 print_address_symbolic (loc->gdbarch, loc->address, stb,
6108 ui_out_field_stream (uiout, "at", stb);
6110 do_cleanups (stb_chain);
6113 ui_out_field_string (uiout, "pending", b->addr_string);
6115 if (loc && is_breakpoint (b)
6116 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6117 && bp_condition_evaluator (b) == condition_evaluation_both)
6119 ui_out_text (uiout, " (");
6120 ui_out_field_string (uiout, "evaluated-by",
6121 bp_location_condition_evaluator (loc));
6122 ui_out_text (uiout, ")");
6125 do_cleanups (old_chain);
6129 bptype_string (enum bptype type)
6131 struct ep_type_description
6136 static struct ep_type_description bptypes[] =
6138 {bp_none, "?deleted?"},
6139 {bp_breakpoint, "breakpoint"},
6140 {bp_hardware_breakpoint, "hw breakpoint"},
6141 {bp_until, "until"},
6142 {bp_finish, "finish"},
6143 {bp_watchpoint, "watchpoint"},
6144 {bp_hardware_watchpoint, "hw watchpoint"},
6145 {bp_read_watchpoint, "read watchpoint"},
6146 {bp_access_watchpoint, "acc watchpoint"},
6147 {bp_longjmp, "longjmp"},
6148 {bp_longjmp_resume, "longjmp resume"},
6149 {bp_longjmp_call_dummy, "longjmp for call dummy"},
6150 {bp_exception, "exception"},
6151 {bp_exception_resume, "exception resume"},
6152 {bp_step_resume, "step resume"},
6153 {bp_hp_step_resume, "high-priority step resume"},
6154 {bp_watchpoint_scope, "watchpoint scope"},
6155 {bp_call_dummy, "call dummy"},
6156 {bp_std_terminate, "std::terminate"},
6157 {bp_shlib_event, "shlib events"},
6158 {bp_thread_event, "thread events"},
6159 {bp_overlay_event, "overlay events"},
6160 {bp_longjmp_master, "longjmp master"},
6161 {bp_std_terminate_master, "std::terminate master"},
6162 {bp_exception_master, "exception master"},
6163 {bp_catchpoint, "catchpoint"},
6164 {bp_tracepoint, "tracepoint"},
6165 {bp_fast_tracepoint, "fast tracepoint"},
6166 {bp_static_tracepoint, "static tracepoint"},
6167 {bp_dprintf, "dprintf"},
6168 {bp_jit_event, "jit events"},
6169 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6170 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6173 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6174 || ((int) type != bptypes[(int) type].type))
6175 internal_error (__FILE__, __LINE__,
6176 _("bptypes table does not describe type #%d."),
6179 return bptypes[(int) type].description;
6182 /* For MI, output a field named 'thread-groups' with a list as the value.
6183 For CLI, prefix the list with the string 'inf'. */
6186 output_thread_groups (struct ui_out *uiout,
6187 const char *field_name,
6191 struct cleanup *back_to;
6192 int is_mi = ui_out_is_mi_like_p (uiout);
6196 /* For backward compatibility, don't display inferiors in CLI unless
6197 there are several. Always display them for MI. */
6198 if (!is_mi && mi_only)
6201 back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
6203 for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6209 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6210 ui_out_field_string (uiout, NULL, mi_group);
6215 ui_out_text (uiout, " inf ");
6217 ui_out_text (uiout, ", ");
6219 ui_out_text (uiout, plongest (inf));
6223 do_cleanups (back_to);
6226 /* Print B to gdb_stdout. */
6229 print_one_breakpoint_location (struct breakpoint *b,
6230 struct bp_location *loc,
6232 struct bp_location **last_loc,
6235 struct command_line *l;
6236 static char bpenables[] = "nynny";
6238 struct ui_out *uiout = current_uiout;
6239 int header_of_multiple = 0;
6240 int part_of_multiple = (loc != NULL);
6241 struct value_print_options opts;
6243 get_user_print_options (&opts);
6245 gdb_assert (!loc || loc_number != 0);
6246 /* See comment in print_one_breakpoint concerning treatment of
6247 breakpoints with single disabled location. */
6250 && (b->loc->next != NULL || !b->loc->enabled)))
6251 header_of_multiple = 1;
6259 if (part_of_multiple)
6262 formatted = xstrprintf ("%d.%d", b->number, loc_number);
6263 ui_out_field_string (uiout, "number", formatted);
6268 ui_out_field_int (uiout, "number", b->number);
6273 if (part_of_multiple)
6274 ui_out_field_skip (uiout, "type");
6276 ui_out_field_string (uiout, "type", bptype_string (b->type));
6280 if (part_of_multiple)
6281 ui_out_field_skip (uiout, "disp");
6283 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6288 if (part_of_multiple)
6289 ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
6291 ui_out_field_fmt (uiout, "enabled", "%c",
6292 bpenables[(int) b->enable_state]);
6293 ui_out_spaces (uiout, 2);
6297 if (b->ops != NULL && b->ops->print_one != NULL)
6299 /* Although the print_one can possibly print all locations,
6300 calling it here is not likely to get any nice result. So,
6301 make sure there's just one location. */
6302 gdb_assert (b->loc == NULL || b->loc->next == NULL);
6303 b->ops->print_one (b, last_loc);
6309 internal_error (__FILE__, __LINE__,
6310 _("print_one_breakpoint: bp_none encountered\n"));
6314 case bp_hardware_watchpoint:
6315 case bp_read_watchpoint:
6316 case bp_access_watchpoint:
6318 struct watchpoint *w = (struct watchpoint *) b;
6320 /* Field 4, the address, is omitted (which makes the columns
6321 not line up too nicely with the headers, but the effect
6322 is relatively readable). */
6323 if (opts.addressprint)
6324 ui_out_field_skip (uiout, "addr");
6326 ui_out_field_string (uiout, "what", w->exp_string);
6331 case bp_hardware_breakpoint:
6335 case bp_longjmp_resume:
6336 case bp_longjmp_call_dummy:
6338 case bp_exception_resume:
6339 case bp_step_resume:
6340 case bp_hp_step_resume:
6341 case bp_watchpoint_scope:
6343 case bp_std_terminate:
6344 case bp_shlib_event:
6345 case bp_thread_event:
6346 case bp_overlay_event:
6347 case bp_longjmp_master:
6348 case bp_std_terminate_master:
6349 case bp_exception_master:
6351 case bp_fast_tracepoint:
6352 case bp_static_tracepoint:
6355 case bp_gnu_ifunc_resolver:
6356 case bp_gnu_ifunc_resolver_return:
6357 if (opts.addressprint)
6360 if (header_of_multiple)
6361 ui_out_field_string (uiout, "addr", "<MULTIPLE>");
6362 else if (b->loc == NULL || loc->shlib_disabled)
6363 ui_out_field_string (uiout, "addr", "<PENDING>");
6365 ui_out_field_core_addr (uiout, "addr",
6366 loc->gdbarch, loc->address);
6369 if (!header_of_multiple)
6370 print_breakpoint_location (b, loc);
6377 if (loc != NULL && !header_of_multiple)
6379 struct inferior *inf;
6380 VEC(int) *inf_num = NULL;
6385 if (inf->pspace == loc->pspace)
6386 VEC_safe_push (int, inf_num, inf->num);
6389 /* For backward compatibility, don't display inferiors in CLI unless
6390 there are several. Always display for MI. */
6392 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6393 && (number_of_program_spaces () > 1
6394 || number_of_inferiors () > 1)
6395 /* LOC is for existing B, it cannot be in
6396 moribund_locations and thus having NULL OWNER. */
6397 && loc->owner->type != bp_catchpoint))
6399 output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6400 VEC_free (int, inf_num);
6403 if (!part_of_multiple)
6405 if (b->thread != -1)
6407 /* FIXME: This seems to be redundant and lost here; see the
6408 "stop only in" line a little further down. */
6409 ui_out_text (uiout, " thread ");
6410 ui_out_field_int (uiout, "thread", b->thread);
6412 else if (b->task != 0)
6414 ui_out_text (uiout, " task ");
6415 ui_out_field_int (uiout, "task", b->task);
6419 ui_out_text (uiout, "\n");
6421 if (!part_of_multiple)
6422 b->ops->print_one_detail (b, uiout);
6424 if (part_of_multiple && frame_id_p (b->frame_id))
6427 ui_out_text (uiout, "\tstop only in stack frame at ");
6428 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6430 ui_out_field_core_addr (uiout, "frame",
6431 b->gdbarch, b->frame_id.stack_addr);
6432 ui_out_text (uiout, "\n");
6435 if (!part_of_multiple && b->cond_string)
6438 if (is_tracepoint (b))
6439 ui_out_text (uiout, "\ttrace only if ");
6441 ui_out_text (uiout, "\tstop only if ");
6442 ui_out_field_string (uiout, "cond", b->cond_string);
6444 /* Print whether the target is doing the breakpoint's condition
6445 evaluation. If GDB is doing the evaluation, don't print anything. */
6446 if (is_breakpoint (b)
6447 && breakpoint_condition_evaluation_mode ()
6448 == condition_evaluation_target)
6450 ui_out_text (uiout, " (");
6451 ui_out_field_string (uiout, "evaluated-by",
6452 bp_condition_evaluator (b));
6453 ui_out_text (uiout, " evals)");
6455 ui_out_text (uiout, "\n");
6458 if (!part_of_multiple && b->thread != -1)
6460 /* FIXME should make an annotation for this. */
6461 ui_out_text (uiout, "\tstop only in thread ");
6462 ui_out_field_int (uiout, "thread", b->thread);
6463 ui_out_text (uiout, "\n");
6466 if (!part_of_multiple)
6470 /* FIXME should make an annotation for this. */
6471 if (is_catchpoint (b))
6472 ui_out_text (uiout, "\tcatchpoint");
6473 else if (is_tracepoint (b))
6474 ui_out_text (uiout, "\ttracepoint");
6476 ui_out_text (uiout, "\tbreakpoint");
6477 ui_out_text (uiout, " already hit ");
6478 ui_out_field_int (uiout, "times", b->hit_count);
6479 if (b->hit_count == 1)
6480 ui_out_text (uiout, " time\n");
6482 ui_out_text (uiout, " times\n");
6486 /* Output the count also if it is zero, but only if this is mi. */
6487 if (ui_out_is_mi_like_p (uiout))
6488 ui_out_field_int (uiout, "times", b->hit_count);
6492 if (!part_of_multiple && b->ignore_count)
6495 ui_out_text (uiout, "\tignore next ");
6496 ui_out_field_int (uiout, "ignore", b->ignore_count);
6497 ui_out_text (uiout, " hits\n");
6500 /* Note that an enable count of 1 corresponds to "enable once"
6501 behavior, which is reported by the combination of enablement and
6502 disposition, so we don't need to mention it here. */
6503 if (!part_of_multiple && b->enable_count > 1)
6506 ui_out_text (uiout, "\tdisable after ");
6507 /* Tweak the wording to clarify that ignore and enable counts
6508 are distinct, and have additive effect. */
6509 if (b->ignore_count)
6510 ui_out_text (uiout, "additional ");
6512 ui_out_text (uiout, "next ");
6513 ui_out_field_int (uiout, "enable", b->enable_count);
6514 ui_out_text (uiout, " hits\n");
6517 if (!part_of_multiple && is_tracepoint (b))
6519 struct tracepoint *tp = (struct tracepoint *) b;
6521 if (tp->traceframe_usage)
6523 ui_out_text (uiout, "\ttrace buffer usage ");
6524 ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6525 ui_out_text (uiout, " bytes\n");
6529 l = b->commands ? b->commands->commands : NULL;
6530 if (!part_of_multiple && l)
6532 struct cleanup *script_chain;
6535 script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6536 print_command_lines (uiout, l, 4);
6537 do_cleanups (script_chain);
6540 if (is_tracepoint (b))
6542 struct tracepoint *t = (struct tracepoint *) b;
6544 if (!part_of_multiple && t->pass_count)
6546 annotate_field (10);
6547 ui_out_text (uiout, "\tpass count ");
6548 ui_out_field_int (uiout, "pass", t->pass_count);
6549 ui_out_text (uiout, " \n");
6552 /* Don't display it when tracepoint or tracepoint location is
6554 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6556 annotate_field (11);
6558 if (ui_out_is_mi_like_p (uiout))
6559 ui_out_field_string (uiout, "installed",
6560 loc->inserted ? "y" : "n");
6564 ui_out_text (uiout, "\t");
6566 ui_out_text (uiout, "\tnot ");
6567 ui_out_text (uiout, "installed on target\n");
6572 if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6574 if (is_watchpoint (b))
6576 struct watchpoint *w = (struct watchpoint *) b;
6578 ui_out_field_string (uiout, "original-location", w->exp_string);
6580 else if (b->addr_string)
6581 ui_out_field_string (uiout, "original-location", b->addr_string);
6586 print_one_breakpoint (struct breakpoint *b,
6587 struct bp_location **last_loc,
6590 struct cleanup *bkpt_chain;
6591 struct ui_out *uiout = current_uiout;
6593 bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6595 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6596 do_cleanups (bkpt_chain);
6598 /* If this breakpoint has custom print function,
6599 it's already printed. Otherwise, print individual
6600 locations, if any. */
6601 if (b->ops == NULL || b->ops->print_one == NULL)
6603 /* If breakpoint has a single location that is disabled, we
6604 print it as if it had several locations, since otherwise it's
6605 hard to represent "breakpoint enabled, location disabled"
6608 Note that while hardware watchpoints have several locations
6609 internally, that's not a property exposed to user. */
6611 && !is_hardware_watchpoint (b)
6612 && (b->loc->next || !b->loc->enabled))
6614 struct bp_location *loc;
6617 for (loc = b->loc; loc; loc = loc->next, ++n)
6619 struct cleanup *inner2 =
6620 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6621 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6622 do_cleanups (inner2);
6629 breakpoint_address_bits (struct breakpoint *b)
6631 int print_address_bits = 0;
6632 struct bp_location *loc;
6634 for (loc = b->loc; loc; loc = loc->next)
6638 /* Software watchpoints that aren't watching memory don't have
6639 an address to print. */
6640 if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6643 addr_bit = gdbarch_addr_bit (loc->gdbarch);
6644 if (addr_bit > print_address_bits)
6645 print_address_bits = addr_bit;
6648 return print_address_bits;
6651 struct captured_breakpoint_query_args
6657 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6659 struct captured_breakpoint_query_args *args = data;
6660 struct breakpoint *b;
6661 struct bp_location *dummy_loc = NULL;
6665 if (args->bnum == b->number)
6667 print_one_breakpoint (b, &dummy_loc, 0);
6675 gdb_breakpoint_query (struct ui_out *uiout, int bnum,
6676 char **error_message)
6678 struct captured_breakpoint_query_args args;
6681 /* For the moment we don't trust print_one_breakpoint() to not throw
6683 if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6684 error_message, RETURN_MASK_ALL) < 0)
6690 /* Return true if this breakpoint was set by the user, false if it is
6691 internal or momentary. */
6694 user_breakpoint_p (struct breakpoint *b)
6696 return b->number > 0;
6699 /* Print information on user settable breakpoint (watchpoint, etc)
6700 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6701 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6702 FILTER is non-NULL, call it on each breakpoint and only include the
6703 ones for which it returns non-zero. Return the total number of
6704 breakpoints listed. */
6707 breakpoint_1 (char *args, int allflag,
6708 int (*filter) (const struct breakpoint *))
6710 struct breakpoint *b;
6711 struct bp_location *last_loc = NULL;
6712 int nr_printable_breakpoints;
6713 struct cleanup *bkpttbl_chain;
6714 struct value_print_options opts;
6715 int print_address_bits = 0;
6716 int print_type_col_width = 14;
6717 struct ui_out *uiout = current_uiout;
6719 get_user_print_options (&opts);
6721 /* Compute the number of rows in the table, as well as the size
6722 required for address fields. */
6723 nr_printable_breakpoints = 0;
6726 /* If we have a filter, only list the breakpoints it accepts. */
6727 if (filter && !filter (b))
6730 /* If we have an "args" string, it is a list of breakpoints to
6731 accept. Skip the others. */
6732 if (args != NULL && *args != '\0')
6734 if (allflag && parse_and_eval_long (args) != b->number)
6736 if (!allflag && !number_is_in_list (args, b->number))
6740 if (allflag || user_breakpoint_p (b))
6742 int addr_bit, type_len;
6744 addr_bit = breakpoint_address_bits (b);
6745 if (addr_bit > print_address_bits)
6746 print_address_bits = addr_bit;
6748 type_len = strlen (bptype_string (b->type));
6749 if (type_len > print_type_col_width)
6750 print_type_col_width = type_len;
6752 nr_printable_breakpoints++;
6756 if (opts.addressprint)
6758 = make_cleanup_ui_out_table_begin_end (uiout, 6,
6759 nr_printable_breakpoints,
6763 = make_cleanup_ui_out_table_begin_end (uiout, 5,
6764 nr_printable_breakpoints,
6767 if (nr_printable_breakpoints > 0)
6768 annotate_breakpoints_headers ();
6769 if (nr_printable_breakpoints > 0)
6771 ui_out_table_header (uiout, 7, ui_left, "number", "Num"); /* 1 */
6772 if (nr_printable_breakpoints > 0)
6774 ui_out_table_header (uiout, print_type_col_width, ui_left,
6775 "type", "Type"); /* 2 */
6776 if (nr_printable_breakpoints > 0)
6778 ui_out_table_header (uiout, 4, ui_left, "disp", "Disp"); /* 3 */
6779 if (nr_printable_breakpoints > 0)
6781 ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb"); /* 4 */
6782 if (opts.addressprint)
6784 if (nr_printable_breakpoints > 0)
6786 if (print_address_bits <= 32)
6787 ui_out_table_header (uiout, 10, ui_left,
6788 "addr", "Address"); /* 5 */
6790 ui_out_table_header (uiout, 18, ui_left,
6791 "addr", "Address"); /* 5 */
6793 if (nr_printable_breakpoints > 0)
6795 ui_out_table_header (uiout, 40, ui_noalign, "what", "What"); /* 6 */
6796 ui_out_table_body (uiout);
6797 if (nr_printable_breakpoints > 0)
6798 annotate_breakpoints_table ();
6803 /* If we have a filter, only list the breakpoints it accepts. */
6804 if (filter && !filter (b))
6807 /* If we have an "args" string, it is a list of breakpoints to
6808 accept. Skip the others. */
6810 if (args != NULL && *args != '\0')
6812 if (allflag) /* maintenance info breakpoint */
6814 if (parse_and_eval_long (args) != b->number)
6817 else /* all others */
6819 if (!number_is_in_list (args, b->number))
6823 /* We only print out user settable breakpoints unless the
6825 if (allflag || user_breakpoint_p (b))
6826 print_one_breakpoint (b, &last_loc, allflag);
6829 do_cleanups (bkpttbl_chain);
6831 if (nr_printable_breakpoints == 0)
6833 /* If there's a filter, let the caller decide how to report
6837 if (args == NULL || *args == '\0')
6838 ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6840 ui_out_message (uiout, 0,
6841 "No breakpoint or watchpoint matching '%s'.\n",
6847 if (last_loc && !server_command)
6848 set_next_address (last_loc->gdbarch, last_loc->address);
6851 /* FIXME? Should this be moved up so that it is only called when
6852 there have been breakpoints? */
6853 annotate_breakpoints_table_end ();
6855 return nr_printable_breakpoints;
6858 /* Display the value of default-collect in a way that is generally
6859 compatible with the breakpoint list. */
6862 default_collect_info (void)
6864 struct ui_out *uiout = current_uiout;
6866 /* If it has no value (which is frequently the case), say nothing; a
6867 message like "No default-collect." gets in user's face when it's
6869 if (!*default_collect)
6872 /* The following phrase lines up nicely with per-tracepoint collect
6874 ui_out_text (uiout, "default collect ");
6875 ui_out_field_string (uiout, "default-collect", default_collect);
6876 ui_out_text (uiout, " \n");
6880 breakpoints_info (char *args, int from_tty)
6882 breakpoint_1 (args, 0, NULL);
6884 default_collect_info ();
6888 watchpoints_info (char *args, int from_tty)
6890 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6891 struct ui_out *uiout = current_uiout;
6893 if (num_printed == 0)
6895 if (args == NULL || *args == '\0')
6896 ui_out_message (uiout, 0, "No watchpoints.\n");
6898 ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6903 maintenance_info_breakpoints (char *args, int from_tty)
6905 breakpoint_1 (args, 1, NULL);
6907 default_collect_info ();
6911 breakpoint_has_pc (struct breakpoint *b,
6912 struct program_space *pspace,
6913 CORE_ADDR pc, struct obj_section *section)
6915 struct bp_location *bl = b->loc;
6917 for (; bl; bl = bl->next)
6919 if (bl->pspace == pspace
6920 && bl->address == pc
6921 && (!overlay_debugging || bl->section == section))
6927 /* Print a message describing any user-breakpoints set at PC. This
6928 concerns with logical breakpoints, so we match program spaces, not
6932 describe_other_breakpoints (struct gdbarch *gdbarch,
6933 struct program_space *pspace, CORE_ADDR pc,
6934 struct obj_section *section, int thread)
6937 struct breakpoint *b;
6940 others += (user_breakpoint_p (b)
6941 && breakpoint_has_pc (b, pspace, pc, section));
6945 printf_filtered (_("Note: breakpoint "));
6946 else /* if (others == ???) */
6947 printf_filtered (_("Note: breakpoints "));
6949 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6952 printf_filtered ("%d", b->number);
6953 if (b->thread == -1 && thread != -1)
6954 printf_filtered (" (all threads)");
6955 else if (b->thread != -1)
6956 printf_filtered (" (thread %d)", b->thread);
6957 printf_filtered ("%s%s ",
6958 ((b->enable_state == bp_disabled
6959 || b->enable_state == bp_call_disabled)
6961 : b->enable_state == bp_permanent
6965 : ((others == 1) ? " and" : ""));
6967 printf_filtered (_("also set at pc "));
6968 fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6969 printf_filtered (".\n");
6974 /* Return true iff it is meaningful to use the address member of
6975 BPT. For some breakpoint types, the address member is irrelevant
6976 and it makes no sense to attempt to compare it to other addresses
6977 (or use it for any other purpose either).
6979 More specifically, each of the following breakpoint types will
6980 always have a zero valued address and we don't want to mark
6981 breakpoints of any of these types to be a duplicate of an actual
6982 breakpoint at address zero:
6990 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6992 enum bptype type = bpt->type;
6994 return (type != bp_watchpoint && type != bp_catchpoint);
6997 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6998 true if LOC1 and LOC2 represent the same watchpoint location. */
7001 watchpoint_locations_match (struct bp_location *loc1,
7002 struct bp_location *loc2)
7004 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
7005 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
7007 /* Both of them must exist. */
7008 gdb_assert (w1 != NULL);
7009 gdb_assert (w2 != NULL);
7011 /* If the target can evaluate the condition expression in hardware,
7012 then we we need to insert both watchpoints even if they are at
7013 the same place. Otherwise the watchpoint will only trigger when
7014 the condition of whichever watchpoint was inserted evaluates to
7015 true, not giving a chance for GDB to check the condition of the
7016 other watchpoint. */
7018 && target_can_accel_watchpoint_condition (loc1->address,
7020 loc1->watchpoint_type,
7023 && target_can_accel_watchpoint_condition (loc2->address,
7025 loc2->watchpoint_type,
7029 /* Note that this checks the owner's type, not the location's. In
7030 case the target does not support read watchpoints, but does
7031 support access watchpoints, we'll have bp_read_watchpoint
7032 watchpoints with hw_access locations. Those should be considered
7033 duplicates of hw_read locations. The hw_read locations will
7034 become hw_access locations later. */
7035 return (loc1->owner->type == loc2->owner->type
7036 && loc1->pspace->aspace == loc2->pspace->aspace
7037 && loc1->address == loc2->address
7038 && loc1->length == loc2->length);
7041 /* See breakpoint.h. */
7044 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
7045 struct address_space *aspace2, CORE_ADDR addr2)
7047 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7048 || aspace1 == aspace2)
7052 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
7053 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
7054 matches ASPACE2. On targets that have global breakpoints, the address
7055 space doesn't really matter. */
7058 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
7059 int len1, struct address_space *aspace2,
7062 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7063 || aspace1 == aspace2)
7064 && addr2 >= addr1 && addr2 < addr1 + len1);
7067 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
7068 a ranged breakpoint. In most targets, a match happens only if ASPACE
7069 matches the breakpoint's address space. On targets that have global
7070 breakpoints, the address space doesn't really matter. */
7073 breakpoint_location_address_match (struct bp_location *bl,
7074 struct address_space *aspace,
7077 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
7080 && breakpoint_address_match_range (bl->pspace->aspace,
7081 bl->address, bl->length,
7085 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7086 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7087 true, otherwise returns false. */
7090 tracepoint_locations_match (struct bp_location *loc1,
7091 struct bp_location *loc2)
7093 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7094 /* Since tracepoint locations are never duplicated with others', tracepoint
7095 locations at the same address of different tracepoints are regarded as
7096 different locations. */
7097 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7102 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
7103 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
7104 represent the same location. */
7107 breakpoint_locations_match (struct bp_location *loc1,
7108 struct bp_location *loc2)
7110 int hw_point1, hw_point2;
7112 /* Both of them must not be in moribund_locations. */
7113 gdb_assert (loc1->owner != NULL);
7114 gdb_assert (loc2->owner != NULL);
7116 hw_point1 = is_hardware_watchpoint (loc1->owner);
7117 hw_point2 = is_hardware_watchpoint (loc2->owner);
7119 if (hw_point1 != hw_point2)
7122 return watchpoint_locations_match (loc1, loc2);
7123 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7124 return tracepoint_locations_match (loc1, loc2);
7126 /* We compare bp_location.length in order to cover ranged breakpoints. */
7127 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7128 loc2->pspace->aspace, loc2->address)
7129 && loc1->length == loc2->length);
7133 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7134 int bnum, int have_bnum)
7136 /* The longest string possibly returned by hex_string_custom
7137 is 50 chars. These must be at least that big for safety. */
7141 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7142 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7144 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7145 bnum, astr1, astr2);
7147 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7150 /* Adjust a breakpoint's address to account for architectural
7151 constraints on breakpoint placement. Return the adjusted address.
7152 Note: Very few targets require this kind of adjustment. For most
7153 targets, this function is simply the identity function. */
7156 adjust_breakpoint_address (struct gdbarch *gdbarch,
7157 CORE_ADDR bpaddr, enum bptype bptype)
7159 if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7161 /* Very few targets need any kind of breakpoint adjustment. */
7164 else if (bptype == bp_watchpoint
7165 || bptype == bp_hardware_watchpoint
7166 || bptype == bp_read_watchpoint
7167 || bptype == bp_access_watchpoint
7168 || bptype == bp_catchpoint)
7170 /* Watchpoints and the various bp_catch_* eventpoints should not
7171 have their addresses modified. */
7176 CORE_ADDR adjusted_bpaddr;
7178 /* Some targets have architectural constraints on the placement
7179 of breakpoint instructions. Obtain the adjusted address. */
7180 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7182 /* An adjusted breakpoint address can significantly alter
7183 a user's expectations. Print a warning if an adjustment
7185 if (adjusted_bpaddr != bpaddr)
7186 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7188 return adjusted_bpaddr;
7193 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
7194 struct breakpoint *owner)
7196 memset (loc, 0, sizeof (*loc));
7198 gdb_assert (ops != NULL);
7203 loc->cond_bytecode = NULL;
7204 loc->shlib_disabled = 0;
7207 switch (owner->type)
7213 case bp_longjmp_resume:
7214 case bp_longjmp_call_dummy:
7216 case bp_exception_resume:
7217 case bp_step_resume:
7218 case bp_hp_step_resume:
7219 case bp_watchpoint_scope:
7221 case bp_std_terminate:
7222 case bp_shlib_event:
7223 case bp_thread_event:
7224 case bp_overlay_event:
7226 case bp_longjmp_master:
7227 case bp_std_terminate_master:
7228 case bp_exception_master:
7229 case bp_gnu_ifunc_resolver:
7230 case bp_gnu_ifunc_resolver_return:
7232 loc->loc_type = bp_loc_software_breakpoint;
7233 mark_breakpoint_location_modified (loc);
7235 case bp_hardware_breakpoint:
7236 loc->loc_type = bp_loc_hardware_breakpoint;
7237 mark_breakpoint_location_modified (loc);
7239 case bp_hardware_watchpoint:
7240 case bp_read_watchpoint:
7241 case bp_access_watchpoint:
7242 loc->loc_type = bp_loc_hardware_watchpoint;
7247 case bp_fast_tracepoint:
7248 case bp_static_tracepoint:
7249 loc->loc_type = bp_loc_other;
7252 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7258 /* Allocate a struct bp_location. */
7260 static struct bp_location *
7261 allocate_bp_location (struct breakpoint *bpt)
7263 return bpt->ops->allocate_location (bpt);
7267 free_bp_location (struct bp_location *loc)
7269 loc->ops->dtor (loc);
7273 /* Increment reference count. */
7276 incref_bp_location (struct bp_location *bl)
7281 /* Decrement reference count. If the reference count reaches 0,
7282 destroy the bp_location. Sets *BLP to NULL. */
7285 decref_bp_location (struct bp_location **blp)
7287 gdb_assert ((*blp)->refc > 0);
7289 if (--(*blp)->refc == 0)
7290 free_bp_location (*blp);
7294 /* Add breakpoint B at the end of the global breakpoint chain. */
7297 add_to_breakpoint_chain (struct breakpoint *b)
7299 struct breakpoint *b1;
7301 /* Add this breakpoint to the end of the chain so that a list of
7302 breakpoints will come out in order of increasing numbers. */
7304 b1 = breakpoint_chain;
7306 breakpoint_chain = b;
7315 /* Initializes breakpoint B with type BPTYPE and no locations yet. */
7318 init_raw_breakpoint_without_location (struct breakpoint *b,
7319 struct gdbarch *gdbarch,
7321 const struct breakpoint_ops *ops)
7323 memset (b, 0, sizeof (*b));
7325 gdb_assert (ops != NULL);
7329 b->gdbarch = gdbarch;
7330 b->language = current_language->la_language;
7331 b->input_radix = input_radix;
7333 b->enable_state = bp_enabled;
7336 b->ignore_count = 0;
7338 b->frame_id = null_frame_id;
7339 b->condition_not_parsed = 0;
7340 b->py_bp_object = NULL;
7341 b->related_breakpoint = b;
7344 /* Helper to set_raw_breakpoint below. Creates a breakpoint
7345 that has type BPTYPE and has no locations as yet. */
7347 static struct breakpoint *
7348 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7350 const struct breakpoint_ops *ops)
7352 struct breakpoint *b = XNEW (struct breakpoint);
7354 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7355 add_to_breakpoint_chain (b);
7359 /* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7360 resolutions should be made as the user specified the location explicitly
7364 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7366 gdb_assert (loc->owner != NULL);
7368 if (loc->owner->type == bp_breakpoint
7369 || loc->owner->type == bp_hardware_breakpoint
7370 || is_tracepoint (loc->owner))
7373 const char *function_name;
7374 CORE_ADDR func_addr;
7376 find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7377 &func_addr, NULL, &is_gnu_ifunc);
7379 if (is_gnu_ifunc && !explicit_loc)
7381 struct breakpoint *b = loc->owner;
7383 gdb_assert (loc->pspace == current_program_space);
7384 if (gnu_ifunc_resolve_name (function_name,
7385 &loc->requested_address))
7387 /* Recalculate ADDRESS based on new REQUESTED_ADDRESS. */
7388 loc->address = adjust_breakpoint_address (loc->gdbarch,
7389 loc->requested_address,
7392 else if (b->type == bp_breakpoint && b->loc == loc
7393 && loc->next == NULL && b->related_breakpoint == b)
7395 /* Create only the whole new breakpoint of this type but do not
7396 mess more complicated breakpoints with multiple locations. */
7397 b->type = bp_gnu_ifunc_resolver;
7398 /* Remember the resolver's address for use by the return
7400 loc->related_address = func_addr;
7405 loc->function_name = xstrdup (function_name);
7409 /* Attempt to determine architecture of location identified by SAL. */
7411 get_sal_arch (struct symtab_and_line sal)
7414 return get_objfile_arch (sal.section->objfile);
7416 return get_objfile_arch (sal.symtab->objfile);
7421 /* Low level routine for partially initializing a breakpoint of type
7422 BPTYPE. The newly created breakpoint's address, section, source
7423 file name, and line number are provided by SAL.
7425 It is expected that the caller will complete the initialization of
7426 the newly created breakpoint struct as well as output any status
7427 information regarding the creation of a new breakpoint. */
7430 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7431 struct symtab_and_line sal, enum bptype bptype,
7432 const struct breakpoint_ops *ops)
7434 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7436 add_location_to_breakpoint (b, &sal);
7438 if (bptype != bp_catchpoint)
7439 gdb_assert (sal.pspace != NULL);
7441 /* Store the program space that was used to set the breakpoint,
7442 except for ordinary breakpoints, which are independent of the
7444 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7445 b->pspace = sal.pspace;
7448 /* set_raw_breakpoint is a low level routine for allocating and
7449 partially initializing a breakpoint of type BPTYPE. The newly
7450 created breakpoint's address, section, source file name, and line
7451 number are provided by SAL. The newly created and partially
7452 initialized breakpoint is added to the breakpoint chain and
7453 is also returned as the value of this function.
7455 It is expected that the caller will complete the initialization of
7456 the newly created breakpoint struct as well as output any status
7457 information regarding the creation of a new breakpoint. In
7458 particular, set_raw_breakpoint does NOT set the breakpoint
7459 number! Care should be taken to not allow an error to occur
7460 prior to completing the initialization of the breakpoint. If this
7461 should happen, a bogus breakpoint will be left on the chain. */
7464 set_raw_breakpoint (struct gdbarch *gdbarch,
7465 struct symtab_and_line sal, enum bptype bptype,
7466 const struct breakpoint_ops *ops)
7468 struct breakpoint *b = XNEW (struct breakpoint);
7470 init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7471 add_to_breakpoint_chain (b);
7476 /* Note that the breakpoint object B describes a permanent breakpoint
7477 instruction, hard-wired into the inferior's code. */
7479 make_breakpoint_permanent (struct breakpoint *b)
7481 struct bp_location *bl;
7483 b->enable_state = bp_permanent;
7485 /* By definition, permanent breakpoints are already present in the
7486 code. Mark all locations as inserted. For now,
7487 make_breakpoint_permanent is called in just one place, so it's
7488 hard to say if it's reasonable to have permanent breakpoint with
7489 multiple locations or not, but it's easy to implement. */
7490 for (bl = b->loc; bl; bl = bl->next)
7494 /* Call this routine when stepping and nexting to enable a breakpoint
7495 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7496 initiated the operation. */
7499 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7501 struct breakpoint *b, *b_tmp;
7502 int thread = tp->num;
7504 /* To avoid having to rescan all objfile symbols at every step,
7505 we maintain a list of continually-inserted but always disabled
7506 longjmp "master" breakpoints. Here, we simply create momentary
7507 clones of those and enable them for the requested thread. */
7508 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7509 if (b->pspace == current_program_space
7510 && (b->type == bp_longjmp_master
7511 || b->type == bp_exception_master))
7513 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7514 struct breakpoint *clone;
7516 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7517 after their removal. */
7518 clone = momentary_breakpoint_from_master (b, type,
7519 &longjmp_breakpoint_ops, 1);
7520 clone->thread = thread;
7523 tp->initiating_frame = frame;
7526 /* Delete all longjmp breakpoints from THREAD. */
7528 delete_longjmp_breakpoint (int thread)
7530 struct breakpoint *b, *b_tmp;
7532 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7533 if (b->type == bp_longjmp || b->type == bp_exception)
7535 if (b->thread == thread)
7536 delete_breakpoint (b);
7541 delete_longjmp_breakpoint_at_next_stop (int thread)
7543 struct breakpoint *b, *b_tmp;
7545 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7546 if (b->type == bp_longjmp || b->type == bp_exception)
7548 if (b->thread == thread)
7549 b->disposition = disp_del_at_next_stop;
7553 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7554 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7555 pointer to any of them. Return NULL if this system cannot place longjmp
7559 set_longjmp_breakpoint_for_call_dummy (void)
7561 struct breakpoint *b, *retval = NULL;
7564 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7566 struct breakpoint *new_b;
7568 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7569 &momentary_breakpoint_ops,
7571 new_b->thread = pid_to_thread_id (inferior_ptid);
7573 /* Link NEW_B into the chain of RETVAL breakpoints. */
7575 gdb_assert (new_b->related_breakpoint == new_b);
7578 new_b->related_breakpoint = retval;
7579 while (retval->related_breakpoint != new_b->related_breakpoint)
7580 retval = retval->related_breakpoint;
7581 retval->related_breakpoint = new_b;
7587 /* Verify all existing dummy frames and their associated breakpoints for
7588 TP. Remove those which can no longer be found in the current frame
7591 You should call this function only at places where it is safe to currently
7592 unwind the whole stack. Failed stack unwind would discard live dummy
7596 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7598 struct breakpoint *b, *b_tmp;
7600 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7601 if (b->type == bp_longjmp_call_dummy && b->thread == tp->num)
7603 struct breakpoint *dummy_b = b->related_breakpoint;
7605 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7606 dummy_b = dummy_b->related_breakpoint;
7607 if (dummy_b->type != bp_call_dummy
7608 || frame_find_by_id (dummy_b->frame_id) != NULL)
7611 dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7613 while (b->related_breakpoint != b)
7615 if (b_tmp == b->related_breakpoint)
7616 b_tmp = b->related_breakpoint->next;
7617 delete_breakpoint (b->related_breakpoint);
7619 delete_breakpoint (b);
7624 enable_overlay_breakpoints (void)
7626 struct breakpoint *b;
7629 if (b->type == bp_overlay_event)
7631 b->enable_state = bp_enabled;
7632 update_global_location_list (UGLL_MAY_INSERT);
7633 overlay_events_enabled = 1;
7638 disable_overlay_breakpoints (void)
7640 struct breakpoint *b;
7643 if (b->type == bp_overlay_event)
7645 b->enable_state = bp_disabled;
7646 update_global_location_list (UGLL_DONT_INSERT);
7647 overlay_events_enabled = 0;
7651 /* Set an active std::terminate breakpoint for each std::terminate
7652 master breakpoint. */
7654 set_std_terminate_breakpoint (void)
7656 struct breakpoint *b, *b_tmp;
7658 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7659 if (b->pspace == current_program_space
7660 && b->type == bp_std_terminate_master)
7662 momentary_breakpoint_from_master (b, bp_std_terminate,
7663 &momentary_breakpoint_ops, 1);
7667 /* Delete all the std::terminate breakpoints. */
7669 delete_std_terminate_breakpoint (void)
7671 struct breakpoint *b, *b_tmp;
7673 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7674 if (b->type == bp_std_terminate)
7675 delete_breakpoint (b);
7679 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7681 struct breakpoint *b;
7683 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7684 &internal_breakpoint_ops);
7686 b->enable_state = bp_enabled;
7687 /* addr_string has to be used or breakpoint_re_set will delete me. */
7689 = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7691 update_global_location_list_nothrow (UGLL_MAY_INSERT);
7697 remove_thread_event_breakpoints (void)
7699 struct breakpoint *b, *b_tmp;
7701 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7702 if (b->type == bp_thread_event
7703 && b->loc->pspace == current_program_space)
7704 delete_breakpoint (b);
7707 struct lang_and_radix
7713 /* Create a breakpoint for JIT code registration and unregistration. */
7716 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7718 struct breakpoint *b;
7720 b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7721 &internal_breakpoint_ops);
7722 update_global_location_list_nothrow (UGLL_MAY_INSERT);
7726 /* Remove JIT code registration and unregistration breakpoint(s). */
7729 remove_jit_event_breakpoints (void)
7731 struct breakpoint *b, *b_tmp;
7733 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7734 if (b->type == bp_jit_event
7735 && b->loc->pspace == current_program_space)
7736 delete_breakpoint (b);
7740 remove_solib_event_breakpoints (void)
7742 struct breakpoint *b, *b_tmp;
7744 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7745 if (b->type == bp_shlib_event
7746 && b->loc->pspace == current_program_space)
7747 delete_breakpoint (b);
7750 /* See breakpoint.h. */
7753 remove_solib_event_breakpoints_at_next_stop (void)
7755 struct breakpoint *b, *b_tmp;
7757 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7758 if (b->type == bp_shlib_event
7759 && b->loc->pspace == current_program_space)
7760 b->disposition = disp_del_at_next_stop;
7763 /* Helper for create_solib_event_breakpoint /
7764 create_and_insert_solib_event_breakpoint. Allows specifying which
7765 INSERT_MODE to pass through to update_global_location_list. */
7767 static struct breakpoint *
7768 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7769 enum ugll_insert_mode insert_mode)
7771 struct breakpoint *b;
7773 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7774 &internal_breakpoint_ops);
7775 update_global_location_list_nothrow (insert_mode);
7780 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7782 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7785 /* See breakpoint.h. */
7788 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7790 struct breakpoint *b;
7792 /* Explicitly tell update_global_location_list to insert
7794 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7795 if (!b->loc->inserted)
7797 delete_breakpoint (b);
7803 /* Disable any breakpoints that are on code in shared libraries. Only
7804 apply to enabled breakpoints, disabled ones can just stay disabled. */
7807 disable_breakpoints_in_shlibs (void)
7809 struct bp_location *loc, **locp_tmp;
7811 ALL_BP_LOCATIONS (loc, locp_tmp)
7813 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7814 struct breakpoint *b = loc->owner;
7816 /* We apply the check to all breakpoints, including disabled for
7817 those with loc->duplicate set. This is so that when breakpoint
7818 becomes enabled, or the duplicate is removed, gdb will try to
7819 insert all breakpoints. If we don't set shlib_disabled here,
7820 we'll try to insert those breakpoints and fail. */
7821 if (((b->type == bp_breakpoint)
7822 || (b->type == bp_jit_event)
7823 || (b->type == bp_hardware_breakpoint)
7824 || (is_tracepoint (b)))
7825 && loc->pspace == current_program_space
7826 && !loc->shlib_disabled
7827 && solib_name_from_address (loc->pspace, loc->address)
7830 loc->shlib_disabled = 1;
7835 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7836 notification of unloaded_shlib. Only apply to enabled breakpoints,
7837 disabled ones can just stay disabled. */
7840 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7842 struct bp_location *loc, **locp_tmp;
7843 int disabled_shlib_breaks = 0;
7845 /* SunOS a.out shared libraries are always mapped, so do not
7846 disable breakpoints; they will only be reported as unloaded
7847 through clear_solib when GDB discards its shared library
7848 list. See clear_solib for more information. */
7849 if (exec_bfd != NULL
7850 && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7853 ALL_BP_LOCATIONS (loc, locp_tmp)
7855 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7856 struct breakpoint *b = loc->owner;
7858 if (solib->pspace == loc->pspace
7859 && !loc->shlib_disabled
7860 && (((b->type == bp_breakpoint
7861 || b->type == bp_jit_event
7862 || b->type == bp_hardware_breakpoint)
7863 && (loc->loc_type == bp_loc_hardware_breakpoint
7864 || loc->loc_type == bp_loc_software_breakpoint))
7865 || is_tracepoint (b))
7866 && solib_contains_address_p (solib, loc->address))
7868 loc->shlib_disabled = 1;
7869 /* At this point, we cannot rely on remove_breakpoint
7870 succeeding so we must mark the breakpoint as not inserted
7871 to prevent future errors occurring in remove_breakpoints. */
7874 /* This may cause duplicate notifications for the same breakpoint. */
7875 observer_notify_breakpoint_modified (b);
7877 if (!disabled_shlib_breaks)
7879 target_terminal_ours_for_output ();
7880 warning (_("Temporarily disabling breakpoints "
7881 "for unloaded shared library \"%s\""),
7884 disabled_shlib_breaks = 1;
7889 /* Disable any breakpoints and tracepoints in OBJFILE upon
7890 notification of free_objfile. Only apply to enabled breakpoints,
7891 disabled ones can just stay disabled. */
7894 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7896 struct breakpoint *b;
7898 if (objfile == NULL)
7901 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7902 managed by the user with add-symbol-file/remove-symbol-file.
7903 Similarly to how breakpoints in shared libraries are handled in
7904 response to "nosharedlibrary", mark breakpoints in such modules
7905 shlib_disabled so they end up uninserted on the next global
7906 location list update. Shared libraries not loaded by the user
7907 aren't handled here -- they're already handled in
7908 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7909 solib_unloaded observer. We skip objfiles that are not
7910 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7912 if ((objfile->flags & OBJF_SHARED) == 0
7913 || (objfile->flags & OBJF_USERLOADED) == 0)
7918 struct bp_location *loc;
7919 int bp_modified = 0;
7921 if (!is_breakpoint (b) && !is_tracepoint (b))
7924 for (loc = b->loc; loc != NULL; loc = loc->next)
7926 CORE_ADDR loc_addr = loc->address;
7928 if (loc->loc_type != bp_loc_hardware_breakpoint
7929 && loc->loc_type != bp_loc_software_breakpoint)
7932 if (loc->shlib_disabled != 0)
7935 if (objfile->pspace != loc->pspace)
7938 if (loc->loc_type != bp_loc_hardware_breakpoint
7939 && loc->loc_type != bp_loc_software_breakpoint)
7942 if (is_addr_in_objfile (loc_addr, objfile))
7944 loc->shlib_disabled = 1;
7945 /* At this point, we don't know whether the object was
7946 unmapped from the inferior or not, so leave the
7947 inserted flag alone. We'll handle failure to
7948 uninsert quietly, in case the object was indeed
7951 mark_breakpoint_location_modified (loc);
7958 observer_notify_breakpoint_modified (b);
7962 /* FORK & VFORK catchpoints. */
7964 /* An instance of this type is used to represent a fork or vfork
7965 catchpoint. It includes a "struct breakpoint" as a kind of base
7966 class; users downcast to "struct breakpoint *" when needed. A
7967 breakpoint is really of this type iff its ops pointer points to
7968 CATCH_FORK_BREAKPOINT_OPS. */
7970 struct fork_catchpoint
7972 /* The base class. */
7973 struct breakpoint base;
7975 /* Process id of a child process whose forking triggered this
7976 catchpoint. This field is only valid immediately after this
7977 catchpoint has triggered. */
7978 ptid_t forked_inferior_pid;
7981 /* Implement the "insert" breakpoint_ops method for fork
7985 insert_catch_fork (struct bp_location *bl)
7987 return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
7990 /* Implement the "remove" breakpoint_ops method for fork
7994 remove_catch_fork (struct bp_location *bl)
7996 return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
7999 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
8003 breakpoint_hit_catch_fork (const struct bp_location *bl,
8004 struct address_space *aspace, CORE_ADDR bp_addr,
8005 const struct target_waitstatus *ws)
8007 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8009 if (ws->kind != TARGET_WAITKIND_FORKED)
8012 c->forked_inferior_pid = ws->value.related_pid;
8016 /* Implement the "print_it" breakpoint_ops method for fork
8019 static enum print_stop_action
8020 print_it_catch_fork (bpstat bs)
8022 struct ui_out *uiout = current_uiout;
8023 struct breakpoint *b = bs->breakpoint_at;
8024 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
8026 annotate_catchpoint (b->number);
8027 if (b->disposition == disp_del)
8028 ui_out_text (uiout, "\nTemporary catchpoint ");
8030 ui_out_text (uiout, "\nCatchpoint ");
8031 if (ui_out_is_mi_like_p (uiout))
8033 ui_out_field_string (uiout, "reason",
8034 async_reason_lookup (EXEC_ASYNC_FORK));
8035 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8037 ui_out_field_int (uiout, "bkptno", b->number);
8038 ui_out_text (uiout, " (forked process ");
8039 ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
8040 ui_out_text (uiout, "), ");
8041 return PRINT_SRC_AND_LOC;
8044 /* Implement the "print_one" breakpoint_ops method for fork
8048 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
8050 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8051 struct value_print_options opts;
8052 struct ui_out *uiout = current_uiout;
8054 get_user_print_options (&opts);
8056 /* Field 4, the address, is omitted (which makes the columns not
8057 line up too nicely with the headers, but the effect is relatively
8059 if (opts.addressprint)
8060 ui_out_field_skip (uiout, "addr");
8062 ui_out_text (uiout, "fork");
8063 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8065 ui_out_text (uiout, ", process ");
8066 ui_out_field_int (uiout, "what",
8067 ptid_get_pid (c->forked_inferior_pid));
8068 ui_out_spaces (uiout, 1);
8071 if (ui_out_is_mi_like_p (uiout))
8072 ui_out_field_string (uiout, "catch-type", "fork");
8075 /* Implement the "print_mention" breakpoint_ops method for fork
8079 print_mention_catch_fork (struct breakpoint *b)
8081 printf_filtered (_("Catchpoint %d (fork)"), b->number);
8084 /* Implement the "print_recreate" breakpoint_ops method for fork
8088 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
8090 fprintf_unfiltered (fp, "catch fork");
8091 print_recreate_thread (b, fp);
8094 /* The breakpoint_ops structure to be used in fork catchpoints. */
8096 static struct breakpoint_ops catch_fork_breakpoint_ops;
8098 /* Implement the "insert" breakpoint_ops method for vfork
8102 insert_catch_vfork (struct bp_location *bl)
8104 return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8107 /* Implement the "remove" breakpoint_ops method for vfork
8111 remove_catch_vfork (struct bp_location *bl)
8113 return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8116 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8120 breakpoint_hit_catch_vfork (const struct bp_location *bl,
8121 struct address_space *aspace, CORE_ADDR bp_addr,
8122 const struct target_waitstatus *ws)
8124 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8126 if (ws->kind != TARGET_WAITKIND_VFORKED)
8129 c->forked_inferior_pid = ws->value.related_pid;
8133 /* Implement the "print_it" breakpoint_ops method for vfork
8136 static enum print_stop_action
8137 print_it_catch_vfork (bpstat bs)
8139 struct ui_out *uiout = current_uiout;
8140 struct breakpoint *b = bs->breakpoint_at;
8141 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8143 annotate_catchpoint (b->number);
8144 if (b->disposition == disp_del)
8145 ui_out_text (uiout, "\nTemporary catchpoint ");
8147 ui_out_text (uiout, "\nCatchpoint ");
8148 if (ui_out_is_mi_like_p (uiout))
8150 ui_out_field_string (uiout, "reason",
8151 async_reason_lookup (EXEC_ASYNC_VFORK));
8152 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8154 ui_out_field_int (uiout, "bkptno", b->number);
8155 ui_out_text (uiout, " (vforked process ");
8156 ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
8157 ui_out_text (uiout, "), ");
8158 return PRINT_SRC_AND_LOC;
8161 /* Implement the "print_one" breakpoint_ops method for vfork
8165 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
8167 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8168 struct value_print_options opts;
8169 struct ui_out *uiout = current_uiout;
8171 get_user_print_options (&opts);
8172 /* Field 4, the address, is omitted (which makes the columns not
8173 line up too nicely with the headers, but the effect is relatively
8175 if (opts.addressprint)
8176 ui_out_field_skip (uiout, "addr");
8178 ui_out_text (uiout, "vfork");
8179 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8181 ui_out_text (uiout, ", process ");
8182 ui_out_field_int (uiout, "what",
8183 ptid_get_pid (c->forked_inferior_pid));
8184 ui_out_spaces (uiout, 1);
8187 if (ui_out_is_mi_like_p (uiout))
8188 ui_out_field_string (uiout, "catch-type", "vfork");
8191 /* Implement the "print_mention" breakpoint_ops method for vfork
8195 print_mention_catch_vfork (struct breakpoint *b)
8197 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8200 /* Implement the "print_recreate" breakpoint_ops method for vfork
8204 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8206 fprintf_unfiltered (fp, "catch vfork");
8207 print_recreate_thread (b, fp);
8210 /* The breakpoint_ops structure to be used in vfork catchpoints. */
8212 static struct breakpoint_ops catch_vfork_breakpoint_ops;
8214 /* An instance of this type is used to represent an solib catchpoint.
8215 It includes a "struct breakpoint" as a kind of base class; users
8216 downcast to "struct breakpoint *" when needed. A breakpoint is
8217 really of this type iff its ops pointer points to
8218 CATCH_SOLIB_BREAKPOINT_OPS. */
8220 struct solib_catchpoint
8222 /* The base class. */
8223 struct breakpoint base;
8225 /* True for "catch load", false for "catch unload". */
8226 unsigned char is_load;
8228 /* Regular expression to match, if any. COMPILED is only valid when
8229 REGEX is non-NULL. */
8235 dtor_catch_solib (struct breakpoint *b)
8237 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8240 regfree (&self->compiled);
8241 xfree (self->regex);
8243 base_breakpoint_ops.dtor (b);
8247 insert_catch_solib (struct bp_location *ignore)
8253 remove_catch_solib (struct bp_location *ignore)
8259 breakpoint_hit_catch_solib (const struct bp_location *bl,
8260 struct address_space *aspace,
8262 const struct target_waitstatus *ws)
8264 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8265 struct breakpoint *other;
8267 if (ws->kind == TARGET_WAITKIND_LOADED)
8270 ALL_BREAKPOINTS (other)
8272 struct bp_location *other_bl;
8274 if (other == bl->owner)
8277 if (other->type != bp_shlib_event)
8280 if (self->base.pspace != NULL && other->pspace != self->base.pspace)
8283 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8285 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8294 check_status_catch_solib (struct bpstats *bs)
8296 struct solib_catchpoint *self
8297 = (struct solib_catchpoint *) bs->breakpoint_at;
8302 struct so_list *iter;
8305 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8310 || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
8319 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8324 || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
8330 bs->print_it = print_it_noop;
8333 static enum print_stop_action
8334 print_it_catch_solib (bpstat bs)
8336 struct breakpoint *b = bs->breakpoint_at;
8337 struct ui_out *uiout = current_uiout;
8339 annotate_catchpoint (b->number);
8340 if (b->disposition == disp_del)
8341 ui_out_text (uiout, "\nTemporary catchpoint ");
8343 ui_out_text (uiout, "\nCatchpoint ");
8344 ui_out_field_int (uiout, "bkptno", b->number);
8345 ui_out_text (uiout, "\n");
8346 if (ui_out_is_mi_like_p (uiout))
8347 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8348 print_solib_event (1);
8349 return PRINT_SRC_AND_LOC;
8353 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8355 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8356 struct value_print_options opts;
8357 struct ui_out *uiout = current_uiout;
8360 get_user_print_options (&opts);
8361 /* Field 4, the address, is omitted (which makes the columns not
8362 line up too nicely with the headers, but the effect is relatively
8364 if (opts.addressprint)
8367 ui_out_field_skip (uiout, "addr");
8374 msg = xstrprintf (_("load of library matching %s"), self->regex);
8376 msg = xstrdup (_("load of library"));
8381 msg = xstrprintf (_("unload of library matching %s"), self->regex);
8383 msg = xstrdup (_("unload of library"));
8385 ui_out_field_string (uiout, "what", msg);
8388 if (ui_out_is_mi_like_p (uiout))
8389 ui_out_field_string (uiout, "catch-type",
8390 self->is_load ? "load" : "unload");
8394 print_mention_catch_solib (struct breakpoint *b)
8396 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8398 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8399 self->is_load ? "load" : "unload");
8403 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8405 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8407 fprintf_unfiltered (fp, "%s %s",
8408 b->disposition == disp_del ? "tcatch" : "catch",
8409 self->is_load ? "load" : "unload");
8411 fprintf_unfiltered (fp, " %s", self->regex);
8412 fprintf_unfiltered (fp, "\n");
8415 static struct breakpoint_ops catch_solib_breakpoint_ops;
8417 /* Shared helper function (MI and CLI) for creating and installing
8418 a shared object event catchpoint. If IS_LOAD is non-zero then
8419 the events to be caught are load events, otherwise they are
8420 unload events. If IS_TEMP is non-zero the catchpoint is a
8421 temporary one. If ENABLED is non-zero the catchpoint is
8422 created in an enabled state. */
8425 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
8427 struct solib_catchpoint *c;
8428 struct gdbarch *gdbarch = get_current_arch ();
8429 struct cleanup *cleanup;
8433 arg = skip_spaces (arg);
8435 c = XCNEW (struct solib_catchpoint);
8436 cleanup = make_cleanup (xfree, c);
8442 errcode = regcomp (&c->compiled, arg, REG_NOSUB);
8445 char *err = get_regcomp_error (errcode, &c->compiled);
8447 make_cleanup (xfree, err);
8448 error (_("Invalid regexp (%s): %s"), err, arg);
8450 c->regex = xstrdup (arg);
8453 c->is_load = is_load;
8454 init_catchpoint (&c->base, gdbarch, is_temp, NULL,
8455 &catch_solib_breakpoint_ops);
8457 c->base.enable_state = enabled ? bp_enabled : bp_disabled;
8459 discard_cleanups (cleanup);
8460 install_breakpoint (0, &c->base, 1);
8463 /* A helper function that does all the work for "catch load" and
8467 catch_load_or_unload (char *arg, int from_tty, int is_load,
8468 struct cmd_list_element *command)
8471 const int enabled = 1;
8473 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8475 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8479 catch_load_command_1 (char *arg, int from_tty,
8480 struct cmd_list_element *command)
8482 catch_load_or_unload (arg, from_tty, 1, command);
8486 catch_unload_command_1 (char *arg, int from_tty,
8487 struct cmd_list_element *command)
8489 catch_load_or_unload (arg, from_tty, 0, command);
8492 /* An instance of this type is used to represent a syscall catchpoint.
8493 It includes a "struct breakpoint" as a kind of base class; users
8494 downcast to "struct breakpoint *" when needed. A breakpoint is
8495 really of this type iff its ops pointer points to
8496 CATCH_SYSCALL_BREAKPOINT_OPS. */
8498 struct syscall_catchpoint
8500 /* The base class. */
8501 struct breakpoint base;
8503 /* Syscall numbers used for the 'catch syscall' feature. If no
8504 syscall has been specified for filtering, its value is NULL.
8505 Otherwise, it holds a list of all syscalls to be caught. The
8506 list elements are allocated with xmalloc. */
8507 VEC(int) *syscalls_to_be_caught;
8510 /* Implement the "dtor" breakpoint_ops method for syscall
8514 dtor_catch_syscall (struct breakpoint *b)
8516 struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8518 VEC_free (int, c->syscalls_to_be_caught);
8520 base_breakpoint_ops.dtor (b);
8523 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8525 struct catch_syscall_inferior_data
8527 /* We keep a count of the number of times the user has requested a
8528 particular syscall to be tracked, and pass this information to the
8529 target. This lets capable targets implement filtering directly. */
8531 /* Number of times that "any" syscall is requested. */
8532 int any_syscall_count;
8534 /* Count of each system call. */
8535 VEC(int) *syscalls_counts;
8537 /* This counts all syscall catch requests, so we can readily determine
8538 if any catching is necessary. */
8539 int total_syscalls_count;
8542 static struct catch_syscall_inferior_data*
8543 get_catch_syscall_inferior_data (struct inferior *inf)
8545 struct catch_syscall_inferior_data *inf_data;
8547 inf_data = inferior_data (inf, catch_syscall_inferior_data);
8548 if (inf_data == NULL)
8550 inf_data = XCNEW (struct catch_syscall_inferior_data);
8551 set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8558 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8564 /* Implement the "insert" breakpoint_ops method for syscall
8568 insert_catch_syscall (struct bp_location *bl)
8570 struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8571 struct inferior *inf = current_inferior ();
8572 struct catch_syscall_inferior_data *inf_data
8573 = get_catch_syscall_inferior_data (inf);
8575 ++inf_data->total_syscalls_count;
8576 if (!c->syscalls_to_be_caught)
8577 ++inf_data->any_syscall_count;
8583 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8588 if (iter >= VEC_length (int, inf_data->syscalls_counts))
8590 int old_size = VEC_length (int, inf_data->syscalls_counts);
8591 uintptr_t vec_addr_offset
8592 = old_size * ((uintptr_t) sizeof (int));
8594 VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8595 vec_addr = ((uintptr_t) VEC_address (int,
8596 inf_data->syscalls_counts)
8598 memset ((void *) vec_addr, 0,
8599 (iter + 1 - old_size) * sizeof (int));
8601 elem = VEC_index (int, inf_data->syscalls_counts, iter);
8602 VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8606 return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid),
8607 inf_data->total_syscalls_count != 0,
8608 inf_data->any_syscall_count,
8610 inf_data->syscalls_counts),
8612 inf_data->syscalls_counts));
8615 /* Implement the "remove" breakpoint_ops method for syscall
8619 remove_catch_syscall (struct bp_location *bl)
8621 struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8622 struct inferior *inf = current_inferior ();
8623 struct catch_syscall_inferior_data *inf_data
8624 = get_catch_syscall_inferior_data (inf);
8626 --inf_data->total_syscalls_count;
8627 if (!c->syscalls_to_be_caught)
8628 --inf_data->any_syscall_count;
8634 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8638 if (iter >= VEC_length (int, inf_data->syscalls_counts))
8639 /* Shouldn't happen. */
8641 elem = VEC_index (int, inf_data->syscalls_counts, iter);
8642 VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8646 return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid),
8647 inf_data->total_syscalls_count != 0,
8648 inf_data->any_syscall_count,
8650 inf_data->syscalls_counts),
8652 inf_data->syscalls_counts));
8655 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8659 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8660 struct address_space *aspace, CORE_ADDR bp_addr,
8661 const struct target_waitstatus *ws)
8663 /* We must check if we are catching specific syscalls in this
8664 breakpoint. If we are, then we must guarantee that the called
8665 syscall is the same syscall we are catching. */
8666 int syscall_number = 0;
8667 const struct syscall_catchpoint *c
8668 = (const struct syscall_catchpoint *) bl->owner;
8670 if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8671 && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8674 syscall_number = ws->value.syscall_number;
8676 /* Now, checking if the syscall is the same. */
8677 if (c->syscalls_to_be_caught)
8682 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8684 if (syscall_number == iter)
8693 /* Implement the "print_it" breakpoint_ops method for syscall
8696 static enum print_stop_action
8697 print_it_catch_syscall (bpstat bs)
8699 struct ui_out *uiout = current_uiout;
8700 struct breakpoint *b = bs->breakpoint_at;
8701 /* These are needed because we want to know in which state a
8702 syscall is. It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8703 or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8704 must print "called syscall" or "returned from syscall". */
8706 struct target_waitstatus last;
8709 get_last_target_status (&ptid, &last);
8711 get_syscall_by_number (last.value.syscall_number, &s);
8713 annotate_catchpoint (b->number);
8715 if (b->disposition == disp_del)
8716 ui_out_text (uiout, "\nTemporary catchpoint ");
8718 ui_out_text (uiout, "\nCatchpoint ");
8719 if (ui_out_is_mi_like_p (uiout))
8721 ui_out_field_string (uiout, "reason",
8722 async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8723 ? EXEC_ASYNC_SYSCALL_ENTRY
8724 : EXEC_ASYNC_SYSCALL_RETURN));
8725 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8727 ui_out_field_int (uiout, "bkptno", b->number);
8729 if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8730 ui_out_text (uiout, " (call to syscall ");
8732 ui_out_text (uiout, " (returned from syscall ");
8734 if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8735 ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8737 ui_out_field_string (uiout, "syscall-name", s.name);
8739 ui_out_text (uiout, "), ");
8741 return PRINT_SRC_AND_LOC;
8744 /* Implement the "print_one" breakpoint_ops method for syscall
8748 print_one_catch_syscall (struct breakpoint *b,
8749 struct bp_location **last_loc)
8751 struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8752 struct value_print_options opts;
8753 struct ui_out *uiout = current_uiout;
8755 get_user_print_options (&opts);
8756 /* Field 4, the address, is omitted (which makes the columns not
8757 line up too nicely with the headers, but the effect is relatively
8759 if (opts.addressprint)
8760 ui_out_field_skip (uiout, "addr");
8763 if (c->syscalls_to_be_caught
8764 && VEC_length (int, c->syscalls_to_be_caught) > 1)
8765 ui_out_text (uiout, "syscalls \"");
8767 ui_out_text (uiout, "syscall \"");
8769 if (c->syscalls_to_be_caught)
8772 char *text = xstrprintf ("%s", "");
8775 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8780 get_syscall_by_number (iter, &s);
8783 text = xstrprintf ("%s%s, ", text, s.name);
8785 text = xstrprintf ("%s%d, ", text, iter);
8787 /* We have to xfree the last 'text' (now stored at 'x')
8788 because xstrprintf dynamically allocates new space for it
8792 /* Remove the last comma. */
8793 text[strlen (text) - 2] = '\0';
8794 ui_out_field_string (uiout, "what", text);
8797 ui_out_field_string (uiout, "what", "<any syscall>");
8798 ui_out_text (uiout, "\" ");
8800 if (ui_out_is_mi_like_p (uiout))
8801 ui_out_field_string (uiout, "catch-type", "syscall");
8804 /* Implement the "print_mention" breakpoint_ops method for syscall
8808 print_mention_catch_syscall (struct breakpoint *b)
8810 struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8812 if (c->syscalls_to_be_caught)
8816 if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8817 printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8819 printf_filtered (_("Catchpoint %d (syscall"), b->number);
8822 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8826 get_syscall_by_number (iter, &s);
8829 printf_filtered (" '%s' [%d]", s.name, s.number);
8831 printf_filtered (" %d", s.number);
8833 printf_filtered (")");
8836 printf_filtered (_("Catchpoint %d (any syscall)"),
8840 /* Implement the "print_recreate" breakpoint_ops method for syscall
8844 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8846 struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8848 fprintf_unfiltered (fp, "catch syscall");
8850 if (c->syscalls_to_be_caught)
8855 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8860 get_syscall_by_number (iter, &s);
8862 fprintf_unfiltered (fp, " %s", s.name);
8864 fprintf_unfiltered (fp, " %d", s.number);
8867 print_recreate_thread (b, fp);
8870 /* The breakpoint_ops structure to be used in syscall catchpoints. */
8872 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8874 /* Returns non-zero if 'b' is a syscall catchpoint. */
8877 syscall_catchpoint_p (struct breakpoint *b)
8879 return (b->ops == &catch_syscall_breakpoint_ops);
8882 /* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8883 is non-zero, then make the breakpoint temporary. If COND_STRING is
8884 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8885 the breakpoint_ops structure associated to the catchpoint. */
8888 init_catchpoint (struct breakpoint *b,
8889 struct gdbarch *gdbarch, int tempflag,
8891 const struct breakpoint_ops *ops)
8893 struct symtab_and_line sal;
8896 sal.pspace = current_program_space;
8898 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8900 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8901 b->disposition = tempflag ? disp_del : disp_donttouch;
8905 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8907 add_to_breakpoint_chain (b);
8908 set_breakpoint_number (internal, b);
8909 if (is_tracepoint (b))
8910 set_tracepoint_count (breakpoint_count);
8913 observer_notify_breakpoint_created (b);
8916 update_global_location_list (UGLL_MAY_INSERT);
8920 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8921 int tempflag, char *cond_string,
8922 const struct breakpoint_ops *ops)
8924 struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8926 init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8928 c->forked_inferior_pid = null_ptid;
8930 install_breakpoint (0, &c->base, 1);
8933 /* Exec catchpoints. */
8935 /* An instance of this type is used to represent an exec catchpoint.
8936 It includes a "struct breakpoint" as a kind of base class; users
8937 downcast to "struct breakpoint *" when needed. A breakpoint is
8938 really of this type iff its ops pointer points to
8939 CATCH_EXEC_BREAKPOINT_OPS. */
8941 struct exec_catchpoint
8943 /* The base class. */
8944 struct breakpoint base;
8946 /* Filename of a program whose exec triggered this catchpoint.
8947 This field is only valid immediately after this catchpoint has
8949 char *exec_pathname;
8952 /* Implement the "dtor" breakpoint_ops method for exec
8956 dtor_catch_exec (struct breakpoint *b)
8958 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8960 xfree (c->exec_pathname);
8962 base_breakpoint_ops.dtor (b);
8966 insert_catch_exec (struct bp_location *bl)
8968 return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8972 remove_catch_exec (struct bp_location *bl)
8974 return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8978 breakpoint_hit_catch_exec (const struct bp_location *bl,
8979 struct address_space *aspace, CORE_ADDR bp_addr,
8980 const struct target_waitstatus *ws)
8982 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8984 if (ws->kind != TARGET_WAITKIND_EXECD)
8987 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8991 static enum print_stop_action
8992 print_it_catch_exec (bpstat bs)
8994 struct ui_out *uiout = current_uiout;
8995 struct breakpoint *b = bs->breakpoint_at;
8996 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8998 annotate_catchpoint (b->number);
8999 if (b->disposition == disp_del)
9000 ui_out_text (uiout, "\nTemporary catchpoint ");
9002 ui_out_text (uiout, "\nCatchpoint ");
9003 if (ui_out_is_mi_like_p (uiout))
9005 ui_out_field_string (uiout, "reason",
9006 async_reason_lookup (EXEC_ASYNC_EXEC));
9007 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9009 ui_out_field_int (uiout, "bkptno", b->number);
9010 ui_out_text (uiout, " (exec'd ");
9011 ui_out_field_string (uiout, "new-exec", c->exec_pathname);
9012 ui_out_text (uiout, "), ");
9014 return PRINT_SRC_AND_LOC;
9018 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
9020 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
9021 struct value_print_options opts;
9022 struct ui_out *uiout = current_uiout;
9024 get_user_print_options (&opts);
9026 /* Field 4, the address, is omitted (which makes the columns
9027 not line up too nicely with the headers, but the effect
9028 is relatively readable). */
9029 if (opts.addressprint)
9030 ui_out_field_skip (uiout, "addr");
9032 ui_out_text (uiout, "exec");
9033 if (c->exec_pathname != NULL)
9035 ui_out_text (uiout, ", program \"");
9036 ui_out_field_string (uiout, "what", c->exec_pathname);
9037 ui_out_text (uiout, "\" ");
9040 if (ui_out_is_mi_like_p (uiout))
9041 ui_out_field_string (uiout, "catch-type", "exec");
9045 print_mention_catch_exec (struct breakpoint *b)
9047 printf_filtered (_("Catchpoint %d (exec)"), b->number);
9050 /* Implement the "print_recreate" breakpoint_ops method for exec
9054 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
9056 fprintf_unfiltered (fp, "catch exec");
9057 print_recreate_thread (b, fp);
9060 static struct breakpoint_ops catch_exec_breakpoint_ops;
9063 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
9064 const struct breakpoint_ops *ops)
9066 struct syscall_catchpoint *c;
9067 struct gdbarch *gdbarch = get_current_arch ();
9069 c = XNEW (struct syscall_catchpoint);
9070 init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
9071 c->syscalls_to_be_caught = filter;
9073 install_breakpoint (0, &c->base, 1);
9077 hw_breakpoint_used_count (void)
9080 struct breakpoint *b;
9081 struct bp_location *bl;
9085 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
9086 for (bl = b->loc; bl; bl = bl->next)
9088 /* Special types of hardware breakpoints may use more than
9090 i += b->ops->resources_needed (bl);
9097 /* Returns the resources B would use if it were a hardware
9101 hw_watchpoint_use_count (struct breakpoint *b)
9104 struct bp_location *bl;
9106 if (!breakpoint_enabled (b))
9109 for (bl = b->loc; bl; bl = bl->next)
9111 /* Special types of hardware watchpoints may use more than
9113 i += b->ops->resources_needed (bl);
9119 /* Returns the sum the used resources of all hardware watchpoints of
9120 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
9121 the sum of the used resources of all hardware watchpoints of other
9122 types _not_ TYPE. */
9125 hw_watchpoint_used_count_others (struct breakpoint *except,
9126 enum bptype type, int *other_type_used)
9129 struct breakpoint *b;
9131 *other_type_used = 0;
9136 if (!breakpoint_enabled (b))
9139 if (b->type == type)
9140 i += hw_watchpoint_use_count (b);
9141 else if (is_hardware_watchpoint (b))
9142 *other_type_used = 1;
9149 disable_watchpoints_before_interactive_call_start (void)
9151 struct breakpoint *b;
9155 if (is_watchpoint (b) && breakpoint_enabled (b))
9157 b->enable_state = bp_call_disabled;
9158 update_global_location_list (UGLL_DONT_INSERT);
9164 enable_watchpoints_after_interactive_call_stop (void)
9166 struct breakpoint *b;
9170 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
9172 b->enable_state = bp_enabled;
9173 update_global_location_list (UGLL_MAY_INSERT);
9179 disable_breakpoints_before_startup (void)
9181 current_program_space->executing_startup = 1;
9182 update_global_location_list (UGLL_DONT_INSERT);
9186 enable_breakpoints_after_startup (void)
9188 current_program_space->executing_startup = 0;
9189 breakpoint_re_set ();
9193 /* Set a breakpoint that will evaporate an end of command
9194 at address specified by SAL.
9195 Restrict it to frame FRAME if FRAME is nonzero. */
9198 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
9199 struct frame_id frame_id, enum bptype type)
9201 struct breakpoint *b;
9203 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
9205 gdb_assert (!frame_id_artificial_p (frame_id));
9207 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
9208 b->enable_state = bp_enabled;
9209 b->disposition = disp_donttouch;
9210 b->frame_id = frame_id;
9212 /* If we're debugging a multi-threaded program, then we want
9213 momentary breakpoints to be active in only a single thread of
9215 if (in_thread_list (inferior_ptid))
9216 b->thread = pid_to_thread_id (inferior_ptid);
9218 update_global_location_list_nothrow (UGLL_MAY_INSERT);
9223 /* Make a momentary breakpoint based on the master breakpoint ORIG.
9224 The new breakpoint will have type TYPE, use OPS as its
9225 breakpoint_ops, and will set enabled to LOC_ENABLED. */
9227 static struct breakpoint *
9228 momentary_breakpoint_from_master (struct breakpoint *orig,
9230 const struct breakpoint_ops *ops,
9233 struct breakpoint *copy;
9235 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
9236 copy->loc = allocate_bp_location (copy);
9237 set_breakpoint_location_function (copy->loc, 1);
9239 copy->loc->gdbarch = orig->loc->gdbarch;
9240 copy->loc->requested_address = orig->loc->requested_address;
9241 copy->loc->address = orig->loc->address;
9242 copy->loc->section = orig->loc->section;
9243 copy->loc->pspace = orig->loc->pspace;
9244 copy->loc->probe = orig->loc->probe;
9245 copy->loc->line_number = orig->loc->line_number;
9246 copy->loc->symtab = orig->loc->symtab;
9247 copy->loc->enabled = loc_enabled;
9248 copy->frame_id = orig->frame_id;
9249 copy->thread = orig->thread;
9250 copy->pspace = orig->pspace;
9252 copy->enable_state = bp_enabled;
9253 copy->disposition = disp_donttouch;
9254 copy->number = internal_breakpoint_number--;
9256 update_global_location_list_nothrow (UGLL_DONT_INSERT);
9260 /* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
9264 clone_momentary_breakpoint (struct breakpoint *orig)
9266 /* If there's nothing to clone, then return nothing. */
9270 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
9274 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
9277 struct symtab_and_line sal;
9279 sal = find_pc_line (pc, 0);
9281 sal.section = find_pc_overlay (pc);
9282 sal.explicit_pc = 1;
9284 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
9288 /* Tell the user we have just set a breakpoint B. */
9291 mention (struct breakpoint *b)
9293 b->ops->print_mention (b);
9294 if (ui_out_is_mi_like_p (current_uiout))
9296 printf_filtered ("\n");
9300 static struct bp_location *
9301 add_location_to_breakpoint (struct breakpoint *b,
9302 const struct symtab_and_line *sal)
9304 struct bp_location *loc, **tmp;
9305 CORE_ADDR adjusted_address;
9306 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
9308 if (loc_gdbarch == NULL)
9309 loc_gdbarch = b->gdbarch;
9311 /* Adjust the breakpoint's address prior to allocating a location.
9312 Once we call allocate_bp_location(), that mostly uninitialized
9313 location will be placed on the location chain. Adjustment of the
9314 breakpoint may cause target_read_memory() to be called and we do
9315 not want its scan of the location chain to find a breakpoint and
9316 location that's only been partially initialized. */
9317 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
9320 /* Sort the locations by their ADDRESS. */
9321 loc = allocate_bp_location (b);
9322 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
9323 tmp = &((*tmp)->next))
9328 loc->requested_address = sal->pc;
9329 loc->address = adjusted_address;
9330 loc->pspace = sal->pspace;
9331 loc->probe.probe = sal->probe;
9332 loc->probe.objfile = sal->objfile;
9333 gdb_assert (loc->pspace != NULL);
9334 loc->section = sal->section;
9335 loc->gdbarch = loc_gdbarch;
9336 loc->line_number = sal->line;
9337 loc->symtab = sal->symtab;
9339 set_breakpoint_location_function (loc,
9340 sal->explicit_pc || sal->explicit_line);
9345 /* Return 1 if LOC is pointing to a permanent breakpoint,
9346 return 0 otherwise. */
9349 bp_loc_is_permanent (struct bp_location *loc)
9353 const gdb_byte *bpoint;
9354 gdb_byte *target_mem;
9355 struct cleanup *cleanup;
9358 gdb_assert (loc != NULL);
9360 addr = loc->address;
9361 bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
9363 /* Software breakpoints unsupported? */
9367 target_mem = alloca (len);
9369 /* Enable the automatic memory restoration from breakpoints while
9370 we read the memory. Otherwise we could say about our temporary
9371 breakpoints they are permanent. */
9372 cleanup = save_current_space_and_thread ();
9374 switch_to_program_space_and_thread (loc->pspace);
9375 make_show_memory_breakpoints_cleanup (0);
9377 if (target_read_memory (loc->address, target_mem, len) == 0
9378 && memcmp (target_mem, bpoint, len) == 0)
9381 do_cleanups (cleanup);
9386 /* Build a command list for the dprintf corresponding to the current
9387 settings of the dprintf style options. */
9390 update_dprintf_command_list (struct breakpoint *b)
9392 char *dprintf_args = b->extra_string;
9393 char *printf_line = NULL;
9398 dprintf_args = skip_spaces (dprintf_args);
9400 /* Allow a comma, as it may have terminated a location, but don't
9402 if (*dprintf_args == ',')
9404 dprintf_args = skip_spaces (dprintf_args);
9406 if (*dprintf_args != '"')
9407 error (_("Bad format string, missing '\"'."));
9409 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
9410 printf_line = xstrprintf ("printf %s", dprintf_args);
9411 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
9413 if (!dprintf_function)
9414 error (_("No function supplied for dprintf call"));
9416 if (dprintf_channel && strlen (dprintf_channel) > 0)
9417 printf_line = xstrprintf ("call (void) %s (%s,%s)",
9422 printf_line = xstrprintf ("call (void) %s (%s)",
9426 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9428 if (target_can_run_breakpoint_commands ())
9429 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9432 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9433 printf_line = xstrprintf ("printf %s", dprintf_args);
9437 internal_error (__FILE__, __LINE__,
9438 _("Invalid dprintf style."));
9440 gdb_assert (printf_line != NULL);
9441 /* Manufacture a printf sequence. */
9443 struct command_line *printf_cmd_line
9444 = xmalloc (sizeof (struct command_line));
9446 printf_cmd_line = xmalloc (sizeof (struct command_line));
9447 printf_cmd_line->control_type = simple_control;
9448 printf_cmd_line->body_count = 0;
9449 printf_cmd_line->body_list = NULL;
9450 printf_cmd_line->next = NULL;
9451 printf_cmd_line->line = printf_line;
9453 breakpoint_set_commands (b, printf_cmd_line);
9457 /* Update all dprintf commands, making their command lists reflect
9458 current style settings. */
9461 update_dprintf_commands (char *args, int from_tty,
9462 struct cmd_list_element *c)
9464 struct breakpoint *b;
9468 if (b->type == bp_dprintf)
9469 update_dprintf_command_list (b);
9473 /* Create a breakpoint with SAL as location. Use ADDR_STRING
9474 as textual description of the location, and COND_STRING
9475 as condition expression. */
9478 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9479 struct symtabs_and_lines sals, char *addr_string,
9480 char *filter, char *cond_string,
9482 enum bptype type, enum bpdisp disposition,
9483 int thread, int task, int ignore_count,
9484 const struct breakpoint_ops *ops, int from_tty,
9485 int enabled, int internal, unsigned flags,
9486 int display_canonical)
9490 if (type == bp_hardware_breakpoint)
9492 int target_resources_ok;
9494 i = hw_breakpoint_used_count ();
9495 target_resources_ok =
9496 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9498 if (target_resources_ok == 0)
9499 error (_("No hardware breakpoint support in the target."));
9500 else if (target_resources_ok < 0)
9501 error (_("Hardware breakpoints used exceeds limit."));
9504 gdb_assert (sals.nelts > 0);
9506 for (i = 0; i < sals.nelts; ++i)
9508 struct symtab_and_line sal = sals.sals[i];
9509 struct bp_location *loc;
9513 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9515 loc_gdbarch = gdbarch;
9517 describe_other_breakpoints (loc_gdbarch,
9518 sal.pspace, sal.pc, sal.section, thread);
9523 init_raw_breakpoint (b, gdbarch, sal, type, ops);
9527 b->cond_string = cond_string;
9528 b->extra_string = extra_string;
9529 b->ignore_count = ignore_count;
9530 b->enable_state = enabled ? bp_enabled : bp_disabled;
9531 b->disposition = disposition;
9533 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9534 b->loc->inserted = 1;
9536 if (type == bp_static_tracepoint)
9538 struct tracepoint *t = (struct tracepoint *) b;
9539 struct static_tracepoint_marker marker;
9541 if (strace_marker_p (b))
9543 /* We already know the marker exists, otherwise, we
9544 wouldn't see a sal for it. */
9545 char *p = &addr_string[3];
9549 p = skip_spaces (p);
9551 endp = skip_to_space (p);
9553 marker_str = savestring (p, endp - p);
9554 t->static_trace_marker_id = marker_str;
9556 printf_filtered (_("Probed static tracepoint "
9558 t->static_trace_marker_id);
9560 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9562 t->static_trace_marker_id = xstrdup (marker.str_id);
9563 release_static_tracepoint_marker (&marker);
9565 printf_filtered (_("Probed static tracepoint "
9567 t->static_trace_marker_id);
9570 warning (_("Couldn't determine the static "
9571 "tracepoint marker to probe"));
9578 loc = add_location_to_breakpoint (b, &sal);
9579 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9583 if (bp_loc_is_permanent (loc))
9584 make_breakpoint_permanent (b);
9588 const char *arg = b->cond_string;
9590 loc->cond = parse_exp_1 (&arg, loc->address,
9591 block_for_pc (loc->address), 0);
9593 error (_("Garbage '%s' follows condition"), arg);
9596 /* Dynamic printf requires and uses additional arguments on the
9597 command line, otherwise it's an error. */
9598 if (type == bp_dprintf)
9600 if (b->extra_string)
9601 update_dprintf_command_list (b);
9603 error (_("Format string required"));
9605 else if (b->extra_string)
9606 error (_("Garbage '%s' at end of command"), b->extra_string);
9609 b->display_canonical = display_canonical;
9611 b->addr_string = addr_string;
9613 /* addr_string has to be used or breakpoint_re_set will delete
9616 = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9621 create_breakpoint_sal (struct gdbarch *gdbarch,
9622 struct symtabs_and_lines sals, char *addr_string,
9623 char *filter, char *cond_string,
9625 enum bptype type, enum bpdisp disposition,
9626 int thread, int task, int ignore_count,
9627 const struct breakpoint_ops *ops, int from_tty,
9628 int enabled, int internal, unsigned flags,
9629 int display_canonical)
9631 struct breakpoint *b;
9632 struct cleanup *old_chain;
9634 if (is_tracepoint_type (type))
9636 struct tracepoint *t;
9638 t = XCNEW (struct tracepoint);
9642 b = XNEW (struct breakpoint);
9644 old_chain = make_cleanup (xfree, b);
9646 init_breakpoint_sal (b, gdbarch,
9648 filter, cond_string, extra_string,
9650 thread, task, ignore_count,
9652 enabled, internal, flags,
9654 discard_cleanups (old_chain);
9656 install_breakpoint (internal, b, 0);
9659 /* Add SALS.nelts breakpoints to the breakpoint table. For each
9660 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9661 value. COND_STRING, if not NULL, specified the condition to be
9662 used for all breakpoints. Essentially the only case where
9663 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9664 function. In that case, it's still not possible to specify
9665 separate conditions for different overloaded functions, so
9666 we take just a single condition string.
9668 NOTE: If the function succeeds, the caller is expected to cleanup
9669 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9670 array contents). If the function fails (error() is called), the
9671 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9672 COND and SALS arrays and each of those arrays contents. */
9675 create_breakpoints_sal (struct gdbarch *gdbarch,
9676 struct linespec_result *canonical,
9677 char *cond_string, char *extra_string,
9678 enum bptype type, enum bpdisp disposition,
9679 int thread, int task, int ignore_count,
9680 const struct breakpoint_ops *ops, int from_tty,
9681 int enabled, int internal, unsigned flags)
9684 struct linespec_sals *lsal;
9686 if (canonical->pre_expanded)
9687 gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9689 for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9691 /* Note that 'addr_string' can be NULL in the case of a plain
9692 'break', without arguments. */
9693 char *addr_string = (canonical->addr_string
9694 ? xstrdup (canonical->addr_string)
9696 char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9697 struct cleanup *inner = make_cleanup (xfree, addr_string);
9699 make_cleanup (xfree, filter_string);
9700 create_breakpoint_sal (gdbarch, lsal->sals,
9703 cond_string, extra_string,
9705 thread, task, ignore_count, ops,
9706 from_tty, enabled, internal, flags,
9707 canonical->special_display);
9708 discard_cleanups (inner);
9712 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9713 followed by conditionals. On return, SALS contains an array of SAL
9714 addresses found. ADDR_STRING contains a vector of (canonical)
9715 address strings. ADDRESS points to the end of the SAL.
9717 The array and the line spec strings are allocated on the heap, it is
9718 the caller's responsibility to free them. */
9721 parse_breakpoint_sals (char **address,
9722 struct linespec_result *canonical)
9724 /* If no arg given, or if first arg is 'if ', use the default
9726 if ((*address) == NULL
9727 || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9729 /* The last displayed codepoint, if it's valid, is our default breakpoint
9731 if (last_displayed_sal_is_valid ())
9733 struct linespec_sals lsal;
9734 struct symtab_and_line sal;
9737 init_sal (&sal); /* Initialize to zeroes. */
9738 lsal.sals.sals = (struct symtab_and_line *)
9739 xmalloc (sizeof (struct symtab_and_line));
9741 /* Set sal's pspace, pc, symtab, and line to the values
9742 corresponding to the last call to print_frame_info.
9743 Be sure to reinitialize LINE with NOTCURRENT == 0
9744 as the breakpoint line number is inappropriate otherwise.
9745 find_pc_line would adjust PC, re-set it back. */
9746 get_last_displayed_sal (&sal);
9748 sal = find_pc_line (pc, 0);
9750 /* "break" without arguments is equivalent to "break *PC"
9751 where PC is the last displayed codepoint's address. So
9752 make sure to set sal.explicit_pc to prevent GDB from
9753 trying to expand the list of sals to include all other
9754 instances with the same symtab and line. */
9756 sal.explicit_pc = 1;
9758 lsal.sals.sals[0] = sal;
9759 lsal.sals.nelts = 1;
9760 lsal.canonical = NULL;
9762 VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9765 error (_("No default breakpoint address now."));
9769 struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9771 /* Force almost all breakpoints to be in terms of the
9772 current_source_symtab (which is decode_line_1's default).
9773 This should produce the results we want almost all of the
9774 time while leaving default_breakpoint_* alone.
9776 ObjC: However, don't match an Objective-C method name which
9777 may have a '+' or '-' succeeded by a '['. */
9778 if (last_displayed_sal_is_valid ()
9780 || ((strchr ("+-", (*address)[0]) != NULL)
9781 && ((*address)[1] != '['))))
9782 decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9783 get_last_displayed_symtab (),
9784 get_last_displayed_line (),
9785 canonical, NULL, NULL);
9787 decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9788 cursal.symtab, cursal.line, canonical, NULL, NULL);
9793 /* Convert each SAL into a real PC. Verify that the PC can be
9794 inserted as a breakpoint. If it can't throw an error. */
9797 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9801 for (i = 0; i < sals->nelts; i++)
9802 resolve_sal_pc (&sals->sals[i]);
9805 /* Fast tracepoints may have restrictions on valid locations. For
9806 instance, a fast tracepoint using a jump instead of a trap will
9807 likely have to overwrite more bytes than a trap would, and so can
9808 only be placed where the instruction is longer than the jump, or a
9809 multi-instruction sequence does not have a jump into the middle of
9813 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9814 struct symtabs_and_lines *sals)
9817 struct symtab_and_line *sal;
9819 struct cleanup *old_chain;
9821 for (i = 0; i < sals->nelts; i++)
9823 struct gdbarch *sarch;
9825 sal = &sals->sals[i];
9827 sarch = get_sal_arch (*sal);
9828 /* We fall back to GDBARCH if there is no architecture
9829 associated with SAL. */
9832 rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9834 old_chain = make_cleanup (xfree, msg);
9837 error (_("May not have a fast tracepoint at 0x%s%s"),
9838 paddress (sarch, sal->pc), (msg ? msg : ""));
9840 do_cleanups (old_chain);
9844 /* Issue an invalid thread ID error. */
9846 static void ATTRIBUTE_NORETURN
9847 invalid_thread_id_error (int id)
9849 error (_("Unknown thread %d."), id);
9852 /* Given TOK, a string specification of condition and thread, as
9853 accepted by the 'break' command, extract the condition
9854 string and thread number and set *COND_STRING and *THREAD.
9855 PC identifies the context at which the condition should be parsed.
9856 If no condition is found, *COND_STRING is set to NULL.
9857 If no thread is found, *THREAD is set to -1. */
9860 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9861 char **cond_string, int *thread, int *task,
9864 *cond_string = NULL;
9871 const char *end_tok;
9873 const char *cond_start = NULL;
9874 const char *cond_end = NULL;
9876 tok = skip_spaces_const (tok);
9878 if ((*tok == '"' || *tok == ',') && rest)
9880 *rest = savestring (tok, strlen (tok));
9884 end_tok = skip_to_space_const (tok);
9886 toklen = end_tok - tok;
9888 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9890 struct expression *expr;
9892 tok = cond_start = end_tok + 1;
9893 expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9896 *cond_string = savestring (cond_start, cond_end - cond_start);
9898 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9903 *thread = strtol (tok, &tmptok, 0);
9905 error (_("Junk after thread keyword."));
9906 if (!valid_thread_id (*thread))
9907 invalid_thread_id_error (*thread);
9910 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9915 *task = strtol (tok, &tmptok, 0);
9917 error (_("Junk after task keyword."));
9918 if (!valid_task_id (*task))
9919 error (_("Unknown task %d."), *task);
9924 *rest = savestring (tok, strlen (tok));
9928 error (_("Junk at end of arguments."));
9932 /* Decode a static tracepoint marker spec. */
9934 static struct symtabs_and_lines
9935 decode_static_tracepoint_spec (char **arg_p)
9937 VEC(static_tracepoint_marker_p) *markers = NULL;
9938 struct symtabs_and_lines sals;
9939 struct cleanup *old_chain;
9940 char *p = &(*arg_p)[3];
9945 p = skip_spaces (p);
9947 endp = skip_to_space (p);
9949 marker_str = savestring (p, endp - p);
9950 old_chain = make_cleanup (xfree, marker_str);
9952 markers = target_static_tracepoint_markers_by_strid (marker_str);
9953 if (VEC_empty(static_tracepoint_marker_p, markers))
9954 error (_("No known static tracepoint marker named %s"), marker_str);
9956 sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9957 sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9959 for (i = 0; i < sals.nelts; i++)
9961 struct static_tracepoint_marker *marker;
9963 marker = VEC_index (static_tracepoint_marker_p, markers, i);
9965 init_sal (&sals.sals[i]);
9967 sals.sals[i] = find_pc_line (marker->address, 0);
9968 sals.sals[i].pc = marker->address;
9970 release_static_tracepoint_marker (marker);
9973 do_cleanups (old_chain);
9979 /* Set a breakpoint. This function is shared between CLI and MI
9980 functions for setting a breakpoint. This function has two major
9981 modes of operations, selected by the PARSE_ARG parameter. If
9982 non-zero, the function will parse ARG, extracting location,
9983 condition, thread and extra string. Otherwise, ARG is just the
9984 breakpoint's location, with condition, thread, and extra string
9985 specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
9986 If INTERNAL is non-zero, the breakpoint number will be allocated
9987 from the internal breakpoint count. Returns true if any breakpoint
9988 was created; false otherwise. */
9991 create_breakpoint (struct gdbarch *gdbarch,
9992 char *arg, char *cond_string,
9993 int thread, char *extra_string,
9995 int tempflag, enum bptype type_wanted,
9997 enum auto_boolean pending_break_support,
9998 const struct breakpoint_ops *ops,
9999 int from_tty, int enabled, int internal,
10002 volatile struct gdb_exception e;
10003 char *copy_arg = NULL;
10004 char *addr_start = arg;
10005 struct linespec_result canonical;
10006 struct cleanup *old_chain;
10007 struct cleanup *bkpt_chain = NULL;
10010 int prev_bkpt_count = breakpoint_count;
10012 gdb_assert (ops != NULL);
10014 init_linespec_result (&canonical);
10016 TRY_CATCH (e, RETURN_MASK_ALL)
10018 ops->create_sals_from_address (&arg, &canonical, type_wanted,
10019 addr_start, ©_arg);
10022 /* If caller is interested in rc value from parse, set value. */
10026 if (VEC_empty (linespec_sals, canonical.sals))
10032 case NOT_FOUND_ERROR:
10034 /* If pending breakpoint support is turned off, throw
10037 if (pending_break_support == AUTO_BOOLEAN_FALSE)
10038 throw_exception (e);
10040 exception_print (gdb_stderr, e);
10042 /* If pending breakpoint support is auto query and the user
10043 selects no, then simply return the error code. */
10044 if (pending_break_support == AUTO_BOOLEAN_AUTO
10045 && !nquery (_("Make %s pending on future shared library load? "),
10046 bptype_string (type_wanted)))
10049 /* At this point, either the user was queried about setting
10050 a pending breakpoint and selected yes, or pending
10051 breakpoint behavior is on and thus a pending breakpoint
10052 is defaulted on behalf of the user. */
10054 struct linespec_sals lsal;
10056 copy_arg = xstrdup (addr_start);
10057 lsal.canonical = xstrdup (copy_arg);
10058 lsal.sals.nelts = 1;
10059 lsal.sals.sals = XNEW (struct symtab_and_line);
10060 init_sal (&lsal.sals.sals[0]);
10062 VEC_safe_push (linespec_sals, canonical.sals, &lsal);
10066 throw_exception (e);
10070 throw_exception (e);
10073 /* Create a chain of things that always need to be cleaned up. */
10074 old_chain = make_cleanup_destroy_linespec_result (&canonical);
10076 /* ----------------------------- SNIP -----------------------------
10077 Anything added to the cleanup chain beyond this point is assumed
10078 to be part of a breakpoint. If the breakpoint create succeeds
10079 then the memory is not reclaimed. */
10080 bkpt_chain = make_cleanup (null_cleanup, 0);
10082 /* Resolve all line numbers to PC's and verify that the addresses
10083 are ok for the target. */
10087 struct linespec_sals *iter;
10089 for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
10090 breakpoint_sals_to_pc (&iter->sals);
10093 /* Fast tracepoints may have additional restrictions on location. */
10094 if (!pending && type_wanted == bp_fast_tracepoint)
10097 struct linespec_sals *iter;
10099 for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
10100 check_fast_tracepoint_sals (gdbarch, &iter->sals);
10103 /* Verify that condition can be parsed, before setting any
10104 breakpoints. Allocate a separate condition expression for each
10111 struct linespec_sals *lsal;
10113 lsal = VEC_index (linespec_sals, canonical.sals, 0);
10115 /* Here we only parse 'arg' to separate condition
10116 from thread number, so parsing in context of first
10117 sal is OK. When setting the breakpoint we'll
10118 re-parse it in context of each sal. */
10120 find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
10121 &thread, &task, &rest);
10123 make_cleanup (xfree, cond_string);
10125 make_cleanup (xfree, rest);
10127 extra_string = rest;
10132 error (_("Garbage '%s' at end of location"), arg);
10134 /* Create a private copy of condition string. */
10137 cond_string = xstrdup (cond_string);
10138 make_cleanup (xfree, cond_string);
10140 /* Create a private copy of any extra string. */
10143 extra_string = xstrdup (extra_string);
10144 make_cleanup (xfree, extra_string);
10148 ops->create_breakpoints_sal (gdbarch, &canonical,
10149 cond_string, extra_string, type_wanted,
10150 tempflag ? disp_del : disp_donttouch,
10151 thread, task, ignore_count, ops,
10152 from_tty, enabled, internal, flags);
10156 struct breakpoint *b;
10158 make_cleanup (xfree, copy_arg);
10160 if (is_tracepoint_type (type_wanted))
10162 struct tracepoint *t;
10164 t = XCNEW (struct tracepoint);
10168 b = XNEW (struct breakpoint);
10170 init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
10172 b->addr_string = copy_arg;
10174 b->cond_string = NULL;
10177 /* Create a private copy of condition string. */
10180 cond_string = xstrdup (cond_string);
10181 make_cleanup (xfree, cond_string);
10183 b->cond_string = cond_string;
10185 b->extra_string = NULL;
10186 b->ignore_count = ignore_count;
10187 b->disposition = tempflag ? disp_del : disp_donttouch;
10188 b->condition_not_parsed = 1;
10189 b->enable_state = enabled ? bp_enabled : bp_disabled;
10190 if ((type_wanted != bp_breakpoint
10191 && type_wanted != bp_hardware_breakpoint) || thread != -1)
10192 b->pspace = current_program_space;
10194 install_breakpoint (internal, b, 0);
10197 if (VEC_length (linespec_sals, canonical.sals) > 1)
10199 warning (_("Multiple breakpoints were set.\nUse the "
10200 "\"delete\" command to delete unwanted breakpoints."));
10201 prev_breakpoint_count = prev_bkpt_count;
10204 /* That's it. Discard the cleanups for data inserted into the
10206 discard_cleanups (bkpt_chain);
10207 /* But cleanup everything else. */
10208 do_cleanups (old_chain);
10210 /* error call may happen here - have BKPT_CHAIN already discarded. */
10211 update_global_location_list (UGLL_MAY_INSERT);
10216 /* Set a breakpoint.
10217 ARG is a string describing breakpoint address,
10218 condition, and thread.
10219 FLAG specifies if a breakpoint is hardware on,
10220 and if breakpoint is temporary, using BP_HARDWARE_FLAG
10221 and BP_TEMPFLAG. */
10224 break_command_1 (char *arg, int flag, int from_tty)
10226 int tempflag = flag & BP_TEMPFLAG;
10227 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
10228 ? bp_hardware_breakpoint
10230 struct breakpoint_ops *ops;
10231 const char *arg_cp = arg;
10233 /* Matching breakpoints on probes. */
10234 if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
10235 ops = &bkpt_probe_breakpoint_ops;
10237 ops = &bkpt_breakpoint_ops;
10239 create_breakpoint (get_current_arch (),
10241 NULL, 0, NULL, 1 /* parse arg */,
10242 tempflag, type_wanted,
10243 0 /* Ignore count */,
10244 pending_break_support,
10252 /* Helper function for break_command_1 and disassemble_command. */
10255 resolve_sal_pc (struct symtab_and_line *sal)
10259 if (sal->pc == 0 && sal->symtab != NULL)
10261 if (!find_line_pc (sal->symtab, sal->line, &pc))
10262 error (_("No line %d in file \"%s\"."),
10263 sal->line, symtab_to_filename_for_display (sal->symtab));
10266 /* If this SAL corresponds to a breakpoint inserted using a line
10267 number, then skip the function prologue if necessary. */
10268 if (sal->explicit_line)
10269 skip_prologue_sal (sal);
10272 if (sal->section == 0 && sal->symtab != NULL)
10274 const struct blockvector *bv;
10275 const struct block *b;
10276 struct symbol *sym;
10278 bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
10281 sym = block_linkage_function (b);
10284 fixup_symbol_section (sym, sal->symtab->objfile);
10285 sal->section = SYMBOL_OBJ_SECTION (sal->symtab->objfile, sym);
10289 /* It really is worthwhile to have the section, so we'll
10290 just have to look harder. This case can be executed
10291 if we have line numbers but no functions (as can
10292 happen in assembly source). */
10294 struct bound_minimal_symbol msym;
10295 struct cleanup *old_chain = save_current_space_and_thread ();
10297 switch_to_program_space_and_thread (sal->pspace);
10299 msym = lookup_minimal_symbol_by_pc (sal->pc);
10301 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
10303 do_cleanups (old_chain);
10310 break_command (char *arg, int from_tty)
10312 break_command_1 (arg, 0, from_tty);
10316 tbreak_command (char *arg, int from_tty)
10318 break_command_1 (arg, BP_TEMPFLAG, from_tty);
10322 hbreak_command (char *arg, int from_tty)
10324 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
10328 thbreak_command (char *arg, int from_tty)
10330 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
10334 stop_command (char *arg, int from_tty)
10336 printf_filtered (_("Specify the type of breakpoint to set.\n\
10337 Usage: stop in <function | address>\n\
10338 stop at <line>\n"));
10342 stopin_command (char *arg, int from_tty)
10346 if (arg == (char *) NULL)
10348 else if (*arg != '*')
10350 char *argptr = arg;
10353 /* Look for a ':'. If this is a line number specification, then
10354 say it is bad, otherwise, it should be an address or
10355 function/method name. */
10356 while (*argptr && !hasColon)
10358 hasColon = (*argptr == ':');
10363 badInput = (*argptr != ':'); /* Not a class::method */
10365 badInput = isdigit (*arg); /* a simple line number */
10369 printf_filtered (_("Usage: stop in <function | address>\n"));
10371 break_command_1 (arg, 0, from_tty);
10375 stopat_command (char *arg, int from_tty)
10379 if (arg == (char *) NULL || *arg == '*') /* no line number */
10383 char *argptr = arg;
10386 /* Look for a ':'. If there is a '::' then get out, otherwise
10387 it is probably a line number. */
10388 while (*argptr && !hasColon)
10390 hasColon = (*argptr == ':');
10395 badInput = (*argptr == ':'); /* we have class::method */
10397 badInput = !isdigit (*arg); /* not a line number */
10401 printf_filtered (_("Usage: stop at <line>\n"));
10403 break_command_1 (arg, 0, from_tty);
10406 /* The dynamic printf command is mostly like a regular breakpoint, but
10407 with a prewired command list consisting of a single output command,
10408 built from extra arguments supplied on the dprintf command
10412 dprintf_command (char *arg, int from_tty)
10414 create_breakpoint (get_current_arch (),
10416 NULL, 0, NULL, 1 /* parse arg */,
10418 0 /* Ignore count */,
10419 pending_break_support,
10420 &dprintf_breakpoint_ops,
10428 agent_printf_command (char *arg, int from_tty)
10430 error (_("May only run agent-printf on the target"));
10433 /* Implement the "breakpoint_hit" breakpoint_ops method for
10434 ranged breakpoints. */
10437 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10438 struct address_space *aspace,
10440 const struct target_waitstatus *ws)
10442 if (ws->kind != TARGET_WAITKIND_STOPPED
10443 || ws->value.sig != GDB_SIGNAL_TRAP)
10446 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10447 bl->length, aspace, bp_addr);
10450 /* Implement the "resources_needed" breakpoint_ops method for
10451 ranged breakpoints. */
10454 resources_needed_ranged_breakpoint (const struct bp_location *bl)
10456 return target_ranged_break_num_registers ();
10459 /* Implement the "print_it" breakpoint_ops method for
10460 ranged breakpoints. */
10462 static enum print_stop_action
10463 print_it_ranged_breakpoint (bpstat bs)
10465 struct breakpoint *b = bs->breakpoint_at;
10466 struct bp_location *bl = b->loc;
10467 struct ui_out *uiout = current_uiout;
10469 gdb_assert (b->type == bp_hardware_breakpoint);
10471 /* Ranged breakpoints have only one location. */
10472 gdb_assert (bl && bl->next == NULL);
10474 annotate_breakpoint (b->number);
10475 if (b->disposition == disp_del)
10476 ui_out_text (uiout, "\nTemporary ranged breakpoint ");
10478 ui_out_text (uiout, "\nRanged breakpoint ");
10479 if (ui_out_is_mi_like_p (uiout))
10481 ui_out_field_string (uiout, "reason",
10482 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10483 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10485 ui_out_field_int (uiout, "bkptno", b->number);
10486 ui_out_text (uiout, ", ");
10488 return PRINT_SRC_AND_LOC;
10491 /* Implement the "print_one" breakpoint_ops method for
10492 ranged breakpoints. */
10495 print_one_ranged_breakpoint (struct breakpoint *b,
10496 struct bp_location **last_loc)
10498 struct bp_location *bl = b->loc;
10499 struct value_print_options opts;
10500 struct ui_out *uiout = current_uiout;
10502 /* Ranged breakpoints have only one location. */
10503 gdb_assert (bl && bl->next == NULL);
10505 get_user_print_options (&opts);
10507 if (opts.addressprint)
10508 /* We don't print the address range here, it will be printed later
10509 by print_one_detail_ranged_breakpoint. */
10510 ui_out_field_skip (uiout, "addr");
10511 annotate_field (5);
10512 print_breakpoint_location (b, bl);
10516 /* Implement the "print_one_detail" breakpoint_ops method for
10517 ranged breakpoints. */
10520 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10521 struct ui_out *uiout)
10523 CORE_ADDR address_start, address_end;
10524 struct bp_location *bl = b->loc;
10525 struct ui_file *stb = mem_fileopen ();
10526 struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10530 address_start = bl->address;
10531 address_end = address_start + bl->length - 1;
10533 ui_out_text (uiout, "\taddress range: ");
10534 fprintf_unfiltered (stb, "[%s, %s]",
10535 print_core_address (bl->gdbarch, address_start),
10536 print_core_address (bl->gdbarch, address_end));
10537 ui_out_field_stream (uiout, "addr", stb);
10538 ui_out_text (uiout, "\n");
10540 do_cleanups (cleanup);
10543 /* Implement the "print_mention" breakpoint_ops method for
10544 ranged breakpoints. */
10547 print_mention_ranged_breakpoint (struct breakpoint *b)
10549 struct bp_location *bl = b->loc;
10550 struct ui_out *uiout = current_uiout;
10553 gdb_assert (b->type == bp_hardware_breakpoint);
10555 if (ui_out_is_mi_like_p (uiout))
10558 printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10559 b->number, paddress (bl->gdbarch, bl->address),
10560 paddress (bl->gdbarch, bl->address + bl->length - 1));
10563 /* Implement the "print_recreate" breakpoint_ops method for
10564 ranged breakpoints. */
10567 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10569 fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10570 b->addr_string_range_end);
10571 print_recreate_thread (b, fp);
10574 /* The breakpoint_ops structure to be used in ranged breakpoints. */
10576 static struct breakpoint_ops ranged_breakpoint_ops;
10578 /* Find the address where the end of the breakpoint range should be
10579 placed, given the SAL of the end of the range. This is so that if
10580 the user provides a line number, the end of the range is set to the
10581 last instruction of the given line. */
10584 find_breakpoint_range_end (struct symtab_and_line sal)
10588 /* If the user provided a PC value, use it. Otherwise,
10589 find the address of the end of the given location. */
10590 if (sal.explicit_pc)
10597 ret = find_line_pc_range (sal, &start, &end);
10599 error (_("Could not find location of the end of the range."));
10601 /* find_line_pc_range returns the start of the next line. */
10608 /* Implement the "break-range" CLI command. */
10611 break_range_command (char *arg, int from_tty)
10613 char *arg_start, *addr_string_start, *addr_string_end;
10614 struct linespec_result canonical_start, canonical_end;
10615 int bp_count, can_use_bp, length;
10617 struct breakpoint *b;
10618 struct symtab_and_line sal_start, sal_end;
10619 struct cleanup *cleanup_bkpt;
10620 struct linespec_sals *lsal_start, *lsal_end;
10622 /* We don't support software ranged breakpoints. */
10623 if (target_ranged_break_num_registers () < 0)
10624 error (_("This target does not support hardware ranged breakpoints."));
10626 bp_count = hw_breakpoint_used_count ();
10627 bp_count += target_ranged_break_num_registers ();
10628 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10630 if (can_use_bp < 0)
10631 error (_("Hardware breakpoints used exceeds limit."));
10633 arg = skip_spaces (arg);
10634 if (arg == NULL || arg[0] == '\0')
10635 error(_("No address range specified."));
10637 init_linespec_result (&canonical_start);
10640 parse_breakpoint_sals (&arg, &canonical_start);
10642 cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10645 error (_("Too few arguments."));
10646 else if (VEC_empty (linespec_sals, canonical_start.sals))
10647 error (_("Could not find location of the beginning of the range."));
10649 lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10651 if (VEC_length (linespec_sals, canonical_start.sals) > 1
10652 || lsal_start->sals.nelts != 1)
10653 error (_("Cannot create a ranged breakpoint with multiple locations."));
10655 sal_start = lsal_start->sals.sals[0];
10656 addr_string_start = savestring (arg_start, arg - arg_start);
10657 make_cleanup (xfree, addr_string_start);
10659 arg++; /* Skip the comma. */
10660 arg = skip_spaces (arg);
10662 /* Parse the end location. */
10664 init_linespec_result (&canonical_end);
10667 /* We call decode_line_full directly here instead of using
10668 parse_breakpoint_sals because we need to specify the start location's
10669 symtab and line as the default symtab and line for the end of the
10670 range. This makes it possible to have ranges like "foo.c:27, +14",
10671 where +14 means 14 lines from the start location. */
10672 decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10673 sal_start.symtab, sal_start.line,
10674 &canonical_end, NULL, NULL);
10676 make_cleanup_destroy_linespec_result (&canonical_end);
10678 if (VEC_empty (linespec_sals, canonical_end.sals))
10679 error (_("Could not find location of the end of the range."));
10681 lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10682 if (VEC_length (linespec_sals, canonical_end.sals) > 1
10683 || lsal_end->sals.nelts != 1)
10684 error (_("Cannot create a ranged breakpoint with multiple locations."));
10686 sal_end = lsal_end->sals.sals[0];
10687 addr_string_end = savestring (arg_start, arg - arg_start);
10688 make_cleanup (xfree, addr_string_end);
10690 end = find_breakpoint_range_end (sal_end);
10691 if (sal_start.pc > end)
10692 error (_("Invalid address range, end precedes start."));
10694 length = end - sal_start.pc + 1;
10696 /* Length overflowed. */
10697 error (_("Address range too large."));
10698 else if (length == 1)
10700 /* This range is simple enough to be handled by
10701 the `hbreak' command. */
10702 hbreak_command (addr_string_start, 1);
10704 do_cleanups (cleanup_bkpt);
10709 /* Now set up the breakpoint. */
10710 b = set_raw_breakpoint (get_current_arch (), sal_start,
10711 bp_hardware_breakpoint, &ranged_breakpoint_ops);
10712 set_breakpoint_count (breakpoint_count + 1);
10713 b->number = breakpoint_count;
10714 b->disposition = disp_donttouch;
10715 b->addr_string = xstrdup (addr_string_start);
10716 b->addr_string_range_end = xstrdup (addr_string_end);
10717 b->loc->length = length;
10719 do_cleanups (cleanup_bkpt);
10722 observer_notify_breakpoint_created (b);
10723 update_global_location_list (UGLL_MAY_INSERT);
10726 /* Return non-zero if EXP is verified as constant. Returned zero
10727 means EXP is variable. Also the constant detection may fail for
10728 some constant expressions and in such case still falsely return
10732 watchpoint_exp_is_const (const struct expression *exp)
10734 int i = exp->nelts;
10740 /* We are only interested in the descriptor of each element. */
10741 operator_length (exp, i, &oplenp, &argsp);
10744 switch (exp->elts[i].opcode)
10754 case BINOP_LOGICAL_AND:
10755 case BINOP_LOGICAL_OR:
10756 case BINOP_BITWISE_AND:
10757 case BINOP_BITWISE_IOR:
10758 case BINOP_BITWISE_XOR:
10760 case BINOP_NOTEQUAL:
10787 case OP_OBJC_NSSTRING:
10790 case UNOP_LOGICAL_NOT:
10791 case UNOP_COMPLEMENT:
10796 case UNOP_CAST_TYPE:
10797 case UNOP_REINTERPRET_CAST:
10798 case UNOP_DYNAMIC_CAST:
10799 /* Unary, binary and ternary operators: We have to check
10800 their operands. If they are constant, then so is the
10801 result of that operation. For instance, if A and B are
10802 determined to be constants, then so is "A + B".
10804 UNOP_IND is one exception to the rule above, because the
10805 value of *ADDR is not necessarily a constant, even when
10810 /* Check whether the associated symbol is a constant.
10812 We use SYMBOL_CLASS rather than TYPE_CONST because it's
10813 possible that a buggy compiler could mark a variable as
10814 constant even when it is not, and TYPE_CONST would return
10815 true in this case, while SYMBOL_CLASS wouldn't.
10817 We also have to check for function symbols because they
10818 are always constant. */
10820 struct symbol *s = exp->elts[i + 2].symbol;
10822 if (SYMBOL_CLASS (s) != LOC_BLOCK
10823 && SYMBOL_CLASS (s) != LOC_CONST
10824 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10829 /* The default action is to return 0 because we are using
10830 the optimistic approach here: If we don't know something,
10831 then it is not a constant. */
10840 /* Implement the "dtor" breakpoint_ops method for watchpoints. */
10843 dtor_watchpoint (struct breakpoint *self)
10845 struct watchpoint *w = (struct watchpoint *) self;
10847 xfree (w->cond_exp);
10849 xfree (w->exp_string);
10850 xfree (w->exp_string_reparse);
10851 value_free (w->val);
10853 base_breakpoint_ops.dtor (self);
10856 /* Implement the "re_set" breakpoint_ops method for watchpoints. */
10859 re_set_watchpoint (struct breakpoint *b)
10861 struct watchpoint *w = (struct watchpoint *) b;
10863 /* Watchpoint can be either on expression using entirely global
10864 variables, or it can be on local variables.
10866 Watchpoints of the first kind are never auto-deleted, and even
10867 persist across program restarts. Since they can use variables
10868 from shared libraries, we need to reparse expression as libraries
10869 are loaded and unloaded.
10871 Watchpoints on local variables can also change meaning as result
10872 of solib event. For example, if a watchpoint uses both a local
10873 and a global variables in expression, it's a local watchpoint,
10874 but unloading of a shared library will make the expression
10875 invalid. This is not a very common use case, but we still
10876 re-evaluate expression, to avoid surprises to the user.
10878 Note that for local watchpoints, we re-evaluate it only if
10879 watchpoints frame id is still valid. If it's not, it means the
10880 watchpoint is out of scope and will be deleted soon. In fact,
10881 I'm not sure we'll ever be called in this case.
10883 If a local watchpoint's frame id is still valid, then
10884 w->exp_valid_block is likewise valid, and we can safely use it.
10886 Don't do anything about disabled watchpoints, since they will be
10887 reevaluated again when enabled. */
10888 update_watchpoint (w, 1 /* reparse */);
10891 /* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10894 insert_watchpoint (struct bp_location *bl)
10896 struct watchpoint *w = (struct watchpoint *) bl->owner;
10897 int length = w->exact ? 1 : bl->length;
10899 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10903 /* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10906 remove_watchpoint (struct bp_location *bl)
10908 struct watchpoint *w = (struct watchpoint *) bl->owner;
10909 int length = w->exact ? 1 : bl->length;
10911 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10916 breakpoint_hit_watchpoint (const struct bp_location *bl,
10917 struct address_space *aspace, CORE_ADDR bp_addr,
10918 const struct target_waitstatus *ws)
10920 struct breakpoint *b = bl->owner;
10921 struct watchpoint *w = (struct watchpoint *) b;
10923 /* Continuable hardware watchpoints are treated as non-existent if the
10924 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10925 some data address). Otherwise gdb won't stop on a break instruction
10926 in the code (not from a breakpoint) when a hardware watchpoint has
10927 been defined. Also skip watchpoints which we know did not trigger
10928 (did not match the data address). */
10929 if (is_hardware_watchpoint (b)
10930 && w->watchpoint_triggered == watch_triggered_no)
10937 check_status_watchpoint (bpstat bs)
10939 gdb_assert (is_watchpoint (bs->breakpoint_at));
10941 bpstat_check_watchpoint (bs);
10944 /* Implement the "resources_needed" breakpoint_ops method for
10945 hardware watchpoints. */
10948 resources_needed_watchpoint (const struct bp_location *bl)
10950 struct watchpoint *w = (struct watchpoint *) bl->owner;
10951 int length = w->exact? 1 : bl->length;
10953 return target_region_ok_for_hw_watchpoint (bl->address, length);
10956 /* Implement the "works_in_software_mode" breakpoint_ops method for
10957 hardware watchpoints. */
10960 works_in_software_mode_watchpoint (const struct breakpoint *b)
10962 /* Read and access watchpoints only work with hardware support. */
10963 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10966 static enum print_stop_action
10967 print_it_watchpoint (bpstat bs)
10969 struct cleanup *old_chain;
10970 struct breakpoint *b;
10971 struct ui_file *stb;
10972 enum print_stop_action result;
10973 struct watchpoint *w;
10974 struct ui_out *uiout = current_uiout;
10976 gdb_assert (bs->bp_location_at != NULL);
10978 b = bs->breakpoint_at;
10979 w = (struct watchpoint *) b;
10981 stb = mem_fileopen ();
10982 old_chain = make_cleanup_ui_file_delete (stb);
10986 case bp_watchpoint:
10987 case bp_hardware_watchpoint:
10988 annotate_watchpoint (b->number);
10989 if (ui_out_is_mi_like_p (uiout))
10990 ui_out_field_string
10992 async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10994 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10995 ui_out_text (uiout, "\nOld value = ");
10996 watchpoint_value_print (bs->old_val, stb);
10997 ui_out_field_stream (uiout, "old", stb);
10998 ui_out_text (uiout, "\nNew value = ");
10999 watchpoint_value_print (w->val, stb);
11000 ui_out_field_stream (uiout, "new", stb);
11001 ui_out_text (uiout, "\n");
11002 /* More than one watchpoint may have been triggered. */
11003 result = PRINT_UNKNOWN;
11006 case bp_read_watchpoint:
11007 if (ui_out_is_mi_like_p (uiout))
11008 ui_out_field_string
11010 async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
11012 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
11013 ui_out_text (uiout, "\nValue = ");
11014 watchpoint_value_print (w->val, stb);
11015 ui_out_field_stream (uiout, "value", stb);
11016 ui_out_text (uiout, "\n");
11017 result = PRINT_UNKNOWN;
11020 case bp_access_watchpoint:
11021 if (bs->old_val != NULL)
11023 annotate_watchpoint (b->number);
11024 if (ui_out_is_mi_like_p (uiout))
11025 ui_out_field_string
11027 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
11029 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
11030 ui_out_text (uiout, "\nOld value = ");
11031 watchpoint_value_print (bs->old_val, stb);
11032 ui_out_field_stream (uiout, "old", stb);
11033 ui_out_text (uiout, "\nNew value = ");
11038 if (ui_out_is_mi_like_p (uiout))
11039 ui_out_field_string
11041 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
11042 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
11043 ui_out_text (uiout, "\nValue = ");
11045 watchpoint_value_print (w->val, stb);
11046 ui_out_field_stream (uiout, "new", stb);
11047 ui_out_text (uiout, "\n");
11048 result = PRINT_UNKNOWN;
11051 result = PRINT_UNKNOWN;
11054 do_cleanups (old_chain);
11058 /* Implement the "print_mention" breakpoint_ops method for hardware
11062 print_mention_watchpoint (struct breakpoint *b)
11064 struct cleanup *ui_out_chain;
11065 struct watchpoint *w = (struct watchpoint *) b;
11066 struct ui_out *uiout = current_uiout;
11070 case bp_watchpoint:
11071 ui_out_text (uiout, "Watchpoint ");
11072 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
11074 case bp_hardware_watchpoint:
11075 ui_out_text (uiout, "Hardware watchpoint ");
11076 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
11078 case bp_read_watchpoint:
11079 ui_out_text (uiout, "Hardware read watchpoint ");
11080 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
11082 case bp_access_watchpoint:
11083 ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
11084 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
11087 internal_error (__FILE__, __LINE__,
11088 _("Invalid hardware watchpoint type."));
11091 ui_out_field_int (uiout, "number", b->number);
11092 ui_out_text (uiout, ": ");
11093 ui_out_field_string (uiout, "exp", w->exp_string);
11094 do_cleanups (ui_out_chain);
11097 /* Implement the "print_recreate" breakpoint_ops method for
11101 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
11103 struct watchpoint *w = (struct watchpoint *) b;
11107 case bp_watchpoint:
11108 case bp_hardware_watchpoint:
11109 fprintf_unfiltered (fp, "watch");
11111 case bp_read_watchpoint:
11112 fprintf_unfiltered (fp, "rwatch");
11114 case bp_access_watchpoint:
11115 fprintf_unfiltered (fp, "awatch");
11118 internal_error (__FILE__, __LINE__,
11119 _("Invalid watchpoint type."));
11122 fprintf_unfiltered (fp, " %s", w->exp_string);
11123 print_recreate_thread (b, fp);
11126 /* Implement the "explains_signal" breakpoint_ops method for
11130 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
11132 /* A software watchpoint cannot cause a signal other than
11133 GDB_SIGNAL_TRAP. */
11134 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
11140 /* The breakpoint_ops structure to be used in hardware watchpoints. */
11142 static struct breakpoint_ops watchpoint_breakpoint_ops;
11144 /* Implement the "insert" breakpoint_ops method for
11145 masked hardware watchpoints. */
11148 insert_masked_watchpoint (struct bp_location *bl)
11150 struct watchpoint *w = (struct watchpoint *) bl->owner;
11152 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
11153 bl->watchpoint_type);
11156 /* Implement the "remove" breakpoint_ops method for
11157 masked hardware watchpoints. */
11160 remove_masked_watchpoint (struct bp_location *bl)
11162 struct watchpoint *w = (struct watchpoint *) bl->owner;
11164 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
11165 bl->watchpoint_type);
11168 /* Implement the "resources_needed" breakpoint_ops method for
11169 masked hardware watchpoints. */
11172 resources_needed_masked_watchpoint (const struct bp_location *bl)
11174 struct watchpoint *w = (struct watchpoint *) bl->owner;
11176 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
11179 /* Implement the "works_in_software_mode" breakpoint_ops method for
11180 masked hardware watchpoints. */
11183 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
11188 /* Implement the "print_it" breakpoint_ops method for
11189 masked hardware watchpoints. */
11191 static enum print_stop_action
11192 print_it_masked_watchpoint (bpstat bs)
11194 struct breakpoint *b = bs->breakpoint_at;
11195 struct ui_out *uiout = current_uiout;
11197 /* Masked watchpoints have only one location. */
11198 gdb_assert (b->loc && b->loc->next == NULL);
11202 case bp_hardware_watchpoint:
11203 annotate_watchpoint (b->number);
11204 if (ui_out_is_mi_like_p (uiout))
11205 ui_out_field_string
11207 async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
11210 case bp_read_watchpoint:
11211 if (ui_out_is_mi_like_p (uiout))
11212 ui_out_field_string
11214 async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
11217 case bp_access_watchpoint:
11218 if (ui_out_is_mi_like_p (uiout))
11219 ui_out_field_string
11221 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
11224 internal_error (__FILE__, __LINE__,
11225 _("Invalid hardware watchpoint type."));
11229 ui_out_text (uiout, _("\n\
11230 Check the underlying instruction at PC for the memory\n\
11231 address and value which triggered this watchpoint.\n"));
11232 ui_out_text (uiout, "\n");
11234 /* More than one watchpoint may have been triggered. */
11235 return PRINT_UNKNOWN;
11238 /* Implement the "print_one_detail" breakpoint_ops method for
11239 masked hardware watchpoints. */
11242 print_one_detail_masked_watchpoint (const struct breakpoint *b,
11243 struct ui_out *uiout)
11245 struct watchpoint *w = (struct watchpoint *) b;
11247 /* Masked watchpoints have only one location. */
11248 gdb_assert (b->loc && b->loc->next == NULL);
11250 ui_out_text (uiout, "\tmask ");
11251 ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
11252 ui_out_text (uiout, "\n");
11255 /* Implement the "print_mention" breakpoint_ops method for
11256 masked hardware watchpoints. */
11259 print_mention_masked_watchpoint (struct breakpoint *b)
11261 struct watchpoint *w = (struct watchpoint *) b;
11262 struct ui_out *uiout = current_uiout;
11263 struct cleanup *ui_out_chain;
11267 case bp_hardware_watchpoint:
11268 ui_out_text (uiout, "Masked hardware watchpoint ");
11269 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
11271 case bp_read_watchpoint:
11272 ui_out_text (uiout, "Masked hardware read watchpoint ");
11273 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
11275 case bp_access_watchpoint:
11276 ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
11277 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
11280 internal_error (__FILE__, __LINE__,
11281 _("Invalid hardware watchpoint type."));
11284 ui_out_field_int (uiout, "number", b->number);
11285 ui_out_text (uiout, ": ");
11286 ui_out_field_string (uiout, "exp", w->exp_string);
11287 do_cleanups (ui_out_chain);
11290 /* Implement the "print_recreate" breakpoint_ops method for
11291 masked hardware watchpoints. */
11294 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
11296 struct watchpoint *w = (struct watchpoint *) b;
11301 case bp_hardware_watchpoint:
11302 fprintf_unfiltered (fp, "watch");
11304 case bp_read_watchpoint:
11305 fprintf_unfiltered (fp, "rwatch");
11307 case bp_access_watchpoint:
11308 fprintf_unfiltered (fp, "awatch");
11311 internal_error (__FILE__, __LINE__,
11312 _("Invalid hardware watchpoint type."));
11315 sprintf_vma (tmp, w->hw_wp_mask);
11316 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
11317 print_recreate_thread (b, fp);
11320 /* The breakpoint_ops structure to be used in masked hardware watchpoints. */
11322 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
11324 /* Tell whether the given watchpoint is a masked hardware watchpoint. */
11327 is_masked_watchpoint (const struct breakpoint *b)
11329 return b->ops == &masked_watchpoint_breakpoint_ops;
11332 /* accessflag: hw_write: watch write,
11333 hw_read: watch read,
11334 hw_access: watch access (read or write) */
11336 watch_command_1 (const char *arg, int accessflag, int from_tty,
11337 int just_location, int internal)
11339 volatile struct gdb_exception e;
11340 struct breakpoint *b, *scope_breakpoint = NULL;
11341 struct expression *exp;
11342 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
11343 struct value *val, *mark, *result;
11344 int saved_bitpos = 0, saved_bitsize = 0;
11345 struct frame_info *frame;
11346 const char *exp_start = NULL;
11347 const char *exp_end = NULL;
11348 const char *tok, *end_tok;
11350 const char *cond_start = NULL;
11351 const char *cond_end = NULL;
11352 enum bptype bp_type;
11355 /* Flag to indicate whether we are going to use masks for
11356 the hardware watchpoint. */
11358 CORE_ADDR mask = 0;
11359 struct watchpoint *w;
11361 struct cleanup *back_to;
11363 /* Make sure that we actually have parameters to parse. */
11364 if (arg != NULL && arg[0] != '\0')
11366 const char *value_start;
11368 exp_end = arg + strlen (arg);
11370 /* Look for "parameter value" pairs at the end
11371 of the arguments string. */
11372 for (tok = exp_end - 1; tok > arg; tok--)
11374 /* Skip whitespace at the end of the argument list. */
11375 while (tok > arg && (*tok == ' ' || *tok == '\t'))
11378 /* Find the beginning of the last token.
11379 This is the value of the parameter. */
11380 while (tok > arg && (*tok != ' ' && *tok != '\t'))
11382 value_start = tok + 1;
11384 /* Skip whitespace. */
11385 while (tok > arg && (*tok == ' ' || *tok == '\t'))
11390 /* Find the beginning of the second to last token.
11391 This is the parameter itself. */
11392 while (tok > arg && (*tok != ' ' && *tok != '\t'))
11395 toklen = end_tok - tok + 1;
11397 if (toklen == 6 && !strncmp (tok, "thread", 6))
11399 /* At this point we've found a "thread" token, which means
11400 the user is trying to set a watchpoint that triggers
11401 only in a specific thread. */
11405 error(_("You can specify only one thread."));
11407 /* Extract the thread ID from the next token. */
11408 thread = strtol (value_start, &endp, 0);
11410 /* Check if the user provided a valid numeric value for the
11412 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
11413 error (_("Invalid thread ID specification %s."), value_start);
11415 /* Check if the thread actually exists. */
11416 if (!valid_thread_id (thread))
11417 invalid_thread_id_error (thread);
11419 else if (toklen == 4 && !strncmp (tok, "mask", 4))
11421 /* We've found a "mask" token, which means the user wants to
11422 create a hardware watchpoint that is going to have the mask
11424 struct value *mask_value, *mark;
11427 error(_("You can specify only one mask."));
11429 use_mask = just_location = 1;
11431 mark = value_mark ();
11432 mask_value = parse_to_comma_and_eval (&value_start);
11433 mask = value_as_address (mask_value);
11434 value_free_to_mark (mark);
11437 /* We didn't recognize what we found. We should stop here. */
11440 /* Truncate the string and get rid of the "parameter value" pair before
11441 the arguments string is parsed by the parse_exp_1 function. */
11448 /* Parse the rest of the arguments. From here on out, everything
11449 is in terms of a newly allocated string instead of the original
11451 innermost_block = NULL;
11452 expression = savestring (arg, exp_end - arg);
11453 back_to = make_cleanup (xfree, expression);
11454 exp_start = arg = expression;
11455 exp = parse_exp_1 (&arg, 0, 0, 0);
11457 /* Remove trailing whitespace from the expression before saving it.
11458 This makes the eventual display of the expression string a bit
11460 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11463 /* Checking if the expression is not constant. */
11464 if (watchpoint_exp_is_const (exp))
11468 len = exp_end - exp_start;
11469 while (len > 0 && isspace (exp_start[len - 1]))
11471 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11474 exp_valid_block = innermost_block;
11475 mark = value_mark ();
11476 fetch_subexp_value (exp, &pc, &val, &result, NULL, just_location);
11478 if (val != NULL && just_location)
11480 saved_bitpos = value_bitpos (val);
11481 saved_bitsize = value_bitsize (val);
11488 exp_valid_block = NULL;
11489 val = value_addr (result);
11490 release_value (val);
11491 value_free_to_mark (mark);
11495 ret = target_masked_watch_num_registers (value_as_address (val),
11498 error (_("This target does not support masked watchpoints."));
11499 else if (ret == -2)
11500 error (_("Invalid mask or memory region."));
11503 else if (val != NULL)
11504 release_value (val);
11506 tok = skip_spaces_const (arg);
11507 end_tok = skip_to_space_const (tok);
11509 toklen = end_tok - tok;
11510 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11512 struct expression *cond;
11514 innermost_block = NULL;
11515 tok = cond_start = end_tok + 1;
11516 cond = parse_exp_1 (&tok, 0, 0, 0);
11518 /* The watchpoint expression may not be local, but the condition
11519 may still be. E.g.: `watch global if local > 0'. */
11520 cond_exp_valid_block = innermost_block;
11526 error (_("Junk at end of command."));
11528 frame = block_innermost_frame (exp_valid_block);
11530 /* If the expression is "local", then set up a "watchpoint scope"
11531 breakpoint at the point where we've left the scope of the watchpoint
11532 expression. Create the scope breakpoint before the watchpoint, so
11533 that we will encounter it first in bpstat_stop_status. */
11534 if (exp_valid_block && frame)
11536 if (frame_id_p (frame_unwind_caller_id (frame)))
11539 = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11540 frame_unwind_caller_pc (frame),
11541 bp_watchpoint_scope,
11542 &momentary_breakpoint_ops);
11544 scope_breakpoint->enable_state = bp_enabled;
11546 /* Automatically delete the breakpoint when it hits. */
11547 scope_breakpoint->disposition = disp_del;
11549 /* Only break in the proper frame (help with recursion). */
11550 scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11552 /* Set the address at which we will stop. */
11553 scope_breakpoint->loc->gdbarch
11554 = frame_unwind_caller_arch (frame);
11555 scope_breakpoint->loc->requested_address
11556 = frame_unwind_caller_pc (frame);
11557 scope_breakpoint->loc->address
11558 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11559 scope_breakpoint->loc->requested_address,
11560 scope_breakpoint->type);
11564 /* Now set up the breakpoint. We create all watchpoints as hardware
11565 watchpoints here even if hardware watchpoints are turned off, a call
11566 to update_watchpoint later in this function will cause the type to
11567 drop back to bp_watchpoint (software watchpoint) if required. */
11569 if (accessflag == hw_read)
11570 bp_type = bp_read_watchpoint;
11571 else if (accessflag == hw_access)
11572 bp_type = bp_access_watchpoint;
11574 bp_type = bp_hardware_watchpoint;
11576 w = XCNEW (struct watchpoint);
11579 init_raw_breakpoint_without_location (b, NULL, bp_type,
11580 &masked_watchpoint_breakpoint_ops);
11582 init_raw_breakpoint_without_location (b, NULL, bp_type,
11583 &watchpoint_breakpoint_ops);
11584 b->thread = thread;
11585 b->disposition = disp_donttouch;
11586 b->pspace = current_program_space;
11588 w->exp_valid_block = exp_valid_block;
11589 w->cond_exp_valid_block = cond_exp_valid_block;
11592 struct type *t = value_type (val);
11593 CORE_ADDR addr = value_as_address (val);
11596 t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11597 name = type_to_string (t);
11599 w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11600 core_addr_to_string (addr));
11603 w->exp_string = xstrprintf ("-location %.*s",
11604 (int) (exp_end - exp_start), exp_start);
11606 /* The above expression is in C. */
11607 b->language = language_c;
11610 w->exp_string = savestring (exp_start, exp_end - exp_start);
11614 w->hw_wp_mask = mask;
11619 w->val_bitpos = saved_bitpos;
11620 w->val_bitsize = saved_bitsize;
11625 b->cond_string = savestring (cond_start, cond_end - cond_start);
11627 b->cond_string = 0;
11631 w->watchpoint_frame = get_frame_id (frame);
11632 w->watchpoint_thread = inferior_ptid;
11636 w->watchpoint_frame = null_frame_id;
11637 w->watchpoint_thread = null_ptid;
11640 if (scope_breakpoint != NULL)
11642 /* The scope breakpoint is related to the watchpoint. We will
11643 need to act on them together. */
11644 b->related_breakpoint = scope_breakpoint;
11645 scope_breakpoint->related_breakpoint = b;
11648 if (!just_location)
11649 value_free_to_mark (mark);
11651 TRY_CATCH (e, RETURN_MASK_ALL)
11653 /* Finally update the new watchpoint. This creates the locations
11654 that should be inserted. */
11655 update_watchpoint (w, 1);
11659 delete_breakpoint (b);
11660 throw_exception (e);
11663 install_breakpoint (internal, b, 1);
11664 do_cleanups (back_to);
11667 /* Return count of debug registers needed to watch the given expression.
11668 If the watchpoint cannot be handled in hardware return zero. */
11671 can_use_hardware_watchpoint (struct value *v)
11673 int found_memory_cnt = 0;
11674 struct value *head = v;
11676 /* Did the user specifically forbid us to use hardware watchpoints? */
11677 if (!can_use_hw_watchpoints)
11680 /* Make sure that the value of the expression depends only upon
11681 memory contents, and values computed from them within GDB. If we
11682 find any register references or function calls, we can't use a
11683 hardware watchpoint.
11685 The idea here is that evaluating an expression generates a series
11686 of values, one holding the value of every subexpression. (The
11687 expression a*b+c has five subexpressions: a, b, a*b, c, and
11688 a*b+c.) GDB's values hold almost enough information to establish
11689 the criteria given above --- they identify memory lvalues,
11690 register lvalues, computed values, etcetera. So we can evaluate
11691 the expression, and then scan the chain of values that leaves
11692 behind to decide whether we can detect any possible change to the
11693 expression's final value using only hardware watchpoints.
11695 However, I don't think that the values returned by inferior
11696 function calls are special in any way. So this function may not
11697 notice that an expression involving an inferior function call
11698 can't be watched with hardware watchpoints. FIXME. */
11699 for (; v; v = value_next (v))
11701 if (VALUE_LVAL (v) == lval_memory)
11703 if (v != head && value_lazy (v))
11704 /* A lazy memory lvalue in the chain is one that GDB never
11705 needed to fetch; we either just used its address (e.g.,
11706 `a' in `a.b') or we never needed it at all (e.g., `a'
11707 in `a,b'). This doesn't apply to HEAD; if that is
11708 lazy then it was not readable, but watch it anyway. */
11712 /* Ahh, memory we actually used! Check if we can cover
11713 it with hardware watchpoints. */
11714 struct type *vtype = check_typedef (value_type (v));
11716 /* We only watch structs and arrays if user asked for it
11717 explicitly, never if they just happen to appear in a
11718 middle of some value chain. */
11720 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11721 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11723 CORE_ADDR vaddr = value_address (v);
11727 len = (target_exact_watchpoints
11728 && is_scalar_type_recursive (vtype))?
11729 1 : TYPE_LENGTH (value_type (v));
11731 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11735 found_memory_cnt += num_regs;
11739 else if (VALUE_LVAL (v) != not_lval
11740 && deprecated_value_modifiable (v) == 0)
11741 return 0; /* These are values from the history (e.g., $1). */
11742 else if (VALUE_LVAL (v) == lval_register)
11743 return 0; /* Cannot watch a register with a HW watchpoint. */
11746 /* The expression itself looks suitable for using a hardware
11747 watchpoint, but give the target machine a chance to reject it. */
11748 return found_memory_cnt;
11752 watch_command_wrapper (char *arg, int from_tty, int internal)
11754 watch_command_1 (arg, hw_write, from_tty, 0, internal);
11757 /* A helper function that looks for the "-location" argument and then
11758 calls watch_command_1. */
11761 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11763 int just_location = 0;
11766 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11767 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11769 arg = skip_spaces (arg);
11773 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11777 watch_command (char *arg, int from_tty)
11779 watch_maybe_just_location (arg, hw_write, from_tty);
11783 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11785 watch_command_1 (arg, hw_read, from_tty, 0, internal);
11789 rwatch_command (char *arg, int from_tty)
11791 watch_maybe_just_location (arg, hw_read, from_tty);
11795 awatch_command_wrapper (char *arg, int from_tty, int internal)
11797 watch_command_1 (arg, hw_access, from_tty, 0, internal);
11801 awatch_command (char *arg, int from_tty)
11803 watch_maybe_just_location (arg, hw_access, from_tty);
11807 /* Helper routines for the until_command routine in infcmd.c. Here
11808 because it uses the mechanisms of breakpoints. */
11810 struct until_break_command_continuation_args
11812 struct breakpoint *breakpoint;
11813 struct breakpoint *breakpoint2;
11817 /* This function is called by fetch_inferior_event via the
11818 cmd_continuation pointer, to complete the until command. It takes
11819 care of cleaning up the temporary breakpoints set up by the until
11822 until_break_command_continuation (void *arg, int err)
11824 struct until_break_command_continuation_args *a = arg;
11826 delete_breakpoint (a->breakpoint);
11827 if (a->breakpoint2)
11828 delete_breakpoint (a->breakpoint2);
11829 delete_longjmp_breakpoint (a->thread_num);
11833 until_break_command (char *arg, int from_tty, int anywhere)
11835 struct symtabs_and_lines sals;
11836 struct symtab_and_line sal;
11837 struct frame_info *frame;
11838 struct gdbarch *frame_gdbarch;
11839 struct frame_id stack_frame_id;
11840 struct frame_id caller_frame_id;
11841 struct breakpoint *breakpoint;
11842 struct breakpoint *breakpoint2 = NULL;
11843 struct cleanup *old_chain;
11845 struct thread_info *tp;
11847 clear_proceed_status (0);
11849 /* Set a breakpoint where the user wants it and at return from
11852 if (last_displayed_sal_is_valid ())
11853 sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11854 get_last_displayed_symtab (),
11855 get_last_displayed_line ());
11857 sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11858 (struct symtab *) NULL, 0);
11860 if (sals.nelts != 1)
11861 error (_("Couldn't get information on specified line."));
11863 sal = sals.sals[0];
11864 xfree (sals.sals); /* malloc'd, so freed. */
11867 error (_("Junk at end of arguments."));
11869 resolve_sal_pc (&sal);
11871 tp = inferior_thread ();
11874 old_chain = make_cleanup (null_cleanup, NULL);
11876 /* Note linespec handling above invalidates the frame chain.
11877 Installing a breakpoint also invalidates the frame chain (as it
11878 may need to switch threads), so do any frame handling before
11881 frame = get_selected_frame (NULL);
11882 frame_gdbarch = get_frame_arch (frame);
11883 stack_frame_id = get_stack_frame_id (frame);
11884 caller_frame_id = frame_unwind_caller_id (frame);
11886 /* Keep within the current frame, or in frames called by the current
11889 if (frame_id_p (caller_frame_id))
11891 struct symtab_and_line sal2;
11893 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11894 sal2.pc = frame_unwind_caller_pc (frame);
11895 breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11899 make_cleanup_delete_breakpoint (breakpoint2);
11901 set_longjmp_breakpoint (tp, caller_frame_id);
11902 make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11905 /* set_momentary_breakpoint could invalidate FRAME. */
11909 /* If the user told us to continue until a specified location,
11910 we don't specify a frame at which we need to stop. */
11911 breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11912 null_frame_id, bp_until);
11914 /* Otherwise, specify the selected frame, because we want to stop
11915 only at the very same frame. */
11916 breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11917 stack_frame_id, bp_until);
11918 make_cleanup_delete_breakpoint (breakpoint);
11920 proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11922 /* If we are running asynchronously, and proceed call above has
11923 actually managed to start the target, arrange for breakpoints to
11924 be deleted when the target stops. Otherwise, we're already
11925 stopped and delete breakpoints via cleanup chain. */
11927 if (target_can_async_p () && is_running (inferior_ptid))
11929 struct until_break_command_continuation_args *args;
11930 args = xmalloc (sizeof (*args));
11932 args->breakpoint = breakpoint;
11933 args->breakpoint2 = breakpoint2;
11934 args->thread_num = thread;
11936 discard_cleanups (old_chain);
11937 add_continuation (inferior_thread (),
11938 until_break_command_continuation, args,
11942 do_cleanups (old_chain);
11945 /* This function attempts to parse an optional "if <cond>" clause
11946 from the arg string. If one is not found, it returns NULL.
11948 Else, it returns a pointer to the condition string. (It does not
11949 attempt to evaluate the string against a particular block.) And,
11950 it updates arg to point to the first character following the parsed
11951 if clause in the arg string. */
11954 ep_parse_optional_if_clause (char **arg)
11958 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11961 /* Skip the "if" keyword. */
11964 /* Skip any extra leading whitespace, and record the start of the
11965 condition string. */
11966 *arg = skip_spaces (*arg);
11967 cond_string = *arg;
11969 /* Assume that the condition occupies the remainder of the arg
11971 (*arg) += strlen (cond_string);
11973 return cond_string;
11976 /* Commands to deal with catching events, such as signals, exceptions,
11977 process start/exit, etc. */
11981 catch_fork_temporary, catch_vfork_temporary,
11982 catch_fork_permanent, catch_vfork_permanent
11987 catch_fork_command_1 (char *arg, int from_tty,
11988 struct cmd_list_element *command)
11990 struct gdbarch *gdbarch = get_current_arch ();
11991 char *cond_string = NULL;
11992 catch_fork_kind fork_kind;
11995 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11996 tempflag = (fork_kind == catch_fork_temporary
11997 || fork_kind == catch_vfork_temporary);
12001 arg = skip_spaces (arg);
12003 /* The allowed syntax is:
12005 catch [v]fork if <cond>
12007 First, check if there's an if clause. */
12008 cond_string = ep_parse_optional_if_clause (&arg);
12010 if ((*arg != '\0') && !isspace (*arg))
12011 error (_("Junk at end of arguments."));
12013 /* If this target supports it, create a fork or vfork catchpoint
12014 and enable reporting of such events. */
12017 case catch_fork_temporary:
12018 case catch_fork_permanent:
12019 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
12020 &catch_fork_breakpoint_ops);
12022 case catch_vfork_temporary:
12023 case catch_vfork_permanent:
12024 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
12025 &catch_vfork_breakpoint_ops);
12028 error (_("unsupported or unknown fork kind; cannot catch it"));
12034 catch_exec_command_1 (char *arg, int from_tty,
12035 struct cmd_list_element *command)
12037 struct exec_catchpoint *c;
12038 struct gdbarch *gdbarch = get_current_arch ();
12040 char *cond_string = NULL;
12042 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12046 arg = skip_spaces (arg);
12048 /* The allowed syntax is:
12050 catch exec if <cond>
12052 First, check if there's an if clause. */
12053 cond_string = ep_parse_optional_if_clause (&arg);
12055 if ((*arg != '\0') && !isspace (*arg))
12056 error (_("Junk at end of arguments."));
12058 c = XNEW (struct exec_catchpoint);
12059 init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
12060 &catch_exec_breakpoint_ops);
12061 c->exec_pathname = NULL;
12063 install_breakpoint (0, &c->base, 1);
12067 init_ada_exception_breakpoint (struct breakpoint *b,
12068 struct gdbarch *gdbarch,
12069 struct symtab_and_line sal,
12071 const struct breakpoint_ops *ops,
12078 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
12080 loc_gdbarch = gdbarch;
12082 describe_other_breakpoints (loc_gdbarch,
12083 sal.pspace, sal.pc, sal.section, -1);
12084 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
12085 version for exception catchpoints, because two catchpoints
12086 used for different exception names will use the same address.
12087 In this case, a "breakpoint ... also set at..." warning is
12088 unproductive. Besides, the warning phrasing is also a bit
12089 inappropriate, we should use the word catchpoint, and tell
12090 the user what type of catchpoint it is. The above is good
12091 enough for now, though. */
12094 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
12096 b->enable_state = enabled ? bp_enabled : bp_disabled;
12097 b->disposition = tempflag ? disp_del : disp_donttouch;
12098 b->addr_string = addr_string;
12099 b->language = language_ada;
12102 /* Splits the argument using space as delimiter. Returns an xmalloc'd
12103 filter list, or NULL if no filtering is required. */
12105 catch_syscall_split_args (char *arg)
12107 VEC(int) *result = NULL;
12108 struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
12110 while (*arg != '\0')
12112 int i, syscall_number;
12114 char cur_name[128];
12117 /* Skip whitespace. */
12118 arg = skip_spaces (arg);
12120 for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
12121 cur_name[i] = arg[i];
12122 cur_name[i] = '\0';
12125 /* Check if the user provided a syscall name or a number. */
12126 syscall_number = (int) strtol (cur_name, &endptr, 0);
12127 if (*endptr == '\0')
12128 get_syscall_by_number (syscall_number, &s);
12131 /* We have a name. Let's check if it's valid and convert it
12133 get_syscall_by_name (cur_name, &s);
12135 if (s.number == UNKNOWN_SYSCALL)
12136 /* Here we have to issue an error instead of a warning,
12137 because GDB cannot do anything useful if there's no
12138 syscall number to be caught. */
12139 error (_("Unknown syscall name '%s'."), cur_name);
12142 /* Ok, it's valid. */
12143 VEC_safe_push (int, result, s.number);
12146 discard_cleanups (cleanup);
12150 /* Implement the "catch syscall" command. */
12153 catch_syscall_command_1 (char *arg, int from_tty,
12154 struct cmd_list_element *command)
12159 struct gdbarch *gdbarch = get_current_arch ();
12161 /* Checking if the feature if supported. */
12162 if (gdbarch_get_syscall_number_p (gdbarch) == 0)
12163 error (_("The feature 'catch syscall' is not supported on \
12164 this architecture yet."));
12166 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12168 arg = skip_spaces (arg);
12170 /* We need to do this first "dummy" translation in order
12171 to get the syscall XML file loaded or, most important,
12172 to display a warning to the user if there's no XML file
12173 for his/her architecture. */
12174 get_syscall_by_number (0, &s);
12176 /* The allowed syntax is:
12178 catch syscall <name | number> [<name | number> ... <name | number>]
12180 Let's check if there's a syscall name. */
12183 filter = catch_syscall_split_args (arg);
12187 create_syscall_event_catchpoint (tempflag, filter,
12188 &catch_syscall_breakpoint_ops);
12192 catch_command (char *arg, int from_tty)
12194 error (_("Catch requires an event name."));
12199 tcatch_command (char *arg, int from_tty)
12201 error (_("Catch requires an event name."));
12204 /* A qsort comparison function that sorts breakpoints in order. */
12207 compare_breakpoints (const void *a, const void *b)
12209 const breakpoint_p *ba = a;
12210 uintptr_t ua = (uintptr_t) *ba;
12211 const breakpoint_p *bb = b;
12212 uintptr_t ub = (uintptr_t) *bb;
12214 if ((*ba)->number < (*bb)->number)
12216 else if ((*ba)->number > (*bb)->number)
12219 /* Now sort by address, in case we see, e..g, two breakpoints with
12223 return ua > ub ? 1 : 0;
12226 /* Delete breakpoints by address or line. */
12229 clear_command (char *arg, int from_tty)
12231 struct breakpoint *b, *prev;
12232 VEC(breakpoint_p) *found = 0;
12235 struct symtabs_and_lines sals;
12236 struct symtab_and_line sal;
12238 struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
12242 sals = decode_line_with_current_source (arg,
12243 (DECODE_LINE_FUNFIRSTLINE
12244 | DECODE_LINE_LIST_MODE));
12245 make_cleanup (xfree, sals.sals);
12250 sals.sals = (struct symtab_and_line *)
12251 xmalloc (sizeof (struct symtab_and_line));
12252 make_cleanup (xfree, sals.sals);
12253 init_sal (&sal); /* Initialize to zeroes. */
12255 /* Set sal's line, symtab, pc, and pspace to the values
12256 corresponding to the last call to print_frame_info. If the
12257 codepoint is not valid, this will set all the fields to 0. */
12258 get_last_displayed_sal (&sal);
12259 if (sal.symtab == 0)
12260 error (_("No source file specified."));
12262 sals.sals[0] = sal;
12268 /* We don't call resolve_sal_pc here. That's not as bad as it
12269 seems, because all existing breakpoints typically have both
12270 file/line and pc set. So, if clear is given file/line, we can
12271 match this to existing breakpoint without obtaining pc at all.
12273 We only support clearing given the address explicitly
12274 present in breakpoint table. Say, we've set breakpoint
12275 at file:line. There were several PC values for that file:line,
12276 due to optimization, all in one block.
12278 We've picked one PC value. If "clear" is issued with another
12279 PC corresponding to the same file:line, the breakpoint won't
12280 be cleared. We probably can still clear the breakpoint, but
12281 since the other PC value is never presented to user, user
12282 can only find it by guessing, and it does not seem important
12283 to support that. */
12285 /* For each line spec given, delete bps which correspond to it. Do
12286 it in two passes, solely to preserve the current behavior that
12287 from_tty is forced true if we delete more than one
12291 make_cleanup (VEC_cleanup (breakpoint_p), &found);
12292 for (i = 0; i < sals.nelts; i++)
12294 const char *sal_fullname;
12296 /* If exact pc given, clear bpts at that pc.
12297 If line given (pc == 0), clear all bpts on specified line.
12298 If defaulting, clear all bpts on default line
12301 defaulting sal.pc != 0 tests to do
12306 1 0 <can't happen> */
12308 sal = sals.sals[i];
12309 sal_fullname = (sal.symtab == NULL
12310 ? NULL : symtab_to_fullname (sal.symtab));
12312 /* Find all matching breakpoints and add them to 'found'. */
12313 ALL_BREAKPOINTS (b)
12316 /* Are we going to delete b? */
12317 if (b->type != bp_none && !is_watchpoint (b))
12319 struct bp_location *loc = b->loc;
12320 for (; loc; loc = loc->next)
12322 /* If the user specified file:line, don't allow a PC
12323 match. This matches historical gdb behavior. */
12324 int pc_match = (!sal.explicit_line
12326 && (loc->pspace == sal.pspace)
12327 && (loc->address == sal.pc)
12328 && (!section_is_overlay (loc->section)
12329 || loc->section == sal.section));
12330 int line_match = 0;
12332 if ((default_match || sal.explicit_line)
12333 && loc->symtab != NULL
12334 && sal_fullname != NULL
12335 && sal.pspace == loc->pspace
12336 && loc->line_number == sal.line
12337 && filename_cmp (symtab_to_fullname (loc->symtab),
12338 sal_fullname) == 0)
12341 if (pc_match || line_match)
12350 VEC_safe_push(breakpoint_p, found, b);
12354 /* Now go thru the 'found' chain and delete them. */
12355 if (VEC_empty(breakpoint_p, found))
12358 error (_("No breakpoint at %s."), arg);
12360 error (_("No breakpoint at this line."));
12363 /* Remove duplicates from the vec. */
12364 qsort (VEC_address (breakpoint_p, found),
12365 VEC_length (breakpoint_p, found),
12366 sizeof (breakpoint_p),
12367 compare_breakpoints);
12368 prev = VEC_index (breakpoint_p, found, 0);
12369 for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12373 VEC_ordered_remove (breakpoint_p, found, ix);
12378 if (VEC_length(breakpoint_p, found) > 1)
12379 from_tty = 1; /* Always report if deleted more than one. */
12382 if (VEC_length(breakpoint_p, found) == 1)
12383 printf_unfiltered (_("Deleted breakpoint "));
12385 printf_unfiltered (_("Deleted breakpoints "));
12388 for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12391 printf_unfiltered ("%d ", b->number);
12392 delete_breakpoint (b);
12395 putchar_unfiltered ('\n');
12397 do_cleanups (cleanups);
12400 /* Delete breakpoint in BS if they are `delete' breakpoints and
12401 all breakpoints that are marked for deletion, whether hit or not.
12402 This is called after any breakpoint is hit, or after errors. */
12405 breakpoint_auto_delete (bpstat bs)
12407 struct breakpoint *b, *b_tmp;
12409 for (; bs; bs = bs->next)
12410 if (bs->breakpoint_at
12411 && bs->breakpoint_at->disposition == disp_del
12413 delete_breakpoint (bs->breakpoint_at);
12415 ALL_BREAKPOINTS_SAFE (b, b_tmp)
12417 if (b->disposition == disp_del_at_next_stop)
12418 delete_breakpoint (b);
12422 /* A comparison function for bp_location AP and BP being interfaced to
12423 qsort. Sort elements primarily by their ADDRESS (no matter what
12424 does breakpoint_address_is_meaningful say for its OWNER),
12425 secondarily by ordering first bp_permanent OWNERed elements and
12426 terciarily just ensuring the array is sorted stable way despite
12427 qsort being an unstable algorithm. */
12430 bp_location_compare (const void *ap, const void *bp)
12432 struct bp_location *a = *(void **) ap;
12433 struct bp_location *b = *(void **) bp;
12434 /* A and B come from existing breakpoints having non-NULL OWNER. */
12435 int a_perm = a->owner->enable_state == bp_permanent;
12436 int b_perm = b->owner->enable_state == bp_permanent;
12438 if (a->address != b->address)
12439 return (a->address > b->address) - (a->address < b->address);
12441 /* Sort locations at the same address by their pspace number, keeping
12442 locations of the same inferior (in a multi-inferior environment)
12445 if (a->pspace->num != b->pspace->num)
12446 return ((a->pspace->num > b->pspace->num)
12447 - (a->pspace->num < b->pspace->num));
12449 /* Sort permanent breakpoints first. */
12450 if (a_perm != b_perm)
12451 return (a_perm < b_perm) - (a_perm > b_perm);
12453 /* Make the internal GDB representation stable across GDB runs
12454 where A and B memory inside GDB can differ. Breakpoint locations of
12455 the same type at the same address can be sorted in arbitrary order. */
12457 if (a->owner->number != b->owner->number)
12458 return ((a->owner->number > b->owner->number)
12459 - (a->owner->number < b->owner->number));
12461 return (a > b) - (a < b);
12464 /* Set bp_location_placed_address_before_address_max and
12465 bp_location_shadow_len_after_address_max according to the current
12466 content of the bp_location array. */
12469 bp_location_target_extensions_update (void)
12471 struct bp_location *bl, **blp_tmp;
12473 bp_location_placed_address_before_address_max = 0;
12474 bp_location_shadow_len_after_address_max = 0;
12476 ALL_BP_LOCATIONS (bl, blp_tmp)
12478 CORE_ADDR start, end, addr;
12480 if (!bp_location_has_shadow (bl))
12483 start = bl->target_info.placed_address;
12484 end = start + bl->target_info.shadow_len;
12486 gdb_assert (bl->address >= start);
12487 addr = bl->address - start;
12488 if (addr > bp_location_placed_address_before_address_max)
12489 bp_location_placed_address_before_address_max = addr;
12491 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
12493 gdb_assert (bl->address < end);
12494 addr = end - bl->address;
12495 if (addr > bp_location_shadow_len_after_address_max)
12496 bp_location_shadow_len_after_address_max = addr;
12500 /* Download tracepoint locations if they haven't been. */
12503 download_tracepoint_locations (void)
12505 struct breakpoint *b;
12506 struct cleanup *old_chain;
12508 if (!target_can_download_tracepoint ())
12511 old_chain = save_current_space_and_thread ();
12513 ALL_TRACEPOINTS (b)
12515 struct bp_location *bl;
12516 struct tracepoint *t;
12517 int bp_location_downloaded = 0;
12519 if ((b->type == bp_fast_tracepoint
12520 ? !may_insert_fast_tracepoints
12521 : !may_insert_tracepoints))
12524 for (bl = b->loc; bl; bl = bl->next)
12526 /* In tracepoint, locations are _never_ duplicated, so
12527 should_be_inserted is equivalent to
12528 unduplicated_should_be_inserted. */
12529 if (!should_be_inserted (bl) || bl->inserted)
12532 switch_to_program_space_and_thread (bl->pspace);
12534 target_download_tracepoint (bl);
12537 bp_location_downloaded = 1;
12539 t = (struct tracepoint *) b;
12540 t->number_on_target = b->number;
12541 if (bp_location_downloaded)
12542 observer_notify_breakpoint_modified (b);
12545 do_cleanups (old_chain);
12548 /* Swap the insertion/duplication state between two locations. */
12551 swap_insertion (struct bp_location *left, struct bp_location *right)
12553 const int left_inserted = left->inserted;
12554 const int left_duplicate = left->duplicate;
12555 const int left_needs_update = left->needs_update;
12556 const struct bp_target_info left_target_info = left->target_info;
12558 /* Locations of tracepoints can never be duplicated. */
12559 if (is_tracepoint (left->owner))
12560 gdb_assert (!left->duplicate);
12561 if (is_tracepoint (right->owner))
12562 gdb_assert (!right->duplicate);
12564 left->inserted = right->inserted;
12565 left->duplicate = right->duplicate;
12566 left->needs_update = right->needs_update;
12567 left->target_info = right->target_info;
12568 right->inserted = left_inserted;
12569 right->duplicate = left_duplicate;
12570 right->needs_update = left_needs_update;
12571 right->target_info = left_target_info;
12574 /* Force the re-insertion of the locations at ADDRESS. This is called
12575 once a new/deleted/modified duplicate location is found and we are evaluating
12576 conditions on the target's side. Such conditions need to be updated on
12580 force_breakpoint_reinsertion (struct bp_location *bl)
12582 struct bp_location **locp = NULL, **loc2p;
12583 struct bp_location *loc;
12584 CORE_ADDR address = 0;
12587 address = bl->address;
12588 pspace_num = bl->pspace->num;
12590 /* This is only meaningful if the target is
12591 evaluating conditions and if the user has
12592 opted for condition evaluation on the target's
12594 if (gdb_evaluates_breakpoint_condition_p ()
12595 || !target_supports_evaluation_of_breakpoint_conditions ())
12598 /* Flag all breakpoint locations with this address and
12599 the same program space as the location
12600 as "its condition has changed". We need to
12601 update the conditions on the target's side. */
12602 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12606 if (!is_breakpoint (loc->owner)
12607 || pspace_num != loc->pspace->num)
12610 /* Flag the location appropriately. We use a different state to
12611 let everyone know that we already updated the set of locations
12612 with addr bl->address and program space bl->pspace. This is so
12613 we don't have to keep calling these functions just to mark locations
12614 that have already been marked. */
12615 loc->condition_changed = condition_updated;
12617 /* Free the agent expression bytecode as well. We will compute
12619 if (loc->cond_bytecode)
12621 free_agent_expr (loc->cond_bytecode);
12622 loc->cond_bytecode = NULL;
12626 /* Called whether new breakpoints are created, or existing breakpoints
12627 deleted, to update the global location list and recompute which
12628 locations are duplicate of which.
12630 The INSERT_MODE flag determines whether locations may not, may, or
12631 shall be inserted now. See 'enum ugll_insert_mode' for more
12635 update_global_location_list (enum ugll_insert_mode insert_mode)
12637 struct breakpoint *b;
12638 struct bp_location **locp, *loc;
12639 struct cleanup *cleanups;
12640 /* Last breakpoint location address that was marked for update. */
12641 CORE_ADDR last_addr = 0;
12642 /* Last breakpoint location program space that was marked for update. */
12643 int last_pspace_num = -1;
12645 /* Used in the duplicates detection below. When iterating over all
12646 bp_locations, points to the first bp_location of a given address.
12647 Breakpoints and watchpoints of different types are never
12648 duplicates of each other. Keep one pointer for each type of
12649 breakpoint/watchpoint, so we only need to loop over all locations
12651 struct bp_location *bp_loc_first; /* breakpoint */
12652 struct bp_location *wp_loc_first; /* hardware watchpoint */
12653 struct bp_location *awp_loc_first; /* access watchpoint */
12654 struct bp_location *rwp_loc_first; /* read watchpoint */
12656 /* Saved former bp_location array which we compare against the newly
12657 built bp_location from the current state of ALL_BREAKPOINTS. */
12658 struct bp_location **old_location, **old_locp;
12659 unsigned old_location_count;
12661 old_location = bp_location;
12662 old_location_count = bp_location_count;
12663 bp_location = NULL;
12664 bp_location_count = 0;
12665 cleanups = make_cleanup (xfree, old_location);
12667 ALL_BREAKPOINTS (b)
12668 for (loc = b->loc; loc; loc = loc->next)
12669 bp_location_count++;
12671 bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12672 locp = bp_location;
12673 ALL_BREAKPOINTS (b)
12674 for (loc = b->loc; loc; loc = loc->next)
12676 qsort (bp_location, bp_location_count, sizeof (*bp_location),
12677 bp_location_compare);
12679 bp_location_target_extensions_update ();
12681 /* Identify bp_location instances that are no longer present in the
12682 new list, and therefore should be freed. Note that it's not
12683 necessary that those locations should be removed from inferior --
12684 if there's another location at the same address (previously
12685 marked as duplicate), we don't need to remove/insert the
12688 LOCP is kept in sync with OLD_LOCP, each pointing to the current
12689 and former bp_location array state respectively. */
12691 locp = bp_location;
12692 for (old_locp = old_location; old_locp < old_location + old_location_count;
12695 struct bp_location *old_loc = *old_locp;
12696 struct bp_location **loc2p;
12698 /* Tells if 'old_loc' is found among the new locations. If
12699 not, we have to free it. */
12700 int found_object = 0;
12701 /* Tells if the location should remain inserted in the target. */
12702 int keep_in_target = 0;
12705 /* Skip LOCP entries which will definitely never be needed.
12706 Stop either at or being the one matching OLD_LOC. */
12707 while (locp < bp_location + bp_location_count
12708 && (*locp)->address < old_loc->address)
12712 (loc2p < bp_location + bp_location_count
12713 && (*loc2p)->address == old_loc->address);
12716 /* Check if this is a new/duplicated location or a duplicated
12717 location that had its condition modified. If so, we want to send
12718 its condition to the target if evaluation of conditions is taking
12720 if ((*loc2p)->condition_changed == condition_modified
12721 && (last_addr != old_loc->address
12722 || last_pspace_num != old_loc->pspace->num))
12724 force_breakpoint_reinsertion (*loc2p);
12725 last_pspace_num = old_loc->pspace->num;
12728 if (*loc2p == old_loc)
12732 /* We have already handled this address, update it so that we don't
12733 have to go through updates again. */
12734 last_addr = old_loc->address;
12736 /* Target-side condition evaluation: Handle deleted locations. */
12738 force_breakpoint_reinsertion (old_loc);
12740 /* If this location is no longer present, and inserted, look if
12741 there's maybe a new location at the same address. If so,
12742 mark that one inserted, and don't remove this one. This is
12743 needed so that we don't have a time window where a breakpoint
12744 at certain location is not inserted. */
12746 if (old_loc->inserted)
12748 /* If the location is inserted now, we might have to remove
12751 if (found_object && should_be_inserted (old_loc))
12753 /* The location is still present in the location list,
12754 and still should be inserted. Don't do anything. */
12755 keep_in_target = 1;
12759 /* This location still exists, but it won't be kept in the
12760 target since it may have been disabled. We proceed to
12761 remove its target-side condition. */
12763 /* The location is either no longer present, or got
12764 disabled. See if there's another location at the
12765 same address, in which case we don't need to remove
12766 this one from the target. */
12768 /* OLD_LOC comes from existing struct breakpoint. */
12769 if (breakpoint_address_is_meaningful (old_loc->owner))
12772 (loc2p < bp_location + bp_location_count
12773 && (*loc2p)->address == old_loc->address);
12776 struct bp_location *loc2 = *loc2p;
12778 if (breakpoint_locations_match (loc2, old_loc))
12780 /* Read watchpoint locations are switched to
12781 access watchpoints, if the former are not
12782 supported, but the latter are. */
12783 if (is_hardware_watchpoint (old_loc->owner))
12785 gdb_assert (is_hardware_watchpoint (loc2->owner));
12786 loc2->watchpoint_type = old_loc->watchpoint_type;
12789 /* loc2 is a duplicated location. We need to check
12790 if it should be inserted in case it will be
12792 if (loc2 != old_loc
12793 && unduplicated_should_be_inserted (loc2))
12795 swap_insertion (old_loc, loc2);
12796 keep_in_target = 1;
12804 if (!keep_in_target)
12806 if (remove_breakpoint (old_loc, mark_uninserted))
12808 /* This is just about all we can do. We could keep
12809 this location on the global list, and try to
12810 remove it next time, but there's no particular
12811 reason why we will succeed next time.
12813 Note that at this point, old_loc->owner is still
12814 valid, as delete_breakpoint frees the breakpoint
12815 only after calling us. */
12816 printf_filtered (_("warning: Error removing "
12817 "breakpoint %d\n"),
12818 old_loc->owner->number);
12826 if (removed && non_stop
12827 && breakpoint_address_is_meaningful (old_loc->owner)
12828 && !is_hardware_watchpoint (old_loc->owner))
12830 /* This location was removed from the target. In
12831 non-stop mode, a race condition is possible where
12832 we've removed a breakpoint, but stop events for that
12833 breakpoint are already queued and will arrive later.
12834 We apply an heuristic to be able to distinguish such
12835 SIGTRAPs from other random SIGTRAPs: we keep this
12836 breakpoint location for a bit, and will retire it
12837 after we see some number of events. The theory here
12838 is that reporting of events should, "on the average",
12839 be fair, so after a while we'll see events from all
12840 threads that have anything of interest, and no longer
12841 need to keep this breakpoint location around. We
12842 don't hold locations forever so to reduce chances of
12843 mistaking a non-breakpoint SIGTRAP for a breakpoint
12846 The heuristic failing can be disastrous on
12847 decr_pc_after_break targets.
12849 On decr_pc_after_break targets, like e.g., x86-linux,
12850 if we fail to recognize a late breakpoint SIGTRAP,
12851 because events_till_retirement has reached 0 too
12852 soon, we'll fail to do the PC adjustment, and report
12853 a random SIGTRAP to the user. When the user resumes
12854 the inferior, it will most likely immediately crash
12855 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12856 corrupted, because of being resumed e.g., in the
12857 middle of a multi-byte instruction, or skipped a
12858 one-byte instruction. This was actually seen happen
12859 on native x86-linux, and should be less rare on
12860 targets that do not support new thread events, like
12861 remote, due to the heuristic depending on
12864 Mistaking a random SIGTRAP for a breakpoint trap
12865 causes similar symptoms (PC adjustment applied when
12866 it shouldn't), but then again, playing with SIGTRAPs
12867 behind the debugger's back is asking for trouble.
12869 Since hardware watchpoint traps are always
12870 distinguishable from other traps, so we don't need to
12871 apply keep hardware watchpoint moribund locations
12872 around. We simply always ignore hardware watchpoint
12873 traps we can no longer explain. */
12875 old_loc->events_till_retirement = 3 * (thread_count () + 1);
12876 old_loc->owner = NULL;
12878 VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12882 old_loc->owner = NULL;
12883 decref_bp_location (&old_loc);
12888 /* Rescan breakpoints at the same address and section, marking the
12889 first one as "first" and any others as "duplicates". This is so
12890 that the bpt instruction is only inserted once. If we have a
12891 permanent breakpoint at the same place as BPT, make that one the
12892 official one, and the rest as duplicates. Permanent breakpoints
12893 are sorted first for the same address.
12895 Do the same for hardware watchpoints, but also considering the
12896 watchpoint's type (regular/access/read) and length. */
12898 bp_loc_first = NULL;
12899 wp_loc_first = NULL;
12900 awp_loc_first = NULL;
12901 rwp_loc_first = NULL;
12902 ALL_BP_LOCATIONS (loc, locp)
12904 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12906 struct bp_location **loc_first_p;
12909 if (!unduplicated_should_be_inserted (loc)
12910 || !breakpoint_address_is_meaningful (b)
12911 /* Don't detect duplicate for tracepoint locations because they are
12912 never duplicated. See the comments in field `duplicate' of
12913 `struct bp_location'. */
12914 || is_tracepoint (b))
12916 /* Clear the condition modification flag. */
12917 loc->condition_changed = condition_unchanged;
12921 /* Permanent breakpoint should always be inserted. */
12922 if (b->enable_state == bp_permanent && ! loc->inserted)
12923 internal_error (__FILE__, __LINE__,
12924 _("allegedly permanent breakpoint is not "
12925 "actually inserted"));
12927 if (b->type == bp_hardware_watchpoint)
12928 loc_first_p = &wp_loc_first;
12929 else if (b->type == bp_read_watchpoint)
12930 loc_first_p = &rwp_loc_first;
12931 else if (b->type == bp_access_watchpoint)
12932 loc_first_p = &awp_loc_first;
12934 loc_first_p = &bp_loc_first;
12936 if (*loc_first_p == NULL
12937 || (overlay_debugging && loc->section != (*loc_first_p)->section)
12938 || !breakpoint_locations_match (loc, *loc_first_p))
12940 *loc_first_p = loc;
12941 loc->duplicate = 0;
12943 if (is_breakpoint (loc->owner) && loc->condition_changed)
12945 loc->needs_update = 1;
12946 /* Clear the condition modification flag. */
12947 loc->condition_changed = condition_unchanged;
12953 /* This and the above ensure the invariant that the first location
12954 is not duplicated, and is the inserted one.
12955 All following are marked as duplicated, and are not inserted. */
12957 swap_insertion (loc, *loc_first_p);
12958 loc->duplicate = 1;
12960 /* Clear the condition modification flag. */
12961 loc->condition_changed = condition_unchanged;
12963 if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12964 && b->enable_state != bp_permanent)
12965 internal_error (__FILE__, __LINE__,
12966 _("another breakpoint was inserted on top of "
12967 "a permanent breakpoint"));
12970 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12972 if (insert_mode != UGLL_DONT_INSERT)
12973 insert_breakpoint_locations ();
12976 /* Even though the caller told us to not insert new
12977 locations, we may still need to update conditions on the
12978 target's side of breakpoints that were already inserted
12979 if the target is evaluating breakpoint conditions. We
12980 only update conditions for locations that are marked
12982 update_inserted_breakpoint_locations ();
12986 if (insert_mode != UGLL_DONT_INSERT)
12987 download_tracepoint_locations ();
12989 do_cleanups (cleanups);
12993 breakpoint_retire_moribund (void)
12995 struct bp_location *loc;
12998 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12999 if (--(loc->events_till_retirement) == 0)
13001 decref_bp_location (&loc);
13002 VEC_unordered_remove (bp_location_p, moribund_locations, ix);
13008 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
13010 volatile struct gdb_exception e;
13012 TRY_CATCH (e, RETURN_MASK_ERROR)
13013 update_global_location_list (insert_mode);
13016 /* Clear BKP from a BPS. */
13019 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
13023 for (bs = bps; bs; bs = bs->next)
13024 if (bs->breakpoint_at == bpt)
13026 bs->breakpoint_at = NULL;
13027 bs->old_val = NULL;
13028 /* bs->commands will be freed later. */
13032 /* Callback for iterate_over_threads. */
13034 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
13036 struct breakpoint *bpt = data;
13038 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
13042 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
13046 say_where (struct breakpoint *b)
13048 struct value_print_options opts;
13050 get_user_print_options (&opts);
13052 /* i18n: cagney/2005-02-11: Below needs to be merged into a
13054 if (b->loc == NULL)
13056 printf_filtered (_(" (%s) pending."), b->addr_string);
13060 if (opts.addressprint || b->loc->symtab == NULL)
13062 printf_filtered (" at ");
13063 fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
13066 if (b->loc->symtab != NULL)
13068 /* If there is a single location, we can print the location
13070 if (b->loc->next == NULL)
13071 printf_filtered (": file %s, line %d.",
13072 symtab_to_filename_for_display (b->loc->symtab),
13073 b->loc->line_number);
13075 /* This is not ideal, but each location may have a
13076 different file name, and this at least reflects the
13077 real situation somewhat. */
13078 printf_filtered (": %s.", b->addr_string);
13083 struct bp_location *loc = b->loc;
13085 for (; loc; loc = loc->next)
13087 printf_filtered (" (%d locations)", n);
13092 /* Default bp_location_ops methods. */
13095 bp_location_dtor (struct bp_location *self)
13097 xfree (self->cond);
13098 if (self->cond_bytecode)
13099 free_agent_expr (self->cond_bytecode);
13100 xfree (self->function_name);
13102 VEC_free (agent_expr_p, self->target_info.conditions);
13103 VEC_free (agent_expr_p, self->target_info.tcommands);
13106 static const struct bp_location_ops bp_location_ops =
13111 /* Default breakpoint_ops methods all breakpoint_ops ultimately
13115 base_breakpoint_dtor (struct breakpoint *self)
13117 decref_counted_command_line (&self->commands);
13118 xfree (self->cond_string);
13119 xfree (self->extra_string);
13120 xfree (self->addr_string);
13121 xfree (self->filter);
13122 xfree (self->addr_string_range_end);
13125 static struct bp_location *
13126 base_breakpoint_allocate_location (struct breakpoint *self)
13128 struct bp_location *loc;
13130 loc = XNEW (struct bp_location);
13131 init_bp_location (loc, &bp_location_ops, self);
13136 base_breakpoint_re_set (struct breakpoint *b)
13138 /* Nothing to re-set. */
13141 #define internal_error_pure_virtual_called() \
13142 gdb_assert_not_reached ("pure virtual function called")
13145 base_breakpoint_insert_location (struct bp_location *bl)
13147 internal_error_pure_virtual_called ();
13151 base_breakpoint_remove_location (struct bp_location *bl)
13153 internal_error_pure_virtual_called ();
13157 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
13158 struct address_space *aspace,
13160 const struct target_waitstatus *ws)
13162 internal_error_pure_virtual_called ();
13166 base_breakpoint_check_status (bpstat bs)
13171 /* A "works_in_software_mode" breakpoint_ops method that just internal
13175 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
13177 internal_error_pure_virtual_called ();
13180 /* A "resources_needed" breakpoint_ops method that just internal
13184 base_breakpoint_resources_needed (const struct bp_location *bl)
13186 internal_error_pure_virtual_called ();
13189 static enum print_stop_action
13190 base_breakpoint_print_it (bpstat bs)
13192 internal_error_pure_virtual_called ();
13196 base_breakpoint_print_one_detail (const struct breakpoint *self,
13197 struct ui_out *uiout)
13203 base_breakpoint_print_mention (struct breakpoint *b)
13205 internal_error_pure_virtual_called ();
13209 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
13211 internal_error_pure_virtual_called ();
13215 base_breakpoint_create_sals_from_address (char **arg,
13216 struct linespec_result *canonical,
13217 enum bptype type_wanted,
13221 internal_error_pure_virtual_called ();
13225 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13226 struct linespec_result *c,
13228 char *extra_string,
13229 enum bptype type_wanted,
13230 enum bpdisp disposition,
13232 int task, int ignore_count,
13233 const struct breakpoint_ops *o,
13234 int from_tty, int enabled,
13235 int internal, unsigned flags)
13237 internal_error_pure_virtual_called ();
13241 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
13242 struct symtabs_and_lines *sals)
13244 internal_error_pure_virtual_called ();
13247 /* The default 'explains_signal' method. */
13250 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
13255 /* The default "after_condition_true" method. */
13258 base_breakpoint_after_condition_true (struct bpstats *bs)
13260 /* Nothing to do. */
13263 struct breakpoint_ops base_breakpoint_ops =
13265 base_breakpoint_dtor,
13266 base_breakpoint_allocate_location,
13267 base_breakpoint_re_set,
13268 base_breakpoint_insert_location,
13269 base_breakpoint_remove_location,
13270 base_breakpoint_breakpoint_hit,
13271 base_breakpoint_check_status,
13272 base_breakpoint_resources_needed,
13273 base_breakpoint_works_in_software_mode,
13274 base_breakpoint_print_it,
13276 base_breakpoint_print_one_detail,
13277 base_breakpoint_print_mention,
13278 base_breakpoint_print_recreate,
13279 base_breakpoint_create_sals_from_address,
13280 base_breakpoint_create_breakpoints_sal,
13281 base_breakpoint_decode_linespec,
13282 base_breakpoint_explains_signal,
13283 base_breakpoint_after_condition_true,
13286 /* Default breakpoint_ops methods. */
13289 bkpt_re_set (struct breakpoint *b)
13291 /* FIXME: is this still reachable? */
13292 if (b->addr_string == NULL)
13294 /* Anything without a string can't be re-set. */
13295 delete_breakpoint (b);
13299 breakpoint_re_set_default (b);
13302 /* Copy SRC's shadow buffer and whatever else we'd set if we actually
13303 inserted DEST, so we can remove it later, in case SRC is removed
13307 bp_target_info_copy_insertion_state (struct bp_target_info *dest,
13308 const struct bp_target_info *src)
13310 dest->shadow_len = src->shadow_len;
13311 memcpy (dest->shadow_contents, src->shadow_contents, src->shadow_len);
13312 dest->placed_size = src->placed_size;
13316 bkpt_insert_location (struct bp_location *bl)
13318 if (bl->loc_type == bp_loc_hardware_breakpoint)
13319 return target_insert_hw_breakpoint (bl->gdbarch,
13323 struct bp_target_info *bp_tgt = &bl->target_info;
13327 /* There is no need to insert a breakpoint if an unconditional
13328 raw/sss breakpoint is already inserted at that location. */
13329 sss_slot = find_single_step_breakpoint (bp_tgt->placed_address_space,
13330 bp_tgt->placed_address);
13333 struct bp_target_info *sss_bp_tgt = single_step_breakpoints[sss_slot];
13335 bp_target_info_copy_insertion_state (bp_tgt, sss_bp_tgt);
13339 return target_insert_breakpoint (bl->gdbarch, bp_tgt);
13344 bkpt_remove_location (struct bp_location *bl)
13346 if (bl->loc_type == bp_loc_hardware_breakpoint)
13347 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
13350 struct bp_target_info *bp_tgt = &bl->target_info;
13351 struct address_space *aspace = bp_tgt->placed_address_space;
13352 CORE_ADDR address = bp_tgt->placed_address;
13354 /* Only remove the breakpoint if there is no raw/sss breakpoint
13355 still inserted at this location. Otherwise, we would be
13356 effectively disabling the raw/sss breakpoint. */
13357 if (single_step_breakpoint_inserted_here_p (aspace, address))
13360 return target_remove_breakpoint (bl->gdbarch, bp_tgt);
13365 bkpt_breakpoint_hit (const struct bp_location *bl,
13366 struct address_space *aspace, CORE_ADDR bp_addr,
13367 const struct target_waitstatus *ws)
13369 if (ws->kind != TARGET_WAITKIND_STOPPED
13370 || ws->value.sig != GDB_SIGNAL_TRAP)
13373 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
13377 if (overlay_debugging /* unmapped overlay section */
13378 && section_is_overlay (bl->section)
13379 && !section_is_mapped (bl->section))
13386 dprintf_breakpoint_hit (const struct bp_location *bl,
13387 struct address_space *aspace, CORE_ADDR bp_addr,
13388 const struct target_waitstatus *ws)
13390 if (dprintf_style == dprintf_style_agent
13391 && target_can_run_breakpoint_commands ())
13393 /* An agent-style dprintf never causes a stop. If we see a trap
13394 for this address it must be for a breakpoint that happens to
13395 be set at the same address. */
13399 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
13403 bkpt_resources_needed (const struct bp_location *bl)
13405 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
13410 static enum print_stop_action
13411 bkpt_print_it (bpstat bs)
13413 struct breakpoint *b;
13414 const struct bp_location *bl;
13416 struct ui_out *uiout = current_uiout;
13418 gdb_assert (bs->bp_location_at != NULL);
13420 bl = bs->bp_location_at;
13421 b = bs->breakpoint_at;
13423 bp_temp = b->disposition == disp_del;
13424 if (bl->address != bl->requested_address)
13425 breakpoint_adjustment_warning (bl->requested_address,
13428 annotate_breakpoint (b->number);
13430 ui_out_text (uiout, "\nTemporary breakpoint ");
13432 ui_out_text (uiout, "\nBreakpoint ");
13433 if (ui_out_is_mi_like_p (uiout))
13435 ui_out_field_string (uiout, "reason",
13436 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13437 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
13439 ui_out_field_int (uiout, "bkptno", b->number);
13440 ui_out_text (uiout, ", ");
13442 return PRINT_SRC_AND_LOC;
13446 bkpt_print_mention (struct breakpoint *b)
13448 if (ui_out_is_mi_like_p (current_uiout))
13453 case bp_breakpoint:
13454 case bp_gnu_ifunc_resolver:
13455 if (b->disposition == disp_del)
13456 printf_filtered (_("Temporary breakpoint"));
13458 printf_filtered (_("Breakpoint"));
13459 printf_filtered (_(" %d"), b->number);
13460 if (b->type == bp_gnu_ifunc_resolver)
13461 printf_filtered (_(" at gnu-indirect-function resolver"));
13463 case bp_hardware_breakpoint:
13464 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13467 printf_filtered (_("Dprintf %d"), b->number);
13475 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13477 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13478 fprintf_unfiltered (fp, "tbreak");
13479 else if (tp->type == bp_breakpoint)
13480 fprintf_unfiltered (fp, "break");
13481 else if (tp->type == bp_hardware_breakpoint
13482 && tp->disposition == disp_del)
13483 fprintf_unfiltered (fp, "thbreak");
13484 else if (tp->type == bp_hardware_breakpoint)
13485 fprintf_unfiltered (fp, "hbreak");
13487 internal_error (__FILE__, __LINE__,
13488 _("unhandled breakpoint type %d"), (int) tp->type);
13490 fprintf_unfiltered (fp, " %s", tp->addr_string);
13491 print_recreate_thread (tp, fp);
13495 bkpt_create_sals_from_address (char **arg,
13496 struct linespec_result *canonical,
13497 enum bptype type_wanted,
13498 char *addr_start, char **copy_arg)
13500 create_sals_from_address_default (arg, canonical, type_wanted,
13501 addr_start, copy_arg);
13505 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13506 struct linespec_result *canonical,
13508 char *extra_string,
13509 enum bptype type_wanted,
13510 enum bpdisp disposition,
13512 int task, int ignore_count,
13513 const struct breakpoint_ops *ops,
13514 int from_tty, int enabled,
13515 int internal, unsigned flags)
13517 create_breakpoints_sal_default (gdbarch, canonical,
13518 cond_string, extra_string,
13520 disposition, thread, task,
13521 ignore_count, ops, from_tty,
13522 enabled, internal, flags);
13526 bkpt_decode_linespec (struct breakpoint *b, char **s,
13527 struct symtabs_and_lines *sals)
13529 decode_linespec_default (b, s, sals);
13532 /* Virtual table for internal breakpoints. */
13535 internal_bkpt_re_set (struct breakpoint *b)
13539 /* Delete overlay event and longjmp master breakpoints; they
13540 will be reset later by breakpoint_re_set. */
13541 case bp_overlay_event:
13542 case bp_longjmp_master:
13543 case bp_std_terminate_master:
13544 case bp_exception_master:
13545 delete_breakpoint (b);
13548 /* This breakpoint is special, it's set up when the inferior
13549 starts and we really don't want to touch it. */
13550 case bp_shlib_event:
13552 /* Like bp_shlib_event, this breakpoint type is special. Once
13553 it is set up, we do not want to touch it. */
13554 case bp_thread_event:
13560 internal_bkpt_check_status (bpstat bs)
13562 if (bs->breakpoint_at->type == bp_shlib_event)
13564 /* If requested, stop when the dynamic linker notifies GDB of
13565 events. This allows the user to get control and place
13566 breakpoints in initializer routines for dynamically loaded
13567 objects (among other things). */
13568 bs->stop = stop_on_solib_events;
13569 bs->print = stop_on_solib_events;
13575 static enum print_stop_action
13576 internal_bkpt_print_it (bpstat bs)
13578 struct breakpoint *b;
13580 b = bs->breakpoint_at;
13584 case bp_shlib_event:
13585 /* Did we stop because the user set the stop_on_solib_events
13586 variable? (If so, we report this as a generic, "Stopped due
13587 to shlib event" message.) */
13588 print_solib_event (0);
13591 case bp_thread_event:
13592 /* Not sure how we will get here.
13593 GDB should not stop for these breakpoints. */
13594 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13597 case bp_overlay_event:
13598 /* By analogy with the thread event, GDB should not stop for these. */
13599 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13602 case bp_longjmp_master:
13603 /* These should never be enabled. */
13604 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13607 case bp_std_terminate_master:
13608 /* These should never be enabled. */
13609 printf_filtered (_("std::terminate Master Breakpoint: "
13610 "gdb should not stop!\n"));
13613 case bp_exception_master:
13614 /* These should never be enabled. */
13615 printf_filtered (_("Exception Master Breakpoint: "
13616 "gdb should not stop!\n"));
13620 return PRINT_NOTHING;
13624 internal_bkpt_print_mention (struct breakpoint *b)
13626 /* Nothing to mention. These breakpoints are internal. */
13629 /* Virtual table for momentary breakpoints */
13632 momentary_bkpt_re_set (struct breakpoint *b)
13634 /* Keep temporary breakpoints, which can be encountered when we step
13635 over a dlopen call and solib_add is resetting the breakpoints.
13636 Otherwise these should have been blown away via the cleanup chain
13637 or by breakpoint_init_inferior when we rerun the executable. */
13641 momentary_bkpt_check_status (bpstat bs)
13643 /* Nothing. The point of these breakpoints is causing a stop. */
13646 static enum print_stop_action
13647 momentary_bkpt_print_it (bpstat bs)
13649 struct ui_out *uiout = current_uiout;
13651 if (ui_out_is_mi_like_p (uiout))
13653 struct breakpoint *b = bs->breakpoint_at;
13658 ui_out_field_string
13660 async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13664 ui_out_field_string
13666 async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13671 return PRINT_UNKNOWN;
13675 momentary_bkpt_print_mention (struct breakpoint *b)
13677 /* Nothing to mention. These breakpoints are internal. */
13680 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13682 It gets cleared already on the removal of the first one of such placed
13683 breakpoints. This is OK as they get all removed altogether. */
13686 longjmp_bkpt_dtor (struct breakpoint *self)
13688 struct thread_info *tp = find_thread_id (self->thread);
13691 tp->initiating_frame = null_frame_id;
13693 momentary_breakpoint_ops.dtor (self);
13696 /* Specific methods for probe breakpoints. */
13699 bkpt_probe_insert_location (struct bp_location *bl)
13701 int v = bkpt_insert_location (bl);
13705 /* The insertion was successful, now let's set the probe's semaphore
13707 bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13716 bkpt_probe_remove_location (struct bp_location *bl)
13718 /* Let's clear the semaphore before removing the location. */
13719 bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13723 return bkpt_remove_location (bl);
13727 bkpt_probe_create_sals_from_address (char **arg,
13728 struct linespec_result *canonical,
13729 enum bptype type_wanted,
13730 char *addr_start, char **copy_arg)
13732 struct linespec_sals lsal;
13734 lsal.sals = parse_probes (arg, canonical);
13736 *copy_arg = xstrdup (canonical->addr_string);
13737 lsal.canonical = xstrdup (*copy_arg);
13739 VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13743 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13744 struct symtabs_and_lines *sals)
13746 *sals = parse_probes (s, NULL);
13748 error (_("probe not found"));
13751 /* The breakpoint_ops structure to be used in tracepoints. */
13754 tracepoint_re_set (struct breakpoint *b)
13756 breakpoint_re_set_default (b);
13760 tracepoint_breakpoint_hit (const struct bp_location *bl,
13761 struct address_space *aspace, CORE_ADDR bp_addr,
13762 const struct target_waitstatus *ws)
13764 /* By definition, the inferior does not report stops at
13770 tracepoint_print_one_detail (const struct breakpoint *self,
13771 struct ui_out *uiout)
13773 struct tracepoint *tp = (struct tracepoint *) self;
13774 if (tp->static_trace_marker_id)
13776 gdb_assert (self->type == bp_static_tracepoint);
13778 ui_out_text (uiout, "\tmarker id is ");
13779 ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13780 tp->static_trace_marker_id);
13781 ui_out_text (uiout, "\n");
13786 tracepoint_print_mention (struct breakpoint *b)
13788 if (ui_out_is_mi_like_p (current_uiout))
13793 case bp_tracepoint:
13794 printf_filtered (_("Tracepoint"));
13795 printf_filtered (_(" %d"), b->number);
13797 case bp_fast_tracepoint:
13798 printf_filtered (_("Fast tracepoint"));
13799 printf_filtered (_(" %d"), b->number);
13801 case bp_static_tracepoint:
13802 printf_filtered (_("Static tracepoint"));
13803 printf_filtered (_(" %d"), b->number);
13806 internal_error (__FILE__, __LINE__,
13807 _("unhandled tracepoint type %d"), (int) b->type);
13814 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13816 struct tracepoint *tp = (struct tracepoint *) self;
13818 if (self->type == bp_fast_tracepoint)
13819 fprintf_unfiltered (fp, "ftrace");
13820 if (self->type == bp_static_tracepoint)
13821 fprintf_unfiltered (fp, "strace");
13822 else if (self->type == bp_tracepoint)
13823 fprintf_unfiltered (fp, "trace");
13825 internal_error (__FILE__, __LINE__,
13826 _("unhandled tracepoint type %d"), (int) self->type);
13828 fprintf_unfiltered (fp, " %s", self->addr_string);
13829 print_recreate_thread (self, fp);
13831 if (tp->pass_count)
13832 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
13836 tracepoint_create_sals_from_address (char **arg,
13837 struct linespec_result *canonical,
13838 enum bptype type_wanted,
13839 char *addr_start, char **copy_arg)
13841 create_sals_from_address_default (arg, canonical, type_wanted,
13842 addr_start, copy_arg);
13846 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13847 struct linespec_result *canonical,
13849 char *extra_string,
13850 enum bptype type_wanted,
13851 enum bpdisp disposition,
13853 int task, int ignore_count,
13854 const struct breakpoint_ops *ops,
13855 int from_tty, int enabled,
13856 int internal, unsigned flags)
13858 create_breakpoints_sal_default (gdbarch, canonical,
13859 cond_string, extra_string,
13861 disposition, thread, task,
13862 ignore_count, ops, from_tty,
13863 enabled, internal, flags);
13867 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13868 struct symtabs_and_lines *sals)
13870 decode_linespec_default (b, s, sals);
13873 struct breakpoint_ops tracepoint_breakpoint_ops;
13875 /* The breakpoint_ops structure to be use on tracepoints placed in a
13879 tracepoint_probe_create_sals_from_address (char **arg,
13880 struct linespec_result *canonical,
13881 enum bptype type_wanted,
13882 char *addr_start, char **copy_arg)
13884 /* We use the same method for breakpoint on probes. */
13885 bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13886 addr_start, copy_arg);
13890 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13891 struct symtabs_and_lines *sals)
13893 /* We use the same method for breakpoint on probes. */
13894 bkpt_probe_decode_linespec (b, s, sals);
13897 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13899 /* Dprintf breakpoint_ops methods. */
13902 dprintf_re_set (struct breakpoint *b)
13904 breakpoint_re_set_default (b);
13906 /* This breakpoint could have been pending, and be resolved now, and
13907 if so, we should now have the extra string. If we don't, the
13908 dprintf was malformed when created, but we couldn't tell because
13909 we can't extract the extra string until the location is
13911 if (b->loc != NULL && b->extra_string == NULL)
13912 error (_("Format string required"));
13914 /* 1 - connect to target 1, that can run breakpoint commands.
13915 2 - create a dprintf, which resolves fine.
13916 3 - disconnect from target 1
13917 4 - connect to target 2, that can NOT run breakpoint commands.
13919 After steps #3/#4, you'll want the dprintf command list to
13920 be updated, because target 1 and 2 may well return different
13921 answers for target_can_run_breakpoint_commands().
13922 Given absence of finer grained resetting, we get to do
13923 it all the time. */
13924 if (b->extra_string != NULL)
13925 update_dprintf_command_list (b);
13928 /* Implement the "print_recreate" breakpoint_ops method for dprintf. */
13931 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13933 fprintf_unfiltered (fp, "dprintf %s%s", tp->addr_string,
13935 print_recreate_thread (tp, fp);
13938 /* Implement the "after_condition_true" breakpoint_ops method for
13941 dprintf's are implemented with regular commands in their command
13942 list, but we run the commands here instead of before presenting the
13943 stop to the user, as dprintf's don't actually cause a stop. This
13944 also makes it so that the commands of multiple dprintfs at the same
13945 address are all handled. */
13948 dprintf_after_condition_true (struct bpstats *bs)
13950 struct cleanup *old_chain;
13951 struct bpstats tmp_bs = { NULL };
13952 struct bpstats *tmp_bs_p = &tmp_bs;
13954 /* dprintf's never cause a stop. This wasn't set in the
13955 check_status hook instead because that would make the dprintf's
13956 condition not be evaluated. */
13959 /* Run the command list here. Take ownership of it instead of
13960 copying. We never want these commands to run later in
13961 bpstat_do_actions, if a breakpoint that causes a stop happens to
13962 be set at same address as this dprintf, or even if running the
13963 commands here throws. */
13964 tmp_bs.commands = bs->commands;
13965 bs->commands = NULL;
13966 old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13968 bpstat_do_actions_1 (&tmp_bs_p);
13970 /* 'tmp_bs.commands' will usually be NULL by now, but
13971 bpstat_do_actions_1 may return early without processing the whole
13973 do_cleanups (old_chain);
13976 /* The breakpoint_ops structure to be used on static tracepoints with
13980 strace_marker_create_sals_from_address (char **arg,
13981 struct linespec_result *canonical,
13982 enum bptype type_wanted,
13983 char *addr_start, char **copy_arg)
13985 struct linespec_sals lsal;
13987 lsal.sals = decode_static_tracepoint_spec (arg);
13989 *copy_arg = savestring (addr_start, *arg - addr_start);
13991 canonical->addr_string = xstrdup (*copy_arg);
13992 lsal.canonical = xstrdup (*copy_arg);
13993 VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13997 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13998 struct linespec_result *canonical,
14000 char *extra_string,
14001 enum bptype type_wanted,
14002 enum bpdisp disposition,
14004 int task, int ignore_count,
14005 const struct breakpoint_ops *ops,
14006 int from_tty, int enabled,
14007 int internal, unsigned flags)
14010 struct linespec_sals *lsal = VEC_index (linespec_sals,
14011 canonical->sals, 0);
14013 /* If the user is creating a static tracepoint by marker id
14014 (strace -m MARKER_ID), then store the sals index, so that
14015 breakpoint_re_set can try to match up which of the newly
14016 found markers corresponds to this one, and, don't try to
14017 expand multiple locations for each sal, given than SALS
14018 already should contain all sals for MARKER_ID. */
14020 for (i = 0; i < lsal->sals.nelts; ++i)
14022 struct symtabs_and_lines expanded;
14023 struct tracepoint *tp;
14024 struct cleanup *old_chain;
14027 expanded.nelts = 1;
14028 expanded.sals = &lsal->sals.sals[i];
14030 addr_string = xstrdup (canonical->addr_string);
14031 old_chain = make_cleanup (xfree, addr_string);
14033 tp = XCNEW (struct tracepoint);
14034 init_breakpoint_sal (&tp->base, gdbarch, expanded,
14036 cond_string, extra_string,
14037 type_wanted, disposition,
14038 thread, task, ignore_count, ops,
14039 from_tty, enabled, internal, flags,
14040 canonical->special_display);
14041 /* Given that its possible to have multiple markers with
14042 the same string id, if the user is creating a static
14043 tracepoint by marker id ("strace -m MARKER_ID"), then
14044 store the sals index, so that breakpoint_re_set can
14045 try to match up which of the newly found markers
14046 corresponds to this one */
14047 tp->static_trace_marker_id_idx = i;
14049 install_breakpoint (internal, &tp->base, 0);
14051 discard_cleanups (old_chain);
14056 strace_marker_decode_linespec (struct breakpoint *b, char **s,
14057 struct symtabs_and_lines *sals)
14059 struct tracepoint *tp = (struct tracepoint *) b;
14061 *sals = decode_static_tracepoint_spec (s);
14062 if (sals->nelts > tp->static_trace_marker_id_idx)
14064 sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
14068 error (_("marker %s not found"), tp->static_trace_marker_id);
14071 static struct breakpoint_ops strace_marker_breakpoint_ops;
14074 strace_marker_p (struct breakpoint *b)
14076 return b->ops == &strace_marker_breakpoint_ops;
14079 /* Delete a breakpoint and clean up all traces of it in the data
14083 delete_breakpoint (struct breakpoint *bpt)
14085 struct breakpoint *b;
14087 gdb_assert (bpt != NULL);
14089 /* Has this bp already been deleted? This can happen because
14090 multiple lists can hold pointers to bp's. bpstat lists are
14093 One example of this happening is a watchpoint's scope bp. When
14094 the scope bp triggers, we notice that the watchpoint is out of
14095 scope, and delete it. We also delete its scope bp. But the
14096 scope bp is marked "auto-deleting", and is already on a bpstat.
14097 That bpstat is then checked for auto-deleting bp's, which are
14100 A real solution to this problem might involve reference counts in
14101 bp's, and/or giving them pointers back to their referencing
14102 bpstat's, and teaching delete_breakpoint to only free a bp's
14103 storage when no more references were extent. A cheaper bandaid
14105 if (bpt->type == bp_none)
14108 /* At least avoid this stale reference until the reference counting
14109 of breakpoints gets resolved. */
14110 if (bpt->related_breakpoint != bpt)
14112 struct breakpoint *related;
14113 struct watchpoint *w;
14115 if (bpt->type == bp_watchpoint_scope)
14116 w = (struct watchpoint *) bpt->related_breakpoint;
14117 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
14118 w = (struct watchpoint *) bpt;
14122 watchpoint_del_at_next_stop (w);
14124 /* Unlink bpt from the bpt->related_breakpoint ring. */
14125 for (related = bpt; related->related_breakpoint != bpt;
14126 related = related->related_breakpoint);
14127 related->related_breakpoint = bpt->related_breakpoint;
14128 bpt->related_breakpoint = bpt;
14131 /* watch_command_1 creates a watchpoint but only sets its number if
14132 update_watchpoint succeeds in creating its bp_locations. If there's
14133 a problem in that process, we'll be asked to delete the half-created
14134 watchpoint. In that case, don't announce the deletion. */
14136 observer_notify_breakpoint_deleted (bpt);
14138 if (breakpoint_chain == bpt)
14139 breakpoint_chain = bpt->next;
14141 ALL_BREAKPOINTS (b)
14142 if (b->next == bpt)
14144 b->next = bpt->next;
14148 /* Be sure no bpstat's are pointing at the breakpoint after it's
14150 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
14151 in all threads for now. Note that we cannot just remove bpstats
14152 pointing at bpt from the stop_bpstat list entirely, as breakpoint
14153 commands are associated with the bpstat; if we remove it here,
14154 then the later call to bpstat_do_actions (&stop_bpstat); in
14155 event-top.c won't do anything, and temporary breakpoints with
14156 commands won't work. */
14158 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
14160 /* Now that breakpoint is removed from breakpoint list, update the
14161 global location list. This will remove locations that used to
14162 belong to this breakpoint. Do this before freeing the breakpoint
14163 itself, since remove_breakpoint looks at location's owner. It
14164 might be better design to have location completely
14165 self-contained, but it's not the case now. */
14166 update_global_location_list (UGLL_DONT_INSERT);
14168 bpt->ops->dtor (bpt);
14169 /* On the chance that someone will soon try again to delete this
14170 same bp, we mark it as deleted before freeing its storage. */
14171 bpt->type = bp_none;
14176 do_delete_breakpoint_cleanup (void *b)
14178 delete_breakpoint (b);
14182 make_cleanup_delete_breakpoint (struct breakpoint *b)
14184 return make_cleanup (do_delete_breakpoint_cleanup, b);
14187 /* Iterator function to call a user-provided callback function once
14188 for each of B and its related breakpoints. */
14191 iterate_over_related_breakpoints (struct breakpoint *b,
14192 void (*function) (struct breakpoint *,
14196 struct breakpoint *related;
14201 struct breakpoint *next;
14203 /* FUNCTION may delete RELATED. */
14204 next = related->related_breakpoint;
14206 if (next == related)
14208 /* RELATED is the last ring entry. */
14209 function (related, data);
14211 /* FUNCTION may have deleted it, so we'd never reach back to
14212 B. There's nothing left to do anyway, so just break
14217 function (related, data);
14221 while (related != b);
14225 do_delete_breakpoint (struct breakpoint *b, void *ignore)
14227 delete_breakpoint (b);
14230 /* A callback for map_breakpoint_numbers that calls
14231 delete_breakpoint. */
14234 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
14236 iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
14240 delete_command (char *arg, int from_tty)
14242 struct breakpoint *b, *b_tmp;
14248 int breaks_to_delete = 0;
14250 /* Delete all breakpoints if no argument. Do not delete
14251 internal breakpoints, these have to be deleted with an
14252 explicit breakpoint number argument. */
14253 ALL_BREAKPOINTS (b)
14254 if (user_breakpoint_p (b))
14256 breaks_to_delete = 1;
14260 /* Ask user only if there are some breakpoints to delete. */
14262 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
14264 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14265 if (user_breakpoint_p (b))
14266 delete_breakpoint (b);
14270 map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
14274 all_locations_are_pending (struct bp_location *loc)
14276 for (; loc; loc = loc->next)
14277 if (!loc->shlib_disabled
14278 && !loc->pspace->executing_startup)
14283 /* Subroutine of update_breakpoint_locations to simplify it.
14284 Return non-zero if multiple fns in list LOC have the same name.
14285 Null names are ignored. */
14288 ambiguous_names_p (struct bp_location *loc)
14290 struct bp_location *l;
14291 htab_t htab = htab_create_alloc (13, htab_hash_string,
14292 (int (*) (const void *,
14293 const void *)) streq,
14294 NULL, xcalloc, xfree);
14296 for (l = loc; l != NULL; l = l->next)
14299 const char *name = l->function_name;
14301 /* Allow for some names to be NULL, ignore them. */
14305 slot = (const char **) htab_find_slot (htab, (const void *) name,
14307 /* NOTE: We can assume slot != NULL here because xcalloc never
14311 htab_delete (htab);
14317 htab_delete (htab);
14321 /* When symbols change, it probably means the sources changed as well,
14322 and it might mean the static tracepoint markers are no longer at
14323 the same address or line numbers they used to be at last we
14324 checked. Losing your static tracepoints whenever you rebuild is
14325 undesirable. This function tries to resync/rematch gdb static
14326 tracepoints with the markers on the target, for static tracepoints
14327 that have not been set by marker id. Static tracepoint that have
14328 been set by marker id are reset by marker id in breakpoint_re_set.
14331 1) For a tracepoint set at a specific address, look for a marker at
14332 the old PC. If one is found there, assume to be the same marker.
14333 If the name / string id of the marker found is different from the
14334 previous known name, assume that means the user renamed the marker
14335 in the sources, and output a warning.
14337 2) For a tracepoint set at a given line number, look for a marker
14338 at the new address of the old line number. If one is found there,
14339 assume to be the same marker. If the name / string id of the
14340 marker found is different from the previous known name, assume that
14341 means the user renamed the marker in the sources, and output a
14344 3) If a marker is no longer found at the same address or line, it
14345 may mean the marker no longer exists. But it may also just mean
14346 the code changed a bit. Maybe the user added a few lines of code
14347 that made the marker move up or down (in line number terms). Ask
14348 the target for info about the marker with the string id as we knew
14349 it. If found, update line number and address in the matching
14350 static tracepoint. This will get confused if there's more than one
14351 marker with the same ID (possible in UST, although unadvised
14352 precisely because it confuses tools). */
14354 static struct symtab_and_line
14355 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
14357 struct tracepoint *tp = (struct tracepoint *) b;
14358 struct static_tracepoint_marker marker;
14363 find_line_pc (sal.symtab, sal.line, &pc);
14365 if (target_static_tracepoint_marker_at (pc, &marker))
14367 if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
14368 warning (_("static tracepoint %d changed probed marker from %s to %s"),
14370 tp->static_trace_marker_id, marker.str_id);
14372 xfree (tp->static_trace_marker_id);
14373 tp->static_trace_marker_id = xstrdup (marker.str_id);
14374 release_static_tracepoint_marker (&marker);
14379 /* Old marker wasn't found on target at lineno. Try looking it up
14381 if (!sal.explicit_pc
14383 && sal.symtab != NULL
14384 && tp->static_trace_marker_id != NULL)
14386 VEC(static_tracepoint_marker_p) *markers;
14389 = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
14391 if (!VEC_empty(static_tracepoint_marker_p, markers))
14393 struct symtab_and_line sal2;
14394 struct symbol *sym;
14395 struct static_tracepoint_marker *tpmarker;
14396 struct ui_out *uiout = current_uiout;
14398 tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
14400 xfree (tp->static_trace_marker_id);
14401 tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
14403 warning (_("marker for static tracepoint %d (%s) not "
14404 "found at previous line number"),
14405 b->number, tp->static_trace_marker_id);
14409 sal2.pc = tpmarker->address;
14411 sal2 = find_pc_line (tpmarker->address, 0);
14412 sym = find_pc_sect_function (tpmarker->address, NULL);
14413 ui_out_text (uiout, "Now in ");
14416 ui_out_field_string (uiout, "func",
14417 SYMBOL_PRINT_NAME (sym));
14418 ui_out_text (uiout, " at ");
14420 ui_out_field_string (uiout, "file",
14421 symtab_to_filename_for_display (sal2.symtab));
14422 ui_out_text (uiout, ":");
14424 if (ui_out_is_mi_like_p (uiout))
14426 const char *fullname = symtab_to_fullname (sal2.symtab);
14428 ui_out_field_string (uiout, "fullname", fullname);
14431 ui_out_field_int (uiout, "line", sal2.line);
14432 ui_out_text (uiout, "\n");
14434 b->loc->line_number = sal2.line;
14435 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
14437 xfree (b->addr_string);
14438 b->addr_string = xstrprintf ("%s:%d",
14439 symtab_to_filename_for_display (sal2.symtab),
14440 b->loc->line_number);
14442 /* Might be nice to check if function changed, and warn if
14445 release_static_tracepoint_marker (tpmarker);
14451 /* Returns 1 iff locations A and B are sufficiently same that
14452 we don't need to report breakpoint as changed. */
14455 locations_are_equal (struct bp_location *a, struct bp_location *b)
14459 if (a->address != b->address)
14462 if (a->shlib_disabled != b->shlib_disabled)
14465 if (a->enabled != b->enabled)
14472 if ((a == NULL) != (b == NULL))
14478 /* Create new breakpoint locations for B (a hardware or software breakpoint)
14479 based on SALS and SALS_END. If SALS_END.NELTS is not zero, then B is
14480 a ranged breakpoint. */
14483 update_breakpoint_locations (struct breakpoint *b,
14484 struct symtabs_and_lines sals,
14485 struct symtabs_and_lines sals_end)
14488 struct bp_location *existing_locations = b->loc;
14490 if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14492 /* Ranged breakpoints have only one start location and one end
14494 b->enable_state = bp_disabled;
14495 update_global_location_list (UGLL_MAY_INSERT);
14496 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14497 "multiple locations found\n"),
14502 /* If there's no new locations, and all existing locations are
14503 pending, don't do anything. This optimizes the common case where
14504 all locations are in the same shared library, that was unloaded.
14505 We'd like to retain the location, so that when the library is
14506 loaded again, we don't loose the enabled/disabled status of the
14507 individual locations. */
14508 if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
14513 for (i = 0; i < sals.nelts; ++i)
14515 struct bp_location *new_loc;
14517 switch_to_program_space_and_thread (sals.sals[i].pspace);
14519 new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14521 /* Reparse conditions, they might contain references to the
14523 if (b->cond_string != NULL)
14526 volatile struct gdb_exception e;
14528 s = b->cond_string;
14529 TRY_CATCH (e, RETURN_MASK_ERROR)
14531 new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14532 block_for_pc (sals.sals[i].pc),
14537 warning (_("failed to reevaluate condition "
14538 "for breakpoint %d: %s"),
14539 b->number, e.message);
14540 new_loc->enabled = 0;
14544 if (sals_end.nelts)
14546 CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14548 new_loc->length = end - sals.sals[0].pc + 1;
14552 /* Update locations of permanent breakpoints. */
14553 if (b->enable_state == bp_permanent)
14554 make_breakpoint_permanent (b);
14556 /* If possible, carry over 'disable' status from existing
14559 struct bp_location *e = existing_locations;
14560 /* If there are multiple breakpoints with the same function name,
14561 e.g. for inline functions, comparing function names won't work.
14562 Instead compare pc addresses; this is just a heuristic as things
14563 may have moved, but in practice it gives the correct answer
14564 often enough until a better solution is found. */
14565 int have_ambiguous_names = ambiguous_names_p (b->loc);
14567 for (; e; e = e->next)
14569 if (!e->enabled && e->function_name)
14571 struct bp_location *l = b->loc;
14572 if (have_ambiguous_names)
14574 for (; l; l = l->next)
14575 if (breakpoint_locations_match (e, l))
14583 for (; l; l = l->next)
14584 if (l->function_name
14585 && strcmp (e->function_name, l->function_name) == 0)
14595 if (!locations_are_equal (existing_locations, b->loc))
14596 observer_notify_breakpoint_modified (b);
14598 update_global_location_list (UGLL_MAY_INSERT);
14601 /* Find the SaL locations corresponding to the given ADDR_STRING.
14602 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
14604 static struct symtabs_and_lines
14605 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14608 struct symtabs_and_lines sals = {0};
14609 volatile struct gdb_exception e;
14611 gdb_assert (b->ops != NULL);
14614 TRY_CATCH (e, RETURN_MASK_ERROR)
14616 b->ops->decode_linespec (b, &s, &sals);
14620 int not_found_and_ok = 0;
14621 /* For pending breakpoints, it's expected that parsing will
14622 fail until the right shared library is loaded. User has
14623 already told to create pending breakpoints and don't need
14624 extra messages. If breakpoint is in bp_shlib_disabled
14625 state, then user already saw the message about that
14626 breakpoint being disabled, and don't want to see more
14628 if (e.error == NOT_FOUND_ERROR
14629 && (b->condition_not_parsed
14630 || (b->loc && b->loc->shlib_disabled)
14631 || (b->loc && b->loc->pspace->executing_startup)
14632 || b->enable_state == bp_disabled))
14633 not_found_and_ok = 1;
14635 if (!not_found_and_ok)
14637 /* We surely don't want to warn about the same breakpoint
14638 10 times. One solution, implemented here, is disable
14639 the breakpoint on error. Another solution would be to
14640 have separate 'warning emitted' flag. Since this
14641 happens only when a binary has changed, I don't know
14642 which approach is better. */
14643 b->enable_state = bp_disabled;
14644 throw_exception (e);
14648 if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14652 for (i = 0; i < sals.nelts; ++i)
14653 resolve_sal_pc (&sals.sals[i]);
14654 if (b->condition_not_parsed && s && s[0])
14656 char *cond_string, *extra_string;
14659 find_condition_and_thread (s, sals.sals[0].pc,
14660 &cond_string, &thread, &task,
14663 b->cond_string = cond_string;
14664 b->thread = thread;
14667 b->extra_string = extra_string;
14668 b->condition_not_parsed = 0;
14671 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14672 sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14682 /* The default re_set method, for typical hardware or software
14683 breakpoints. Reevaluate the breakpoint and recreate its
14687 breakpoint_re_set_default (struct breakpoint *b)
14690 struct symtabs_and_lines sals, sals_end;
14691 struct symtabs_and_lines expanded = {0};
14692 struct symtabs_and_lines expanded_end = {0};
14694 sals = addr_string_to_sals (b, b->addr_string, &found);
14697 make_cleanup (xfree, sals.sals);
14701 if (b->addr_string_range_end)
14703 sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14706 make_cleanup (xfree, sals_end.sals);
14707 expanded_end = sals_end;
14711 update_breakpoint_locations (b, expanded, expanded_end);
14714 /* Default method for creating SALs from an address string. It basically
14715 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
14718 create_sals_from_address_default (char **arg,
14719 struct linespec_result *canonical,
14720 enum bptype type_wanted,
14721 char *addr_start, char **copy_arg)
14723 parse_breakpoint_sals (arg, canonical);
14726 /* Call create_breakpoints_sal for the given arguments. This is the default
14727 function for the `create_breakpoints_sal' method of
14731 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14732 struct linespec_result *canonical,
14734 char *extra_string,
14735 enum bptype type_wanted,
14736 enum bpdisp disposition,
14738 int task, int ignore_count,
14739 const struct breakpoint_ops *ops,
14740 int from_tty, int enabled,
14741 int internal, unsigned flags)
14743 create_breakpoints_sal (gdbarch, canonical, cond_string,
14745 type_wanted, disposition,
14746 thread, task, ignore_count, ops, from_tty,
14747 enabled, internal, flags);
14750 /* Decode the line represented by S by calling decode_line_full. This is the
14751 default function for the `decode_linespec' method of breakpoint_ops. */
14754 decode_linespec_default (struct breakpoint *b, char **s,
14755 struct symtabs_and_lines *sals)
14757 struct linespec_result canonical;
14759 init_linespec_result (&canonical);
14760 decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14761 (struct symtab *) NULL, 0,
14762 &canonical, multiple_symbols_all,
14765 /* We should get 0 or 1 resulting SALs. */
14766 gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14768 if (VEC_length (linespec_sals, canonical.sals) > 0)
14770 struct linespec_sals *lsal;
14772 lsal = VEC_index (linespec_sals, canonical.sals, 0);
14773 *sals = lsal->sals;
14774 /* Arrange it so the destructor does not free the
14776 lsal->sals.sals = NULL;
14779 destroy_linespec_result (&canonical);
14782 /* Prepare the global context for a re-set of breakpoint B. */
14784 static struct cleanup *
14785 prepare_re_set_context (struct breakpoint *b)
14787 struct cleanup *cleanups;
14789 input_radix = b->input_radix;
14790 cleanups = save_current_space_and_thread ();
14791 if (b->pspace != NULL)
14792 switch_to_program_space_and_thread (b->pspace);
14793 set_language (b->language);
14798 /* Reset a breakpoint given it's struct breakpoint * BINT.
14799 The value we return ends up being the return value from catch_errors.
14800 Unused in this case. */
14803 breakpoint_re_set_one (void *bint)
14805 /* Get past catch_errs. */
14806 struct breakpoint *b = (struct breakpoint *) bint;
14807 struct cleanup *cleanups;
14809 cleanups = prepare_re_set_context (b);
14810 b->ops->re_set (b);
14811 do_cleanups (cleanups);
14815 /* Re-set all breakpoints after symbols have been re-loaded. */
14817 breakpoint_re_set (void)
14819 struct breakpoint *b, *b_tmp;
14820 enum language save_language;
14821 int save_input_radix;
14822 struct cleanup *old_chain;
14824 save_language = current_language->la_language;
14825 save_input_radix = input_radix;
14826 old_chain = save_current_program_space ();
14828 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14830 /* Format possible error msg. */
14831 char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14833 struct cleanup *cleanups = make_cleanup (xfree, message);
14834 catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14835 do_cleanups (cleanups);
14837 set_language (save_language);
14838 input_radix = save_input_radix;
14840 jit_breakpoint_re_set ();
14842 do_cleanups (old_chain);
14844 create_overlay_event_breakpoint ();
14845 create_longjmp_master_breakpoint ();
14846 create_std_terminate_master_breakpoint ();
14847 create_exception_master_breakpoint ();
14850 /* Reset the thread number of this breakpoint:
14852 - If the breakpoint is for all threads, leave it as-is.
14853 - Else, reset it to the current thread for inferior_ptid. */
14855 breakpoint_re_set_thread (struct breakpoint *b)
14857 if (b->thread != -1)
14859 if (in_thread_list (inferior_ptid))
14860 b->thread = pid_to_thread_id (inferior_ptid);
14862 /* We're being called after following a fork. The new fork is
14863 selected as current, and unless this was a vfork will have a
14864 different program space from the original thread. Reset that
14866 b->loc->pspace = current_program_space;
14870 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14871 If from_tty is nonzero, it prints a message to that effect,
14872 which ends with a period (no newline). */
14875 set_ignore_count (int bptnum, int count, int from_tty)
14877 struct breakpoint *b;
14882 ALL_BREAKPOINTS (b)
14883 if (b->number == bptnum)
14885 if (is_tracepoint (b))
14887 if (from_tty && count != 0)
14888 printf_filtered (_("Ignore count ignored for tracepoint %d."),
14893 b->ignore_count = count;
14897 printf_filtered (_("Will stop next time "
14898 "breakpoint %d is reached."),
14900 else if (count == 1)
14901 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14904 printf_filtered (_("Will ignore next %d "
14905 "crossings of breakpoint %d."),
14908 observer_notify_breakpoint_modified (b);
14912 error (_("No breakpoint number %d."), bptnum);
14915 /* Command to set ignore-count of breakpoint N to COUNT. */
14918 ignore_command (char *args, int from_tty)
14924 error_no_arg (_("a breakpoint number"));
14926 num = get_number (&p);
14928 error (_("bad breakpoint number: '%s'"), args);
14930 error (_("Second argument (specified ignore-count) is missing."));
14932 set_ignore_count (num,
14933 longest_to_int (value_as_long (parse_and_eval (p))),
14936 printf_filtered ("\n");
14939 /* Call FUNCTION on each of the breakpoints
14940 whose numbers are given in ARGS. */
14943 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14948 struct breakpoint *b, *tmp;
14950 struct get_number_or_range_state state;
14953 error_no_arg (_("one or more breakpoint numbers"));
14955 init_number_or_range (&state, args);
14957 while (!state.finished)
14959 const char *p = state.string;
14963 num = get_number_or_range (&state);
14966 warning (_("bad breakpoint number at or near '%s'"), p);
14970 ALL_BREAKPOINTS_SAFE (b, tmp)
14971 if (b->number == num)
14974 function (b, data);
14978 printf_unfiltered (_("No breakpoint number %d.\n"), num);
14983 static struct bp_location *
14984 find_location_by_number (char *number)
14986 char *dot = strchr (number, '.');
14990 struct breakpoint *b;
14991 struct bp_location *loc;
14996 bp_num = get_number (&p1);
14998 error (_("Bad breakpoint number '%s'"), number);
15000 ALL_BREAKPOINTS (b)
15001 if (b->number == bp_num)
15006 if (!b || b->number != bp_num)
15007 error (_("Bad breakpoint number '%s'"), number);
15010 loc_num = get_number (&p1);
15012 error (_("Bad breakpoint location number '%s'"), number);
15016 for (;loc_num && loc; --loc_num, loc = loc->next)
15019 error (_("Bad breakpoint location number '%s'"), dot+1);
15025 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
15026 If from_tty is nonzero, it prints a message to that effect,
15027 which ends with a period (no newline). */
15030 disable_breakpoint (struct breakpoint *bpt)
15032 /* Never disable a watchpoint scope breakpoint; we want to
15033 hit them when we leave scope so we can delete both the
15034 watchpoint and its scope breakpoint at that time. */
15035 if (bpt->type == bp_watchpoint_scope)
15038 /* You can't disable permanent breakpoints. */
15039 if (bpt->enable_state == bp_permanent)
15042 bpt->enable_state = bp_disabled;
15044 /* Mark breakpoint locations modified. */
15045 mark_breakpoint_modified (bpt);
15047 if (target_supports_enable_disable_tracepoint ()
15048 && current_trace_status ()->running && is_tracepoint (bpt))
15050 struct bp_location *location;
15052 for (location = bpt->loc; location; location = location->next)
15053 target_disable_tracepoint (location);
15056 update_global_location_list (UGLL_DONT_INSERT);
15058 observer_notify_breakpoint_modified (bpt);
15061 /* A callback for iterate_over_related_breakpoints. */
15064 do_disable_breakpoint (struct breakpoint *b, void *ignore)
15066 disable_breakpoint (b);
15069 /* A callback for map_breakpoint_numbers that calls
15070 disable_breakpoint. */
15073 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
15075 iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
15079 disable_command (char *args, int from_tty)
15083 struct breakpoint *bpt;
15085 ALL_BREAKPOINTS (bpt)
15086 if (user_breakpoint_p (bpt))
15087 disable_breakpoint (bpt);
15091 char *num = extract_arg (&args);
15095 if (strchr (num, '.'))
15097 struct bp_location *loc = find_location_by_number (num);
15104 mark_breakpoint_location_modified (loc);
15106 if (target_supports_enable_disable_tracepoint ()
15107 && current_trace_status ()->running && loc->owner
15108 && is_tracepoint (loc->owner))
15109 target_disable_tracepoint (loc);
15111 update_global_location_list (UGLL_DONT_INSERT);
15114 map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
15115 num = extract_arg (&args);
15121 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
15124 int target_resources_ok;
15126 if (bpt->type == bp_hardware_breakpoint)
15129 i = hw_breakpoint_used_count ();
15130 target_resources_ok =
15131 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
15133 if (target_resources_ok == 0)
15134 error (_("No hardware breakpoint support in the target."));
15135 else if (target_resources_ok < 0)
15136 error (_("Hardware breakpoints used exceeds limit."));
15139 if (is_watchpoint (bpt))
15141 /* Initialize it just to avoid a GCC false warning. */
15142 enum enable_state orig_enable_state = 0;
15143 volatile struct gdb_exception e;
15145 TRY_CATCH (e, RETURN_MASK_ALL)
15147 struct watchpoint *w = (struct watchpoint *) bpt;
15149 orig_enable_state = bpt->enable_state;
15150 bpt->enable_state = bp_enabled;
15151 update_watchpoint (w, 1 /* reparse */);
15155 bpt->enable_state = orig_enable_state;
15156 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
15162 if (bpt->enable_state != bp_permanent)
15163 bpt->enable_state = bp_enabled;
15165 bpt->enable_state = bp_enabled;
15167 /* Mark breakpoint locations modified. */
15168 mark_breakpoint_modified (bpt);
15170 if (target_supports_enable_disable_tracepoint ()
15171 && current_trace_status ()->running && is_tracepoint (bpt))
15173 struct bp_location *location;
15175 for (location = bpt->loc; location; location = location->next)
15176 target_enable_tracepoint (location);
15179 bpt->disposition = disposition;
15180 bpt->enable_count = count;
15181 update_global_location_list (UGLL_MAY_INSERT);
15183 observer_notify_breakpoint_modified (bpt);
15188 enable_breakpoint (struct breakpoint *bpt)
15190 enable_breakpoint_disp (bpt, bpt->disposition, 0);
15194 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
15196 enable_breakpoint (bpt);
15199 /* A callback for map_breakpoint_numbers that calls
15200 enable_breakpoint. */
15203 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
15205 iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
15208 /* The enable command enables the specified breakpoints (or all defined
15209 breakpoints) so they once again become (or continue to be) effective
15210 in stopping the inferior. */
15213 enable_command (char *args, int from_tty)
15217 struct breakpoint *bpt;
15219 ALL_BREAKPOINTS (bpt)
15220 if (user_breakpoint_p (bpt))
15221 enable_breakpoint (bpt);
15225 char *num = extract_arg (&args);
15229 if (strchr (num, '.'))
15231 struct bp_location *loc = find_location_by_number (num);
15238 mark_breakpoint_location_modified (loc);
15240 if (target_supports_enable_disable_tracepoint ()
15241 && current_trace_status ()->running && loc->owner
15242 && is_tracepoint (loc->owner))
15243 target_enable_tracepoint (loc);
15245 update_global_location_list (UGLL_MAY_INSERT);
15248 map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
15249 num = extract_arg (&args);
15254 /* This struct packages up disposition data for application to multiple
15264 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
15266 struct disp_data disp_data = *(struct disp_data *) arg;
15268 enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
15272 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
15274 struct disp_data disp = { disp_disable, 1 };
15276 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15280 enable_once_command (char *args, int from_tty)
15282 map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
15286 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
15288 struct disp_data disp = { disp_disable, *(int *) countptr };
15290 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15294 enable_count_command (char *args, int from_tty)
15296 int count = get_number (&args);
15298 map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
15302 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
15304 struct disp_data disp = { disp_del, 1 };
15306 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15310 enable_delete_command (char *args, int from_tty)
15312 map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
15316 set_breakpoint_cmd (char *args, int from_tty)
15321 show_breakpoint_cmd (char *args, int from_tty)
15325 /* Invalidate last known value of any hardware watchpoint if
15326 the memory which that value represents has been written to by
15330 invalidate_bp_value_on_memory_change (struct inferior *inferior,
15331 CORE_ADDR addr, ssize_t len,
15332 const bfd_byte *data)
15334 struct breakpoint *bp;
15336 ALL_BREAKPOINTS (bp)
15337 if (bp->enable_state == bp_enabled
15338 && bp->type == bp_hardware_watchpoint)
15340 struct watchpoint *wp = (struct watchpoint *) bp;
15342 if (wp->val_valid && wp->val)
15344 struct bp_location *loc;
15346 for (loc = bp->loc; loc != NULL; loc = loc->next)
15347 if (loc->loc_type == bp_loc_hardware_watchpoint
15348 && loc->address + loc->length > addr
15349 && addr + len > loc->address)
15351 value_free (wp->val);
15359 /* Create and insert a raw software breakpoint at PC. Return an
15360 identifier, which should be used to remove the breakpoint later.
15361 In general, places which call this should be using something on the
15362 breakpoint chain instead; this function should be eliminated
15366 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
15367 struct address_space *aspace, CORE_ADDR pc)
15369 struct bp_target_info *bp_tgt;
15370 struct bp_location *bl;
15372 bp_tgt = XCNEW (struct bp_target_info);
15374 bp_tgt->placed_address_space = aspace;
15375 bp_tgt->placed_address = pc;
15377 /* If an unconditional non-raw breakpoint is already inserted at
15378 that location, there's no need to insert another. However, with
15379 target-side evaluation of breakpoint conditions, if the
15380 breakpoint that is currently inserted on the target is
15381 conditional, we need to make it unconditional. Note that a
15382 breakpoint with target-side commands is not reported even if
15383 unconditional, so we need to remove the commands from the target
15385 bl = find_non_raw_software_breakpoint_inserted_here (aspace, pc);
15387 && VEC_empty (agent_expr_p, bl->target_info.conditions)
15388 && VEC_empty (agent_expr_p, bl->target_info.tcommands))
15390 bp_target_info_copy_insertion_state (bp_tgt, &bl->target_info);
15394 if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
15396 /* Could not insert the breakpoint. */
15404 /* Remove a breakpoint BP inserted by
15405 deprecated_insert_raw_breakpoint. */
15408 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
15410 struct bp_target_info *bp_tgt = bp;
15411 struct address_space *aspace = bp_tgt->placed_address_space;
15412 CORE_ADDR address = bp_tgt->placed_address;
15413 struct bp_location *bl;
15416 bl = find_non_raw_software_breakpoint_inserted_here (aspace, address);
15418 /* Only remove the raw breakpoint if there are no other non-raw
15419 breakpoints still inserted at this location. Otherwise, we would
15420 be effectively disabling those breakpoints. */
15422 ret = target_remove_breakpoint (gdbarch, bp_tgt);
15423 else if (!VEC_empty (agent_expr_p, bl->target_info.conditions)
15424 || !VEC_empty (agent_expr_p, bl->target_info.tcommands))
15426 /* The target is evaluating conditions, and when we inserted the
15427 software single-step breakpoint, we had made the breakpoint
15428 unconditional and command-less on the target side. Reinsert
15429 to restore the conditions/commands. */
15430 ret = target_insert_breakpoint (bl->gdbarch, &bl->target_info);
15440 /* Create and insert a breakpoint for software single step. */
15443 insert_single_step_breakpoint (struct gdbarch *gdbarch,
15444 struct address_space *aspace,
15449 if (single_step_breakpoints[0] == NULL)
15451 bpt_p = &single_step_breakpoints[0];
15452 single_step_gdbarch[0] = gdbarch;
15456 gdb_assert (single_step_breakpoints[1] == NULL);
15457 bpt_p = &single_step_breakpoints[1];
15458 single_step_gdbarch[1] = gdbarch;
15461 /* NOTE drow/2006-04-11: A future improvement to this function would
15462 be to only create the breakpoints once, and actually put them on
15463 the breakpoint chain. That would let us use set_raw_breakpoint.
15464 We could adjust the addresses each time they were needed. Doing
15465 this requires corresponding changes elsewhere where single step
15466 breakpoints are handled, however. So, for now, we use this. */
15468 *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
15469 if (*bpt_p == NULL)
15470 error (_("Could not insert single-step breakpoint at %s"),
15471 paddress (gdbarch, next_pc));
15474 /* Check if the breakpoints used for software single stepping
15475 were inserted or not. */
15478 single_step_breakpoints_inserted (void)
15480 return (single_step_breakpoints[0] != NULL
15481 || single_step_breakpoints[1] != NULL);
15484 /* Remove and delete any breakpoints used for software single step. */
15487 remove_single_step_breakpoints (void)
15489 gdb_assert (single_step_breakpoints[0] != NULL);
15491 /* See insert_single_step_breakpoint for more about this deprecated
15493 deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
15494 single_step_breakpoints[0]);
15495 single_step_gdbarch[0] = NULL;
15496 single_step_breakpoints[0] = NULL;
15498 if (single_step_breakpoints[1] != NULL)
15500 deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
15501 single_step_breakpoints[1]);
15502 single_step_gdbarch[1] = NULL;
15503 single_step_breakpoints[1] = NULL;
15507 /* Delete software single step breakpoints without removing them from
15508 the inferior. This is intended to be used if the inferior's address
15509 space where they were inserted is already gone, e.g. after exit or
15513 cancel_single_step_breakpoints (void)
15517 for (i = 0; i < 2; i++)
15518 if (single_step_breakpoints[i])
15520 xfree (single_step_breakpoints[i]);
15521 single_step_breakpoints[i] = NULL;
15522 single_step_gdbarch[i] = NULL;
15526 /* Detach software single-step breakpoints from INFERIOR_PTID without
15530 detach_single_step_breakpoints (void)
15534 for (i = 0; i < 2; i++)
15535 if (single_step_breakpoints[i])
15536 target_remove_breakpoint (single_step_gdbarch[i],
15537 single_step_breakpoints[i]);
15540 /* Find the software single-step breakpoint that inserted at PC.
15541 Returns its slot if found, and -1 if not found. */
15544 find_single_step_breakpoint (struct address_space *aspace,
15549 for (i = 0; i < 2; i++)
15551 struct bp_target_info *bp_tgt = single_step_breakpoints[i];
15553 && breakpoint_address_match (bp_tgt->placed_address_space,
15554 bp_tgt->placed_address,
15562 /* Check whether a software single-step breakpoint is inserted at
15566 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
15569 return find_single_step_breakpoint (aspace, pc) >= 0;
15572 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
15573 non-zero otherwise. */
15575 is_syscall_catchpoint_enabled (struct breakpoint *bp)
15577 if (syscall_catchpoint_p (bp)
15578 && bp->enable_state != bp_disabled
15579 && bp->enable_state != bp_call_disabled)
15586 catch_syscall_enabled (void)
15588 struct catch_syscall_inferior_data *inf_data
15589 = get_catch_syscall_inferior_data (current_inferior ());
15591 return inf_data->total_syscalls_count != 0;
15595 catching_syscall_number (int syscall_number)
15597 struct breakpoint *bp;
15599 ALL_BREAKPOINTS (bp)
15600 if (is_syscall_catchpoint_enabled (bp))
15602 struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
15604 if (c->syscalls_to_be_caught)
15608 VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
15610 if (syscall_number == iter)
15620 /* Complete syscall names. Used by "catch syscall". */
15621 static VEC (char_ptr) *
15622 catch_syscall_completer (struct cmd_list_element *cmd,
15623 const char *text, const char *word)
15625 const char **list = get_syscall_names ();
15626 VEC (char_ptr) *retlist
15627 = (list == NULL) ? NULL : complete_on_enum (list, word, word);
15633 /* Tracepoint-specific operations. */
15635 /* Set tracepoint count to NUM. */
15637 set_tracepoint_count (int num)
15639 tracepoint_count = num;
15640 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15644 trace_command (char *arg, int from_tty)
15646 struct breakpoint_ops *ops;
15647 const char *arg_cp = arg;
15649 if (arg && probe_linespec_to_ops (&arg_cp))
15650 ops = &tracepoint_probe_breakpoint_ops;
15652 ops = &tracepoint_breakpoint_ops;
15654 create_breakpoint (get_current_arch (),
15656 NULL, 0, NULL, 1 /* parse arg */,
15658 bp_tracepoint /* type_wanted */,
15659 0 /* Ignore count */,
15660 pending_break_support,
15664 0 /* internal */, 0);
15668 ftrace_command (char *arg, int from_tty)
15670 create_breakpoint (get_current_arch (),
15672 NULL, 0, NULL, 1 /* parse arg */,
15674 bp_fast_tracepoint /* type_wanted */,
15675 0 /* Ignore count */,
15676 pending_break_support,
15677 &tracepoint_breakpoint_ops,
15680 0 /* internal */, 0);
15683 /* strace command implementation. Creates a static tracepoint. */
15686 strace_command (char *arg, int from_tty)
15688 struct breakpoint_ops *ops;
15690 /* Decide if we are dealing with a static tracepoint marker (`-m'),
15691 or with a normal static tracepoint. */
15692 if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15693 ops = &strace_marker_breakpoint_ops;
15695 ops = &tracepoint_breakpoint_ops;
15697 create_breakpoint (get_current_arch (),
15699 NULL, 0, NULL, 1 /* parse arg */,
15701 bp_static_tracepoint /* type_wanted */,
15702 0 /* Ignore count */,
15703 pending_break_support,
15707 0 /* internal */, 0);
15710 /* Set up a fake reader function that gets command lines from a linked
15711 list that was acquired during tracepoint uploading. */
15713 static struct uploaded_tp *this_utp;
15714 static int next_cmd;
15717 read_uploaded_action (void)
15721 VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15728 /* Given information about a tracepoint as recorded on a target (which
15729 can be either a live system or a trace file), attempt to create an
15730 equivalent GDB tracepoint. This is not a reliable process, since
15731 the target does not necessarily have all the information used when
15732 the tracepoint was originally defined. */
15734 struct tracepoint *
15735 create_tracepoint_from_upload (struct uploaded_tp *utp)
15737 char *addr_str, small_buf[100];
15738 struct tracepoint *tp;
15740 if (utp->at_string)
15741 addr_str = utp->at_string;
15744 /* In the absence of a source location, fall back to raw
15745 address. Since there is no way to confirm that the address
15746 means the same thing as when the trace was started, warn the
15748 warning (_("Uploaded tracepoint %d has no "
15749 "source location, using raw address"),
15751 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15752 addr_str = small_buf;
15755 /* There's not much we can do with a sequence of bytecodes. */
15756 if (utp->cond && !utp->cond_string)
15757 warning (_("Uploaded tracepoint %d condition "
15758 "has no source form, ignoring it"),
15761 if (!create_breakpoint (get_current_arch (),
15763 utp->cond_string, -1, NULL,
15764 0 /* parse cond/thread */,
15766 utp->type /* type_wanted */,
15767 0 /* Ignore count */,
15768 pending_break_support,
15769 &tracepoint_breakpoint_ops,
15771 utp->enabled /* enabled */,
15773 CREATE_BREAKPOINT_FLAGS_INSERTED))
15776 /* Get the tracepoint we just created. */
15777 tp = get_tracepoint (tracepoint_count);
15778 gdb_assert (tp != NULL);
15782 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15785 trace_pass_command (small_buf, 0);
15788 /* If we have uploaded versions of the original commands, set up a
15789 special-purpose "reader" function and call the usual command line
15790 reader, then pass the result to the breakpoint command-setting
15792 if (!VEC_empty (char_ptr, utp->cmd_strings))
15794 struct command_line *cmd_list;
15799 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15801 breakpoint_set_commands (&tp->base, cmd_list);
15803 else if (!VEC_empty (char_ptr, utp->actions)
15804 || !VEC_empty (char_ptr, utp->step_actions))
15805 warning (_("Uploaded tracepoint %d actions "
15806 "have no source form, ignoring them"),
15809 /* Copy any status information that might be available. */
15810 tp->base.hit_count = utp->hit_count;
15811 tp->traceframe_usage = utp->traceframe_usage;
15816 /* Print information on tracepoint number TPNUM_EXP, or all if
15820 tracepoints_info (char *args, int from_tty)
15822 struct ui_out *uiout = current_uiout;
15825 num_printed = breakpoint_1 (args, 0, is_tracepoint);
15827 if (num_printed == 0)
15829 if (args == NULL || *args == '\0')
15830 ui_out_message (uiout, 0, "No tracepoints.\n");
15832 ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15835 default_collect_info ();
15838 /* The 'enable trace' command enables tracepoints.
15839 Not supported by all targets. */
15841 enable_trace_command (char *args, int from_tty)
15843 enable_command (args, from_tty);
15846 /* The 'disable trace' command disables tracepoints.
15847 Not supported by all targets. */
15849 disable_trace_command (char *args, int from_tty)
15851 disable_command (args, from_tty);
15854 /* Remove a tracepoint (or all if no argument). */
15856 delete_trace_command (char *arg, int from_tty)
15858 struct breakpoint *b, *b_tmp;
15864 int breaks_to_delete = 0;
15866 /* Delete all breakpoints if no argument.
15867 Do not delete internal or call-dummy breakpoints, these
15868 have to be deleted with an explicit breakpoint number
15870 ALL_TRACEPOINTS (b)
15871 if (is_tracepoint (b) && user_breakpoint_p (b))
15873 breaks_to_delete = 1;
15877 /* Ask user only if there are some breakpoints to delete. */
15879 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15881 ALL_BREAKPOINTS_SAFE (b, b_tmp)
15882 if (is_tracepoint (b) && user_breakpoint_p (b))
15883 delete_breakpoint (b);
15887 map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15890 /* Helper function for trace_pass_command. */
15893 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15895 tp->pass_count = count;
15896 observer_notify_breakpoint_modified (&tp->base);
15898 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15899 tp->base.number, count);
15902 /* Set passcount for tracepoint.
15904 First command argument is passcount, second is tracepoint number.
15905 If tracepoint number omitted, apply to most recently defined.
15906 Also accepts special argument "all". */
15909 trace_pass_command (char *args, int from_tty)
15911 struct tracepoint *t1;
15912 unsigned int count;
15914 if (args == 0 || *args == 0)
15915 error (_("passcount command requires an "
15916 "argument (count + optional TP num)"));
15918 count = strtoul (args, &args, 10); /* Count comes first, then TP num. */
15920 args = skip_spaces (args);
15921 if (*args && strncasecmp (args, "all", 3) == 0)
15923 struct breakpoint *b;
15925 args += 3; /* Skip special argument "all". */
15927 error (_("Junk at end of arguments."));
15929 ALL_TRACEPOINTS (b)
15931 t1 = (struct tracepoint *) b;
15932 trace_pass_set_count (t1, count, from_tty);
15935 else if (*args == '\0')
15937 t1 = get_tracepoint_by_number (&args, NULL);
15939 trace_pass_set_count (t1, count, from_tty);
15943 struct get_number_or_range_state state;
15945 init_number_or_range (&state, args);
15946 while (!state.finished)
15948 t1 = get_tracepoint_by_number (&args, &state);
15950 trace_pass_set_count (t1, count, from_tty);
15955 struct tracepoint *
15956 get_tracepoint (int num)
15958 struct breakpoint *t;
15960 ALL_TRACEPOINTS (t)
15961 if (t->number == num)
15962 return (struct tracepoint *) t;
15967 /* Find the tracepoint with the given target-side number (which may be
15968 different from the tracepoint number after disconnecting and
15971 struct tracepoint *
15972 get_tracepoint_by_number_on_target (int num)
15974 struct breakpoint *b;
15976 ALL_TRACEPOINTS (b)
15978 struct tracepoint *t = (struct tracepoint *) b;
15980 if (t->number_on_target == num)
15987 /* Utility: parse a tracepoint number and look it up in the list.
15988 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15989 If the argument is missing, the most recent tracepoint
15990 (tracepoint_count) is returned. */
15992 struct tracepoint *
15993 get_tracepoint_by_number (char **arg,
15994 struct get_number_or_range_state *state)
15996 struct breakpoint *t;
15998 char *instring = arg == NULL ? NULL : *arg;
16002 gdb_assert (!state->finished);
16003 tpnum = get_number_or_range (state);
16005 else if (arg == NULL || *arg == NULL || ! **arg)
16006 tpnum = tracepoint_count;
16008 tpnum = get_number (arg);
16012 if (instring && *instring)
16013 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
16016 printf_filtered (_("No previous tracepoint\n"));
16020 ALL_TRACEPOINTS (t)
16021 if (t->number == tpnum)
16023 return (struct tracepoint *) t;
16026 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
16031 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
16033 if (b->thread != -1)
16034 fprintf_unfiltered (fp, " thread %d", b->thread);
16037 fprintf_unfiltered (fp, " task %d", b->task);
16039 fprintf_unfiltered (fp, "\n");
16042 /* Save information on user settable breakpoints (watchpoints, etc) to
16043 a new script file named FILENAME. If FILTER is non-NULL, call it
16044 on each breakpoint and only include the ones for which it returns
16048 save_breakpoints (char *filename, int from_tty,
16049 int (*filter) (const struct breakpoint *))
16051 struct breakpoint *tp;
16053 struct cleanup *cleanup;
16054 struct ui_file *fp;
16055 int extra_trace_bits = 0;
16057 if (filename == 0 || *filename == 0)
16058 error (_("Argument required (file name in which to save)"));
16060 /* See if we have anything to save. */
16061 ALL_BREAKPOINTS (tp)
16063 /* Skip internal and momentary breakpoints. */
16064 if (!user_breakpoint_p (tp))
16067 /* If we have a filter, only save the breakpoints it accepts. */
16068 if (filter && !filter (tp))
16073 if (is_tracepoint (tp))
16075 extra_trace_bits = 1;
16077 /* We can stop searching. */
16084 warning (_("Nothing to save."));
16088 filename = tilde_expand (filename);
16089 cleanup = make_cleanup (xfree, filename);
16090 fp = gdb_fopen (filename, "w");
16092 error (_("Unable to open file '%s' for saving (%s)"),
16093 filename, safe_strerror (errno));
16094 make_cleanup_ui_file_delete (fp);
16096 if (extra_trace_bits)
16097 save_trace_state_variables (fp);
16099 ALL_BREAKPOINTS (tp)
16101 /* Skip internal and momentary breakpoints. */
16102 if (!user_breakpoint_p (tp))
16105 /* If we have a filter, only save the breakpoints it accepts. */
16106 if (filter && !filter (tp))
16109 tp->ops->print_recreate (tp, fp);
16111 /* Note, we can't rely on tp->number for anything, as we can't
16112 assume the recreated breakpoint numbers will match. Use $bpnum
16115 if (tp->cond_string)
16116 fprintf_unfiltered (fp, " condition $bpnum %s\n", tp->cond_string);
16118 if (tp->ignore_count)
16119 fprintf_unfiltered (fp, " ignore $bpnum %d\n", tp->ignore_count);
16121 if (tp->type != bp_dprintf && tp->commands)
16123 volatile struct gdb_exception ex;
16125 fprintf_unfiltered (fp, " commands\n");
16127 ui_out_redirect (current_uiout, fp);
16128 TRY_CATCH (ex, RETURN_MASK_ALL)
16130 print_command_lines (current_uiout, tp->commands->commands, 2);
16132 ui_out_redirect (current_uiout, NULL);
16135 throw_exception (ex);
16137 fprintf_unfiltered (fp, " end\n");
16140 if (tp->enable_state == bp_disabled)
16141 fprintf_unfiltered (fp, "disable\n");
16143 /* If this is a multi-location breakpoint, check if the locations
16144 should be individually disabled. Watchpoint locations are
16145 special, and not user visible. */
16146 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
16148 struct bp_location *loc;
16151 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
16153 fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
16157 if (extra_trace_bits && *default_collect)
16158 fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
16161 printf_filtered (_("Saved to file '%s'.\n"), filename);
16162 do_cleanups (cleanup);
16165 /* The `save breakpoints' command. */
16168 save_breakpoints_command (char *args, int from_tty)
16170 save_breakpoints (args, from_tty, NULL);
16173 /* The `save tracepoints' command. */
16176 save_tracepoints_command (char *args, int from_tty)
16178 save_breakpoints (args, from_tty, is_tracepoint);
16181 /* Create a vector of all tracepoints. */
16183 VEC(breakpoint_p) *
16184 all_tracepoints (void)
16186 VEC(breakpoint_p) *tp_vec = 0;
16187 struct breakpoint *tp;
16189 ALL_TRACEPOINTS (tp)
16191 VEC_safe_push (breakpoint_p, tp_vec, tp);
16198 /* This help string is used for the break, hbreak, tbreak and thbreak
16199 commands. It is defined as a macro to prevent duplication.
16200 COMMAND should be a string constant containing the name of the
16202 #define BREAK_ARGS_HELP(command) \
16203 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
16204 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
16205 probe point. Accepted values are `-probe' (for a generic, automatically\n\
16206 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
16207 LOCATION may be a line number, function name, or \"*\" and an address.\n\
16208 If a line number is specified, break at start of code for that line.\n\
16209 If a function is specified, break at start of code for that function.\n\
16210 If an address is specified, break at that exact address.\n\
16211 With no LOCATION, uses current execution address of the selected\n\
16212 stack frame. This is useful for breaking on return to a stack frame.\n\
16214 THREADNUM is the number from \"info threads\".\n\
16215 CONDITION is a boolean expression.\n\
16217 Multiple breakpoints at one place are permitted, and useful if their\n\
16218 conditions are different.\n\
16220 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
16222 /* List of subcommands for "catch". */
16223 static struct cmd_list_element *catch_cmdlist;
16225 /* List of subcommands for "tcatch". */
16226 static struct cmd_list_element *tcatch_cmdlist;
16229 add_catch_command (char *name, char *docstring,
16230 cmd_sfunc_ftype *sfunc,
16231 completer_ftype *completer,
16232 void *user_data_catch,
16233 void *user_data_tcatch)
16235 struct cmd_list_element *command;
16237 command = add_cmd (name, class_breakpoint, NULL, docstring,
16239 set_cmd_sfunc (command, sfunc);
16240 set_cmd_context (command, user_data_catch);
16241 set_cmd_completer (command, completer);
16243 command = add_cmd (name, class_breakpoint, NULL, docstring,
16245 set_cmd_sfunc (command, sfunc);
16246 set_cmd_context (command, user_data_tcatch);
16247 set_cmd_completer (command, completer);
16251 clear_syscall_counts (struct inferior *inf)
16253 struct catch_syscall_inferior_data *inf_data
16254 = get_catch_syscall_inferior_data (inf);
16256 inf_data->total_syscalls_count = 0;
16257 inf_data->any_syscall_count = 0;
16258 VEC_free (int, inf_data->syscalls_counts);
16262 save_command (char *arg, int from_tty)
16264 printf_unfiltered (_("\"save\" must be followed by "
16265 "the name of a save subcommand.\n"));
16266 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
16269 struct breakpoint *
16270 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
16273 struct breakpoint *b, *b_tmp;
16275 ALL_BREAKPOINTS_SAFE (b, b_tmp)
16277 if ((*callback) (b, data))
16284 /* Zero if any of the breakpoint's locations could be a location where
16285 functions have been inlined, nonzero otherwise. */
16288 is_non_inline_function (struct breakpoint *b)
16290 /* The shared library event breakpoint is set on the address of a
16291 non-inline function. */
16292 if (b->type == bp_shlib_event)
16298 /* Nonzero if the specified PC cannot be a location where functions
16299 have been inlined. */
16302 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
16303 const struct target_waitstatus *ws)
16305 struct breakpoint *b;
16306 struct bp_location *bl;
16308 ALL_BREAKPOINTS (b)
16310 if (!is_non_inline_function (b))
16313 for (bl = b->loc; bl != NULL; bl = bl->next)
16315 if (!bl->shlib_disabled
16316 && bpstat_check_location (bl, aspace, pc, ws))
16324 /* Remove any references to OBJFILE which is going to be freed. */
16327 breakpoint_free_objfile (struct objfile *objfile)
16329 struct bp_location **locp, *loc;
16331 ALL_BP_LOCATIONS (loc, locp)
16332 if (loc->symtab != NULL && loc->symtab->objfile == objfile)
16333 loc->symtab = NULL;
16337 initialize_breakpoint_ops (void)
16339 static int initialized = 0;
16341 struct breakpoint_ops *ops;
16347 /* The breakpoint_ops structure to be inherit by all kinds of
16348 breakpoints (real breakpoints, i.e., user "break" breakpoints,
16349 internal and momentary breakpoints, etc.). */
16350 ops = &bkpt_base_breakpoint_ops;
16351 *ops = base_breakpoint_ops;
16352 ops->re_set = bkpt_re_set;
16353 ops->insert_location = bkpt_insert_location;
16354 ops->remove_location = bkpt_remove_location;
16355 ops->breakpoint_hit = bkpt_breakpoint_hit;
16356 ops->create_sals_from_address = bkpt_create_sals_from_address;
16357 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
16358 ops->decode_linespec = bkpt_decode_linespec;
16360 /* The breakpoint_ops structure to be used in regular breakpoints. */
16361 ops = &bkpt_breakpoint_ops;
16362 *ops = bkpt_base_breakpoint_ops;
16363 ops->re_set = bkpt_re_set;
16364 ops->resources_needed = bkpt_resources_needed;
16365 ops->print_it = bkpt_print_it;
16366 ops->print_mention = bkpt_print_mention;
16367 ops->print_recreate = bkpt_print_recreate;
16369 /* Ranged breakpoints. */
16370 ops = &ranged_breakpoint_ops;
16371 *ops = bkpt_breakpoint_ops;
16372 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
16373 ops->resources_needed = resources_needed_ranged_breakpoint;
16374 ops->print_it = print_it_ranged_breakpoint;
16375 ops->print_one = print_one_ranged_breakpoint;
16376 ops->print_one_detail = print_one_detail_ranged_breakpoint;
16377 ops->print_mention = print_mention_ranged_breakpoint;
16378 ops->print_recreate = print_recreate_ranged_breakpoint;
16380 /* Internal breakpoints. */
16381 ops = &internal_breakpoint_ops;
16382 *ops = bkpt_base_breakpoint_ops;
16383 ops->re_set = internal_bkpt_re_set;
16384 ops->check_status = internal_bkpt_check_status;
16385 ops->print_it = internal_bkpt_print_it;
16386 ops->print_mention = internal_bkpt_print_mention;
16388 /* Momentary breakpoints. */
16389 ops = &momentary_breakpoint_ops;
16390 *ops = bkpt_base_breakpoint_ops;
16391 ops->re_set = momentary_bkpt_re_set;
16392 ops->check_status = momentary_bkpt_check_status;
16393 ops->print_it = momentary_bkpt_print_it;
16394 ops->print_mention = momentary_bkpt_print_mention;
16396 /* Momentary breakpoints for bp_longjmp and bp_exception. */
16397 ops = &longjmp_breakpoint_ops;
16398 *ops = momentary_breakpoint_ops;
16399 ops->dtor = longjmp_bkpt_dtor;
16401 /* Probe breakpoints. */
16402 ops = &bkpt_probe_breakpoint_ops;
16403 *ops = bkpt_breakpoint_ops;
16404 ops->insert_location = bkpt_probe_insert_location;
16405 ops->remove_location = bkpt_probe_remove_location;
16406 ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
16407 ops->decode_linespec = bkpt_probe_decode_linespec;
16410 ops = &watchpoint_breakpoint_ops;
16411 *ops = base_breakpoint_ops;
16412 ops->dtor = dtor_watchpoint;
16413 ops->re_set = re_set_watchpoint;
16414 ops->insert_location = insert_watchpoint;
16415 ops->remove_location = remove_watchpoint;
16416 ops->breakpoint_hit = breakpoint_hit_watchpoint;
16417 ops->check_status = check_status_watchpoint;
16418 ops->resources_needed = resources_needed_watchpoint;
16419 ops->works_in_software_mode = works_in_software_mode_watchpoint;
16420 ops->print_it = print_it_watchpoint;
16421 ops->print_mention = print_mention_watchpoint;
16422 ops->print_recreate = print_recreate_watchpoint;
16423 ops->explains_signal = explains_signal_watchpoint;
16425 /* Masked watchpoints. */
16426 ops = &masked_watchpoint_breakpoint_ops;
16427 *ops = watchpoint_breakpoint_ops;
16428 ops->insert_location = insert_masked_watchpoint;
16429 ops->remove_location = remove_masked_watchpoint;
16430 ops->resources_needed = resources_needed_masked_watchpoint;
16431 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
16432 ops->print_it = print_it_masked_watchpoint;
16433 ops->print_one_detail = print_one_detail_masked_watchpoint;
16434 ops->print_mention = print_mention_masked_watchpoint;
16435 ops->print_recreate = print_recreate_masked_watchpoint;
16438 ops = &tracepoint_breakpoint_ops;
16439 *ops = base_breakpoint_ops;
16440 ops->re_set = tracepoint_re_set;
16441 ops->breakpoint_hit = tracepoint_breakpoint_hit;
16442 ops->print_one_detail = tracepoint_print_one_detail;
16443 ops->print_mention = tracepoint_print_mention;
16444 ops->print_recreate = tracepoint_print_recreate;
16445 ops->create_sals_from_address = tracepoint_create_sals_from_address;
16446 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
16447 ops->decode_linespec = tracepoint_decode_linespec;
16449 /* Probe tracepoints. */
16450 ops = &tracepoint_probe_breakpoint_ops;
16451 *ops = tracepoint_breakpoint_ops;
16452 ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
16453 ops->decode_linespec = tracepoint_probe_decode_linespec;
16455 /* Static tracepoints with marker (`-m'). */
16456 ops = &strace_marker_breakpoint_ops;
16457 *ops = tracepoint_breakpoint_ops;
16458 ops->create_sals_from_address = strace_marker_create_sals_from_address;
16459 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
16460 ops->decode_linespec = strace_marker_decode_linespec;
16462 /* Fork catchpoints. */
16463 ops = &catch_fork_breakpoint_ops;
16464 *ops = base_breakpoint_ops;
16465 ops->insert_location = insert_catch_fork;
16466 ops->remove_location = remove_catch_fork;
16467 ops->breakpoint_hit = breakpoint_hit_catch_fork;
16468 ops->print_it = print_it_catch_fork;
16469 ops->print_one = print_one_catch_fork;
16470 ops->print_mention = print_mention_catch_fork;
16471 ops->print_recreate = print_recreate_catch_fork;
16473 /* Vfork catchpoints. */
16474 ops = &catch_vfork_breakpoint_ops;
16475 *ops = base_breakpoint_ops;
16476 ops->insert_location = insert_catch_vfork;
16477 ops->remove_location = remove_catch_vfork;
16478 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
16479 ops->print_it = print_it_catch_vfork;
16480 ops->print_one = print_one_catch_vfork;
16481 ops->print_mention = print_mention_catch_vfork;
16482 ops->print_recreate = print_recreate_catch_vfork;
16484 /* Exec catchpoints. */
16485 ops = &catch_exec_breakpoint_ops;
16486 *ops = base_breakpoint_ops;
16487 ops->dtor = dtor_catch_exec;
16488 ops->insert_location = insert_catch_exec;
16489 ops->remove_location = remove_catch_exec;
16490 ops->breakpoint_hit = breakpoint_hit_catch_exec;
16491 ops->print_it = print_it_catch_exec;
16492 ops->print_one = print_one_catch_exec;
16493 ops->print_mention = print_mention_catch_exec;
16494 ops->print_recreate = print_recreate_catch_exec;
16496 /* Syscall catchpoints. */
16497 ops = &catch_syscall_breakpoint_ops;
16498 *ops = base_breakpoint_ops;
16499 ops->dtor = dtor_catch_syscall;
16500 ops->insert_location = insert_catch_syscall;
16501 ops->remove_location = remove_catch_syscall;
16502 ops->breakpoint_hit = breakpoint_hit_catch_syscall;
16503 ops->print_it = print_it_catch_syscall;
16504 ops->print_one = print_one_catch_syscall;
16505 ops->print_mention = print_mention_catch_syscall;
16506 ops->print_recreate = print_recreate_catch_syscall;
16508 /* Solib-related catchpoints. */
16509 ops = &catch_solib_breakpoint_ops;
16510 *ops = base_breakpoint_ops;
16511 ops->dtor = dtor_catch_solib;
16512 ops->insert_location = insert_catch_solib;
16513 ops->remove_location = remove_catch_solib;
16514 ops->breakpoint_hit = breakpoint_hit_catch_solib;
16515 ops->check_status = check_status_catch_solib;
16516 ops->print_it = print_it_catch_solib;
16517 ops->print_one = print_one_catch_solib;
16518 ops->print_mention = print_mention_catch_solib;
16519 ops->print_recreate = print_recreate_catch_solib;
16521 ops = &dprintf_breakpoint_ops;
16522 *ops = bkpt_base_breakpoint_ops;
16523 ops->re_set = dprintf_re_set;
16524 ops->resources_needed = bkpt_resources_needed;
16525 ops->print_it = bkpt_print_it;
16526 ops->print_mention = bkpt_print_mention;
16527 ops->print_recreate = dprintf_print_recreate;
16528 ops->after_condition_true = dprintf_after_condition_true;
16529 ops->breakpoint_hit = dprintf_breakpoint_hit;
16532 /* Chain containing all defined "enable breakpoint" subcommands. */
16534 static struct cmd_list_element *enablebreaklist = NULL;
16537 _initialize_breakpoint (void)
16539 struct cmd_list_element *c;
16541 initialize_breakpoint_ops ();
16543 observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
16544 observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
16545 observer_attach_inferior_exit (clear_syscall_counts);
16546 observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
16548 breakpoint_objfile_key
16549 = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
16551 catch_syscall_inferior_data
16552 = register_inferior_data_with_cleanup (NULL,
16553 catch_syscall_inferior_data_cleanup);
16555 breakpoint_chain = 0;
16556 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
16557 before a breakpoint is set. */
16558 breakpoint_count = 0;
16560 tracepoint_count = 0;
16562 add_com ("ignore", class_breakpoint, ignore_command, _("\
16563 Set ignore-count of breakpoint number N to COUNT.\n\
16564 Usage is `ignore N COUNT'."));
16566 add_com_alias ("bc", "ignore", class_breakpoint, 1);
16568 add_com ("commands", class_breakpoint, commands_command, _("\
16569 Set commands to be executed when a breakpoint is hit.\n\
16570 Give breakpoint number as argument after \"commands\".\n\
16571 With no argument, the targeted breakpoint is the last one set.\n\
16572 The commands themselves follow starting on the next line.\n\
16573 Type a line containing \"end\" to indicate the end of them.\n\
16574 Give \"silent\" as the first line to make the breakpoint silent;\n\
16575 then no output is printed when it is hit, except what the commands print."));
16577 c = add_com ("condition", class_breakpoint, condition_command, _("\
16578 Specify breakpoint number N to break only if COND is true.\n\
16579 Usage is `condition N COND', where N is an integer and COND is an\n\
16580 expression to be evaluated whenever breakpoint N is reached."));
16581 set_cmd_completer (c, condition_completer);
16583 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16584 Set a temporary breakpoint.\n\
16585 Like \"break\" except the breakpoint is only temporary,\n\
16586 so it will be deleted when hit. Equivalent to \"break\" followed\n\
16587 by using \"enable delete\" on the breakpoint number.\n\
16589 BREAK_ARGS_HELP ("tbreak")));
16590 set_cmd_completer (c, location_completer);
16592 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16593 Set a hardware assisted breakpoint.\n\
16594 Like \"break\" except the breakpoint requires hardware support,\n\
16595 some target hardware may not have this support.\n\
16597 BREAK_ARGS_HELP ("hbreak")));
16598 set_cmd_completer (c, location_completer);
16600 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16601 Set a temporary hardware assisted breakpoint.\n\
16602 Like \"hbreak\" except the breakpoint is only temporary,\n\
16603 so it will be deleted when hit.\n\
16605 BREAK_ARGS_HELP ("thbreak")));
16606 set_cmd_completer (c, location_completer);
16608 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16609 Enable some breakpoints.\n\
16610 Give breakpoint numbers (separated by spaces) as arguments.\n\
16611 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16612 This is used to cancel the effect of the \"disable\" command.\n\
16613 With a subcommand you can enable temporarily."),
16614 &enablelist, "enable ", 1, &cmdlist);
16616 add_com ("ab", class_breakpoint, enable_command, _("\
16617 Enable some breakpoints.\n\
16618 Give breakpoint numbers (separated by spaces) as arguments.\n\
16619 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16620 This is used to cancel the effect of the \"disable\" command.\n\
16621 With a subcommand you can enable temporarily."));
16623 add_com_alias ("en", "enable", class_breakpoint, 1);
16625 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16626 Enable some breakpoints.\n\
16627 Give breakpoint numbers (separated by spaces) as arguments.\n\
16628 This is used to cancel the effect of the \"disable\" command.\n\
16629 May be abbreviated to simply \"enable\".\n"),
16630 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16632 add_cmd ("once", no_class, enable_once_command, _("\
16633 Enable breakpoints for one hit. Give breakpoint numbers.\n\
16634 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16637 add_cmd ("delete", no_class, enable_delete_command, _("\
16638 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
16639 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16642 add_cmd ("count", no_class, enable_count_command, _("\
16643 Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
16644 If a breakpoint is hit while enabled in this fashion,\n\
16645 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16648 add_cmd ("delete", no_class, enable_delete_command, _("\
16649 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
16650 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16653 add_cmd ("once", no_class, enable_once_command, _("\
16654 Enable breakpoints for one hit. Give breakpoint numbers.\n\
16655 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16658 add_cmd ("count", no_class, enable_count_command, _("\
16659 Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
16660 If a breakpoint is hit while enabled in this fashion,\n\
16661 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16664 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16665 Disable some breakpoints.\n\
16666 Arguments are breakpoint numbers with spaces in between.\n\
16667 To disable all breakpoints, give no argument.\n\
16668 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16669 &disablelist, "disable ", 1, &cmdlist);
16670 add_com_alias ("dis", "disable", class_breakpoint, 1);
16671 add_com_alias ("disa", "disable", class_breakpoint, 1);
16673 add_com ("sb", class_breakpoint, disable_command, _("\
16674 Disable some breakpoints.\n\
16675 Arguments are breakpoint numbers with spaces in between.\n\
16676 To disable all breakpoints, give no argument.\n\
16677 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16679 add_cmd ("breakpoints", class_alias, disable_command, _("\
16680 Disable some breakpoints.\n\
16681 Arguments are breakpoint numbers with spaces in between.\n\
16682 To disable all breakpoints, give no argument.\n\
16683 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16684 This command may be abbreviated \"disable\"."),
16687 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16688 Delete some breakpoints or auto-display expressions.\n\
16689 Arguments are breakpoint numbers with spaces in between.\n\
16690 To delete all breakpoints, give no argument.\n\
16692 Also a prefix command for deletion of other GDB objects.\n\
16693 The \"unset\" command is also an alias for \"delete\"."),
16694 &deletelist, "delete ", 1, &cmdlist);
16695 add_com_alias ("d", "delete", class_breakpoint, 1);
16696 add_com_alias ("del", "delete", class_breakpoint, 1);
16698 add_com ("db", class_breakpoint, delete_command, _("\
16699 Delete some breakpoints.\n\
16700 Arguments are breakpoint numbers with spaces in between.\n\
16701 To delete all breakpoints, give no argument.\n"));
16703 add_cmd ("breakpoints", class_alias, delete_command, _("\
16704 Delete some breakpoints or auto-display expressions.\n\
16705 Arguments are breakpoint numbers with spaces in between.\n\
16706 To delete all breakpoints, give no argument.\n\
16707 This command may be abbreviated \"delete\"."),
16710 add_com ("clear", class_breakpoint, clear_command, _("\
16711 Clear breakpoint at specified line or function.\n\
16712 Argument may be line number, function name, or \"*\" and an address.\n\
16713 If line number is specified, all breakpoints in that line are cleared.\n\
16714 If function is specified, breakpoints at beginning of function are cleared.\n\
16715 If an address is specified, breakpoints at that address are cleared.\n\
16717 With no argument, clears all breakpoints in the line that the selected frame\n\
16718 is executing in.\n\
16720 See also the \"delete\" command which clears breakpoints by number."));
16721 add_com_alias ("cl", "clear", class_breakpoint, 1);
16723 c = add_com ("break", class_breakpoint, break_command, _("\
16724 Set breakpoint at specified line or function.\n"
16725 BREAK_ARGS_HELP ("break")));
16726 set_cmd_completer (c, location_completer);
16728 add_com_alias ("b", "break", class_run, 1);
16729 add_com_alias ("br", "break", class_run, 1);
16730 add_com_alias ("bre", "break", class_run, 1);
16731 add_com_alias ("brea", "break", class_run, 1);
16734 add_com_alias ("ba", "break", class_breakpoint, 1);
16738 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16739 Break in function/address or break at a line in the current file."),
16740 &stoplist, "stop ", 1, &cmdlist);
16741 add_cmd ("in", class_breakpoint, stopin_command,
16742 _("Break in function or address."), &stoplist);
16743 add_cmd ("at", class_breakpoint, stopat_command,
16744 _("Break at a line in the current file."), &stoplist);
16745 add_com ("status", class_info, breakpoints_info, _("\
16746 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16747 The \"Type\" column indicates one of:\n\
16748 \tbreakpoint - normal breakpoint\n\
16749 \twatchpoint - watchpoint\n\
16750 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16751 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16752 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
16753 address and file/line number respectively.\n\
16755 Convenience variable \"$_\" and default examine address for \"x\"\n\
16756 are set to the address of the last breakpoint listed unless the command\n\
16757 is prefixed with \"server \".\n\n\
16758 Convenience variable \"$bpnum\" contains the number of the last\n\
16759 breakpoint set."));
16762 add_info ("breakpoints", breakpoints_info, _("\
16763 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16764 The \"Type\" column indicates one of:\n\
16765 \tbreakpoint - normal breakpoint\n\
16766 \twatchpoint - watchpoint\n\
16767 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16768 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16769 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
16770 address and file/line number respectively.\n\
16772 Convenience variable \"$_\" and default examine address for \"x\"\n\
16773 are set to the address of the last breakpoint listed unless the command\n\
16774 is prefixed with \"server \".\n\n\
16775 Convenience variable \"$bpnum\" contains the number of the last\n\
16776 breakpoint set."));
16778 add_info_alias ("b", "breakpoints", 1);
16781 add_com ("lb", class_breakpoint, breakpoints_info, _("\
16782 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16783 The \"Type\" column indicates one of:\n\
16784 \tbreakpoint - normal breakpoint\n\
16785 \twatchpoint - watchpoint\n\
16786 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16787 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16788 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
16789 address and file/line number respectively.\n\
16791 Convenience variable \"$_\" and default examine address for \"x\"\n\
16792 are set to the address of the last breakpoint listed unless the command\n\
16793 is prefixed with \"server \".\n\n\
16794 Convenience variable \"$bpnum\" contains the number of the last\n\
16795 breakpoint set."));
16797 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16798 Status of all breakpoints, or breakpoint number NUMBER.\n\
16799 The \"Type\" column indicates one of:\n\
16800 \tbreakpoint - normal breakpoint\n\
16801 \twatchpoint - watchpoint\n\
16802 \tlongjmp - internal breakpoint used to step through longjmp()\n\
16803 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16804 \tuntil - internal breakpoint used by the \"until\" command\n\
16805 \tfinish - internal breakpoint used by the \"finish\" command\n\
16806 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16807 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16808 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
16809 address and file/line number respectively.\n\
16811 Convenience variable \"$_\" and default examine address for \"x\"\n\
16812 are set to the address of the last breakpoint listed unless the command\n\
16813 is prefixed with \"server \".\n\n\
16814 Convenience variable \"$bpnum\" contains the number of the last\n\
16816 &maintenanceinfolist);
16818 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16819 Set catchpoints to catch events."),
16820 &catch_cmdlist, "catch ",
16821 0/*allow-unknown*/, &cmdlist);
16823 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16824 Set temporary catchpoints to catch events."),
16825 &tcatch_cmdlist, "tcatch ",
16826 0/*allow-unknown*/, &cmdlist);
16828 add_catch_command ("fork", _("Catch calls to fork."),
16829 catch_fork_command_1,
16831 (void *) (uintptr_t) catch_fork_permanent,
16832 (void *) (uintptr_t) catch_fork_temporary);
16833 add_catch_command ("vfork", _("Catch calls to vfork."),
16834 catch_fork_command_1,
16836 (void *) (uintptr_t) catch_vfork_permanent,
16837 (void *) (uintptr_t) catch_vfork_temporary);
16838 add_catch_command ("exec", _("Catch calls to exec."),
16839 catch_exec_command_1,
16843 add_catch_command ("load", _("Catch loads of shared libraries.\n\
16844 Usage: catch load [REGEX]\n\
16845 If REGEX is given, only stop for libraries matching the regular expression."),
16846 catch_load_command_1,
16850 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16851 Usage: catch unload [REGEX]\n\
16852 If REGEX is given, only stop for libraries matching the regular expression."),
16853 catch_unload_command_1,
16857 add_catch_command ("syscall", _("\
16858 Catch system calls by their names and/or numbers.\n\
16859 Arguments say which system calls to catch. If no arguments\n\
16860 are given, every system call will be caught.\n\
16861 Arguments, if given, should be one or more system call names\n\
16862 (if your system supports that), or system call numbers."),
16863 catch_syscall_command_1,
16864 catch_syscall_completer,
16868 c = add_com ("watch", class_breakpoint, watch_command, _("\
16869 Set a watchpoint for an expression.\n\
16870 Usage: watch [-l|-location] EXPRESSION\n\
16871 A watchpoint stops execution of your program whenever the value of\n\
16872 an expression changes.\n\
16873 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16874 the memory to which it refers."));
16875 set_cmd_completer (c, expression_completer);
16877 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16878 Set a read watchpoint for an expression.\n\
16879 Usage: rwatch [-l|-location] EXPRESSION\n\
16880 A watchpoint stops execution of your program whenever the value of\n\
16881 an expression is read.\n\
16882 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16883 the memory to which it refers."));
16884 set_cmd_completer (c, expression_completer);
16886 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16887 Set a watchpoint for an expression.\n\
16888 Usage: awatch [-l|-location] EXPRESSION\n\
16889 A watchpoint stops execution of your program whenever the value of\n\
16890 an expression is either read or written.\n\
16891 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16892 the memory to which it refers."));
16893 set_cmd_completer (c, expression_completer);
16895 add_info ("watchpoints", watchpoints_info, _("\
16896 Status of specified watchpoints (all watchpoints if no argument)."));
16898 /* XXX: cagney/2005-02-23: This should be a boolean, and should
16899 respond to changes - contrary to the description. */
16900 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16901 &can_use_hw_watchpoints, _("\
16902 Set debugger's willingness to use watchpoint hardware."), _("\
16903 Show debugger's willingness to use watchpoint hardware."), _("\
16904 If zero, gdb will not use hardware for new watchpoints, even if\n\
16905 such is available. (However, any hardware watchpoints that were\n\
16906 created before setting this to nonzero, will continue to use watchpoint\n\
16909 show_can_use_hw_watchpoints,
16910 &setlist, &showlist);
16912 can_use_hw_watchpoints = 1;
16914 /* Tracepoint manipulation commands. */
16916 c = add_com ("trace", class_breakpoint, trace_command, _("\
16917 Set a tracepoint at specified line or function.\n\
16919 BREAK_ARGS_HELP ("trace") "\n\
16920 Do \"help tracepoints\" for info on other tracepoint commands."));
16921 set_cmd_completer (c, location_completer);
16923 add_com_alias ("tp", "trace", class_alias, 0);
16924 add_com_alias ("tr", "trace", class_alias, 1);
16925 add_com_alias ("tra", "trace", class_alias, 1);
16926 add_com_alias ("trac", "trace", class_alias, 1);
16928 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16929 Set a fast tracepoint at specified line or function.\n\
16931 BREAK_ARGS_HELP ("ftrace") "\n\
16932 Do \"help tracepoints\" for info on other tracepoint commands."));
16933 set_cmd_completer (c, location_completer);
16935 c = add_com ("strace", class_breakpoint, strace_command, _("\
16936 Set a static tracepoint at specified line, function or marker.\n\
16938 strace [LOCATION] [if CONDITION]\n\
16939 LOCATION may be a line number, function name, \"*\" and an address,\n\
16940 or -m MARKER_ID.\n\
16941 If a line number is specified, probe the marker at start of code\n\
16942 for that line. If a function is specified, probe the marker at start\n\
16943 of code for that function. If an address is specified, probe the marker\n\
16944 at that exact address. If a marker id is specified, probe the marker\n\
16945 with that name. With no LOCATION, uses current execution address of\n\
16946 the selected stack frame.\n\
16947 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16948 This collects arbitrary user data passed in the probe point call to the\n\
16949 tracing library. You can inspect it when analyzing the trace buffer,\n\
16950 by printing the $_sdata variable like any other convenience variable.\n\
16952 CONDITION is a boolean expression.\n\
16954 Multiple tracepoints at one place are permitted, and useful if their\n\
16955 conditions are different.\n\
16957 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16958 Do \"help tracepoints\" for info on other tracepoint commands."));
16959 set_cmd_completer (c, location_completer);
16961 add_info ("tracepoints", tracepoints_info, _("\
16962 Status of specified tracepoints (all tracepoints if no argument).\n\
16963 Convenience variable \"$tpnum\" contains the number of the\n\
16964 last tracepoint set."));
16966 add_info_alias ("tp", "tracepoints", 1);
16968 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16969 Delete specified tracepoints.\n\
16970 Arguments are tracepoint numbers, separated by spaces.\n\
16971 No argument means delete all tracepoints."),
16973 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16975 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16976 Disable specified tracepoints.\n\
16977 Arguments are tracepoint numbers, separated by spaces.\n\
16978 No argument means disable all tracepoints."),
16980 deprecate_cmd (c, "disable");
16982 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16983 Enable specified tracepoints.\n\
16984 Arguments are tracepoint numbers, separated by spaces.\n\
16985 No argument means enable all tracepoints."),
16987 deprecate_cmd (c, "enable");
16989 add_com ("passcount", class_trace, trace_pass_command, _("\
16990 Set the passcount for a tracepoint.\n\
16991 The trace will end when the tracepoint has been passed 'count' times.\n\
16992 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16993 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16995 add_prefix_cmd ("save", class_breakpoint, save_command,
16996 _("Save breakpoint definitions as a script."),
16997 &save_cmdlist, "save ",
16998 0/*allow-unknown*/, &cmdlist);
17000 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
17001 Save current breakpoint definitions as a script.\n\
17002 This includes all types of breakpoints (breakpoints, watchpoints,\n\
17003 catchpoints, tracepoints). Use the 'source' command in another debug\n\
17004 session to restore them."),
17006 set_cmd_completer (c, filename_completer);
17008 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
17009 Save current tracepoint definitions as a script.\n\
17010 Use the 'source' command in another debug session to restore them."),
17012 set_cmd_completer (c, filename_completer);
17014 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
17015 deprecate_cmd (c, "save tracepoints");
17017 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
17018 Breakpoint specific settings\n\
17019 Configure various breakpoint-specific variables such as\n\
17020 pending breakpoint behavior"),
17021 &breakpoint_set_cmdlist, "set breakpoint ",
17022 0/*allow-unknown*/, &setlist);
17023 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
17024 Breakpoint specific settings\n\
17025 Configure various breakpoint-specific variables such as\n\
17026 pending breakpoint behavior"),
17027 &breakpoint_show_cmdlist, "show breakpoint ",
17028 0/*allow-unknown*/, &showlist);
17030 add_setshow_auto_boolean_cmd ("pending", no_class,
17031 &pending_break_support, _("\
17032 Set debugger's behavior regarding pending breakpoints."), _("\
17033 Show debugger's behavior regarding pending breakpoints."), _("\
17034 If on, an unrecognized breakpoint location will cause gdb to create a\n\
17035 pending breakpoint. If off, an unrecognized breakpoint location results in\n\
17036 an error. If auto, an unrecognized breakpoint location results in a\n\
17037 user-query to see if a pending breakpoint should be created."),
17039 show_pending_break_support,
17040 &breakpoint_set_cmdlist,
17041 &breakpoint_show_cmdlist);
17043 pending_break_support = AUTO_BOOLEAN_AUTO;
17045 add_setshow_boolean_cmd ("auto-hw", no_class,
17046 &automatic_hardware_breakpoints, _("\
17047 Set automatic usage of hardware breakpoints."), _("\
17048 Show automatic usage of hardware breakpoints."), _("\
17049 If set, the debugger will automatically use hardware breakpoints for\n\
17050 breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
17051 a warning will be emitted for such breakpoints."),
17053 show_automatic_hardware_breakpoints,
17054 &breakpoint_set_cmdlist,
17055 &breakpoint_show_cmdlist);
17057 add_setshow_boolean_cmd ("always-inserted", class_support,
17058 &always_inserted_mode, _("\
17059 Set mode for inserting breakpoints."), _("\
17060 Show mode for inserting breakpoints."), _("\
17061 When this mode is on, breakpoints are inserted immediately as soon as\n\
17062 they're created, kept inserted even when execution stops, and removed\n\
17063 only when the user deletes them. When this mode is off (the default),\n\
17064 breakpoints are inserted only when execution continues, and removed\n\
17065 when execution stops."),
17067 &show_always_inserted_mode,
17068 &breakpoint_set_cmdlist,
17069 &breakpoint_show_cmdlist);
17071 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
17072 condition_evaluation_enums,
17073 &condition_evaluation_mode_1, _("\
17074 Set mode of breakpoint condition evaluation."), _("\
17075 Show mode of breakpoint condition evaluation."), _("\
17076 When this is set to \"host\", breakpoint conditions will be\n\
17077 evaluated on the host's side by GDB. When it is set to \"target\",\n\
17078 breakpoint conditions will be downloaded to the target (if the target\n\
17079 supports such feature) and conditions will be evaluated on the target's side.\n\
17080 If this is set to \"auto\" (default), this will be automatically set to\n\
17081 \"target\" if it supports condition evaluation, otherwise it will\n\
17082 be set to \"gdb\""),
17083 &set_condition_evaluation_mode,
17084 &show_condition_evaluation_mode,
17085 &breakpoint_set_cmdlist,
17086 &breakpoint_show_cmdlist);
17088 add_com ("break-range", class_breakpoint, break_range_command, _("\
17089 Set a breakpoint for an address range.\n\
17090 break-range START-LOCATION, END-LOCATION\n\
17091 where START-LOCATION and END-LOCATION can be one of the following:\n\
17092 LINENUM, for that line in the current file,\n\
17093 FILE:LINENUM, for that line in that file,\n\
17094 +OFFSET, for that number of lines after the current line\n\
17095 or the start of the range\n\
17096 FUNCTION, for the first line in that function,\n\
17097 FILE:FUNCTION, to distinguish among like-named static functions.\n\
17098 *ADDRESS, for the instruction at that address.\n\
17100 The breakpoint will stop execution of the inferior whenever it executes\n\
17101 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
17102 range (including START-LOCATION and END-LOCATION)."));
17104 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
17105 Set a dynamic printf at specified line or function.\n\
17106 dprintf location,format string,arg1,arg2,...\n\
17107 location may be a line number, function name, or \"*\" and an address.\n\
17108 If a line number is specified, break at start of code for that line.\n\
17109 If a function is specified, break at start of code for that function."));
17110 set_cmd_completer (c, location_completer);
17112 add_setshow_enum_cmd ("dprintf-style", class_support,
17113 dprintf_style_enums, &dprintf_style, _("\
17114 Set the style of usage for dynamic printf."), _("\
17115 Show the style of usage for dynamic printf."), _("\
17116 This setting chooses how GDB will do a dynamic printf.\n\
17117 If the value is \"gdb\", then the printing is done by GDB to its own\n\
17118 console, as with the \"printf\" command.\n\
17119 If the value is \"call\", the print is done by calling a function in your\n\
17120 program; by default printf(), but you can choose a different function or\n\
17121 output stream by setting dprintf-function and dprintf-channel."),
17122 update_dprintf_commands, NULL,
17123 &setlist, &showlist);
17125 dprintf_function = xstrdup ("printf");
17126 add_setshow_string_cmd ("dprintf-function", class_support,
17127 &dprintf_function, _("\
17128 Set the function to use for dynamic printf"), _("\
17129 Show the function to use for dynamic printf"), NULL,
17130 update_dprintf_commands, NULL,
17131 &setlist, &showlist);
17133 dprintf_channel = xstrdup ("");
17134 add_setshow_string_cmd ("dprintf-channel", class_support,
17135 &dprintf_channel, _("\
17136 Set the channel to use for dynamic printf"), _("\
17137 Show the channel to use for dynamic printf"), NULL,
17138 update_dprintf_commands, NULL,
17139 &setlist, &showlist);
17141 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
17142 &disconnected_dprintf, _("\
17143 Set whether dprintf continues after GDB disconnects."), _("\
17144 Show whether dprintf continues after GDB disconnects."), _("\
17145 Use this to let dprintf commands continue to hit and produce output\n\
17146 even if GDB disconnects or detaches from the target."),
17149 &setlist, &showlist);
17151 add_com ("agent-printf", class_vars, agent_printf_command, _("\
17152 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
17153 (target agent only) This is useful for formatted output in user-defined commands."));
17155 automatic_hardware_breakpoints = 1;
17157 observer_attach_about_to_proceed (breakpoint_about_to_proceed);
17158 observer_attach_thread_exit (remove_threaded_breakpoints);