1 /* Everything about breakpoints, for GDB.
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5 2008 Free Software Foundation, Inc.
7 This file is part of GDB.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
27 #include "breakpoint.h"
29 #include "expression.h"
35 #include "gdbthread.h"
38 #include "gdb_string.h"
45 #include "completer.h"
48 #include "cli/cli-script.h"
49 #include "gdb_assert.h"
54 #include "exceptions.h"
61 #include "mi/mi-common.h"
63 /* Arguments to pass as context to some catch command handlers. */
64 #define CATCH_PERMANENT ((void *) (uintptr_t) 0)
65 #define CATCH_TEMPORARY ((void *) (uintptr_t) 1)
67 /* Prototypes for local functions. */
69 static void enable_delete_command (char *, int);
71 static void enable_delete_breakpoint (struct breakpoint *);
73 static void enable_once_command (char *, int);
75 static void enable_once_breakpoint (struct breakpoint *);
77 static void disable_command (char *, int);
79 static void enable_command (char *, int);
81 static void map_breakpoint_numbers (char *, void (*)(struct breakpoint *));
83 static void ignore_command (char *, int);
85 static int breakpoint_re_set_one (void *);
87 static void clear_command (char *, int);
89 static void catch_command (char *, int);
91 static void watch_command (char *, int);
93 static int can_use_hardware_watchpoint (struct value *);
95 static void break_command_1 (char *, int, int);
97 static void mention (struct breakpoint *);
99 struct breakpoint *set_raw_breakpoint (struct symtab_and_line, enum bptype);
101 static void check_duplicates (struct breakpoint *);
103 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
105 static CORE_ADDR adjust_breakpoint_address (CORE_ADDR bpaddr,
108 static void describe_other_breakpoints (CORE_ADDR, struct obj_section *, int);
110 static void breakpoints_info (char *, int);
112 static void breakpoint_1 (int, int);
114 static bpstat bpstat_alloc (const struct bp_location *, bpstat);
116 static int breakpoint_cond_eval (void *);
118 static void cleanup_executing_breakpoints (void *);
120 static void commands_command (char *, int);
122 static void condition_command (char *, int);
124 static int get_number_trailer (char **, int);
126 void set_breakpoint_count (int);
135 static int remove_breakpoint (struct bp_location *, insertion_state_t);
137 static enum print_stop_action print_it_typical (bpstat);
139 static enum print_stop_action print_bp_stop_message (bpstat bs);
141 static int watchpoint_check (void *);
143 static void maintenance_info_breakpoints (char *, int);
145 static void create_overlay_event_breakpoint (char *);
147 static int hw_breakpoint_used_count (void);
149 static int hw_watchpoint_used_count (enum bptype, int *);
151 static void hbreak_command (char *, int);
153 static void thbreak_command (char *, int);
155 static void watch_command_1 (char *, int, int);
157 static void rwatch_command (char *, int);
159 static void awatch_command (char *, int);
161 static void do_enable_breakpoint (struct breakpoint *, enum bpdisp);
163 static void stop_command (char *arg, int from_tty);
165 static void stopin_command (char *arg, int from_tty);
167 static void stopat_command (char *arg, int from_tty);
169 static char *ep_parse_optional_if_clause (char **arg);
171 static char *ep_parse_optional_filename (char **arg);
173 static void catch_exception_command_1 (enum exception_event_kind ex_event,
174 char *arg, int tempflag, int from_tty);
176 static void tcatch_command (char *arg, int from_tty);
178 static void ep_skip_leading_whitespace (char **s);
180 static int single_step_breakpoint_inserted_here_p (CORE_ADDR pc);
182 static void free_bp_location (struct bp_location *loc);
184 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
186 static void update_global_location_list (int);
188 static void update_global_location_list_nothrow (int);
190 static int is_hardware_watchpoint (struct breakpoint *bpt);
192 static void insert_breakpoint_locations (void);
195 bpdisp_text (enum bpdisp disp)
197 /* NOTE: the following values are a part of MI protocol and represent
198 values of 'disp' field returned when inferior stops at a breakpoint. */
199 static char *bpdisps[] = {"del", "dstp", "dis", "keep"};
200 return bpdisps[(int) disp];
203 /* Prototypes for exported functions. */
204 /* If FALSE, gdb will not use hardware support for watchpoints, even
205 if such is available. */
206 static int can_use_hw_watchpoints;
209 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
210 struct cmd_list_element *c,
213 fprintf_filtered (file, _("\
214 Debugger's willingness to use watchpoint hardware is %s.\n"),
218 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
219 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
220 for unrecognized breakpoint locations.
221 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
222 static enum auto_boolean pending_break_support;
224 show_pending_break_support (struct ui_file *file, int from_tty,
225 struct cmd_list_element *c,
228 fprintf_filtered (file, _("\
229 Debugger's behavior regarding pending breakpoints is %s.\n"),
233 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
234 set with "break" but falling in read-only memory.
235 If 0, gdb will warn about such breakpoints, but won't automatically
236 use hardware breakpoints. */
237 static int automatic_hardware_breakpoints;
239 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
240 struct cmd_list_element *c,
243 fprintf_filtered (file, _("\
244 Automatic usage of hardware breakpoints is %s.\n"),
248 /* If on, gdb will keep breakpoints inserted even as inferior is
249 stopped, and immediately insert any new breakpoints. If off, gdb
250 will insert breakpoints into inferior only when resuming it, and
251 will remove breakpoints upon stop. If auto, GDB will behave as ON
252 if in non-stop mode, and as OFF if all-stop mode.*/
254 static const char always_inserted_auto[] = "auto";
255 static const char always_inserted_on[] = "on";
256 static const char always_inserted_off[] = "off";
257 static const char *always_inserted_enums[] = {
258 always_inserted_auto,
263 static const char *always_inserted_mode = always_inserted_auto;
265 show_always_inserted_mode (struct ui_file *file, int from_tty,
266 struct cmd_list_element *c, const char *value)
268 if (always_inserted_mode == always_inserted_auto)
269 fprintf_filtered (file, _("\
270 Always inserted breakpoint mode is %s (currently %s).\n"),
272 breakpoints_always_inserted_mode () ? "on" : "off");
274 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"), value);
278 breakpoints_always_inserted_mode (void)
280 return (always_inserted_mode == always_inserted_on
281 || (always_inserted_mode == always_inserted_auto && non_stop));
284 void _initialize_breakpoint (void);
286 /* Are we executing breakpoint commands? */
287 static int executing_breakpoint_commands;
289 /* Are overlay event breakpoints enabled? */
290 static int overlay_events_enabled;
292 /* Walk the following statement or block through all breakpoints.
293 ALL_BREAKPOINTS_SAFE does so even if the statment deletes the current
296 #define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
298 #define ALL_BREAKPOINTS_SAFE(B,TMP) \
299 for (B = breakpoint_chain; \
300 B ? (TMP=B->next, 1): 0; \
303 /* Similar iterators for the low-level breakpoints. */
305 #define ALL_BP_LOCATIONS(B) for (B = bp_location_chain; B; B = B->global_next)
307 #define ALL_BP_LOCATIONS_SAFE(B,TMP) \
308 for (B = bp_location_chain; \
309 B ? (TMP=B->global_next, 1): 0; \
312 /* Chains of all breakpoints defined. */
314 struct breakpoint *breakpoint_chain;
316 struct bp_location *bp_location_chain;
318 /* The locations that no longer correspond to any breakpoint,
319 unlinked from bp_location_chain, but for which a hit
320 may still be reported by a target. */
321 VEC(bp_location_p) *moribund_locations = NULL;
323 /* Number of last breakpoint made. */
325 int breakpoint_count;
327 /* Return whether a breakpoint is an active enabled breakpoint. */
329 breakpoint_enabled (struct breakpoint *b)
331 return (b->enable_state == bp_enabled);
334 /* Set breakpoint count to NUM. */
337 set_breakpoint_count (int num)
339 breakpoint_count = num;
340 set_internalvar (lookup_internalvar ("bpnum"),
341 value_from_longest (builtin_type_int32, (LONGEST) num));
344 /* Used in run_command to zero the hit count when a new run starts. */
347 clear_breakpoint_hit_counts (void)
349 struct breakpoint *b;
355 /* Default address, symtab and line to put a breakpoint at
356 for "break" command with no arg.
357 if default_breakpoint_valid is zero, the other three are
358 not valid, and "break" with no arg is an error.
360 This set by print_stack_frame, which calls set_default_breakpoint. */
362 int default_breakpoint_valid;
363 CORE_ADDR default_breakpoint_address;
364 struct symtab *default_breakpoint_symtab;
365 int default_breakpoint_line;
367 /* *PP is a string denoting a breakpoint. Get the number of the breakpoint.
368 Advance *PP after the string and any trailing whitespace.
370 Currently the string can either be a number or "$" followed by the name
371 of a convenience variable. Making it an expression wouldn't work well
372 for map_breakpoint_numbers (e.g. "4 + 5 + 6").
374 If the string is a NULL pointer, that denotes the last breakpoint.
376 TRAILER is a character which can be found after the number; most
377 commonly this is `-'. If you don't want a trailer, use \0. */
379 get_number_trailer (char **pp, int trailer)
381 int retval = 0; /* default */
385 /* Empty line means refer to the last breakpoint. */
386 return breakpoint_count;
389 /* Make a copy of the name, so we can null-terminate it
390 to pass to lookup_internalvar(). */
395 while (isalnum (*p) || *p == '_')
397 varname = (char *) alloca (p - start + 1);
398 strncpy (varname, start, p - start);
399 varname[p - start] = '\0';
400 val = value_of_internalvar (lookup_internalvar (varname));
401 if (TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
402 retval = (int) value_as_long (val);
405 printf_filtered (_("Convenience variable must have integer value.\n"));
413 while (*p >= '0' && *p <= '9')
416 /* There is no number here. (e.g. "cond a == b"). */
418 /* Skip non-numeric token */
419 while (*p && !isspace((int) *p))
421 /* Return zero, which caller must interpret as error. */
427 if (!(isspace (*p) || *p == '\0' || *p == trailer))
429 /* Trailing junk: return 0 and let caller print error msg. */
430 while (!(isspace (*p) || *p == '\0' || *p == trailer))
441 /* Like get_number_trailer, but don't allow a trailer. */
443 get_number (char **pp)
445 return get_number_trailer (pp, '\0');
448 /* Parse a number or a range.
449 * A number will be of the form handled by get_number.
450 * A range will be of the form <number1> - <number2>, and
451 * will represent all the integers between number1 and number2,
454 * While processing a range, this fuction is called iteratively;
455 * At each call it will return the next value in the range.
457 * At the beginning of parsing a range, the char pointer PP will
458 * be advanced past <number1> and left pointing at the '-' token.
459 * Subsequent calls will not advance the pointer until the range
460 * is completed. The call that completes the range will advance
461 * pointer PP past <number2>.
465 get_number_or_range (char **pp)
467 static int last_retval, end_value;
468 static char *end_ptr;
469 static int in_range = 0;
473 /* Default case: pp is pointing either to a solo number,
474 or to the first number of a range. */
475 last_retval = get_number_trailer (pp, '-');
480 /* This is the start of a range (<number1> - <number2>).
481 Skip the '-', parse and remember the second number,
482 and also remember the end of the final token. */
486 while (isspace ((int) *end_ptr))
487 end_ptr++; /* skip white space */
488 end_value = get_number (temp);
489 if (end_value < last_retval)
491 error (_("inverted range"));
493 else if (end_value == last_retval)
495 /* degenerate range (number1 == number2). Advance the
496 token pointer so that the range will be treated as a
505 error (_("negative value"));
508 /* pp points to the '-' that betokens a range. All
509 number-parsing has already been done. Return the next
510 integer value (one greater than the saved previous value).
511 Do not advance the token pointer 'pp' until the end of range
514 if (++last_retval == end_value)
516 /* End of range reached; advance token pointer. */
526 /* condition N EXP -- set break condition of breakpoint N to EXP. */
529 condition_command (char *arg, int from_tty)
531 struct breakpoint *b;
536 error_no_arg (_("breakpoint number"));
539 bnum = get_number (&p);
541 error (_("Bad breakpoint argument: '%s'"), arg);
544 if (b->number == bnum)
546 struct bp_location *loc = b->loc;
547 for (; loc; loc = loc->next)
555 if (b->cond_string != NULL)
556 xfree (b->cond_string);
560 b->cond_string = NULL;
562 printf_filtered (_("Breakpoint %d now unconditional.\n"), bnum);
567 /* I don't know if it matters whether this is the string the user
568 typed in or the decompiled expression. */
569 b->cond_string = savestring (arg, strlen (arg));
570 b->condition_not_parsed = 0;
571 for (loc = b->loc; loc; loc = loc->next)
575 parse_exp_1 (&arg, block_for_pc (loc->address), 0);
577 error (_("Junk at end of expression"));
580 breakpoints_changed ();
581 observer_notify_breakpoint_modified (b->number);
585 error (_("No breakpoint number %d."), bnum);
589 commands_command (char *arg, int from_tty)
591 struct breakpoint *b;
594 struct command_line *l;
596 /* If we allowed this, we would have problems with when to
597 free the storage, if we change the commands currently
600 if (executing_breakpoint_commands)
601 error (_("Can't use the \"commands\" command among a breakpoint's commands."));
604 bnum = get_number (&p);
607 error (_("Unexpected extra arguments following breakpoint number."));
610 if (b->number == bnum)
612 char *tmpbuf = xstrprintf ("Type commands for when breakpoint %d is hit, one per line.",
614 struct cleanup *cleanups = make_cleanup (xfree, tmpbuf);
615 l = read_command_lines (tmpbuf, from_tty, 1);
616 do_cleanups (cleanups);
617 free_command_lines (&b->commands);
619 breakpoints_changed ();
620 observer_notify_breakpoint_modified (b->number);
623 error (_("No breakpoint number %d."), bnum);
626 /* Like commands_command, but instead of reading the commands from
627 input stream, takes them from an already parsed command structure.
629 This is used by cli-script.c to DTRT with breakpoint commands
630 that are part of if and while bodies. */
631 enum command_control_type
632 commands_from_control_command (char *arg, struct command_line *cmd)
634 struct breakpoint *b;
638 /* If we allowed this, we would have problems with when to
639 free the storage, if we change the commands currently
642 if (executing_breakpoint_commands)
643 error (_("Can't use the \"commands\" command among a breakpoint's commands."));
645 /* An empty string for the breakpoint number means the last
646 breakpoint, but get_number expects a NULL pointer. */
651 bnum = get_number (&p);
654 error (_("Unexpected extra arguments following breakpoint number."));
657 if (b->number == bnum)
659 free_command_lines (&b->commands);
660 if (cmd->body_count != 1)
661 error (_("Invalid \"commands\" block structure."));
662 /* We need to copy the commands because if/while will free the
663 list after it finishes execution. */
664 b->commands = copy_command_lines (cmd->body_list[0]);
665 breakpoints_changed ();
666 observer_notify_breakpoint_modified (b->number);
667 return simple_control;
669 error (_("No breakpoint number %d."), bnum);
672 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
673 by replacing any memory breakpoints with their shadowed contents. */
676 breakpoint_restore_shadows (gdb_byte *buf, ULONGEST memaddr, LONGEST len)
678 struct bp_location *b;
679 CORE_ADDR bp_addr = 0;
685 if (b->owner->type == bp_none)
686 warning (_("reading through apparently deleted breakpoint #%d?"),
689 if (b->loc_type != bp_loc_software_breakpoint)
693 /* Addresses and length of the part of the breakpoint that
695 bp_addr = b->target_info.placed_address;
696 bp_size = b->target_info.shadow_len;
698 /* bp isn't valid, or doesn't shadow memory. */
701 if (bp_addr + bp_size <= memaddr)
702 /* The breakpoint is entirely before the chunk of memory we
706 if (bp_addr >= memaddr + len)
707 /* The breakpoint is entirely after the chunk of memory we are
711 /* Offset within shadow_contents. */
712 if (bp_addr < memaddr)
714 /* Only copy the second part of the breakpoint. */
715 bp_size -= memaddr - bp_addr;
716 bptoffset = memaddr - bp_addr;
720 if (bp_addr + bp_size > memaddr + len)
722 /* Only copy the first part of the breakpoint. */
723 bp_size -= (bp_addr + bp_size) - (memaddr + len);
726 memcpy (buf + bp_addr - memaddr,
727 b->target_info.shadow_contents + bptoffset, bp_size);
732 /* A wrapper function for inserting catchpoints. */
734 insert_catchpoint (struct ui_out *uo, void *args)
736 struct breakpoint *b = (struct breakpoint *) args;
739 gdb_assert (b->type == bp_catchpoint);
740 gdb_assert (b->ops != NULL && b->ops->insert != NULL);
746 is_hardware_watchpoint (struct breakpoint *bpt)
748 return (bpt->type == bp_hardware_watchpoint
749 || bpt->type == bp_read_watchpoint
750 || bpt->type == bp_access_watchpoint);
753 /* Find the current value of a watchpoint on EXP. Return the value in
754 *VALP and *RESULTP and the chain of intermediate and final values
755 in *VAL_CHAIN. RESULTP and VAL_CHAIN may be NULL if the caller does
758 If a memory error occurs while evaluating the expression, *RESULTP will
759 be set to NULL. *RESULTP may be a lazy value, if the result could
760 not be read from memory. It is used to determine whether a value
761 is user-specified (we should watch the whole value) or intermediate
762 (we should watch only the bit used to locate the final value).
764 If the final value, or any intermediate value, could not be read
765 from memory, *VALP will be set to NULL. *VAL_CHAIN will still be
766 set to any referenced values. *VALP will never be a lazy value.
767 This is the value which we store in struct breakpoint.
769 If VAL_CHAIN is non-NULL, *VAL_CHAIN will be released from the
770 value chain. The caller must free the values individually. If
771 VAL_CHAIN is NULL, all generated values will be left on the value
775 fetch_watchpoint_value (struct expression *exp, struct value **valp,
776 struct value **resultp, struct value **val_chain)
778 struct value *mark, *new_mark, *result;
779 volatile struct gdb_exception ex;
787 /* Evaluate the expression. */
788 mark = value_mark ();
791 TRY_CATCH (ex, RETURN_MASK_ALL)
793 result = evaluate_expression (exp);
797 /* Ignore memory errors, we want watchpoints pointing at
798 inaccessible memory to still be created; otherwise, throw the
799 error to some higher catcher. */
805 throw_exception (ex);
810 new_mark = value_mark ();
811 if (mark == new_mark)
816 /* Make sure it's not lazy, so that after the target stops again we
817 have a non-lazy previous value to compare with. */
819 && (!value_lazy (result) || gdb_value_fetch_lazy (result)))
824 /* Return the chain of intermediate values. We use this to
825 decide which addresses to watch. */
826 *val_chain = new_mark;
827 value_release_to_mark (mark);
831 /* Assuming that B is a watchpoint:
832 - Reparse watchpoint expression, if REPARSE is non-zero
833 - Evaluate expression and store the result in B->val
834 - Evaluate the condition if there is one, and store the result
836 - Update the list of values that must be watched in B->loc.
838 If the watchpoint is disabled, do nothing. If this is
839 local watchpoint that is out of scope, delete it. */
841 update_watchpoint (struct breakpoint *b, int reparse)
843 int within_current_scope;
844 struct frame_id saved_frame_id;
845 struct bp_location *loc;
848 /* We don't free locations. They are stored in bp_location_chain and
849 update_global_locations will eventually delete them and remove
850 breakpoints if needed. */
853 if (b->disposition == disp_del_at_next_stop)
856 /* Save the current frame's ID so we can restore it after
857 evaluating the watchpoint expression on its own frame. */
858 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
859 took a frame parameter, so that we didn't have to change the
861 saved_frame_id = get_frame_id (get_selected_frame (NULL));
863 /* Determine if the watchpoint is within scope. */
864 if (b->exp_valid_block == NULL)
865 within_current_scope = 1;
868 struct frame_info *fi;
869 fi = frame_find_by_id (b->watchpoint_frame);
870 within_current_scope = (fi != NULL);
871 if (within_current_scope)
875 if (within_current_scope && reparse)
884 b->exp = parse_exp_1 (&s, b->exp_valid_block, 0);
885 /* If the meaning of expression itself changed, the old value is
886 no longer relevant. We don't want to report a watchpoint hit
887 to the user when the old value and the new value may actually
888 be completely different objects. */
894 /* If we failed to parse the expression, for example because
895 it refers to a global variable in a not-yet-loaded shared library,
896 don't try to insert watchpoint. We don't automatically delete
897 such watchpoint, though, since failure to parse expression
898 is different from out-of-scope watchpoint. */
899 if (within_current_scope && b->exp)
901 struct value *val_chain, *v, *result, *next;
903 fetch_watchpoint_value (b->exp, &v, &result, &val_chain);
905 /* Avoid setting b->val if it's already set. The meaning of
906 b->val is 'the last value' user saw, and we should update
907 it only if we reported that last value to user. As it
908 happens, the code that reports it updates b->val directly. */
915 /* Change the type of breakpoint between hardware assisted or an
916 ordinary watchpoint depending on the hardware support and free
917 hardware slots. REPARSE is set when the inferior is started. */
918 if ((b->type == bp_watchpoint || b->type == bp_hardware_watchpoint)
921 int i, mem_cnt, other_type_used;
923 i = hw_watchpoint_used_count (bp_hardware_watchpoint,
925 mem_cnt = can_use_hardware_watchpoint (val_chain);
928 b->type = bp_watchpoint;
931 int target_resources_ok = TARGET_CAN_USE_HARDWARE_WATCHPOINT
932 (bp_hardware_watchpoint, i + mem_cnt, other_type_used);
933 if (target_resources_ok <= 0)
934 b->type = bp_watchpoint;
936 b->type = bp_hardware_watchpoint;
940 /* Look at each value on the value chain. */
941 for (v = val_chain; v; v = next)
943 /* If it's a memory location, and GDB actually needed
944 its contents to evaluate the expression, then we
945 must watch it. If the first value returned is
946 still lazy, that means an error occurred reading it;
947 watch it anyway in case it becomes readable. */
948 if (VALUE_LVAL (v) == lval_memory
949 && (v == val_chain || ! value_lazy (v)))
951 struct type *vtype = check_typedef (value_type (v));
953 /* We only watch structs and arrays if user asked
954 for it explicitly, never if they just happen to
955 appear in the middle of some value chain. */
957 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
958 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
962 struct bp_location *loc, **tmp;
964 addr = VALUE_ADDRESS (v) + value_offset (v);
965 len = TYPE_LENGTH (value_type (v));
967 if (b->type == bp_read_watchpoint)
969 else if (b->type == bp_access_watchpoint)
972 loc = allocate_bp_location (b);
973 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
978 loc->watchpoint_type = type;
982 next = value_next (v);
987 /* We just regenerated the list of breakpoint locations.
988 The new location does not have its condition field set to anything
989 and therefore, we must always reparse the cond_string, independently
990 of the value of the reparse flag. */
991 if (b->cond_string != NULL)
993 char *s = b->cond_string;
994 b->loc->cond = parse_exp_1 (&s, b->exp_valid_block, 0);
997 else if (!within_current_scope)
999 printf_filtered (_("\
1000 Watchpoint %d deleted because the program has left the block \n\
1001 in which its expression is valid.\n"),
1003 if (b->related_breakpoint)
1004 b->related_breakpoint->disposition = disp_del_at_next_stop;
1005 b->disposition = disp_del_at_next_stop;
1008 /* Restore the selected frame. */
1009 select_frame (frame_find_by_id (saved_frame_id));
1013 /* Returns 1 iff breakpoint location should be
1014 inserted in the inferior. */
1016 should_be_inserted (struct bp_location *bpt)
1018 if (!breakpoint_enabled (bpt->owner))
1021 if (bpt->owner->disposition == disp_del_at_next_stop)
1024 if (!bpt->enabled || bpt->shlib_disabled || bpt->duplicate)
1030 /* Insert a low-level "breakpoint" of some type. BPT is the breakpoint.
1031 Any error messages are printed to TMP_ERROR_STREAM; and DISABLED_BREAKS,
1032 PROCESS_WARNING, and HW_BREAKPOINT_ERROR are used to report problems.
1034 NOTE drow/2003-09-09: This routine could be broken down to an object-style
1035 method for each breakpoint or catchpoint type. */
1037 insert_bp_location (struct bp_location *bpt,
1038 struct ui_file *tmp_error_stream,
1039 int *disabled_breaks, int *process_warning,
1040 int *hw_breakpoint_error)
1044 if (!should_be_inserted (bpt) || bpt->inserted)
1047 /* Initialize the target-specific information. */
1048 memset (&bpt->target_info, 0, sizeof (bpt->target_info));
1049 bpt->target_info.placed_address = bpt->address;
1051 if (bpt->loc_type == bp_loc_software_breakpoint
1052 || bpt->loc_type == bp_loc_hardware_breakpoint)
1054 if (bpt->owner->type != bp_hardware_breakpoint)
1056 /* If the explicitly specified breakpoint type
1057 is not hardware breakpoint, check the memory map to see
1058 if the breakpoint address is in read only memory or not.
1059 Two important cases are:
1060 - location type is not hardware breakpoint, memory
1061 is readonly. We change the type of the location to
1062 hardware breakpoint.
1063 - location type is hardware breakpoint, memory is read-write.
1064 This means we've previously made the location hardware one, but
1065 then the memory map changed, so we undo.
1067 When breakpoints are removed, remove_breakpoints will
1068 use location types we've just set here, the only possible
1069 problem is that memory map has changed during running program,
1070 but it's not going to work anyway with current gdb. */
1071 struct mem_region *mr
1072 = lookup_mem_region (bpt->target_info.placed_address);
1076 if (automatic_hardware_breakpoints)
1079 enum bp_loc_type new_type;
1081 if (mr->attrib.mode != MEM_RW)
1082 new_type = bp_loc_hardware_breakpoint;
1084 new_type = bp_loc_software_breakpoint;
1086 if (new_type != bpt->loc_type)
1088 static int said = 0;
1089 bpt->loc_type = new_type;
1092 fprintf_filtered (gdb_stdout, _("\
1093 Note: automatically using hardware breakpoints for read-only addresses.\n"));
1098 else if (bpt->loc_type == bp_loc_software_breakpoint
1099 && mr->attrib.mode != MEM_RW)
1100 warning (_("cannot set software breakpoint at readonly address %s"),
1101 paddr (bpt->address));
1105 /* First check to see if we have to handle an overlay. */
1106 if (overlay_debugging == ovly_off
1107 || bpt->section == NULL
1108 || !(section_is_overlay (bpt->section)))
1110 /* No overlay handling: just set the breakpoint. */
1112 if (bpt->loc_type == bp_loc_hardware_breakpoint)
1113 val = target_insert_hw_breakpoint (&bpt->target_info);
1115 val = target_insert_breakpoint (&bpt->target_info);
1119 /* This breakpoint is in an overlay section.
1120 Shall we set a breakpoint at the LMA? */
1121 if (!overlay_events_enabled)
1123 /* Yes -- overlay event support is not active,
1124 so we must try to set a breakpoint at the LMA.
1125 This will not work for a hardware breakpoint. */
1126 if (bpt->loc_type == bp_loc_hardware_breakpoint)
1127 warning (_("hardware breakpoint %d not supported in overlay!"),
1128 bpt->owner->number);
1131 CORE_ADDR addr = overlay_unmapped_address (bpt->address,
1133 /* Set a software (trap) breakpoint at the LMA. */
1134 bpt->overlay_target_info = bpt->target_info;
1135 bpt->overlay_target_info.placed_address = addr;
1136 val = target_insert_breakpoint (&bpt->overlay_target_info);
1138 fprintf_unfiltered (tmp_error_stream,
1139 "Overlay breakpoint %d failed: in ROM?",
1140 bpt->owner->number);
1143 /* Shall we set a breakpoint at the VMA? */
1144 if (section_is_mapped (bpt->section))
1146 /* Yes. This overlay section is mapped into memory. */
1147 if (bpt->loc_type == bp_loc_hardware_breakpoint)
1148 val = target_insert_hw_breakpoint (&bpt->target_info);
1150 val = target_insert_breakpoint (&bpt->target_info);
1154 /* No. This breakpoint will not be inserted.
1155 No error, but do not mark the bp as 'inserted'. */
1162 /* Can't set the breakpoint. */
1163 if (solib_address (bpt->address))
1165 /* See also: disable_breakpoints_in_shlibs. */
1167 bpt->shlib_disabled = 1;
1168 if (!*disabled_breaks)
1170 fprintf_unfiltered (tmp_error_stream,
1171 "Cannot insert breakpoint %d.\n",
1172 bpt->owner->number);
1173 fprintf_unfiltered (tmp_error_stream,
1174 "Temporarily disabling shared library breakpoints:\n");
1176 *disabled_breaks = 1;
1177 fprintf_unfiltered (tmp_error_stream,
1178 "breakpoint #%d\n", bpt->owner->number);
1182 #ifdef ONE_PROCESS_WRITETEXT
1183 *process_warning = 1;
1185 if (bpt->loc_type == bp_loc_hardware_breakpoint)
1187 *hw_breakpoint_error = 1;
1188 fprintf_unfiltered (tmp_error_stream,
1189 "Cannot insert hardware breakpoint %d.\n",
1190 bpt->owner->number);
1194 fprintf_unfiltered (tmp_error_stream,
1195 "Cannot insert breakpoint %d.\n",
1196 bpt->owner->number);
1197 fprintf_filtered (tmp_error_stream,
1198 "Error accessing memory address ");
1199 fputs_filtered (paddress (bpt->address), tmp_error_stream);
1200 fprintf_filtered (tmp_error_stream, ": %s.\n",
1201 safe_strerror (val));
1212 else if (bpt->loc_type == bp_loc_hardware_watchpoint
1213 /* NOTE drow/2003-09-08: This state only exists for removing
1214 watchpoints. It's not clear that it's necessary... */
1215 && bpt->owner->disposition != disp_del_at_next_stop)
1217 val = target_insert_watchpoint (bpt->address,
1219 bpt->watchpoint_type);
1220 bpt->inserted = (val != -1);
1223 else if (bpt->owner->type == bp_catchpoint)
1225 struct gdb_exception e = catch_exception (uiout, insert_catchpoint,
1226 bpt->owner, RETURN_MASK_ERROR);
1227 exception_fprintf (gdb_stderr, e, "warning: inserting catchpoint %d: ",
1228 bpt->owner->number);
1230 bpt->owner->enable_state = bp_disabled;
1234 /* We've already printed an error message if there was a problem
1235 inserting this catchpoint, and we've disabled the catchpoint,
1236 so just return success. */
1243 /* Make sure all breakpoints are inserted in inferior.
1244 Throws exception on any error.
1245 A breakpoint that is already inserted won't be inserted
1246 again, so calling this function twice is safe. */
1248 insert_breakpoints (void)
1250 struct breakpoint *bpt;
1252 ALL_BREAKPOINTS (bpt)
1253 if (is_hardware_watchpoint (bpt))
1254 update_watchpoint (bpt, 0 /* don't reparse. */);
1256 update_global_location_list (1);
1258 if (!breakpoints_always_inserted_mode ()
1259 && (target_has_execution
1260 || (gdbarch_has_global_solist (target_gdbarch)
1261 && target_supports_multi_process ())))
1262 /* update_global_location_list does not insert breakpoints
1263 when always_inserted_mode is not enabled. Explicitly
1265 insert_breakpoint_locations ();
1268 /* insert_breakpoints is used when starting or continuing the program.
1269 remove_breakpoints is used when the program stops.
1270 Both return zero if successful,
1271 or an `errno' value if could not write the inferior. */
1274 insert_breakpoint_locations (void)
1276 struct breakpoint *bpt;
1277 struct bp_location *b, *temp;
1280 int disabled_breaks = 0;
1281 int hw_breakpoint_error = 0;
1282 int process_warning = 0;
1284 struct ui_file *tmp_error_stream = mem_fileopen ();
1285 make_cleanup_ui_file_delete (tmp_error_stream);
1287 /* Explicitly mark the warning -- this will only be printed if
1288 there was an error. */
1289 fprintf_unfiltered (tmp_error_stream, "Warning:\n");
1291 ALL_BP_LOCATIONS_SAFE (b, temp)
1293 if (!should_be_inserted (b) || b->inserted)
1296 /* There is no point inserting thread-specific breakpoints if the
1297 thread no longer exists. */
1298 if (b->owner->thread != -1
1299 && !valid_thread_id (b->owner->thread))
1302 val = insert_bp_location (b, tmp_error_stream,
1303 &disabled_breaks, &process_warning,
1304 &hw_breakpoint_error);
1309 /* If we failed to insert all locations of a watchpoint,
1310 remove them, as half-inserted watchpoint is of limited use. */
1311 ALL_BREAKPOINTS (bpt)
1313 int some_failed = 0;
1314 struct bp_location *loc;
1316 if (!is_hardware_watchpoint (bpt))
1319 if (!breakpoint_enabled (bpt))
1322 if (bpt->disposition == disp_del_at_next_stop)
1325 for (loc = bpt->loc; loc; loc = loc->next)
1333 for (loc = bpt->loc; loc; loc = loc->next)
1335 remove_breakpoint (loc, mark_uninserted);
1337 hw_breakpoint_error = 1;
1338 fprintf_unfiltered (tmp_error_stream,
1339 "Could not insert hardware watchpoint %d.\n",
1347 /* If a hardware breakpoint or watchpoint was inserted, add a
1348 message about possibly exhausted resources. */
1349 if (hw_breakpoint_error)
1351 fprintf_unfiltered (tmp_error_stream,
1352 "Could not insert hardware breakpoints:\n\
1353 You may have requested too many hardware breakpoints/watchpoints.\n");
1355 #ifdef ONE_PROCESS_WRITETEXT
1356 if (process_warning)
1357 fprintf_unfiltered (tmp_error_stream,
1358 "The same program may be running in another process.");
1360 target_terminal_ours_for_output ();
1361 error_stream (tmp_error_stream);
1366 remove_breakpoints (void)
1368 struct bp_location *b;
1371 ALL_BP_LOCATIONS (b)
1375 val = remove_breakpoint (b, mark_uninserted);
1384 remove_hw_watchpoints (void)
1386 struct bp_location *b;
1389 ALL_BP_LOCATIONS (b)
1391 if (b->inserted && b->loc_type == bp_loc_hardware_watchpoint)
1393 val = remove_breakpoint (b, mark_uninserted);
1402 reattach_breakpoints (int pid)
1404 struct bp_location *b;
1406 struct cleanup *old_chain = save_inferior_ptid ();
1407 struct ui_file *tmp_error_stream = mem_fileopen ();
1408 int dummy1 = 0, dummy2 = 0, dummy3 = 0;
1410 make_cleanup_ui_file_delete (tmp_error_stream);
1412 inferior_ptid = pid_to_ptid (pid);
1413 ALL_BP_LOCATIONS (b)
1418 val = insert_bp_location (b, tmp_error_stream,
1419 &dummy1, &dummy2, &dummy3);
1422 do_cleanups (old_chain);
1427 do_cleanups (old_chain);
1432 update_breakpoints_after_exec (void)
1434 struct breakpoint *b;
1435 struct breakpoint *temp;
1436 struct bp_location *bploc;
1438 /* We're about to delete breakpoints from GDB's lists. If the
1439 INSERTED flag is true, GDB will try to lift the breakpoints by
1440 writing the breakpoints' "shadow contents" back into memory. The
1441 "shadow contents" are NOT valid after an exec, so GDB should not
1442 do that. Instead, the target is responsible from marking
1443 breakpoints out as soon as it detects an exec. We don't do that
1444 here instead, because there may be other attempts to delete
1445 breakpoints after detecting an exec and before reaching here. */
1446 ALL_BP_LOCATIONS (bploc)
1447 gdb_assert (!bploc->inserted);
1449 ALL_BREAKPOINTS_SAFE (b, temp)
1451 /* Solib breakpoints must be explicitly reset after an exec(). */
1452 if (b->type == bp_shlib_event)
1454 delete_breakpoint (b);
1458 /* Thread event breakpoints must be set anew after an exec(),
1459 as must overlay event breakpoints. */
1460 if (b->type == bp_thread_event || b->type == bp_overlay_event)
1462 delete_breakpoint (b);
1466 /* Step-resume breakpoints are meaningless after an exec(). */
1467 if (b->type == bp_step_resume)
1469 delete_breakpoint (b);
1473 /* Longjmp and longjmp-resume breakpoints are also meaningless
1475 if (b->type == bp_longjmp || b->type == bp_longjmp_resume)
1477 delete_breakpoint (b);
1481 if (b->type == bp_catchpoint)
1483 /* For now, none of the bp_catchpoint breakpoints need to
1484 do anything at this point. In the future, if some of
1485 the catchpoints need to something, we will need to add
1486 a new method, and call this method from here. */
1490 /* bp_finish is a special case. The only way we ought to be able
1491 to see one of these when an exec() has happened, is if the user
1492 caught a vfork, and then said "finish". Ordinarily a finish just
1493 carries them to the call-site of the current callee, by setting
1494 a temporary bp there and resuming. But in this case, the finish
1495 will carry them entirely through the vfork & exec.
1497 We don't want to allow a bp_finish to remain inserted now. But
1498 we can't safely delete it, 'cause finish_command has a handle to
1499 the bp on a bpstat, and will later want to delete it. There's a
1500 chance (and I've seen it happen) that if we delete the bp_finish
1501 here, that its storage will get reused by the time finish_command
1502 gets 'round to deleting the "use to be a bp_finish" breakpoint.
1503 We really must allow finish_command to delete a bp_finish.
1505 In the absense of a general solution for the "how do we know
1506 it's safe to delete something others may have handles to?"
1507 problem, what we'll do here is just uninsert the bp_finish, and
1508 let finish_command delete it.
1510 (We know the bp_finish is "doomed" in the sense that it's
1511 momentary, and will be deleted as soon as finish_command sees
1512 the inferior stopped. So it doesn't matter that the bp's
1513 address is probably bogus in the new a.out, unlike e.g., the
1514 solib breakpoints.) */
1516 if (b->type == bp_finish)
1521 /* Without a symbolic address, we have little hope of the
1522 pre-exec() address meaning the same thing in the post-exec()
1524 if (b->addr_string == NULL)
1526 delete_breakpoint (b);
1530 /* FIXME what about longjmp breakpoints? Re-create them here? */
1531 create_overlay_event_breakpoint ("_ovly_debug_event");
1535 detach_breakpoints (int pid)
1537 struct bp_location *b;
1539 struct cleanup *old_chain = save_inferior_ptid ();
1541 if (pid == PIDGET (inferior_ptid))
1542 error (_("Cannot detach breakpoints of inferior_ptid"));
1544 /* Set inferior_ptid; remove_breakpoint uses this global. */
1545 inferior_ptid = pid_to_ptid (pid);
1546 ALL_BP_LOCATIONS (b)
1550 val = remove_breakpoint (b, mark_inserted);
1553 do_cleanups (old_chain);
1558 do_cleanups (old_chain);
1563 remove_breakpoint (struct bp_location *b, insertion_state_t is)
1567 if (b->owner->enable_state == bp_permanent)
1568 /* Permanent breakpoints cannot be inserted or removed. */
1571 /* The type of none suggests that owner is actually deleted.
1572 This should not ever happen. */
1573 gdb_assert (b->owner->type != bp_none);
1575 if (b->loc_type == bp_loc_software_breakpoint
1576 || b->loc_type == bp_loc_hardware_breakpoint)
1578 /* "Normal" instruction breakpoint: either the standard
1579 trap-instruction bp (bp_breakpoint), or a
1580 bp_hardware_breakpoint. */
1582 /* First check to see if we have to handle an overlay. */
1583 if (overlay_debugging == ovly_off
1584 || b->section == NULL
1585 || !(section_is_overlay (b->section)))
1587 /* No overlay handling: just remove the breakpoint. */
1589 if (b->loc_type == bp_loc_hardware_breakpoint)
1590 val = target_remove_hw_breakpoint (&b->target_info);
1592 val = target_remove_breakpoint (&b->target_info);
1596 /* This breakpoint is in an overlay section.
1597 Did we set a breakpoint at the LMA? */
1598 if (!overlay_events_enabled)
1600 /* Yes -- overlay event support is not active, so we
1601 should have set a breakpoint at the LMA. Remove it.
1603 /* Ignore any failures: if the LMA is in ROM, we will
1604 have already warned when we failed to insert it. */
1605 if (b->loc_type == bp_loc_hardware_breakpoint)
1606 target_remove_hw_breakpoint (&b->overlay_target_info);
1608 target_remove_breakpoint (&b->overlay_target_info);
1610 /* Did we set a breakpoint at the VMA?
1611 If so, we will have marked the breakpoint 'inserted'. */
1614 /* Yes -- remove it. Previously we did not bother to
1615 remove the breakpoint if the section had been
1616 unmapped, but let's not rely on that being safe. We
1617 don't know what the overlay manager might do. */
1618 if (b->loc_type == bp_loc_hardware_breakpoint)
1619 val = target_remove_hw_breakpoint (&b->target_info);
1621 /* However, we should remove *software* breakpoints only
1622 if the section is still mapped, or else we overwrite
1623 wrong code with the saved shadow contents. */
1624 else if (section_is_mapped (b->section))
1625 val = target_remove_breakpoint (&b->target_info);
1631 /* No -- not inserted, so no need to remove. No error. */
1636 /* In some cases, we might not be able to remove a breakpoint
1637 in a shared library that has already been removed, but we
1638 have not yet processed the shlib unload event. */
1639 if (val && solib_address (b->address))
1644 b->inserted = (is == mark_inserted);
1646 else if (b->loc_type == bp_loc_hardware_watchpoint)
1651 b->inserted = (is == mark_inserted);
1652 val = target_remove_watchpoint (b->address, b->length,
1653 b->watchpoint_type);
1655 /* Failure to remove any of the hardware watchpoints comes here. */
1656 if ((is == mark_uninserted) && (b->inserted))
1657 warning (_("Could not remove hardware watchpoint %d."),
1660 else if (b->owner->type == bp_catchpoint
1661 && breakpoint_enabled (b->owner)
1664 gdb_assert (b->owner->ops != NULL && b->owner->ops->remove != NULL);
1666 val = b->owner->ops->remove (b->owner);
1669 b->inserted = (is == mark_inserted);
1675 /* Clear the "inserted" flag in all breakpoints. */
1678 mark_breakpoints_out (void)
1680 struct bp_location *bpt;
1682 ALL_BP_LOCATIONS (bpt)
1686 /* Clear the "inserted" flag in all breakpoints and delete any
1687 breakpoints which should go away between runs of the program.
1689 Plus other such housekeeping that has to be done for breakpoints
1692 Note: this function gets called at the end of a run (by
1693 generic_mourn_inferior) and when a run begins (by
1694 init_wait_for_inferior). */
1699 breakpoint_init_inferior (enum inf_context context)
1701 struct breakpoint *b, *temp;
1702 struct bp_location *bpt;
1705 /* If breakpoint locations are shared across processes, then there's
1707 if (gdbarch_has_global_solist (target_gdbarch))
1710 ALL_BP_LOCATIONS (bpt)
1711 if (bpt->owner->enable_state != bp_permanent)
1714 ALL_BREAKPOINTS_SAFE (b, temp)
1719 case bp_watchpoint_scope:
1721 /* If the call dummy breakpoint is at the entry point it will
1722 cause problems when the inferior is rerun, so we better
1725 Also get rid of scope breakpoints. */
1726 delete_breakpoint (b);
1730 case bp_hardware_watchpoint:
1731 case bp_read_watchpoint:
1732 case bp_access_watchpoint:
1734 /* Likewise for watchpoints on local expressions. */
1735 if (b->exp_valid_block != NULL)
1736 delete_breakpoint (b);
1737 else if (context == inf_starting)
1739 /* Reset val field to force reread of starting value
1740 in insert_breakpoints. */
1742 value_free (b->val);
1752 /* Get rid of the moribund locations. */
1753 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bpt); ++ix)
1754 free_bp_location (bpt);
1755 VEC_free (bp_location_p, moribund_locations);
1758 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
1759 exists at PC. It returns ordinary_breakpoint_here if it's an
1760 ordinary breakpoint, or permanent_breakpoint_here if it's a
1761 permanent breakpoint.
1762 - When continuing from a location with an ordinary breakpoint, we
1763 actually single step once before calling insert_breakpoints.
1764 - When continuing from a localion with a permanent breakpoint, we
1765 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
1766 the target, to advance the PC past the breakpoint. */
1768 enum breakpoint_here
1769 breakpoint_here_p (CORE_ADDR pc)
1771 const struct bp_location *bpt;
1772 int any_breakpoint_here = 0;
1774 ALL_BP_LOCATIONS (bpt)
1776 if (bpt->loc_type != bp_loc_software_breakpoint
1777 && bpt->loc_type != bp_loc_hardware_breakpoint)
1780 if ((breakpoint_enabled (bpt->owner)
1781 || bpt->owner->enable_state == bp_permanent)
1782 && bpt->address == pc) /* bp is enabled and matches pc */
1784 if (overlay_debugging
1785 && section_is_overlay (bpt->section)
1786 && !section_is_mapped (bpt->section))
1787 continue; /* unmapped overlay -- can't be a match */
1788 else if (bpt->owner->enable_state == bp_permanent)
1789 return permanent_breakpoint_here;
1791 any_breakpoint_here = 1;
1795 return any_breakpoint_here ? ordinary_breakpoint_here : 0;
1798 /* Return true if there's a moribund breakpoint at PC. */
1801 moribund_breakpoint_here_p (CORE_ADDR pc)
1803 struct bp_location *loc;
1806 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
1807 if (loc->address == pc)
1813 /* Returns non-zero if there's a breakpoint inserted at PC, which is
1814 inserted using regular breakpoint_chain/bp_location_chain mechanism.
1815 This does not check for single-step breakpoints, which are
1816 inserted and removed using direct target manipulation. */
1819 regular_breakpoint_inserted_here_p (CORE_ADDR pc)
1821 const struct bp_location *bpt;
1823 ALL_BP_LOCATIONS (bpt)
1825 if (bpt->loc_type != bp_loc_software_breakpoint
1826 && bpt->loc_type != bp_loc_hardware_breakpoint)
1830 && bpt->address == pc) /* bp is inserted and matches pc */
1832 if (overlay_debugging
1833 && section_is_overlay (bpt->section)
1834 && !section_is_mapped (bpt->section))
1835 continue; /* unmapped overlay -- can't be a match */
1843 /* Returns non-zero iff there's either regular breakpoint
1844 or a single step breakpoint inserted at PC. */
1847 breakpoint_inserted_here_p (CORE_ADDR pc)
1849 if (regular_breakpoint_inserted_here_p (pc))
1852 if (single_step_breakpoint_inserted_here_p (pc))
1858 /* This function returns non-zero iff there is a software breakpoint
1862 software_breakpoint_inserted_here_p (CORE_ADDR pc)
1864 const struct bp_location *bpt;
1865 int any_breakpoint_here = 0;
1867 ALL_BP_LOCATIONS (bpt)
1869 if (bpt->loc_type != bp_loc_software_breakpoint)
1873 && bpt->address == pc) /* bp is enabled and matches pc */
1875 if (overlay_debugging
1876 && section_is_overlay (bpt->section)
1877 && !section_is_mapped (bpt->section))
1878 continue; /* unmapped overlay -- can't be a match */
1884 /* Also check for software single-step breakpoints. */
1885 if (single_step_breakpoint_inserted_here_p (pc))
1891 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
1892 PC is valid for process/thread PTID. */
1895 breakpoint_thread_match (CORE_ADDR pc, ptid_t ptid)
1897 const struct bp_location *bpt;
1900 thread = pid_to_thread_id (ptid);
1902 ALL_BP_LOCATIONS (bpt)
1904 if (bpt->loc_type != bp_loc_software_breakpoint
1905 && bpt->loc_type != bp_loc_hardware_breakpoint)
1908 if ((breakpoint_enabled (bpt->owner)
1909 || bpt->owner->enable_state == bp_permanent)
1910 && bpt->address == pc
1911 && (bpt->owner->thread == -1 || bpt->owner->thread == thread))
1913 if (overlay_debugging
1914 && section_is_overlay (bpt->section)
1915 && !section_is_mapped (bpt->section))
1916 continue; /* unmapped overlay -- can't be a match */
1926 /* bpstat stuff. External routines' interfaces are documented
1930 ep_is_catchpoint (struct breakpoint *ep)
1932 return (ep->type == bp_catchpoint);
1936 bpstat_free (bpstat bs)
1938 if (bs->old_val != NULL)
1939 value_free (bs->old_val);
1940 free_command_lines (&bs->commands);
1944 /* Clear a bpstat so that it says we are not at any breakpoint.
1945 Also free any storage that is part of a bpstat. */
1948 bpstat_clear (bpstat *bsp)
1965 /* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
1966 is part of the bpstat is copied as well. */
1969 bpstat_copy (bpstat bs)
1973 bpstat retval = NULL;
1978 for (; bs != NULL; bs = bs->next)
1980 tmp = (bpstat) xmalloc (sizeof (*tmp));
1981 memcpy (tmp, bs, sizeof (*tmp));
1982 if (bs->commands != NULL)
1983 tmp->commands = copy_command_lines (bs->commands);
1984 if (bs->old_val != NULL)
1986 tmp->old_val = value_copy (bs->old_val);
1987 release_value (tmp->old_val);
1991 /* This is the first thing in the chain. */
2001 /* Find the bpstat associated with this breakpoint */
2004 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
2009 for (; bsp != NULL; bsp = bsp->next)
2011 if (bsp->breakpoint_at && bsp->breakpoint_at->owner == breakpoint)
2017 /* Find a step_resume breakpoint associated with this bpstat.
2018 (If there are multiple step_resume bp's on the list, this function
2019 will arbitrarily pick one.)
2021 It is an error to use this function if BPSTAT doesn't contain a
2022 step_resume breakpoint.
2024 See wait_for_inferior's use of this function. */
2026 bpstat_find_step_resume_breakpoint (bpstat bsp)
2030 gdb_assert (bsp != NULL);
2032 current_thread = pid_to_thread_id (inferior_ptid);
2034 for (; bsp != NULL; bsp = bsp->next)
2036 if ((bsp->breakpoint_at != NULL) &&
2037 (bsp->breakpoint_at->owner->type == bp_step_resume) &&
2038 (bsp->breakpoint_at->owner->thread == current_thread ||
2039 bsp->breakpoint_at->owner->thread == -1))
2040 return bsp->breakpoint_at->owner;
2043 internal_error (__FILE__, __LINE__, _("No step_resume breakpoint found."));
2047 /* Put in *NUM the breakpoint number of the first breakpoint we are stopped
2048 at. *BSP upon return is a bpstat which points to the remaining
2049 breakpoints stopped at (but which is not guaranteed to be good for
2050 anything but further calls to bpstat_num).
2051 Return 0 if passed a bpstat which does not indicate any breakpoints.
2052 Return -1 if stopped at a breakpoint that has been deleted since
2054 Return 1 otherwise. */
2057 bpstat_num (bpstat *bsp, int *num)
2059 struct breakpoint *b;
2062 return 0; /* No more breakpoint values */
2064 /* We assume we'll never have several bpstats that
2065 correspond to a single breakpoint -- otherwise,
2066 this function might return the same number more
2067 than once and this will look ugly. */
2068 b = (*bsp)->breakpoint_at ? (*bsp)->breakpoint_at->owner : NULL;
2069 *bsp = (*bsp)->next;
2071 return -1; /* breakpoint that's been deleted since */
2073 *num = b->number; /* We have its number */
2077 /* Modify BS so that the actions will not be performed. */
2080 bpstat_clear_actions (bpstat bs)
2082 for (; bs != NULL; bs = bs->next)
2084 free_command_lines (&bs->commands);
2085 if (bs->old_val != NULL)
2087 value_free (bs->old_val);
2093 /* Stub for cleaning up our state if we error-out of a breakpoint command */
2095 cleanup_executing_breakpoints (void *ignore)
2097 executing_breakpoint_commands = 0;
2100 /* Execute all the commands associated with all the breakpoints at this
2101 location. Any of these commands could cause the process to proceed
2102 beyond this point, etc. We look out for such changes by checking
2103 the global "breakpoint_proceeded" after each command.
2105 Returns true if a breakpoint command resumed the inferior. In that
2106 case, it is the caller's responsibility to recall it again with the
2107 bpstat of the current thread. */
2110 bpstat_do_actions_1 (bpstat *bsp)
2113 struct cleanup *old_chain;
2116 /* Avoid endless recursion if a `source' command is contained
2118 if (executing_breakpoint_commands)
2121 executing_breakpoint_commands = 1;
2122 old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
2124 /* This pointer will iterate over the list of bpstat's. */
2127 breakpoint_proceeded = 0;
2128 for (; bs != NULL; bs = bs->next)
2130 struct command_line *cmd;
2131 struct cleanup *this_cmd_tree_chain;
2133 /* Take ownership of the BSP's command tree, if it has one.
2135 The command tree could legitimately contain commands like
2136 'step' and 'next', which call clear_proceed_status, which
2137 frees stop_bpstat's command tree. To make sure this doesn't
2138 free the tree we're executing out from under us, we need to
2139 take ownership of the tree ourselves. Since a given bpstat's
2140 commands are only executed once, we don't need to copy it; we
2141 can clear the pointer in the bpstat, and make sure we free
2142 the tree when we're done. */
2145 this_cmd_tree_chain = make_cleanup_free_command_lines (&cmd);
2149 execute_control_command (cmd);
2151 if (breakpoint_proceeded)
2157 /* We can free this command tree now. */
2158 do_cleanups (this_cmd_tree_chain);
2160 if (breakpoint_proceeded)
2162 if (target_can_async_p ())
2163 /* If we are in async mode, then the target might be still
2164 running, not stopped at any breakpoint, so nothing for
2165 us to do here -- just return to the event loop. */
2168 /* In sync mode, when execute_control_command returns
2169 we're already standing on the next breakpoint.
2170 Breakpoint commands for that stop were not run, since
2171 execute_command does not run breakpoint commands --
2172 only command_line_handler does, but that one is not
2173 involved in execution of breakpoint commands. So, we
2174 can now execute breakpoint commands. It should be
2175 noted that making execute_command do bpstat actions is
2176 not an option -- in this case we'll have recursive
2177 invocation of bpstat for each breakpoint with a
2178 command, and can easily blow up GDB stack. Instead, we
2179 return true, which will trigger the caller to recall us
2180 with the new stop_bpstat. */
2185 do_cleanups (old_chain);
2190 bpstat_do_actions (void)
2192 /* Do any commands attached to breakpoint we are stopped at. */
2193 while (!ptid_equal (inferior_ptid, null_ptid)
2194 && target_has_execution
2195 && !is_exited (inferior_ptid)
2196 && !is_executing (inferior_ptid))
2197 /* Since in sync mode, bpstat_do_actions may resume the inferior,
2198 and only return when it is stopped at the next breakpoint, we
2199 keep doing breakpoint actions until it returns false to
2200 indicate the inferior was not resumed. */
2201 if (!bpstat_do_actions_1 (&inferior_thread ()->stop_bpstat))
2205 /* Print out the (old or new) value associated with a watchpoint. */
2208 watchpoint_value_print (struct value *val, struct ui_file *stream)
2211 fprintf_unfiltered (stream, _("<unreadable>"));
2214 struct value_print_options opts;
2215 get_user_print_options (&opts);
2216 value_print (val, stream, &opts);
2220 /* This is the normal print function for a bpstat. In the future,
2221 much of this logic could (should?) be moved to bpstat_stop_status,
2222 by having it set different print_it values.
2224 Current scheme: When we stop, bpstat_print() is called. It loops
2225 through the bpstat list of things causing this stop, calling the
2226 print_bp_stop_message function on each one. The behavior of the
2227 print_bp_stop_message function depends on the print_it field of
2228 bpstat. If such field so indicates, call this function here.
2230 Return values from this routine (ultimately used by bpstat_print()
2231 and normal_stop() to decide what to do):
2232 PRINT_NOTHING: Means we already printed all we needed to print,
2233 don't print anything else.
2234 PRINT_SRC_ONLY: Means we printed something, and we do *not* desire
2235 that something to be followed by a location.
2236 PRINT_SCR_AND_LOC: Means we printed something, and we *do* desire
2237 that something to be followed by a location.
2238 PRINT_UNKNOWN: Means we printed nothing or we need to do some more
2241 static enum print_stop_action
2242 print_it_typical (bpstat bs)
2244 struct cleanup *old_chain, *ui_out_chain;
2245 struct breakpoint *b;
2246 const struct bp_location *bl;
2247 struct ui_stream *stb;
2249 stb = ui_out_stream_new (uiout);
2250 old_chain = make_cleanup_ui_out_stream_delete (stb);
2251 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
2252 which has since been deleted. */
2253 if (bs->breakpoint_at == NULL)
2254 return PRINT_UNKNOWN;
2255 bl = bs->breakpoint_at;
2261 case bp_hardware_breakpoint:
2262 bp_temp = bs->breakpoint_at->owner->disposition == disp_del;
2263 if (bl->address != bl->requested_address)
2264 breakpoint_adjustment_warning (bl->requested_address,
2267 annotate_breakpoint (b->number);
2269 ui_out_text (uiout, "\nTemporary breakpoint ");
2271 ui_out_text (uiout, "\nBreakpoint ");
2272 if (ui_out_is_mi_like_p (uiout))
2274 ui_out_field_string (uiout, "reason",
2275 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
2276 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
2278 ui_out_field_int (uiout, "bkptno", b->number);
2279 ui_out_text (uiout, ", ");
2280 return PRINT_SRC_AND_LOC;
2283 case bp_shlib_event:
2284 /* Did we stop because the user set the stop_on_solib_events
2285 variable? (If so, we report this as a generic, "Stopped due
2286 to shlib event" message.) */
2287 printf_filtered (_("Stopped due to shared library event\n"));
2288 return PRINT_NOTHING;
2291 case bp_thread_event:
2292 /* Not sure how we will get here.
2293 GDB should not stop for these breakpoints. */
2294 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
2295 return PRINT_NOTHING;
2298 case bp_overlay_event:
2299 /* By analogy with the thread event, GDB should not stop for these. */
2300 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
2301 return PRINT_NOTHING;
2305 case bp_hardware_watchpoint:
2306 annotate_watchpoint (b->number);
2307 if (ui_out_is_mi_like_p (uiout))
2310 async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
2312 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "value");
2313 ui_out_text (uiout, "\nOld value = ");
2314 watchpoint_value_print (bs->old_val, stb->stream);
2315 ui_out_field_stream (uiout, "old", stb);
2316 ui_out_text (uiout, "\nNew value = ");
2317 watchpoint_value_print (b->val, stb->stream);
2318 ui_out_field_stream (uiout, "new", stb);
2319 do_cleanups (ui_out_chain);
2320 ui_out_text (uiout, "\n");
2321 /* More than one watchpoint may have been triggered. */
2322 return PRINT_UNKNOWN;
2325 case bp_read_watchpoint:
2326 if (ui_out_is_mi_like_p (uiout))
2329 async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
2331 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "value");
2332 ui_out_text (uiout, "\nValue = ");
2333 watchpoint_value_print (b->val, stb->stream);
2334 ui_out_field_stream (uiout, "value", stb);
2335 do_cleanups (ui_out_chain);
2336 ui_out_text (uiout, "\n");
2337 return PRINT_UNKNOWN;
2340 case bp_access_watchpoint:
2341 if (bs->old_val != NULL)
2343 annotate_watchpoint (b->number);
2344 if (ui_out_is_mi_like_p (uiout))
2347 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
2349 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "value");
2350 ui_out_text (uiout, "\nOld value = ");
2351 watchpoint_value_print (bs->old_val, stb->stream);
2352 ui_out_field_stream (uiout, "old", stb);
2353 ui_out_text (uiout, "\nNew value = ");
2358 if (ui_out_is_mi_like_p (uiout))
2361 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
2362 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "value");
2363 ui_out_text (uiout, "\nValue = ");
2365 watchpoint_value_print (b->val, stb->stream);
2366 ui_out_field_stream (uiout, "new", stb);
2367 do_cleanups (ui_out_chain);
2368 ui_out_text (uiout, "\n");
2369 return PRINT_UNKNOWN;
2372 /* Fall through, we don't deal with these types of breakpoints
2376 if (ui_out_is_mi_like_p (uiout))
2379 async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
2380 return PRINT_UNKNOWN;
2384 if (ui_out_is_mi_like_p (uiout))
2387 async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
2388 return PRINT_UNKNOWN;
2393 case bp_longjmp_resume:
2394 case bp_step_resume:
2395 case bp_watchpoint_scope:
2398 return PRINT_UNKNOWN;
2402 /* Generic routine for printing messages indicating why we
2403 stopped. The behavior of this function depends on the value
2404 'print_it' in the bpstat structure. Under some circumstances we
2405 may decide not to print anything here and delegate the task to
2408 static enum print_stop_action
2409 print_bp_stop_message (bpstat bs)
2411 switch (bs->print_it)
2414 /* Nothing should be printed for this bpstat entry. */
2415 return PRINT_UNKNOWN;
2419 /* We still want to print the frame, but we already printed the
2420 relevant messages. */
2421 return PRINT_SRC_AND_LOC;
2424 case print_it_normal:
2426 const struct bp_location *bl = bs->breakpoint_at;
2427 struct breakpoint *b = bl ? bl->owner : NULL;
2429 /* Normal case. Call the breakpoint's print_it method, or
2430 print_it_typical. */
2431 /* FIXME: how breakpoint can ever be NULL here? */
2432 if (b != NULL && b->ops != NULL && b->ops->print_it != NULL)
2433 return b->ops->print_it (b);
2435 return print_it_typical (bs);
2440 internal_error (__FILE__, __LINE__,
2441 _("print_bp_stop_message: unrecognized enum value"));
2446 /* Print a message indicating what happened. This is called from
2447 normal_stop(). The input to this routine is the head of the bpstat
2448 list - a list of the eventpoints that caused this stop. This
2449 routine calls the generic print routine for printing a message
2450 about reasons for stopping. This will print (for example) the
2451 "Breakpoint n," part of the output. The return value of this
2454 PRINT_UNKNOWN: Means we printed nothing
2455 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
2456 code to print the location. An example is
2457 "Breakpoint 1, " which should be followed by
2459 PRINT_SRC_ONLY: Means we printed something, but there is no need
2460 to also print the location part of the message.
2461 An example is the catch/throw messages, which
2462 don't require a location appended to the end.
2463 PRINT_NOTHING: We have done some printing and we don't need any
2464 further info to be printed.*/
2466 enum print_stop_action
2467 bpstat_print (bpstat bs)
2471 /* Maybe another breakpoint in the chain caused us to stop.
2472 (Currently all watchpoints go on the bpstat whether hit or not.
2473 That probably could (should) be changed, provided care is taken
2474 with respect to bpstat_explains_signal). */
2475 for (; bs; bs = bs->next)
2477 val = print_bp_stop_message (bs);
2478 if (val == PRINT_SRC_ONLY
2479 || val == PRINT_SRC_AND_LOC
2480 || val == PRINT_NOTHING)
2484 /* We reached the end of the chain, or we got a null BS to start
2485 with and nothing was printed. */
2486 return PRINT_UNKNOWN;
2489 /* Evaluate the expression EXP and return 1 if value is zero.
2490 This is used inside a catch_errors to evaluate the breakpoint condition.
2491 The argument is a "struct expression *" that has been cast to char * to
2492 make it pass through catch_errors. */
2495 breakpoint_cond_eval (void *exp)
2497 struct value *mark = value_mark ();
2498 int i = !value_true (evaluate_expression ((struct expression *) exp));
2499 value_free_to_mark (mark);
2503 /* Allocate a new bpstat and chain it to the current one. */
2506 bpstat_alloc (const struct bp_location *bl, bpstat cbs /* Current "bs" value */ )
2510 bs = (bpstat) xmalloc (sizeof (*bs));
2512 bs->breakpoint_at = bl;
2513 /* If the condition is false, etc., don't do the commands. */
2514 bs->commands = NULL;
2516 bs->print_it = print_it_normal;
2520 /* The target has stopped with waitstatus WS. Check if any hardware
2521 watchpoints have triggered, according to the target. */
2524 watchpoints_triggered (struct target_waitstatus *ws)
2526 int stopped_by_watchpoint = STOPPED_BY_WATCHPOINT (*ws);
2528 struct breakpoint *b;
2530 if (!stopped_by_watchpoint)
2532 /* We were not stopped by a watchpoint. Mark all watchpoints
2533 as not triggered. */
2535 if (b->type == bp_hardware_watchpoint
2536 || b->type == bp_read_watchpoint
2537 || b->type == bp_access_watchpoint)
2538 b->watchpoint_triggered = watch_triggered_no;
2543 if (!target_stopped_data_address (¤t_target, &addr))
2545 /* We were stopped by a watchpoint, but we don't know where.
2546 Mark all watchpoints as unknown. */
2548 if (b->type == bp_hardware_watchpoint
2549 || b->type == bp_read_watchpoint
2550 || b->type == bp_access_watchpoint)
2551 b->watchpoint_triggered = watch_triggered_unknown;
2553 return stopped_by_watchpoint;
2556 /* The target could report the data address. Mark watchpoints
2557 affected by this data address as triggered, and all others as not
2561 if (b->type == bp_hardware_watchpoint
2562 || b->type == bp_read_watchpoint
2563 || b->type == bp_access_watchpoint)
2565 struct bp_location *loc;
2568 b->watchpoint_triggered = watch_triggered_no;
2569 for (loc = b->loc; loc; loc = loc->next)
2570 /* Exact match not required. Within range is
2572 if (target_watchpoint_addr_within_range (¤t_target,
2576 b->watchpoint_triggered = watch_triggered_yes;
2584 /* Possible return values for watchpoint_check (this can't be an enum
2585 because of check_errors). */
2586 /* The watchpoint has been deleted. */
2587 #define WP_DELETED 1
2588 /* The value has changed. */
2589 #define WP_VALUE_CHANGED 2
2590 /* The value has not changed. */
2591 #define WP_VALUE_NOT_CHANGED 3
2593 #define BP_TEMPFLAG 1
2594 #define BP_HARDWAREFLAG 2
2596 /* Check watchpoint condition. */
2599 watchpoint_check (void *p)
2601 bpstat bs = (bpstat) p;
2602 struct breakpoint *b;
2603 struct frame_info *fr;
2604 int within_current_scope;
2606 b = bs->breakpoint_at->owner;
2608 if (b->exp_valid_block == NULL)
2609 within_current_scope = 1;
2612 /* There is no current frame at this moment. If we're going to have
2613 any chance of handling watchpoints on local variables, we'll need
2614 the frame chain (so we can determine if we're in scope). */
2615 reinit_frame_cache ();
2616 fr = frame_find_by_id (b->watchpoint_frame);
2617 within_current_scope = (fr != NULL);
2619 /* If we've gotten confused in the unwinder, we might have
2620 returned a frame that can't describe this variable. */
2621 if (within_current_scope
2622 && (block_linkage_function (b->exp_valid_block)
2623 != get_frame_function (fr)))
2624 within_current_scope = 0;
2626 /* in_function_epilogue_p() returns a non-zero value if we're still
2627 in the function but the stack frame has already been invalidated.
2628 Since we can't rely on the values of local variables after the
2629 stack has been destroyed, we are treating the watchpoint in that
2630 state as `not changed' without further checking.
2632 vinschen/2003-09-04: The former implementation left out the case
2633 that the watchpoint frame couldn't be found by frame_find_by_id()
2634 because the current PC is currently in an epilogue. Calling
2635 gdbarch_in_function_epilogue_p() also when fr == NULL fixes that. */
2636 if ((!within_current_scope || fr == get_current_frame ())
2637 && gdbarch_in_function_epilogue_p (current_gdbarch, read_pc ()))
2638 return WP_VALUE_NOT_CHANGED;
2639 if (fr && within_current_scope)
2640 /* If we end up stopping, the current frame will get selected
2641 in normal_stop. So this call to select_frame won't affect
2646 if (within_current_scope)
2648 /* We use value_{,free_to_}mark because it could be a
2649 *long* time before we return to the command level and
2650 call free_all_values. We can't call free_all_values because
2651 we might be in the middle of evaluating a function call. */
2653 struct value *mark = value_mark ();
2654 struct value *new_val;
2656 fetch_watchpoint_value (b->exp, &new_val, NULL, NULL);
2657 if ((b->val != NULL) != (new_val != NULL)
2658 || (b->val != NULL && !value_equal (b->val, new_val)))
2660 if (new_val != NULL)
2662 release_value (new_val);
2663 value_free_to_mark (mark);
2665 bs->old_val = b->val;
2668 /* We will stop here */
2669 return WP_VALUE_CHANGED;
2673 /* Nothing changed, don't do anything. */
2674 value_free_to_mark (mark);
2675 /* We won't stop here */
2676 return WP_VALUE_NOT_CHANGED;
2681 /* This seems like the only logical thing to do because
2682 if we temporarily ignored the watchpoint, then when
2683 we reenter the block in which it is valid it contains
2684 garbage (in the case of a function, it may have two
2685 garbage values, one before and one after the prologue).
2686 So we can't even detect the first assignment to it and
2687 watch after that (since the garbage may or may not equal
2688 the first value assigned). */
2689 /* We print all the stop information in print_it_typical(), but
2690 in this case, by the time we call print_it_typical() this bp
2691 will be deleted already. So we have no choice but print the
2692 information here. */
2693 if (ui_out_is_mi_like_p (uiout))
2695 (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
2696 ui_out_text (uiout, "\nWatchpoint ");
2697 ui_out_field_int (uiout, "wpnum", b->number);
2698 ui_out_text (uiout, " deleted because the program has left the block in\n\
2699 which its expression is valid.\n");
2701 if (b->related_breakpoint)
2702 b->related_breakpoint->disposition = disp_del_at_next_stop;
2703 b->disposition = disp_del_at_next_stop;
2709 /* Return true if it looks like target has stopped due to hitting
2710 breakpoint location BL. This function does not check if we
2711 should stop, only if BL explains the stop. */
2713 bpstat_check_location (const struct bp_location *bl, CORE_ADDR bp_addr)
2715 struct breakpoint *b = bl->owner;
2717 if (b->type != bp_watchpoint
2718 && b->type != bp_hardware_watchpoint
2719 && b->type != bp_read_watchpoint
2720 && b->type != bp_access_watchpoint
2721 && b->type != bp_hardware_breakpoint
2722 && b->type != bp_catchpoint) /* a non-watchpoint bp */
2724 if (bl->address != bp_addr) /* address doesn't match */
2726 if (overlay_debugging /* unmapped overlay section */
2727 && section_is_overlay (bl->section)
2728 && !section_is_mapped (bl->section))
2732 /* Continuable hardware watchpoints are treated as non-existent if the
2733 reason we stopped wasn't a hardware watchpoint (we didn't stop on
2734 some data address). Otherwise gdb won't stop on a break instruction
2735 in the code (not from a breakpoint) when a hardware watchpoint has
2736 been defined. Also skip watchpoints which we know did not trigger
2737 (did not match the data address). */
2739 if ((b->type == bp_hardware_watchpoint
2740 || b->type == bp_read_watchpoint
2741 || b->type == bp_access_watchpoint)
2742 && b->watchpoint_triggered == watch_triggered_no)
2745 if (b->type == bp_hardware_breakpoint)
2747 if (bl->address != bp_addr)
2749 if (overlay_debugging /* unmapped overlay section */
2750 && section_is_overlay (bl->section)
2751 && !section_is_mapped (bl->section))
2755 if (b->type == bp_catchpoint)
2757 gdb_assert (b->ops != NULL && b->ops->breakpoint_hit != NULL);
2758 if (!b->ops->breakpoint_hit (b))
2765 /* If BS refers to a watchpoint, determine if the watched values
2766 has actually changed, and we should stop. If not, set BS->stop
2769 bpstat_check_watchpoint (bpstat bs)
2771 const struct bp_location *bl = bs->breakpoint_at;
2772 struct breakpoint *b = bl->owner;
2774 if (b->type == bp_watchpoint
2775 || b->type == bp_read_watchpoint
2776 || b->type == bp_access_watchpoint
2777 || b->type == bp_hardware_watchpoint)
2781 int must_check_value = 0;
2783 if (b->type == bp_watchpoint)
2784 /* For a software watchpoint, we must always check the
2786 must_check_value = 1;
2787 else if (b->watchpoint_triggered == watch_triggered_yes)
2788 /* We have a hardware watchpoint (read, write, or access)
2789 and the target earlier reported an address watched by
2791 must_check_value = 1;
2792 else if (b->watchpoint_triggered == watch_triggered_unknown
2793 && b->type == bp_hardware_watchpoint)
2794 /* We were stopped by a hardware watchpoint, but the target could
2795 not report the data address. We must check the watchpoint's
2796 value. Access and read watchpoints are out of luck; without
2797 a data address, we can't figure it out. */
2798 must_check_value = 1;
2800 if (must_check_value)
2802 char *message = xstrprintf ("Error evaluating expression for watchpoint %d\n",
2804 struct cleanup *cleanups = make_cleanup (xfree, message);
2805 int e = catch_errors (watchpoint_check, bs, message,
2807 do_cleanups (cleanups);
2811 /* We've already printed what needs to be printed. */
2812 bs->print_it = print_it_done;
2815 case WP_VALUE_CHANGED:
2816 if (b->type == bp_read_watchpoint)
2818 /* Don't stop: read watchpoints shouldn't fire if
2819 the value has changed. This is for targets
2820 which cannot set read-only watchpoints. */
2821 bs->print_it = print_it_noop;
2825 case WP_VALUE_NOT_CHANGED:
2826 if (b->type == bp_hardware_watchpoint
2827 || b->type == bp_watchpoint)
2829 /* Don't stop: write watchpoints shouldn't fire if
2830 the value hasn't changed. */
2831 bs->print_it = print_it_noop;
2839 /* Error from catch_errors. */
2840 printf_filtered (_("Watchpoint %d deleted.\n"), b->number);
2841 if (b->related_breakpoint)
2842 b->related_breakpoint->disposition = disp_del_at_next_stop;
2843 b->disposition = disp_del_at_next_stop;
2844 /* We've already printed what needs to be printed. */
2845 bs->print_it = print_it_done;
2849 else /* must_check_value == 0 */
2851 /* This is a case where some watchpoint(s) triggered, but
2852 not at the address of this watchpoint, or else no
2853 watchpoint triggered after all. So don't print
2854 anything for this watchpoint. */
2855 bs->print_it = print_it_noop;
2862 /* Check conditions (condition proper, frame, thread and ignore count)
2863 of breakpoint referred to by BS. If we should not stop for this
2864 breakpoint, set BS->stop to 0. */
2866 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
2868 int thread_id = pid_to_thread_id (ptid);
2869 const struct bp_location *bl = bs->breakpoint_at;
2870 struct breakpoint *b = bl->owner;
2872 if (frame_id_p (b->frame_id)
2873 && !frame_id_eq (b->frame_id, get_frame_id (get_current_frame ())))
2877 int value_is_zero = 0;
2879 /* If this is a scope breakpoint, mark the associated
2880 watchpoint as triggered so that we will handle the
2881 out-of-scope event. We'll get to the watchpoint next
2883 if (b->type == bp_watchpoint_scope)
2884 b->related_breakpoint->watchpoint_triggered = watch_triggered_yes;
2886 if (bl->cond && bl->owner->disposition != disp_del_at_next_stop)
2888 /* Need to select the frame, with all that implies
2889 so that the conditions will have the right context. */
2890 select_frame (get_current_frame ());
2892 = catch_errors (breakpoint_cond_eval, (bl->cond),
2893 "Error in testing breakpoint condition:\n",
2895 /* FIXME-someday, should give breakpoint # */
2898 if (bl->cond && value_is_zero)
2902 else if (b->thread != -1 && b->thread != thread_id)
2906 else if (b->ignore_count > 0)
2909 annotate_ignore_count_change ();
2911 /* Increase the hit count even though we don't
2919 /* Get a bpstat associated with having just stopped at address
2920 BP_ADDR in thread PTID.
2922 Determine whether we stopped at a breakpoint, etc, or whether we
2923 don't understand this stop. Result is a chain of bpstat's such that:
2925 if we don't understand the stop, the result is a null pointer.
2927 if we understand why we stopped, the result is not null.
2929 Each element of the chain refers to a particular breakpoint or
2930 watchpoint at which we have stopped. (We may have stopped for
2931 several reasons concurrently.)
2933 Each element of the chain has valid next, breakpoint_at,
2934 commands, FIXME??? fields. */
2937 bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid)
2939 struct breakpoint *b = NULL;
2940 const struct bp_location *bl;
2941 struct bp_location *loc;
2942 /* Root of the chain of bpstat's */
2943 struct bpstats root_bs[1];
2944 /* Pointer to the last thing in the chain currently. */
2945 bpstat bs = root_bs;
2947 int need_remove_insert;
2949 ALL_BP_LOCATIONS (bl)
2953 if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
2956 /* For hardware watchpoints, we look only at the first location.
2957 The watchpoint_check function will work on entire expression,
2958 not the individual locations. For read watchopints, the
2959 watchpoints_triggered function have checked all locations
2962 if (b->type == bp_hardware_watchpoint && bl != b->loc)
2965 if (!bpstat_check_location (bl, bp_addr))
2968 /* Come here if it's a watchpoint, or if the break address matches */
2970 bs = bpstat_alloc (bl, bs); /* Alloc a bpstat to explain stop */
2972 /* Assume we stop. Should we find watchpoint that is not actually
2973 triggered, or if condition of breakpoint is false, we'll reset
2978 bpstat_check_watchpoint (bs);
2982 if (b->type == bp_thread_event || b->type == bp_overlay_event)
2983 /* We do not stop for these. */
2986 bpstat_check_breakpoint_conditions (bs, ptid);
2992 /* We will stop here */
2993 if (b->disposition == disp_disable)
2995 if (b->enable_state != bp_permanent)
2996 b->enable_state = bp_disabled;
2997 update_global_location_list (0);
3001 bs->commands = b->commands;
3003 (strcmp ("silent", bs->commands->line) == 0
3004 || (xdb_commands && strcmp ("Q", bs->commands->line) == 0)))
3006 bs->commands = bs->commands->next;
3009 bs->commands = copy_command_lines (bs->commands);
3012 /* Print nothing for this entry if we dont stop or if we dont print. */
3013 if (bs->stop == 0 || bs->print == 0)
3014 bs->print_it = print_it_noop;
3017 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3019 if (loc->address == bp_addr)
3021 bs = bpstat_alloc (loc, bs);
3022 /* For hits of moribund locations, we should just proceed. */
3025 bs->print_it = print_it_noop;
3029 bs->next = NULL; /* Terminate the chain */
3030 bs = root_bs->next; /* Re-grab the head of the chain */
3032 /* If we aren't stopping, the value of some hardware watchpoint may
3033 not have changed, but the intermediate memory locations we are
3034 watching may have. Don't bother if we're stopping; this will get
3036 for (bs = root_bs->next; bs != NULL; bs = bs->next)
3040 need_remove_insert = 0;
3042 for (bs = root_bs->next; bs != NULL; bs = bs->next)
3044 && bs->breakpoint_at->owner
3045 && (bs->breakpoint_at->owner->type == bp_hardware_watchpoint
3046 || bs->breakpoint_at->owner->type == bp_read_watchpoint
3047 || bs->breakpoint_at->owner->type == bp_access_watchpoint))
3049 /* remove/insert can invalidate bs->breakpoint_at, if this
3050 location is no longer used by the watchpoint. Prevent
3051 further code from trying to use it. */
3052 bs->breakpoint_at = NULL;
3053 need_remove_insert = 1;
3056 if (need_remove_insert)
3058 remove_breakpoints ();
3059 insert_breakpoints ();
3062 return root_bs->next;
3065 /* Tell what to do about this bpstat. */
3067 bpstat_what (bpstat bs)
3069 /* Classify each bpstat as one of the following. */
3072 /* This bpstat element has no effect on the main_action. */
3075 /* There was a watchpoint, stop but don't print. */
3078 /* There was a watchpoint, stop and print. */
3081 /* There was a breakpoint but we're not stopping. */
3084 /* There was a breakpoint, stop but don't print. */
3087 /* There was a breakpoint, stop and print. */
3090 /* We hit the longjmp breakpoint. */
3093 /* We hit the longjmp_resume breakpoint. */
3096 /* We hit the step_resume breakpoint. */
3099 /* We hit the shared library event breakpoint. */
3102 /* This is just used to count how many enums there are. */
3106 /* Here is the table which drives this routine. So that we can
3107 format it pretty, we define some abbreviations for the
3108 enum bpstat_what codes. */
3109 #define kc BPSTAT_WHAT_KEEP_CHECKING
3110 #define ss BPSTAT_WHAT_STOP_SILENT
3111 #define sn BPSTAT_WHAT_STOP_NOISY
3112 #define sgl BPSTAT_WHAT_SINGLE
3113 #define slr BPSTAT_WHAT_SET_LONGJMP_RESUME
3114 #define clr BPSTAT_WHAT_CLEAR_LONGJMP_RESUME
3115 #define sr BPSTAT_WHAT_STEP_RESUME
3116 #define shl BPSTAT_WHAT_CHECK_SHLIBS
3118 /* "Can't happen." Might want to print an error message.
3119 abort() is not out of the question, but chances are GDB is just
3120 a bit confused, not unusable. */
3121 #define err BPSTAT_WHAT_STOP_NOISY
3123 /* Given an old action and a class, come up with a new action. */
3124 /* One interesting property of this table is that wp_silent is the same
3125 as bp_silent and wp_noisy is the same as bp_noisy. That is because
3126 after stopping, the check for whether to step over a breakpoint
3127 (BPSTAT_WHAT_SINGLE type stuff) is handled in proceed() without
3128 reference to how we stopped. We retain separate wp_silent and
3129 bp_silent codes in case we want to change that someday.
3131 Another possibly interesting property of this table is that
3132 there's a partial ordering, priority-like, of the actions. Once
3133 you've decided that some action is appropriate, you'll never go
3134 back and decide something of a lower priority is better. The
3137 kc < clr sgl shl slr sn sr ss
3138 sgl < shl slr sn sr ss
3139 slr < err shl sn sr ss
3140 clr < err shl sn sr ss
3146 What I think this means is that we don't need a damned table
3147 here. If you just put the rows and columns in the right order,
3148 it'd look awfully regular. We could simply walk the bpstat list
3149 and choose the highest priority action we find, with a little
3150 logic to handle the 'err' cases. */
3152 /* step_resume entries: a step resume breakpoint overrides another
3153 breakpoint of signal handling (see comment in wait_for_inferior
3154 at where we set the step_resume breakpoint). */
3156 static const enum bpstat_what_main_action
3157 table[(int) class_last][(int) BPSTAT_WHAT_LAST] =
3160 /* kc ss sn sgl slr clr sr shl
3163 {kc, ss, sn, sgl, slr, clr, sr, shl},
3165 {ss, ss, sn, ss, ss, ss, sr, shl},
3167 {sn, sn, sn, sn, sn, sn, sr, shl},
3169 {sgl, ss, sn, sgl, slr, slr, sr, shl},
3171 {ss, ss, sn, ss, ss, ss, sr, shl},
3173 {sn, sn, sn, sn, sn, sn, sr, shl},
3175 {slr, ss, sn, slr, slr, err, sr, shl},
3177 {clr, ss, sn, err, err, err, sr, shl},
3179 {sr, sr, sr, sr, sr, sr, sr, sr},
3181 {shl, shl, shl, shl, shl, shl, sr, shl}
3194 enum bpstat_what_main_action current_action = BPSTAT_WHAT_KEEP_CHECKING;
3195 struct bpstat_what retval;
3197 retval.call_dummy = 0;
3198 for (; bs != NULL; bs = bs->next)
3200 enum class bs_class = no_effect;
3201 if (bs->breakpoint_at == NULL)
3202 /* I suspect this can happen if it was a momentary breakpoint
3203 which has since been deleted. */
3205 if (bs->breakpoint_at->owner == NULL)
3206 bs_class = bp_nostop;
3208 switch (bs->breakpoint_at->owner->type)
3214 case bp_hardware_breakpoint:
3220 bs_class = bp_noisy;
3222 bs_class = bp_silent;
3225 bs_class = bp_nostop;
3228 case bp_hardware_watchpoint:
3229 case bp_read_watchpoint:
3230 case bp_access_watchpoint:
3234 bs_class = wp_noisy;
3236 bs_class = wp_silent;
3239 /* There was a watchpoint, but we're not stopping.
3240 This requires no further action. */
3241 bs_class = no_effect;
3244 bs_class = long_jump;
3246 case bp_longjmp_resume:
3247 bs_class = long_resume;
3249 case bp_step_resume:
3252 bs_class = step_resume;
3255 /* It is for the wrong frame. */
3256 bs_class = bp_nostop;
3258 case bp_watchpoint_scope:
3259 bs_class = bp_nostop;
3261 case bp_shlib_event:
3262 bs_class = shlib_event;
3264 case bp_thread_event:
3265 case bp_overlay_event:
3266 bs_class = bp_nostop;
3272 bs_class = bp_noisy;
3274 bs_class = bp_silent;
3277 /* There was a catchpoint, but we're not stopping.
3278 This requires no further action. */
3279 bs_class = no_effect;
3282 /* Make sure the action is stop (silent or noisy),
3283 so infrun.c pops the dummy frame. */
3284 bs_class = bp_silent;
3285 retval.call_dummy = 1;
3288 current_action = table[(int) bs_class][(int) current_action];
3290 retval.main_action = current_action;
3294 /* Nonzero if we should step constantly (e.g. watchpoints on machines
3295 without hardware support). This isn't related to a specific bpstat,
3296 just to things like whether watchpoints are set. */
3299 bpstat_should_step (void)
3301 struct breakpoint *b;
3303 if (breakpoint_enabled (b) && b->type == bp_watchpoint)
3310 static void print_breakpoint_location (struct breakpoint *b,
3311 struct bp_location *loc,
3313 struct ui_stream *stb)
3318 = find_pc_sect_function (loc->address, loc->section);
3321 ui_out_text (uiout, "in ");
3322 ui_out_field_string (uiout, "func",
3323 SYMBOL_PRINT_NAME (sym));
3324 ui_out_wrap_hint (uiout, wrap_indent);
3325 ui_out_text (uiout, " at ");
3327 ui_out_field_string (uiout, "file", b->source_file);
3328 ui_out_text (uiout, ":");
3330 if (ui_out_is_mi_like_p (uiout))
3332 struct symtab_and_line sal = find_pc_line (loc->address, 0);
3333 char *fullname = symtab_to_fullname (sal.symtab);
3336 ui_out_field_string (uiout, "fullname", fullname);
3339 ui_out_field_int (uiout, "line", b->line_number);
3343 ui_out_field_string (uiout, "pending", b->addr_string);
3347 print_address_symbolic (loc->address, stb->stream, demangle, "");
3348 ui_out_field_stream (uiout, "at", stb);
3352 /* Print B to gdb_stdout. */
3354 print_one_breakpoint_location (struct breakpoint *b,
3355 struct bp_location *loc,
3357 CORE_ADDR *last_addr)
3359 struct command_line *l;
3361 struct ep_type_description
3366 static struct ep_type_description bptypes[] =
3368 {bp_none, "?deleted?"},
3369 {bp_breakpoint, "breakpoint"},
3370 {bp_hardware_breakpoint, "hw breakpoint"},
3371 {bp_until, "until"},
3372 {bp_finish, "finish"},
3373 {bp_watchpoint, "watchpoint"},
3374 {bp_hardware_watchpoint, "hw watchpoint"},
3375 {bp_read_watchpoint, "read watchpoint"},
3376 {bp_access_watchpoint, "acc watchpoint"},
3377 {bp_longjmp, "longjmp"},
3378 {bp_longjmp_resume, "longjmp resume"},
3379 {bp_step_resume, "step resume"},
3380 {bp_watchpoint_scope, "watchpoint scope"},
3381 {bp_call_dummy, "call dummy"},
3382 {bp_shlib_event, "shlib events"},
3383 {bp_thread_event, "thread events"},
3384 {bp_overlay_event, "overlay events"},
3385 {bp_catchpoint, "catchpoint"},
3388 static char bpenables[] = "nynny";
3389 char wrap_indent[80];
3390 struct ui_stream *stb = ui_out_stream_new (uiout);
3391 struct cleanup *old_chain = make_cleanup_ui_out_stream_delete (stb);
3392 struct cleanup *bkpt_chain;
3394 int header_of_multiple = 0;
3395 int part_of_multiple = (loc != NULL);
3396 struct value_print_options opts;
3398 get_user_print_options (&opts);
3400 gdb_assert (!loc || loc_number != 0);
3401 /* See comment in print_one_breakpoint concerning
3402 treatment of breakpoints with single disabled
3406 && (b->loc->next != NULL || !b->loc->enabled)))
3407 header_of_multiple = 1;
3412 bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
3416 if (part_of_multiple)
3419 formatted = xstrprintf ("%d.%d", b->number, loc_number);
3420 ui_out_field_string (uiout, "number", formatted);
3425 ui_out_field_int (uiout, "number", b->number);
3430 if (part_of_multiple)
3431 ui_out_field_skip (uiout, "type");
3434 if (((int) b->type >= (sizeof (bptypes) / sizeof (bptypes[0])))
3435 || ((int) b->type != bptypes[(int) b->type].type))
3436 internal_error (__FILE__, __LINE__,
3437 _("bptypes table does not describe type #%d."),
3439 ui_out_field_string (uiout, "type", bptypes[(int) b->type].description);
3444 if (part_of_multiple)
3445 ui_out_field_skip (uiout, "disp");
3447 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
3452 if (part_of_multiple)
3453 ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
3455 ui_out_field_fmt (uiout, "enabled", "%c",
3456 bpenables[(int) b->enable_state]);
3457 ui_out_spaces (uiout, 2);
3461 strcpy (wrap_indent, " ");
3462 if (opts.addressprint)
3464 if (gdbarch_addr_bit (current_gdbarch) <= 32)
3465 strcat (wrap_indent, " ");
3467 strcat (wrap_indent, " ");
3470 if (b->ops != NULL && b->ops->print_one != NULL)
3472 /* Although the print_one can possibly print
3473 all locations, calling it here is not likely
3474 to get any nice result. So, make sure there's
3475 just one location. */
3476 gdb_assert (b->loc == NULL || b->loc->next == NULL);
3477 b->ops->print_one (b, last_addr);
3483 internal_error (__FILE__, __LINE__,
3484 _("print_one_breakpoint: bp_none encountered\n"));
3488 case bp_hardware_watchpoint:
3489 case bp_read_watchpoint:
3490 case bp_access_watchpoint:
3491 /* Field 4, the address, is omitted (which makes the columns
3492 not line up too nicely with the headers, but the effect
3493 is relatively readable). */
3494 if (opts.addressprint)
3495 ui_out_field_skip (uiout, "addr");
3497 print_expression (b->exp, stb->stream);
3498 ui_out_field_stream (uiout, "what", stb);
3502 case bp_hardware_breakpoint:
3506 case bp_longjmp_resume:
3507 case bp_step_resume:
3508 case bp_watchpoint_scope:
3510 case bp_shlib_event:
3511 case bp_thread_event:
3512 case bp_overlay_event:
3513 if (opts.addressprint)
3516 if (header_of_multiple)
3517 ui_out_field_string (uiout, "addr", "<MULTIPLE>");
3518 else if (b->loc == NULL || loc->shlib_disabled)
3519 ui_out_field_string (uiout, "addr", "<PENDING>");
3521 ui_out_field_core_addr (uiout, "addr", loc->address);
3524 if (!header_of_multiple)
3525 print_breakpoint_location (b, loc, wrap_indent, stb);
3527 *last_addr = b->loc->address;
3531 if (!part_of_multiple && b->thread != -1)
3533 /* FIXME: This seems to be redundant and lost here; see the
3534 "stop only in" line a little further down. */
3535 ui_out_text (uiout, " thread ");
3536 ui_out_field_int (uiout, "thread", b->thread);
3539 ui_out_text (uiout, "\n");
3541 if (part_of_multiple && frame_id_p (b->frame_id))
3544 ui_out_text (uiout, "\tstop only in stack frame at ");
3545 /* FIXME: cagney/2002-12-01: Shouldn't be poeking around inside
3547 ui_out_field_core_addr (uiout, "frame", b->frame_id.stack_addr);
3548 ui_out_text (uiout, "\n");
3551 if (!part_of_multiple && b->cond_string && !ada_exception_catchpoint_p (b))
3553 /* We do not print the condition for Ada exception catchpoints
3554 because the condition is an internal implementation detail
3555 that we do not want to expose to the user. */
3557 ui_out_text (uiout, "\tstop only if ");
3558 ui_out_field_string (uiout, "cond", b->cond_string);
3559 ui_out_text (uiout, "\n");
3562 if (!part_of_multiple && b->thread != -1)
3564 /* FIXME should make an annotation for this */
3565 ui_out_text (uiout, "\tstop only in thread ");
3566 ui_out_field_int (uiout, "thread", b->thread);
3567 ui_out_text (uiout, "\n");
3570 if (!part_of_multiple && b->hit_count)
3572 /* FIXME should make an annotation for this */
3573 if (ep_is_catchpoint (b))
3574 ui_out_text (uiout, "\tcatchpoint");
3576 ui_out_text (uiout, "\tbreakpoint");
3577 ui_out_text (uiout, " already hit ");
3578 ui_out_field_int (uiout, "times", b->hit_count);
3579 if (b->hit_count == 1)
3580 ui_out_text (uiout, " time\n");
3582 ui_out_text (uiout, " times\n");
3585 /* Output the count also if it is zero, but only if this is
3586 mi. FIXME: Should have a better test for this. */
3587 if (ui_out_is_mi_like_p (uiout))
3588 if (!part_of_multiple && b->hit_count == 0)
3589 ui_out_field_int (uiout, "times", b->hit_count);
3591 if (!part_of_multiple && b->ignore_count)
3594 ui_out_text (uiout, "\tignore next ");
3595 ui_out_field_int (uiout, "ignore", b->ignore_count);
3596 ui_out_text (uiout, " hits\n");
3599 if (!part_of_multiple && (l = b->commands))
3601 struct cleanup *script_chain;
3604 script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
3605 print_command_lines (uiout, l, 4);
3606 do_cleanups (script_chain);
3609 if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
3612 ui_out_field_string (uiout, "original-location", b->addr_string);
3613 else if (b->exp_string)
3614 ui_out_field_string (uiout, "original-location", b->exp_string);
3617 do_cleanups (bkpt_chain);
3618 do_cleanups (old_chain);
3622 print_one_breakpoint (struct breakpoint *b,
3623 CORE_ADDR *last_addr)
3625 print_one_breakpoint_location (b, NULL, 0, last_addr);
3627 /* If this breakpoint has custom print function,
3628 it's already printed. Otherwise, print individual
3629 locations, if any. */
3630 if (b->ops == NULL || b->ops->print_one == NULL)
3632 /* If breakpoint has a single location that is
3633 disabled, we print it as if it had
3634 several locations, since otherwise it's hard to
3635 represent "breakpoint enabled, location disabled"
3637 Note that while hardware watchpoints have
3638 several locations internally, that's no a property
3641 && !is_hardware_watchpoint (b)
3642 && (b->loc->next || !b->loc->enabled)
3643 && !ui_out_is_mi_like_p (uiout))
3645 struct bp_location *loc;
3647 for (loc = b->loc; loc; loc = loc->next, ++n)
3648 print_one_breakpoint_location (b, loc, n, last_addr);
3654 struct captured_breakpoint_query_args
3660 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
3662 struct captured_breakpoint_query_args *args = data;
3663 struct breakpoint *b;
3664 CORE_ADDR dummy_addr = 0;
3667 if (args->bnum == b->number)
3669 print_one_breakpoint (b, &dummy_addr);
3677 gdb_breakpoint_query (struct ui_out *uiout, int bnum, char **error_message)
3679 struct captured_breakpoint_query_args args;
3681 /* For the moment we don't trust print_one_breakpoint() to not throw
3683 if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
3684 error_message, RETURN_MASK_ALL) < 0)
3690 /* Return non-zero if B is user settable (breakpoints, watchpoints,
3691 catchpoints, et.al.). */
3694 user_settable_breakpoint (const struct breakpoint *b)
3696 return (b->type == bp_breakpoint
3697 || b->type == bp_catchpoint
3698 || b->type == bp_hardware_breakpoint
3699 || b->type == bp_watchpoint
3700 || b->type == bp_read_watchpoint
3701 || b->type == bp_access_watchpoint
3702 || b->type == bp_hardware_watchpoint);
3705 /* Print information on user settable breakpoint (watchpoint, etc)
3706 number BNUM. If BNUM is -1 print all user settable breakpoints.
3707 If ALLFLAG is non-zero, include non- user settable breakpoints. */
3710 breakpoint_1 (int bnum, int allflag)
3712 struct breakpoint *b;
3713 CORE_ADDR last_addr = (CORE_ADDR) -1;
3714 int nr_printable_breakpoints;
3715 struct cleanup *bkpttbl_chain;
3716 struct value_print_options opts;
3718 get_user_print_options (&opts);
3720 /* Compute the number of rows in the table. */
3721 nr_printable_breakpoints = 0;
3724 || bnum == b->number)
3726 if (allflag || user_settable_breakpoint (b))
3727 nr_printable_breakpoints++;
3730 if (opts.addressprint)
3732 = make_cleanup_ui_out_table_begin_end (uiout, 6, nr_printable_breakpoints,
3736 = make_cleanup_ui_out_table_begin_end (uiout, 5, nr_printable_breakpoints,
3739 if (nr_printable_breakpoints > 0)
3740 annotate_breakpoints_headers ();
3741 if (nr_printable_breakpoints > 0)
3743 ui_out_table_header (uiout, 7, ui_left, "number", "Num"); /* 1 */
3744 if (nr_printable_breakpoints > 0)
3746 ui_out_table_header (uiout, 14, ui_left, "type", "Type"); /* 2 */
3747 if (nr_printable_breakpoints > 0)
3749 ui_out_table_header (uiout, 4, ui_left, "disp", "Disp"); /* 3 */
3750 if (nr_printable_breakpoints > 0)
3752 ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb"); /* 4 */
3753 if (opts.addressprint)
3755 if (nr_printable_breakpoints > 0)
3757 if (gdbarch_addr_bit (current_gdbarch) <= 32)
3758 ui_out_table_header (uiout, 10, ui_left, "addr", "Address");/* 5 */
3760 ui_out_table_header (uiout, 18, ui_left, "addr", "Address");/* 5 */
3762 if (nr_printable_breakpoints > 0)
3764 ui_out_table_header (uiout, 40, ui_noalign, "what", "What"); /* 6 */
3765 ui_out_table_body (uiout);
3766 if (nr_printable_breakpoints > 0)
3767 annotate_breakpoints_table ();
3771 || bnum == b->number)
3773 /* We only print out user settable breakpoints unless the
3775 if (allflag || user_settable_breakpoint (b))
3776 print_one_breakpoint (b, &last_addr);
3779 do_cleanups (bkpttbl_chain);
3781 if (nr_printable_breakpoints == 0)
3784 ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
3786 ui_out_message (uiout, 0, "No breakpoint or watchpoint number %d.\n",
3791 /* Compare against (CORE_ADDR)-1 in case some compiler decides
3792 that a comparison of an unsigned with -1 is always false. */
3793 if (last_addr != (CORE_ADDR) -1 && !server_command)
3794 set_next_address (current_gdbarch, last_addr);
3797 /* FIXME? Should this be moved up so that it is only called when
3798 there have been breakpoints? */
3799 annotate_breakpoints_table_end ();
3803 breakpoints_info (char *bnum_exp, int from_tty)
3808 bnum = parse_and_eval_long (bnum_exp);
3810 breakpoint_1 (bnum, 0);
3814 maintenance_info_breakpoints (char *bnum_exp, int from_tty)
3819 bnum = parse_and_eval_long (bnum_exp);
3821 breakpoint_1 (bnum, 1);
3825 breakpoint_has_pc (struct breakpoint *b,
3826 CORE_ADDR pc, struct obj_section *section)
3828 struct bp_location *bl = b->loc;
3829 for (; bl; bl = bl->next)
3831 if (bl->address == pc
3832 && (!overlay_debugging || bl->section == section))
3838 /* Print a message describing any breakpoints set at PC. */
3841 describe_other_breakpoints (CORE_ADDR pc, struct obj_section *section,
3845 struct breakpoint *b;
3848 others += breakpoint_has_pc (b, pc, section);
3852 printf_filtered (_("Note: breakpoint "));
3853 else /* if (others == ???) */
3854 printf_filtered (_("Note: breakpoints "));
3856 if (breakpoint_has_pc (b, pc, section))
3859 printf_filtered ("%d", b->number);
3860 if (b->thread == -1 && thread != -1)
3861 printf_filtered (" (all threads)");
3862 else if (b->thread != -1)
3863 printf_filtered (" (thread %d)", b->thread);
3864 printf_filtered ("%s%s ",
3865 ((b->enable_state == bp_disabled ||
3866 b->enable_state == bp_call_disabled)
3868 : b->enable_state == bp_permanent
3872 : ((others == 1) ? " and" : ""));
3874 printf_filtered (_("also set at pc "));
3875 fputs_filtered (paddress (pc), gdb_stdout);
3876 printf_filtered (".\n");
3880 /* Set the default place to put a breakpoint
3881 for the `break' command with no arguments. */
3884 set_default_breakpoint (int valid, CORE_ADDR addr, struct symtab *symtab,
3887 default_breakpoint_valid = valid;
3888 default_breakpoint_address = addr;
3889 default_breakpoint_symtab = symtab;
3890 default_breakpoint_line = line;
3893 /* Return true iff it is meaningful to use the address member of
3894 BPT. For some breakpoint types, the address member is irrelevant
3895 and it makes no sense to attempt to compare it to other addresses
3896 (or use it for any other purpose either).
3898 More specifically, each of the following breakpoint types will always
3899 have a zero valued address and we don't want check_duplicates() to mark
3900 breakpoints of any of these types to be a duplicate of an actual
3901 breakpoint at address zero:
3904 bp_hardware_watchpoint
3906 bp_access_watchpoint
3910 breakpoint_address_is_meaningful (struct breakpoint *bpt)
3912 enum bptype type = bpt->type;
3914 return (type != bp_watchpoint
3915 && type != bp_hardware_watchpoint
3916 && type != bp_read_watchpoint
3917 && type != bp_access_watchpoint
3918 && type != bp_catchpoint);
3921 /* Rescan breakpoints at the same address and section as BPT,
3922 marking the first one as "first" and any others as "duplicates".
3923 This is so that the bpt instruction is only inserted once.
3924 If we have a permanent breakpoint at the same place as BPT, make
3925 that one the official one, and the rest as duplicates. */
3928 check_duplicates_for (CORE_ADDR address, struct obj_section *section)
3930 struct bp_location *b;
3932 struct bp_location *perm_bp = 0;
3934 ALL_BP_LOCATIONS (b)
3935 if (b->owner->enable_state != bp_disabled
3936 && b->owner->enable_state != bp_call_disabled
3938 && !b->shlib_disabled
3939 && b->address == address /* address / overlay match */
3940 && (!overlay_debugging || b->section == section)
3941 && breakpoint_address_is_meaningful (b->owner))
3943 /* Have we found a permanent breakpoint? */
3944 if (b->owner->enable_state == bp_permanent)
3951 b->duplicate = count > 1;
3954 /* If we found a permanent breakpoint at this address, go over the
3955 list again and declare all the other breakpoints there to be the
3959 perm_bp->duplicate = 0;
3961 /* Permanent breakpoint should always be inserted. */
3962 if (! perm_bp->inserted)
3963 internal_error (__FILE__, __LINE__,
3964 _("allegedly permanent breakpoint is not "
3965 "actually inserted"));
3967 ALL_BP_LOCATIONS (b)
3970 if (b->owner->enable_state != bp_disabled
3971 && b->owner->enable_state != bp_call_disabled
3972 && b->enabled && !b->shlib_disabled
3973 && b->address == address /* address / overlay match */
3974 && (!overlay_debugging || b->section == section)
3975 && breakpoint_address_is_meaningful (b->owner))
3978 internal_error (__FILE__, __LINE__,
3979 _("another breakpoint was inserted on top of "
3980 "a permanent breakpoint"));
3989 check_duplicates (struct breakpoint *bpt)
3991 struct bp_location *bl = bpt->loc;
3993 if (! breakpoint_address_is_meaningful (bpt))
3996 for (; bl; bl = bl->next)
3997 check_duplicates_for (bl->address, bl->section);
4001 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
4002 int bnum, int have_bnum)
4007 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
4008 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
4010 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
4011 bnum, astr1, astr2);
4013 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
4016 /* Adjust a breakpoint's address to account for architectural constraints
4017 on breakpoint placement. Return the adjusted address. Note: Very
4018 few targets require this kind of adjustment. For most targets,
4019 this function is simply the identity function. */
4022 adjust_breakpoint_address (CORE_ADDR bpaddr, enum bptype bptype)
4024 if (!gdbarch_adjust_breakpoint_address_p (current_gdbarch))
4026 /* Very few targets need any kind of breakpoint adjustment. */
4029 else if (bptype == bp_watchpoint
4030 || bptype == bp_hardware_watchpoint
4031 || bptype == bp_read_watchpoint
4032 || bptype == bp_access_watchpoint
4033 || bptype == bp_catchpoint)
4035 /* Watchpoints and the various bp_catch_* eventpoints should not
4036 have their addresses modified. */
4041 CORE_ADDR adjusted_bpaddr;
4043 /* Some targets have architectural constraints on the placement
4044 of breakpoint instructions. Obtain the adjusted address. */
4045 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (current_gdbarch,
4048 /* An adjusted breakpoint address can significantly alter
4049 a user's expectations. Print a warning if an adjustment
4051 if (adjusted_bpaddr != bpaddr)
4052 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
4054 return adjusted_bpaddr;
4058 /* Allocate a struct bp_location. */
4060 static struct bp_location *
4061 allocate_bp_location (struct breakpoint *bpt)
4063 struct bp_location *loc, *loc_p;
4065 loc = xmalloc (sizeof (struct bp_location));
4066 memset (loc, 0, sizeof (*loc));
4070 loc->shlib_disabled = 0;
4079 case bp_longjmp_resume:
4080 case bp_step_resume:
4081 case bp_watchpoint_scope:
4083 case bp_shlib_event:
4084 case bp_thread_event:
4085 case bp_overlay_event:
4086 loc->loc_type = bp_loc_software_breakpoint;
4088 case bp_hardware_breakpoint:
4089 loc->loc_type = bp_loc_hardware_breakpoint;
4091 case bp_hardware_watchpoint:
4092 case bp_read_watchpoint:
4093 case bp_access_watchpoint:
4094 loc->loc_type = bp_loc_hardware_watchpoint;
4098 loc->loc_type = bp_loc_other;
4101 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
4107 static void free_bp_location (struct bp_location *loc)
4112 if (loc->function_name)
4113 xfree (loc->function_name);
4118 /* Helper to set_raw_breakpoint below. Creates a breakpoint
4119 that has type BPTYPE and has no locations as yet. */
4121 static struct breakpoint *
4122 set_raw_breakpoint_without_location (enum bptype bptype)
4124 struct breakpoint *b, *b1;
4126 b = (struct breakpoint *) xmalloc (sizeof (struct breakpoint));
4127 memset (b, 0, sizeof (*b));
4130 b->language = current_language->la_language;
4131 b->input_radix = input_radix;
4133 b->enable_state = bp_enabled;
4136 b->ignore_count = 0;
4138 b->frame_id = null_frame_id;
4139 b->forked_inferior_pid = null_ptid;
4140 b->exec_pathname = NULL;
4142 b->condition_not_parsed = 0;
4144 /* Add this breakpoint to the end of the chain
4145 so that a list of breakpoints will come out in order
4146 of increasing numbers. */
4148 b1 = breakpoint_chain;
4150 breakpoint_chain = b;
4160 /* Initialize loc->function_name. */
4162 set_breakpoint_location_function (struct bp_location *loc)
4164 if (loc->owner->type == bp_breakpoint
4165 || loc->owner->type == bp_hardware_breakpoint)
4167 find_pc_partial_function (loc->address, &(loc->function_name),
4169 if (loc->function_name)
4170 loc->function_name = xstrdup (loc->function_name);
4174 /* set_raw_breakpoint is a low level routine for allocating and
4175 partially initializing a breakpoint of type BPTYPE. The newly
4176 created breakpoint's address, section, source file name, and line
4177 number are provided by SAL. The newly created and partially
4178 initialized breakpoint is added to the breakpoint chain and
4179 is also returned as the value of this function.
4181 It is expected that the caller will complete the initialization of
4182 the newly created breakpoint struct as well as output any status
4183 information regarding the creation of a new breakpoint. In
4184 particular, set_raw_breakpoint does NOT set the breakpoint
4185 number! Care should be taken to not allow an error to occur
4186 prior to completing the initialization of the breakpoint. If this
4187 should happen, a bogus breakpoint will be left on the chain. */
4190 set_raw_breakpoint (struct symtab_and_line sal, enum bptype bptype)
4192 struct breakpoint *b = set_raw_breakpoint_without_location (bptype);
4193 CORE_ADDR adjusted_address;
4195 /* Adjust the breakpoint's address prior to allocating a location.
4196 Once we call allocate_bp_location(), that mostly uninitialized
4197 location will be placed on the location chain. Adjustment of the
4198 breakpoint may cause target_read_memory() to be called and we do
4199 not want its scan of the location chain to find a breakpoint and
4200 location that's only been partially initialized. */
4201 adjusted_address = adjust_breakpoint_address (sal.pc, b->type);
4203 b->loc = allocate_bp_location (b);
4204 b->loc->requested_address = sal.pc;
4205 b->loc->address = adjusted_address;
4207 if (sal.symtab == NULL)
4208 b->source_file = NULL;
4210 b->source_file = savestring (sal.symtab->filename,
4211 strlen (sal.symtab->filename));
4212 b->loc->section = sal.section;
4213 b->line_number = sal.line;
4215 set_breakpoint_location_function (b->loc);
4217 breakpoints_changed ();
4223 /* Note that the breakpoint object B describes a permanent breakpoint
4224 instruction, hard-wired into the inferior's code. */
4226 make_breakpoint_permanent (struct breakpoint *b)
4228 struct bp_location *bl;
4229 b->enable_state = bp_permanent;
4231 /* By definition, permanent breakpoints are already present in the code.
4232 Mark all locations as inserted. For now, make_breakpoint_permanent
4233 is called in just one place, so it's hard to say if it's reasonable
4234 to have permanent breakpoint with multiple locations or not,
4235 but it's easy to implmement. */
4236 for (bl = b->loc; bl; bl = bl->next)
4240 static struct breakpoint *
4241 create_internal_breakpoint (CORE_ADDR address, enum bptype type)
4243 static int internal_breakpoint_number = -1;
4244 struct symtab_and_line sal;
4245 struct breakpoint *b;
4247 init_sal (&sal); /* initialize to zeroes */
4250 sal.section = find_pc_overlay (sal.pc);
4252 b = set_raw_breakpoint (sal, type);
4253 b->number = internal_breakpoint_number--;
4254 b->disposition = disp_donttouch;
4261 create_longjmp_breakpoint (char *func_name)
4263 struct minimal_symbol *m;
4265 if ((m = lookup_minimal_symbol_text (func_name, NULL)) == NULL)
4267 set_momentary_breakpoint_at_pc (SYMBOL_VALUE_ADDRESS (m), bp_longjmp);
4268 update_global_location_list (1);
4271 /* Call this routine when stepping and nexting to enable a breakpoint
4272 if we do a longjmp(). When we hit that breakpoint, call
4273 set_longjmp_resume_breakpoint() to figure out where we are going. */
4276 set_longjmp_breakpoint (void)
4278 if (gdbarch_get_longjmp_target_p (current_gdbarch))
4280 create_longjmp_breakpoint ("longjmp");
4281 create_longjmp_breakpoint ("_longjmp");
4282 create_longjmp_breakpoint ("siglongjmp");
4283 create_longjmp_breakpoint ("_siglongjmp");
4287 /* Delete all longjmp breakpoints from THREAD. */
4289 delete_longjmp_breakpoint (int thread)
4291 struct breakpoint *b, *temp;
4293 ALL_BREAKPOINTS_SAFE (b, temp)
4294 if (b->type == bp_longjmp)
4296 if (b->thread == thread)
4297 delete_breakpoint (b);
4302 create_overlay_event_breakpoint_1 (char *func_name, struct objfile *objfile)
4304 struct breakpoint *b;
4305 struct minimal_symbol *m;
4307 if ((m = lookup_minimal_symbol_text (func_name, objfile)) == NULL)
4310 b = create_internal_breakpoint (SYMBOL_VALUE_ADDRESS (m),
4312 b->addr_string = xstrdup (func_name);
4314 if (overlay_debugging == ovly_auto)
4316 b->enable_state = bp_enabled;
4317 overlay_events_enabled = 1;
4321 b->enable_state = bp_disabled;
4322 overlay_events_enabled = 0;
4324 update_global_location_list (1);
4328 create_overlay_event_breakpoint (char *func_name)
4330 struct objfile *objfile;
4331 ALL_OBJFILES (objfile)
4332 create_overlay_event_breakpoint_1 (func_name, objfile);
4336 enable_overlay_breakpoints (void)
4338 struct breakpoint *b;
4341 if (b->type == bp_overlay_event)
4343 b->enable_state = bp_enabled;
4344 update_global_location_list (1);
4345 overlay_events_enabled = 1;
4350 disable_overlay_breakpoints (void)
4352 struct breakpoint *b;
4355 if (b->type == bp_overlay_event)
4357 b->enable_state = bp_disabled;
4358 update_global_location_list (0);
4359 overlay_events_enabled = 0;
4364 create_thread_event_breakpoint (CORE_ADDR address)
4366 struct breakpoint *b;
4368 b = create_internal_breakpoint (address, bp_thread_event);
4370 b->enable_state = bp_enabled;
4371 /* addr_string has to be used or breakpoint_re_set will delete me. */
4372 b->addr_string = xstrprintf ("*0x%s", paddr (b->loc->address));
4374 update_global_location_list_nothrow (1);
4380 remove_thread_event_breakpoints (void)
4382 struct breakpoint *b, *temp;
4384 ALL_BREAKPOINTS_SAFE (b, temp)
4385 if (b->type == bp_thread_event)
4386 delete_breakpoint (b);
4389 struct captured_parse_breakpoint_args
4392 struct symtabs_and_lines *sals_p;
4393 char ***addr_string_p;
4397 struct lang_and_radix
4405 remove_solib_event_breakpoints (void)
4407 struct breakpoint *b, *temp;
4409 ALL_BREAKPOINTS_SAFE (b, temp)
4410 if (b->type == bp_shlib_event)
4411 delete_breakpoint (b);
4415 create_solib_event_breakpoint (CORE_ADDR address)
4417 struct breakpoint *b;
4419 b = create_internal_breakpoint (address, bp_shlib_event);
4420 update_global_location_list_nothrow (1);
4424 /* Disable any breakpoints that are on code in shared libraries. Only
4425 apply to enabled breakpoints, disabled ones can just stay disabled. */
4428 disable_breakpoints_in_shlibs (void)
4430 struct bp_location *loc;
4431 int disabled_shlib_breaks = 0;
4433 ALL_BP_LOCATIONS (loc)
4435 struct breakpoint *b = loc->owner;
4436 /* We apply the check to all breakpoints, including disabled
4437 for those with loc->duplicate set. This is so that when breakpoint
4438 becomes enabled, or the duplicate is removed, gdb will try to insert
4439 all breakpoints. If we don't set shlib_disabled here, we'll try
4440 to insert those breakpoints and fail. */
4441 if (((b->type == bp_breakpoint) || (b->type == bp_hardware_breakpoint))
4442 && !loc->shlib_disabled
4444 && PC_SOLIB (loc->address)
4446 && solib_address (loc->address)
4450 loc->shlib_disabled = 1;
4455 /* Disable any breakpoints that are in in an unloaded shared library. Only
4456 apply to enabled breakpoints, disabled ones can just stay disabled. */
4459 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
4461 struct bp_location *loc;
4462 int disabled_shlib_breaks = 0;
4464 ALL_BP_LOCATIONS (loc)
4466 struct breakpoint *b = loc->owner;
4467 if ((loc->loc_type == bp_loc_hardware_breakpoint
4468 || loc->loc_type == bp_loc_software_breakpoint)
4469 && !loc->shlib_disabled)
4472 char *so_name = PC_SOLIB (loc->address);
4474 char *so_name = solib_address (loc->address);
4476 if (so_name && !strcmp (so_name, solib->so_name))
4478 loc->shlib_disabled = 1;
4479 /* At this point, we cannot rely on remove_breakpoint
4480 succeeding so we must mark the breakpoint as not inserted
4481 to prevent future errors occurring in remove_breakpoints. */
4483 if (!disabled_shlib_breaks)
4485 target_terminal_ours_for_output ();
4486 warning (_("Temporarily disabling breakpoints for unloaded shared library \"%s\""),
4489 disabled_shlib_breaks = 1;
4495 /* FORK & VFORK catchpoints. */
4497 /* Implement the "insert" breakpoint_ops method for fork catchpoints. */
4500 insert_catch_fork (struct breakpoint *b)
4502 target_insert_fork_catchpoint (PIDGET (inferior_ptid));
4505 /* Implement the "remove" breakpoint_ops method for fork catchpoints. */
4508 remove_catch_fork (struct breakpoint *b)
4510 return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
4513 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
4517 breakpoint_hit_catch_fork (struct breakpoint *b)
4519 return inferior_has_forked (inferior_ptid, &b->forked_inferior_pid);
4522 /* Implement the "print_it" breakpoint_ops method for fork catchpoints. */
4524 static enum print_stop_action
4525 print_it_catch_fork (struct breakpoint *b)
4527 annotate_catchpoint (b->number);
4528 printf_filtered (_("\nCatchpoint %d (forked process %d), "),
4529 b->number, ptid_get_pid (b->forked_inferior_pid));
4530 return PRINT_SRC_AND_LOC;
4533 /* Implement the "print_one" breakpoint_ops method for fork catchpoints. */
4536 print_one_catch_fork (struct breakpoint *b, CORE_ADDR *last_addr)
4538 struct value_print_options opts;
4540 get_user_print_options (&opts);
4542 /* Field 4, the address, is omitted (which makes the columns
4543 not line up too nicely with the headers, but the effect
4544 is relatively readable). */
4545 if (opts.addressprint)
4546 ui_out_field_skip (uiout, "addr");
4548 ui_out_text (uiout, "fork");
4549 if (!ptid_equal (b->forked_inferior_pid, null_ptid))
4551 ui_out_text (uiout, ", process ");
4552 ui_out_field_int (uiout, "what",
4553 ptid_get_pid (b->forked_inferior_pid));
4554 ui_out_spaces (uiout, 1);
4558 /* Implement the "print_mention" breakpoint_ops method for fork
4562 print_mention_catch_fork (struct breakpoint *b)
4564 printf_filtered (_("Catchpoint %d (fork)"), b->number);
4567 /* The breakpoint_ops structure to be used in fork catchpoints. */
4569 static struct breakpoint_ops catch_fork_breakpoint_ops =
4573 breakpoint_hit_catch_fork,
4574 print_it_catch_fork,
4575 print_one_catch_fork,
4576 print_mention_catch_fork
4579 /* Implement the "insert" breakpoint_ops method for vfork catchpoints. */
4582 insert_catch_vfork (struct breakpoint *b)
4584 target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
4587 /* Implement the "remove" breakpoint_ops method for vfork catchpoints. */
4590 remove_catch_vfork (struct breakpoint *b)
4592 return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
4595 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
4599 breakpoint_hit_catch_vfork (struct breakpoint *b)
4601 return inferior_has_vforked (inferior_ptid, &b->forked_inferior_pid);
4604 /* Implement the "print_it" breakpoint_ops method for vfork catchpoints. */
4606 static enum print_stop_action
4607 print_it_catch_vfork (struct breakpoint *b)
4609 annotate_catchpoint (b->number);
4610 printf_filtered (_("\nCatchpoint %d (vforked process %d), "),
4611 b->number, ptid_get_pid (b->forked_inferior_pid));
4612 return PRINT_SRC_AND_LOC;
4615 /* Implement the "print_one" breakpoint_ops method for vfork catchpoints. */
4618 print_one_catch_vfork (struct breakpoint *b, CORE_ADDR *last_addr)
4620 struct value_print_options opts;
4622 get_user_print_options (&opts);
4623 /* Field 4, the address, is omitted (which makes the columns
4624 not line up too nicely with the headers, but the effect
4625 is relatively readable). */
4626 if (opts.addressprint)
4627 ui_out_field_skip (uiout, "addr");
4629 ui_out_text (uiout, "vfork");
4630 if (!ptid_equal (b->forked_inferior_pid, null_ptid))
4632 ui_out_text (uiout, ", process ");
4633 ui_out_field_int (uiout, "what",
4634 ptid_get_pid (b->forked_inferior_pid));
4635 ui_out_spaces (uiout, 1);
4639 /* Implement the "print_mention" breakpoint_ops method for vfork
4643 print_mention_catch_vfork (struct breakpoint *b)
4645 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
4648 /* The breakpoint_ops structure to be used in vfork catchpoints. */
4650 static struct breakpoint_ops catch_vfork_breakpoint_ops =
4654 breakpoint_hit_catch_vfork,
4655 print_it_catch_vfork,
4656 print_one_catch_vfork,
4657 print_mention_catch_vfork
4660 /* Create a new breakpoint of the bp_catchpoint kind and return it.
4662 If TEMPFLAG is non-zero, then make the breakpoint temporary.
4663 If COND_STRING is not NULL, then store it in the breakpoint.
4664 OPS, if not NULL, is the breakpoint_ops structure associated
4665 to the catchpoint. */
4667 static struct breakpoint *
4668 create_catchpoint (int tempflag, char *cond_string,
4669 struct breakpoint_ops *ops)
4671 struct symtab_and_line sal;
4672 struct breakpoint *b;
4679 b = set_raw_breakpoint (sal, bp_catchpoint);
4680 set_breakpoint_count (breakpoint_count + 1);
4681 b->number = breakpoint_count;
4683 b->cond_string = (cond_string == NULL) ?
4684 NULL : savestring (cond_string, strlen (cond_string));
4686 b->addr_string = NULL;
4687 b->enable_state = bp_enabled;
4688 b->disposition = tempflag ? disp_del : disp_donttouch;
4692 update_global_location_list (1);
4698 create_fork_vfork_event_catchpoint (int tempflag, char *cond_string,
4699 struct breakpoint_ops *ops)
4701 struct breakpoint *b = create_catchpoint (tempflag, cond_string, ops);
4703 /* FIXME: We should put this information in a breakpoint private data
4705 b->forked_inferior_pid = null_ptid;
4708 /* Exec catchpoints. */
4711 insert_catch_exec (struct breakpoint *b)
4713 target_insert_exec_catchpoint (PIDGET (inferior_ptid));
4717 remove_catch_exec (struct breakpoint *b)
4719 return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
4723 breakpoint_hit_catch_exec (struct breakpoint *b)
4725 return inferior_has_execd (inferior_ptid, &b->exec_pathname);
4728 static enum print_stop_action
4729 print_it_catch_exec (struct breakpoint *b)
4731 annotate_catchpoint (b->number);
4732 printf_filtered (_("\nCatchpoint %d (exec'd %s), "), b->number,
4734 return PRINT_SRC_AND_LOC;
4738 print_one_catch_exec (struct breakpoint *b, CORE_ADDR *last_addr)
4740 struct value_print_options opts;
4742 get_user_print_options (&opts);
4744 /* Field 4, the address, is omitted (which makes the columns
4745 not line up too nicely with the headers, but the effect
4746 is relatively readable). */
4747 if (opts.addressprint)
4748 ui_out_field_skip (uiout, "addr");
4750 ui_out_text (uiout, "exec");
4751 if (b->exec_pathname != NULL)
4753 ui_out_text (uiout, ", program \"");
4754 ui_out_field_string (uiout, "what", b->exec_pathname);
4755 ui_out_text (uiout, "\" ");
4760 print_mention_catch_exec (struct breakpoint *b)
4762 printf_filtered (_("Catchpoint %d (exec)"), b->number);
4765 static struct breakpoint_ops catch_exec_breakpoint_ops =
4769 breakpoint_hit_catch_exec,
4770 print_it_catch_exec,
4771 print_one_catch_exec,
4772 print_mention_catch_exec
4776 hw_breakpoint_used_count (void)
4778 struct breakpoint *b;
4783 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
4791 hw_watchpoint_used_count (enum bptype type, int *other_type_used)
4793 struct breakpoint *b;
4796 *other_type_used = 0;
4799 if (breakpoint_enabled (b))
4801 if (b->type == type)
4803 else if ((b->type == bp_hardware_watchpoint ||
4804 b->type == bp_read_watchpoint ||
4805 b->type == bp_access_watchpoint))
4806 *other_type_used = 1;
4813 disable_watchpoints_before_interactive_call_start (void)
4815 struct breakpoint *b;
4819 if (((b->type == bp_watchpoint)
4820 || (b->type == bp_hardware_watchpoint)
4821 || (b->type == bp_read_watchpoint)
4822 || (b->type == bp_access_watchpoint))
4823 && breakpoint_enabled (b))
4825 b->enable_state = bp_call_disabled;
4826 update_global_location_list (0);
4832 enable_watchpoints_after_interactive_call_stop (void)
4834 struct breakpoint *b;
4838 if (((b->type == bp_watchpoint)
4839 || (b->type == bp_hardware_watchpoint)
4840 || (b->type == bp_read_watchpoint)
4841 || (b->type == bp_access_watchpoint))
4842 && (b->enable_state == bp_call_disabled))
4844 b->enable_state = bp_enabled;
4845 update_global_location_list (1);
4851 /* Set a breakpoint that will evaporate an end of command
4852 at address specified by SAL.
4853 Restrict it to frame FRAME if FRAME is nonzero. */
4856 set_momentary_breakpoint (struct symtab_and_line sal, struct frame_id frame_id,
4859 struct breakpoint *b;
4860 b = set_raw_breakpoint (sal, type);
4861 b->enable_state = bp_enabled;
4862 b->disposition = disp_donttouch;
4863 b->frame_id = frame_id;
4865 /* If we're debugging a multi-threaded program, then we
4866 want momentary breakpoints to be active in only a
4867 single thread of control. */
4868 if (in_thread_list (inferior_ptid))
4869 b->thread = pid_to_thread_id (inferior_ptid);
4871 update_global_location_list_nothrow (1);
4877 set_momentary_breakpoint_at_pc (CORE_ADDR pc, enum bptype type)
4879 struct symtab_and_line sal;
4881 sal = find_pc_line (pc, 0);
4883 sal.section = find_pc_overlay (pc);
4884 sal.explicit_pc = 1;
4886 return set_momentary_breakpoint (sal, null_frame_id, type);
4890 /* Tell the user we have just set a breakpoint B. */
4893 mention (struct breakpoint *b)
4896 struct cleanup *old_chain, *ui_out_chain;
4897 struct ui_stream *stb;
4898 struct value_print_options opts;
4900 get_user_print_options (&opts);
4902 stb = ui_out_stream_new (uiout);
4903 old_chain = make_cleanup_ui_out_stream_delete (stb);
4905 /* FIXME: This is misplaced; mention() is called by things (like
4906 hitting a watchpoint) other than breakpoint creation. It should
4907 be possible to clean this up and at the same time replace the
4908 random calls to breakpoint_changed with this hook. */
4909 observer_notify_breakpoint_created (b->number);
4911 if (b->ops != NULL && b->ops->print_mention != NULL)
4912 b->ops->print_mention (b);
4917 printf_filtered (_("(apparently deleted?) Eventpoint %d: "), b->number);
4920 ui_out_text (uiout, "Watchpoint ");
4921 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
4922 ui_out_field_int (uiout, "number", b->number);
4923 ui_out_text (uiout, ": ");
4924 print_expression (b->exp, stb->stream);
4925 ui_out_field_stream (uiout, "exp", stb);
4926 do_cleanups (ui_out_chain);
4928 case bp_hardware_watchpoint:
4929 ui_out_text (uiout, "Hardware watchpoint ");
4930 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
4931 ui_out_field_int (uiout, "number", b->number);
4932 ui_out_text (uiout, ": ");
4933 print_expression (b->exp, stb->stream);
4934 ui_out_field_stream (uiout, "exp", stb);
4935 do_cleanups (ui_out_chain);
4937 case bp_read_watchpoint:
4938 ui_out_text (uiout, "Hardware read watchpoint ");
4939 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
4940 ui_out_field_int (uiout, "number", b->number);
4941 ui_out_text (uiout, ": ");
4942 print_expression (b->exp, stb->stream);
4943 ui_out_field_stream (uiout, "exp", stb);
4944 do_cleanups (ui_out_chain);
4946 case bp_access_watchpoint:
4947 ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
4948 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
4949 ui_out_field_int (uiout, "number", b->number);
4950 ui_out_text (uiout, ": ");
4951 print_expression (b->exp, stb->stream);
4952 ui_out_field_stream (uiout, "exp", stb);
4953 do_cleanups (ui_out_chain);
4956 if (ui_out_is_mi_like_p (uiout))
4961 if (b->disposition == disp_del)
4962 printf_filtered (_("Temporary breakpoint"));
4964 printf_filtered (_("Breakpoint"));
4965 printf_filtered (_(" %d"), b->number);
4968 case bp_hardware_breakpoint:
4969 if (ui_out_is_mi_like_p (uiout))
4974 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
4981 case bp_longjmp_resume:
4982 case bp_step_resume:
4984 case bp_watchpoint_scope:
4985 case bp_shlib_event:
4986 case bp_thread_event:
4987 case bp_overlay_event:
4993 /* i18n: cagney/2005-02-11: Below needs to be merged into a
4997 printf_filtered (_(" (%s) pending."), b->addr_string);
5001 if (opts.addressprint || b->source_file == NULL)
5003 printf_filtered (" at ");
5004 fputs_filtered (paddress (b->loc->address), gdb_stdout);
5007 printf_filtered (": file %s, line %d.",
5008 b->source_file, b->line_number);
5012 struct bp_location *loc = b->loc;
5014 for (; loc; loc = loc->next)
5016 printf_filtered (" (%d locations)", n);
5021 do_cleanups (old_chain);
5022 if (ui_out_is_mi_like_p (uiout))
5024 printf_filtered ("\n");
5028 static struct bp_location *
5029 add_location_to_breakpoint (struct breakpoint *b,
5030 const struct symtab_and_line *sal)
5032 struct bp_location *loc, **tmp;
5034 loc = allocate_bp_location (b);
5035 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
5038 loc->requested_address = sal->pc;
5039 loc->address = adjust_breakpoint_address (loc->requested_address, b->type);
5040 loc->section = sal->section;
5042 set_breakpoint_location_function (loc);
5047 /* Return 1 if LOC is pointing to a permanent breakpoint,
5048 return 0 otherwise. */
5051 bp_loc_is_permanent (struct bp_location *loc)
5055 const gdb_byte *brk;
5056 gdb_byte *target_mem;
5057 struct cleanup *cleanup;
5060 gdb_assert (loc != NULL);
5062 addr = loc->address;
5063 brk = gdbarch_breakpoint_from_pc (current_gdbarch, &addr, &len);
5065 /* Software breakpoints unsupported? */
5069 target_mem = alloca (len);
5071 /* Enable the automatic memory restoration from breakpoints while
5072 we read the memory. Otherwise we could say about our temporary
5073 breakpoints they are permanent. */
5074 cleanup = make_show_memory_breakpoints_cleanup (0);
5076 if (target_read_memory (loc->address, target_mem, len) == 0
5077 && memcmp (target_mem, brk, len) == 0)
5080 do_cleanups (cleanup);
5087 /* Create a breakpoint with SAL as location. Use ADDR_STRING
5088 as textual description of the location, and COND_STRING
5089 as condition expression. */
5092 create_breakpoint (struct symtabs_and_lines sals, char *addr_string,
5094 enum bptype type, enum bpdisp disposition,
5095 int thread, int ignore_count,
5096 struct breakpoint_ops *ops, int from_tty)
5098 struct breakpoint *b = NULL;
5101 if (type == bp_hardware_breakpoint)
5103 int i = hw_breakpoint_used_count ();
5104 int target_resources_ok =
5105 TARGET_CAN_USE_HARDWARE_WATCHPOINT (bp_hardware_breakpoint,
5107 if (target_resources_ok == 0)
5108 error (_("No hardware breakpoint support in the target."));
5109 else if (target_resources_ok < 0)
5110 error (_("Hardware breakpoints used exceeds limit."));
5113 for (i = 0; i < sals.nelts; ++i)
5115 struct symtab_and_line sal = sals.sals[i];
5116 struct bp_location *loc;
5119 describe_other_breakpoints (sal.pc, sal.section, thread);
5123 b = set_raw_breakpoint (sal, type);
5124 set_breakpoint_count (breakpoint_count + 1);
5125 b->number = breakpoint_count;
5128 b->cond_string = cond_string;
5129 b->ignore_count = ignore_count;
5130 b->enable_state = bp_enabled;
5131 b->disposition = disposition;
5137 loc = add_location_to_breakpoint (b, &sal);
5140 if (bp_loc_is_permanent (loc))
5141 make_breakpoint_permanent (b);
5145 char *arg = b->cond_string;
5146 loc->cond = parse_exp_1 (&arg, block_for_pc (loc->address), 0);
5148 error (_("Garbage %s follows condition"), arg);
5153 b->addr_string = addr_string;
5155 /* addr_string has to be used or breakpoint_re_set will delete
5157 b->addr_string = xstrprintf ("*0x%s", paddr (b->loc->address));
5163 /* Remove element at INDEX_TO_REMOVE from SAL, shifting other
5164 elements to fill the void space. */
5165 static void remove_sal (struct symtabs_and_lines *sal, int index_to_remove)
5167 int i = index_to_remove+1;
5168 int last_index = sal->nelts-1;
5170 for (;i <= last_index; ++i)
5171 sal->sals[i-1] = sal->sals[i];
5176 /* If appropriate, obtains all sals that correspond
5177 to the same file and line as SAL. This is done
5178 only if SAL does not have explicit PC and has
5179 line and file information. If we got just a single
5180 expanded sal, return the original.
5182 Otherwise, if SAL.explicit_line is not set, filter out
5183 all sals for which the name of enclosing function
5184 is different from SAL. This makes sure that if we have
5185 breakpoint originally set in template instantiation, say
5186 foo<int>(), we won't expand SAL to locations at the same
5187 line in all existing instantiations of 'foo'.
5190 struct symtabs_and_lines
5191 expand_line_sal_maybe (struct symtab_and_line sal)
5193 struct symtabs_and_lines expanded;
5194 CORE_ADDR original_pc = sal.pc;
5195 char *original_function = NULL;
5199 /* If we have explicit pc, don't expand.
5200 If we have no line number, we can't expand. */
5201 if (sal.explicit_pc || sal.line == 0 || sal.symtab == NULL)
5204 expanded.sals = xmalloc (sizeof (struct symtab_and_line));
5205 expanded.sals[0] = sal;
5210 find_pc_partial_function (original_pc, &original_function, NULL, NULL);
5212 expanded = expand_line_sal (sal);
5213 if (expanded.nelts == 1)
5215 /* We had one sal, we got one sal. Without futher
5216 processing, just return the original sal. */
5217 xfree (expanded.sals);
5219 expanded.sals = xmalloc (sizeof (struct symtab_and_line));
5220 sal.pc = original_pc;
5221 expanded.sals[0] = sal;
5225 if (!sal.explicit_line)
5227 CORE_ADDR func_addr, func_end;
5228 for (i = 0; i < expanded.nelts; ++i)
5230 CORE_ADDR pc = expanded.sals[i].pc;
5231 char *this_function;
5232 if (find_pc_partial_function (pc, &this_function,
5233 &func_addr, &func_end))
5235 if (this_function &&
5236 strcmp (this_function, original_function) != 0)
5238 remove_sal (&expanded, i);
5241 else if (func_addr == pc)
5243 /* We're at beginning of a function, and should
5245 struct symbol *sym = find_pc_function (pc);
5247 expanded.sals[i] = find_function_start_sal (sym, 1);
5250 = gdbarch_skip_prologue (current_gdbarch, pc);
5257 if (expanded.nelts <= 1)
5259 /* This is un ugly workaround. If we get zero
5260 expanded sals then something is really wrong.
5261 Fix that by returnign the original sal. */
5262 xfree (expanded.sals);
5264 expanded.sals = xmalloc (sizeof (struct symtab_and_line));
5265 sal.pc = original_pc;
5266 expanded.sals[0] = sal;
5273 for (i = 0; i < expanded.nelts; ++i)
5274 if (expanded.sals[i].pc == original_pc)
5285 /* Add SALS.nelts breakpoints to the breakpoint table. For each
5286 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
5287 value. COND_STRING, if not NULL, specified the condition to be
5288 used for all breakpoints. Essentially the only case where
5289 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
5290 function. In that case, it's still not possible to specify
5291 separate conditions for different overloaded functions, so
5292 we take just a single condition string.
5294 NOTE: If the function succeeds, the caller is expected to cleanup
5295 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
5296 array contents). If the function fails (error() is called), the
5297 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
5298 COND and SALS arrays and each of those arrays contents. */
5301 create_breakpoints (struct symtabs_and_lines sals, char **addr_string,
5303 enum bptype type, enum bpdisp disposition,
5304 int thread, int ignore_count,
5305 struct breakpoint_ops *ops, int from_tty)
5308 for (i = 0; i < sals.nelts; ++i)
5310 struct symtabs_and_lines expanded =
5311 expand_line_sal_maybe (sals.sals[i]);
5313 create_breakpoint (expanded, addr_string[i],
5314 cond_string, type, disposition,
5315 thread, ignore_count, ops, from_tty);
5318 update_global_location_list (1);
5321 /* Parse ARG which is assumed to be a SAL specification possibly
5322 followed by conditionals. On return, SALS contains an array of SAL
5323 addresses found. ADDR_STRING contains a vector of (canonical)
5324 address strings. ARG points to the end of the SAL. */
5327 parse_breakpoint_sals (char **address,
5328 struct symtabs_and_lines *sals,
5329 char ***addr_string,
5332 char *addr_start = *address;
5333 *addr_string = NULL;
5334 /* If no arg given, or if first arg is 'if ', use the default
5336 if ((*address) == NULL
5337 || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
5339 if (default_breakpoint_valid)
5341 struct symtab_and_line sal;
5342 init_sal (&sal); /* initialize to zeroes */
5343 sals->sals = (struct symtab_and_line *)
5344 xmalloc (sizeof (struct symtab_and_line));
5345 sal.pc = default_breakpoint_address;
5346 sal.line = default_breakpoint_line;
5347 sal.symtab = default_breakpoint_symtab;
5348 sal.section = find_pc_overlay (sal.pc);
5349 sals->sals[0] = sal;
5353 error (_("No default breakpoint address now."));
5357 /* Force almost all breakpoints to be in terms of the
5358 current_source_symtab (which is decode_line_1's default). This
5359 should produce the results we want almost all of the time while
5360 leaving default_breakpoint_* alone.
5361 ObjC: However, don't match an Objective-C method name which
5362 may have a '+' or '-' succeeded by a '[' */
5364 struct symtab_and_line cursal = get_current_source_symtab_and_line ();
5366 if (default_breakpoint_valid
5368 || ((strchr ("+-", (*address)[0]) != NULL)
5369 && ((*address)[1] != '['))))
5370 *sals = decode_line_1 (address, 1, default_breakpoint_symtab,
5371 default_breakpoint_line, addr_string,
5374 *sals = decode_line_1 (address, 1, (struct symtab *) NULL, 0,
5375 addr_string, not_found_ptr);
5377 /* For any SAL that didn't have a canonical string, fill one in. */
5378 if (sals->nelts > 0 && *addr_string == NULL)
5379 *addr_string = xcalloc (sals->nelts, sizeof (char **));
5380 if (addr_start != (*address))
5383 for (i = 0; i < sals->nelts; i++)
5385 /* Add the string if not present. */
5386 if ((*addr_string)[i] == NULL)
5387 (*addr_string)[i] = savestring (addr_start, (*address) - addr_start);
5393 /* Convert each SAL into a real PC. Verify that the PC can be
5394 inserted as a breakpoint. If it can't throw an error. */
5397 breakpoint_sals_to_pc (struct symtabs_and_lines *sals,
5401 for (i = 0; i < sals->nelts; i++)
5402 resolve_sal_pc (&sals->sals[i]);
5406 do_captured_parse_breakpoint (struct ui_out *ui, void *data)
5408 struct captured_parse_breakpoint_args *args = data;
5410 parse_breakpoint_sals (args->arg_p, args->sals_p, args->addr_string_p,
5411 args->not_found_ptr);
5414 /* Given TOK, a string specification of condition and thread, as
5415 accepted by the 'break' command, extract the condition
5416 string and thread number and set *COND_STRING and *THREAD.
5417 PC identifies the context at which the condition should be parsed.
5418 If no condition is found, *COND_STRING is set to NULL.
5419 If no thread is found, *THREAD is set to -1. */
5421 find_condition_and_thread (char *tok, CORE_ADDR pc,
5422 char **cond_string, int *thread)
5424 *cond_string = NULL;
5430 char *cond_start = NULL;
5431 char *cond_end = NULL;
5432 while (*tok == ' ' || *tok == '\t')
5437 while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
5440 toklen = end_tok - tok;
5442 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
5444 tok = cond_start = end_tok + 1;
5445 parse_exp_1 (&tok, block_for_pc (pc), 0);
5447 *cond_string = savestring (cond_start,
5448 cond_end - cond_start);
5450 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
5456 *thread = strtol (tok, &tok, 0);
5458 error (_("Junk after thread keyword."));
5459 if (!valid_thread_id (*thread))
5460 error (_("Unknown thread %d."), *thread);
5463 error (_("Junk at end of arguments."));
5467 /* Set a breakpoint. This function is shared between
5468 CLI and MI functions for setting a breakpoint.
5469 This function has two major modes of operations,
5470 selected by the PARSE_CONDITION_AND_THREAD parameter.
5471 If non-zero, the function will parse arg, extracting
5472 breakpoint location, address and thread. Otherwise,
5473 ARG is just the location of breakpoint, with condition
5474 and thread specified by the COND_STRING and THREAD
5478 break_command_really (char *arg, char *cond_string, int thread,
5479 int parse_condition_and_thread,
5480 int tempflag, int hardwareflag,
5482 enum auto_boolean pending_break_support,
5483 struct breakpoint_ops *ops,
5486 struct gdb_exception e;
5487 struct symtabs_and_lines sals;
5488 struct symtab_and_line pending_sal;
5491 char *addr_start = arg;
5493 struct cleanup *old_chain;
5494 struct cleanup *breakpoint_chain = NULL;
5495 struct captured_parse_breakpoint_args parse_args;
5504 parse_args.arg_p = &arg;
5505 parse_args.sals_p = &sals;
5506 parse_args.addr_string_p = &addr_string;
5507 parse_args.not_found_ptr = ¬_found;
5509 e = catch_exception (uiout, do_captured_parse_breakpoint,
5510 &parse_args, RETURN_MASK_ALL);
5512 /* If caller is interested in rc value from parse, set value. */
5516 throw_exception (e);
5520 case NOT_FOUND_ERROR:
5522 /* If pending breakpoint support is turned off, throw
5525 if (pending_break_support == AUTO_BOOLEAN_FALSE)
5526 throw_exception (e);
5528 exception_print (gdb_stderr, e);
5530 /* If pending breakpoint support is auto query and the user
5531 selects no, then simply return the error code. */
5532 if (pending_break_support == AUTO_BOOLEAN_AUTO &&
5533 !nquery ("Make breakpoint pending on future shared library load? "))
5536 /* At this point, either the user was queried about setting
5537 a pending breakpoint and selected yes, or pending
5538 breakpoint behavior is on and thus a pending breakpoint
5539 is defaulted on behalf of the user. */
5540 copy_arg = xstrdup (addr_start);
5541 addr_string = ©_arg;
5543 sals.sals = &pending_sal;
5548 throw_exception (e);
5555 /* Create a chain of things that always need to be cleaned up. */
5556 old_chain = make_cleanup (null_cleanup, 0);
5560 /* Make sure that all storage allocated to SALS gets freed. */
5561 make_cleanup (xfree, sals.sals);
5563 /* Cleanup the addr_string array but not its contents. */
5564 make_cleanup (xfree, addr_string);
5567 /* ----------------------------- SNIP -----------------------------
5568 Anything added to the cleanup chain beyond this point is assumed
5569 to be part of a breakpoint. If the breakpoint create succeeds
5570 then the memory is not reclaimed. */
5571 breakpoint_chain = make_cleanup (null_cleanup, 0);
5573 /* Mark the contents of the addr_string for cleanup. These go on
5574 the breakpoint_chain and only occure if the breakpoint create
5576 for (i = 0; i < sals.nelts; i++)
5578 if (addr_string[i] != NULL)
5579 make_cleanup (xfree, addr_string[i]);
5582 /* Resolve all line numbers to PC's and verify that the addresses
5583 are ok for the target. */
5585 breakpoint_sals_to_pc (&sals, addr_start);
5587 /* Verify that condition can be parsed, before setting any
5588 breakpoints. Allocate a separate condition expression for each
5592 if (parse_condition_and_thread)
5594 /* Here we only parse 'arg' to separate condition
5595 from thread number, so parsing in context of first
5596 sal is OK. When setting the breakpoint we'll
5597 re-parse it in context of each sal. */
5600 find_condition_and_thread (arg, sals.sals[0].pc, &cond_string, &thread);
5602 make_cleanup (xfree, cond_string);
5606 /* Create a private copy of condition string. */
5609 cond_string = xstrdup (cond_string);
5610 make_cleanup (xfree, cond_string);
5613 create_breakpoints (sals, addr_string, cond_string,
5614 hardwareflag ? bp_hardware_breakpoint
5616 tempflag ? disp_del : disp_donttouch,
5617 thread, ignore_count, ops, from_tty);
5621 struct symtab_and_line sal = {0};
5622 struct breakpoint *b;
5624 make_cleanup (xfree, copy_arg);
5626 b = set_raw_breakpoint_without_location (hardwareflag
5627 ? bp_hardware_breakpoint
5629 set_breakpoint_count (breakpoint_count + 1);
5630 b->number = breakpoint_count;
5632 b->addr_string = addr_string[0];
5633 b->cond_string = NULL;
5634 b->ignore_count = ignore_count;
5635 b->disposition = tempflag ? disp_del : disp_donttouch;
5636 b->condition_not_parsed = 1;
5639 update_global_location_list (1);
5644 warning (_("Multiple breakpoints were set.\n"
5645 "Use the \"delete\" command to delete unwanted breakpoints."));
5646 /* That's it. Discard the cleanups for data inserted into the
5648 discard_cleanups (breakpoint_chain);
5649 /* But cleanup everything else. */
5650 do_cleanups (old_chain);
5653 /* Set a breakpoint.
5654 ARG is a string describing breakpoint address,
5655 condition, and thread.
5656 FLAG specifies if a breakpoint is hardware on,
5657 and if breakpoint is temporary, using BP_HARDWARE_FLAG
5661 break_command_1 (char *arg, int flag, int from_tty)
5663 int hardwareflag = flag & BP_HARDWAREFLAG;
5664 int tempflag = flag & BP_TEMPFLAG;
5666 break_command_really (arg,
5667 NULL, 0, 1 /* parse arg */,
5668 tempflag, hardwareflag,
5669 0 /* Ignore count */,
5670 pending_break_support,
5671 NULL /* breakpoint_ops */,
5677 set_breakpoint (char *address, char *condition,
5678 int hardwareflag, int tempflag,
5679 int thread, int ignore_count,
5682 break_command_really (address, condition, thread,
5683 0 /* condition and thread are valid. */,
5684 tempflag, hardwareflag,
5687 ? AUTO_BOOLEAN_TRUE : AUTO_BOOLEAN_FALSE,
5691 /* Adjust SAL to the first instruction past the function prologue.
5692 The end of the prologue is determined using the line table from
5693 the debugging information.
5695 If SAL is already past the prologue, then do nothing. */
5698 skip_prologue_sal (struct symtab_and_line *sal)
5700 struct symbol *sym = find_pc_function (sal->pc);
5701 struct symtab_and_line start_sal;
5706 start_sal = find_function_start_sal (sym, 1);
5707 if (sal->pc < start_sal.pc)
5711 /* Helper function for break_command_1 and disassemble_command. */
5714 resolve_sal_pc (struct symtab_and_line *sal)
5718 if (sal->pc == 0 && sal->symtab != NULL)
5720 if (!find_line_pc (sal->symtab, sal->line, &pc))
5721 error (_("No line %d in file \"%s\"."),
5722 sal->line, sal->symtab->filename);
5725 /* If this SAL corresponds to a breakpoint inserted using
5726 a line number, then skip the function prologue if necessary. */
5727 if (sal->explicit_line)
5728 skip_prologue_sal (sal);
5731 if (sal->section == 0 && sal->symtab != NULL)
5733 struct blockvector *bv;
5737 bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
5740 sym = block_linkage_function (b);
5743 fixup_symbol_section (sym, sal->symtab->objfile);
5744 sal->section = SYMBOL_OBJ_SECTION (sym);
5748 /* It really is worthwhile to have the section, so we'll just
5749 have to look harder. This case can be executed if we have
5750 line numbers but no functions (as can happen in assembly
5753 struct minimal_symbol *msym;
5755 msym = lookup_minimal_symbol_by_pc (sal->pc);
5757 sal->section = SYMBOL_OBJ_SECTION (msym);
5764 break_command (char *arg, int from_tty)
5766 break_command_1 (arg, 0, from_tty);
5770 tbreak_command (char *arg, int from_tty)
5772 break_command_1 (arg, BP_TEMPFLAG, from_tty);
5776 hbreak_command (char *arg, int from_tty)
5778 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
5782 thbreak_command (char *arg, int from_tty)
5784 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
5788 stop_command (char *arg, int from_tty)
5790 printf_filtered (_("Specify the type of breakpoint to set.\n\
5791 Usage: stop in <function | address>\n\
5792 stop at <line>\n"));
5796 stopin_command (char *arg, int from_tty)
5800 if (arg == (char *) NULL)
5802 else if (*arg != '*')
5807 /* look for a ':'. If this is a line number specification, then
5808 say it is bad, otherwise, it should be an address or
5809 function/method name */
5810 while (*argptr && !hasColon)
5812 hasColon = (*argptr == ':');
5817 badInput = (*argptr != ':'); /* Not a class::method */
5819 badInput = isdigit (*arg); /* a simple line number */
5823 printf_filtered (_("Usage: stop in <function | address>\n"));
5825 break_command_1 (arg, 0, from_tty);
5829 stopat_command (char *arg, int from_tty)
5833 if (arg == (char *) NULL || *arg == '*') /* no line number */
5840 /* look for a ':'. If there is a '::' then get out, otherwise
5841 it is probably a line number. */
5842 while (*argptr && !hasColon)
5844 hasColon = (*argptr == ':');
5849 badInput = (*argptr == ':'); /* we have class::method */
5851 badInput = !isdigit (*arg); /* not a line number */
5855 printf_filtered (_("Usage: stop at <line>\n"));
5857 break_command_1 (arg, 0, from_tty);
5860 /* accessflag: hw_write: watch write,
5861 hw_read: watch read,
5862 hw_access: watch access (read or write) */
5864 watch_command_1 (char *arg, int accessflag, int from_tty)
5866 struct breakpoint *b, *scope_breakpoint = NULL;
5867 struct symtab_and_line sal;
5868 struct expression *exp;
5869 struct block *exp_valid_block;
5870 struct value *val, *mark;
5871 struct frame_info *frame;
5872 struct frame_info *prev_frame = NULL;
5873 char *exp_start = NULL;
5874 char *exp_end = NULL;
5875 char *tok, *id_tok_start, *end_tok;
5877 char *cond_start = NULL;
5878 char *cond_end = NULL;
5879 struct expression *cond = NULL;
5880 int i, other_type_used, target_resources_ok = 0;
5881 enum bptype bp_type;
5885 init_sal (&sal); /* initialize to zeroes */
5887 /* Make sure that we actually have parameters to parse. */
5888 if (arg != NULL && arg[0] != '\0')
5890 toklen = strlen (arg); /* Size of argument list. */
5892 /* Points tok to the end of the argument list. */
5893 tok = arg + toklen - 1;
5895 /* Go backwards in the parameters list. Skip the last parameter.
5896 If we're expecting a 'thread <thread_num>' parameter, this should
5897 be the thread identifier. */
5898 while (tok > arg && (*tok == ' ' || *tok == '\t'))
5900 while (tok > arg && (*tok != ' ' && *tok != '\t'))
5903 /* Points end_tok to the beginning of the last token. */
5904 id_tok_start = tok + 1;
5906 /* Go backwards in the parameters list. Skip one more parameter.
5907 If we're expecting a 'thread <thread_num>' parameter, we should
5908 reach a "thread" token. */
5909 while (tok > arg && (*tok == ' ' || *tok == '\t'))
5914 while (tok > arg && (*tok != ' ' && *tok != '\t'))
5917 /* Move the pointer forward to skip the whitespace and
5918 calculate the length of the token. */
5920 toklen = end_tok - tok;
5922 if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
5924 /* At this point we've found a "thread" token, which means
5925 the user is trying to set a watchpoint that triggers
5926 only in a specific thread. */
5929 /* Extract the thread ID from the next token. */
5930 thread = strtol (id_tok_start, &endp, 0);
5932 /* Check if the user provided a valid numeric value for the
5934 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
5935 error (_("Invalid thread ID specification %s."), id_tok_start);
5937 /* Check if the thread actually exists. */
5938 if (!valid_thread_id (thread))
5939 error (_("Unknown thread %d."), thread);
5941 /* Truncate the string and get rid of the thread <thread_num>
5942 parameter before the parameter list is parsed by the
5943 evaluate_expression() function. */
5948 /* Parse the rest of the arguments. */
5949 innermost_block = NULL;
5951 exp = parse_exp_1 (&arg, 0, 0);
5953 exp_valid_block = innermost_block;
5954 mark = value_mark ();
5955 fetch_watchpoint_value (exp, &val, NULL, NULL);
5957 release_value (val);
5960 while (*tok == ' ' || *tok == '\t')
5964 while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
5967 toklen = end_tok - tok;
5968 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
5970 tok = cond_start = end_tok + 1;
5971 cond = parse_exp_1 (&tok, 0, 0);
5975 error (_("Junk at end of command."));
5977 if (accessflag == hw_read)
5978 bp_type = bp_read_watchpoint;
5979 else if (accessflag == hw_access)
5980 bp_type = bp_access_watchpoint;
5982 bp_type = bp_hardware_watchpoint;
5984 mem_cnt = can_use_hardware_watchpoint (val);
5985 if (mem_cnt == 0 && bp_type != bp_hardware_watchpoint)
5986 error (_("Expression cannot be implemented with read/access watchpoint."));
5989 i = hw_watchpoint_used_count (bp_type, &other_type_used);
5990 target_resources_ok =
5991 TARGET_CAN_USE_HARDWARE_WATCHPOINT (bp_type, i + mem_cnt,
5993 if (target_resources_ok == 0 && bp_type != bp_hardware_watchpoint)
5994 error (_("Target does not support this type of hardware watchpoint."));
5996 if (target_resources_ok < 0 && bp_type != bp_hardware_watchpoint)
5997 error (_("Target can only support one kind of HW watchpoint at a time."));
6000 /* Change the type of breakpoint to an ordinary watchpoint if a hardware
6001 watchpoint could not be set. */
6002 if (!mem_cnt || target_resources_ok <= 0)
6003 bp_type = bp_watchpoint;
6005 frame = block_innermost_frame (exp_valid_block);
6007 prev_frame = get_prev_frame (frame);
6011 /* If the expression is "local", then set up a "watchpoint scope"
6012 breakpoint at the point where we've left the scope of the watchpoint
6013 expression. Create the scope breakpoint before the watchpoint, so
6014 that we will encounter it first in bpstat_stop_status. */
6015 if (innermost_block && prev_frame)
6017 scope_breakpoint = create_internal_breakpoint (get_frame_pc (prev_frame),
6018 bp_watchpoint_scope);
6020 scope_breakpoint->enable_state = bp_enabled;
6022 /* Automatically delete the breakpoint when it hits. */
6023 scope_breakpoint->disposition = disp_del;
6025 /* Only break in the proper frame (help with recursion). */
6026 scope_breakpoint->frame_id = get_frame_id (prev_frame);
6028 /* Set the address at which we will stop. */
6029 scope_breakpoint->loc->requested_address
6030 = get_frame_pc (prev_frame);
6031 scope_breakpoint->loc->address
6032 = adjust_breakpoint_address (scope_breakpoint->loc->requested_address,
6033 scope_breakpoint->type);
6036 /* Now set up the breakpoint. */
6037 b = set_raw_breakpoint (sal, bp_type);
6038 set_breakpoint_count (breakpoint_count + 1);
6039 b->number = breakpoint_count;
6041 b->disposition = disp_donttouch;
6043 b->exp_valid_block = exp_valid_block;
6044 b->exp_string = savestring (exp_start, exp_end - exp_start);
6047 b->loc->cond = cond;
6049 b->cond_string = savestring (cond_start, cond_end - cond_start);
6054 b->watchpoint_frame = get_frame_id (frame);
6056 b->watchpoint_frame = null_frame_id;
6058 if (scope_breakpoint != NULL)
6060 /* The scope breakpoint is related to the watchpoint. We will
6061 need to act on them together. */
6062 b->related_breakpoint = scope_breakpoint;
6063 scope_breakpoint->related_breakpoint = b;
6066 value_free_to_mark (mark);
6068 update_global_location_list (1);
6071 /* Return count of locations need to be watched and can be handled
6072 in hardware. If the watchpoint can not be handled
6073 in hardware return zero. */
6076 can_use_hardware_watchpoint (struct value *v)
6078 int found_memory_cnt = 0;
6079 struct value *head = v;
6081 /* Did the user specifically forbid us to use hardware watchpoints? */
6082 if (!can_use_hw_watchpoints)
6085 /* Make sure that the value of the expression depends only upon
6086 memory contents, and values computed from them within GDB. If we
6087 find any register references or function calls, we can't use a
6088 hardware watchpoint.
6090 The idea here is that evaluating an expression generates a series
6091 of values, one holding the value of every subexpression. (The
6092 expression a*b+c has five subexpressions: a, b, a*b, c, and
6093 a*b+c.) GDB's values hold almost enough information to establish
6094 the criteria given above --- they identify memory lvalues,
6095 register lvalues, computed values, etcetera. So we can evaluate
6096 the expression, and then scan the chain of values that leaves
6097 behind to decide whether we can detect any possible change to the
6098 expression's final value using only hardware watchpoints.
6100 However, I don't think that the values returned by inferior
6101 function calls are special in any way. So this function may not
6102 notice that an expression involving an inferior function call
6103 can't be watched with hardware watchpoints. FIXME. */
6104 for (; v; v = value_next (v))
6106 if (VALUE_LVAL (v) == lval_memory)
6109 /* A lazy memory lvalue is one that GDB never needed to fetch;
6110 we either just used its address (e.g., `a' in `a.b') or
6111 we never needed it at all (e.g., `a' in `a,b'). */
6115 /* Ahh, memory we actually used! Check if we can cover
6116 it with hardware watchpoints. */
6117 struct type *vtype = check_typedef (value_type (v));
6119 /* We only watch structs and arrays if user asked for it
6120 explicitly, never if they just happen to appear in a
6121 middle of some value chain. */
6123 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
6124 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
6126 CORE_ADDR vaddr = VALUE_ADDRESS (v) + value_offset (v);
6127 int len = TYPE_LENGTH (value_type (v));
6129 if (!TARGET_REGION_OK_FOR_HW_WATCHPOINT (vaddr, len))
6136 else if (VALUE_LVAL (v) != not_lval
6137 && deprecated_value_modifiable (v) == 0)
6138 return 0; /* ??? What does this represent? */
6139 else if (VALUE_LVAL (v) == lval_register)
6140 return 0; /* cannot watch a register with a HW watchpoint */
6143 /* The expression itself looks suitable for using a hardware
6144 watchpoint, but give the target machine a chance to reject it. */
6145 return found_memory_cnt;
6149 watch_command_wrapper (char *arg, int from_tty)
6151 watch_command (arg, from_tty);
6155 watch_command (char *arg, int from_tty)
6157 watch_command_1 (arg, hw_write, from_tty);
6161 rwatch_command_wrapper (char *arg, int from_tty)
6163 rwatch_command (arg, from_tty);
6167 rwatch_command (char *arg, int from_tty)
6169 watch_command_1 (arg, hw_read, from_tty);
6173 awatch_command_wrapper (char *arg, int from_tty)
6175 awatch_command (arg, from_tty);
6179 awatch_command (char *arg, int from_tty)
6181 watch_command_1 (arg, hw_access, from_tty);
6185 /* Helper routines for the until_command routine in infcmd.c. Here
6186 because it uses the mechanisms of breakpoints. */
6188 struct until_break_command_continuation_args
6190 struct breakpoint *breakpoint;
6191 struct breakpoint *breakpoint2;
6194 /* This function is called by fetch_inferior_event via the
6195 cmd_continuation pointer, to complete the until command. It takes
6196 care of cleaning up the temporary breakpoints set up by the until
6199 until_break_command_continuation (void *arg)
6201 struct until_break_command_continuation_args *a = arg;
6203 delete_breakpoint (a->breakpoint);
6205 delete_breakpoint (a->breakpoint2);
6209 until_break_command (char *arg, int from_tty, int anywhere)
6211 struct symtabs_and_lines sals;
6212 struct symtab_and_line sal;
6213 struct frame_info *frame = get_selected_frame (NULL);
6214 struct frame_info *prev_frame = get_prev_frame (frame);
6215 struct breakpoint *breakpoint;
6216 struct breakpoint *breakpoint2 = NULL;
6217 struct cleanup *old_chain;
6219 clear_proceed_status ();
6221 /* Set a breakpoint where the user wants it and at return from
6224 if (default_breakpoint_valid)
6225 sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
6226 default_breakpoint_line, (char ***) NULL, NULL);
6228 sals = decode_line_1 (&arg, 1, (struct symtab *) NULL,
6229 0, (char ***) NULL, NULL);
6231 if (sals.nelts != 1)
6232 error (_("Couldn't get information on specified line."));
6235 xfree (sals.sals); /* malloc'd, so freed */
6238 error (_("Junk at end of arguments."));
6240 resolve_sal_pc (&sal);
6243 /* If the user told us to continue until a specified location,
6244 we don't specify a frame at which we need to stop. */
6245 breakpoint = set_momentary_breakpoint (sal, null_frame_id, bp_until);
6247 /* Otherwise, specify the current frame, because we want to stop only
6248 at the very same frame. */
6249 breakpoint = set_momentary_breakpoint (sal, get_frame_id (frame),
6252 old_chain = make_cleanup_delete_breakpoint (breakpoint);
6254 /* Keep within the current frame, or in frames called by the current
6258 sal = find_pc_line (get_frame_pc (prev_frame), 0);
6259 sal.pc = get_frame_pc (prev_frame);
6260 breakpoint2 = set_momentary_breakpoint (sal, get_frame_id (prev_frame),
6262 make_cleanup_delete_breakpoint (breakpoint2);
6265 proceed (-1, TARGET_SIGNAL_DEFAULT, 0);
6267 /* If we are running asynchronously, and proceed call above has actually
6268 managed to start the target, arrange for breakpoints to be
6269 deleted when the target stops. Otherwise, we're already stopped and
6270 delete breakpoints via cleanup chain. */
6272 if (target_can_async_p () && is_running (inferior_ptid))
6274 struct until_break_command_continuation_args *args;
6275 args = xmalloc (sizeof (*args));
6277 args->breakpoint = breakpoint;
6278 args->breakpoint2 = breakpoint2;
6280 discard_cleanups (old_chain);
6281 add_continuation (inferior_thread (),
6282 until_break_command_continuation, args,
6286 do_cleanups (old_chain);
6290 ep_skip_leading_whitespace (char **s)
6292 if ((s == NULL) || (*s == NULL))
6294 while (isspace (**s))
6298 /* This function attempts to parse an optional "if <cond>" clause
6299 from the arg string. If one is not found, it returns NULL.
6301 Else, it returns a pointer to the condition string. (It does not
6302 attempt to evaluate the string against a particular block.) And,
6303 it updates arg to point to the first character following the parsed
6304 if clause in the arg string. */
6307 ep_parse_optional_if_clause (char **arg)
6311 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
6314 /* Skip the "if" keyword. */
6317 /* Skip any extra leading whitespace, and record the start of the
6318 condition string. */
6319 ep_skip_leading_whitespace (arg);
6322 /* Assume that the condition occupies the remainder of the arg string. */
6323 (*arg) += strlen (cond_string);
6328 /* This function attempts to parse an optional filename from the arg
6329 string. If one is not found, it returns NULL.
6331 Else, it returns a pointer to the parsed filename. (This function
6332 makes no attempt to verify that a file of that name exists, or is
6333 accessible.) And, it updates arg to point to the first character
6334 following the parsed filename in the arg string.
6336 Note that clients needing to preserve the returned filename for
6337 future access should copy it to their own buffers. */
6339 ep_parse_optional_filename (char **arg)
6341 static char filename[1024];
6346 if ((*arg_p == '\0') || isspace (*arg_p))
6364 /* Commands to deal with catching events, such as signals, exceptions,
6365 process start/exit, etc. */
6369 catch_fork_temporary, catch_vfork_temporary,
6370 catch_fork_permanent, catch_vfork_permanent
6375 catch_fork_command_1 (char *arg, int from_tty, struct cmd_list_element *command)
6377 char *cond_string = NULL;
6378 catch_fork_kind fork_kind;
6381 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
6382 tempflag = (fork_kind == catch_fork_temporary
6383 || fork_kind == catch_vfork_temporary);
6387 ep_skip_leading_whitespace (&arg);
6389 /* The allowed syntax is:
6391 catch [v]fork if <cond>
6393 First, check if there's an if clause. */
6394 cond_string = ep_parse_optional_if_clause (&arg);
6396 if ((*arg != '\0') && !isspace (*arg))
6397 error (_("Junk at end of arguments."));
6399 /* If this target supports it, create a fork or vfork catchpoint
6400 and enable reporting of such events. */
6403 case catch_fork_temporary:
6404 case catch_fork_permanent:
6405 create_fork_vfork_event_catchpoint (tempflag, cond_string,
6406 &catch_fork_breakpoint_ops);
6408 case catch_vfork_temporary:
6409 case catch_vfork_permanent:
6410 create_fork_vfork_event_catchpoint (tempflag, cond_string,
6411 &catch_vfork_breakpoint_ops);
6414 error (_("unsupported or unknown fork kind; cannot catch it"));
6420 catch_exec_command_1 (char *arg, int from_tty, struct cmd_list_element *command)
6423 char *cond_string = NULL;
6425 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6429 ep_skip_leading_whitespace (&arg);
6431 /* The allowed syntax is:
6433 catch exec if <cond>
6435 First, check if there's an if clause. */
6436 cond_string = ep_parse_optional_if_clause (&arg);
6438 if ((*arg != '\0') && !isspace (*arg))
6439 error (_("Junk at end of arguments."));
6441 /* If this target supports it, create an exec catchpoint
6442 and enable reporting of such events. */
6443 create_catchpoint (tempflag, cond_string, &catch_exec_breakpoint_ops);
6446 static enum print_stop_action
6447 print_exception_catchpoint (struct breakpoint *b)
6449 int bp_temp, bp_throw;
6451 annotate_catchpoint (b->number);
6453 bp_throw = strstr (b->addr_string, "throw") != NULL;
6454 if (b->loc->address != b->loc->requested_address)
6455 breakpoint_adjustment_warning (b->loc->requested_address,
6458 bp_temp = b->loc->owner->disposition == disp_del;
6460 bp_temp ? "Temporary catchpoint "
6462 if (!ui_out_is_mi_like_p (uiout))
6463 ui_out_field_int (uiout, "bkptno", b->number);
6465 bp_throw ? " (exception thrown), "
6466 : " (exception caught), ");
6467 if (ui_out_is_mi_like_p (uiout))
6469 ui_out_field_string (uiout, "reason",
6470 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
6471 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6472 ui_out_field_int (uiout, "bkptno", b->number);
6474 return PRINT_SRC_AND_LOC;
6478 print_one_exception_catchpoint (struct breakpoint *b, CORE_ADDR *last_addr)
6480 struct value_print_options opts;
6481 get_user_print_options (&opts);
6482 if (opts.addressprint)
6485 if (b->loc == NULL || b->loc->shlib_disabled)
6486 ui_out_field_string (uiout, "addr", "<PENDING>");
6488 ui_out_field_core_addr (uiout, "addr", b->loc->address);
6492 *last_addr = b->loc->address;
6493 if (strstr (b->addr_string, "throw") != NULL)
6494 ui_out_field_string (uiout, "what", "exception throw");
6496 ui_out_field_string (uiout, "what", "exception catch");
6500 print_mention_exception_catchpoint (struct breakpoint *b)
6505 bp_temp = b->loc->owner->disposition == disp_del;
6506 bp_throw = strstr (b->addr_string, "throw") != NULL;
6507 ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
6508 : _("Catchpoint "));
6509 ui_out_field_int (uiout, "bkptno", b->number);
6510 ui_out_text (uiout, bp_throw ? _(" (throw)")
6514 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops = {
6517 NULL, /* breakpoint_hit */
6518 print_exception_catchpoint,
6519 print_one_exception_catchpoint,
6520 print_mention_exception_catchpoint
6524 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
6525 enum exception_event_kind ex_event, int from_tty)
6527 char *trigger_func_name;
6529 if (ex_event == EX_EVENT_CATCH)
6530 trigger_func_name = "__cxa_begin_catch";
6532 trigger_func_name = "__cxa_throw";
6534 break_command_really (trigger_func_name, cond_string, -1,
6535 0 /* condition and thread are valid. */,
6538 AUTO_BOOLEAN_TRUE /* pending */,
6539 &gnu_v3_exception_catchpoint_ops, from_tty);
6544 /* Deal with "catch catch" and "catch throw" commands */
6547 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
6548 int tempflag, int from_tty)
6550 char *cond_string = NULL;
6551 struct symtab_and_line *sal = NULL;
6555 ep_skip_leading_whitespace (&arg);
6557 cond_string = ep_parse_optional_if_clause (&arg);
6559 if ((*arg != '\0') && !isspace (*arg))
6560 error (_("Junk at end of arguments."));
6562 if ((ex_event != EX_EVENT_THROW) &&
6563 (ex_event != EX_EVENT_CATCH))
6564 error (_("Unsupported or unknown exception event; cannot catch it"));
6566 if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
6569 warning (_("Unsupported with this platform/compiler combination."));
6572 /* Implementation of "catch catch" command. */
6575 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
6577 int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6578 catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
6581 /* Implementation of "catch throw" command. */
6584 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
6586 int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6587 catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
6590 /* Create a breakpoint struct for Ada exception catchpoints. */
6593 create_ada_exception_breakpoint (struct symtab_and_line sal,
6597 struct expression *cond,
6598 struct breakpoint_ops *ops,
6602 struct breakpoint *b;
6606 describe_other_breakpoints (sal.pc, sal.section, -1);
6607 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
6608 version for exception catchpoints, because two catchpoints
6609 used for different exception names will use the same address.
6610 In this case, a "breakpoint ... also set at..." warning is
6611 unproductive. Besides. the warning phrasing is also a bit
6612 inapropriate, we should use the word catchpoint, and tell
6613 the user what type of catchpoint it is. The above is good
6614 enough for now, though. */
6617 b = set_raw_breakpoint (sal, bp_breakpoint);
6618 set_breakpoint_count (breakpoint_count + 1);
6620 b->enable_state = bp_enabled;
6621 b->disposition = tempflag ? disp_del : disp_donttouch;
6622 b->number = breakpoint_count;
6623 b->ignore_count = 0;
6624 b->loc->cond = cond;
6625 b->addr_string = addr_string;
6626 b->language = language_ada;
6627 b->cond_string = cond_string;
6628 b->exp_string = exp_string;
6633 update_global_location_list (1);
6636 /* Implement the "catch exception" command. */
6639 catch_ada_exception_command (char *arg, int from_tty,
6640 struct cmd_list_element *command)
6643 struct symtab_and_line sal;
6645 char *addr_string = NULL;
6646 char *exp_string = NULL;
6647 char *cond_string = NULL;
6648 struct expression *cond = NULL;
6649 struct breakpoint_ops *ops = NULL;
6651 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6655 sal = ada_decode_exception_location (arg, &addr_string, &exp_string,
6656 &cond_string, &cond, &ops);
6657 create_ada_exception_breakpoint (sal, addr_string, exp_string,
6658 cond_string, cond, ops, tempflag,
6662 /* Implement the "catch assert" command. */
6665 catch_assert_command (char *arg, int from_tty, struct cmd_list_element *command)
6668 struct symtab_and_line sal;
6669 char *addr_string = NULL;
6670 struct breakpoint_ops *ops = NULL;
6672 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
6676 sal = ada_decode_assert_location (arg, &addr_string, &ops);
6677 create_ada_exception_breakpoint (sal, addr_string, NULL, NULL, NULL, ops,
6678 tempflag, from_tty);
6682 catch_command (char *arg, int from_tty)
6684 error (_("Catch requires an event name."));
6689 tcatch_command (char *arg, int from_tty)
6691 error (_("Catch requires an event name."));
6694 /* Delete breakpoints by address or line. */
6697 clear_command (char *arg, int from_tty)
6699 struct breakpoint *b;
6700 VEC(breakpoint_p) *found = 0;
6703 struct symtabs_and_lines sals;
6704 struct symtab_and_line sal;
6709 sals = decode_line_spec (arg, 1);
6714 sals.sals = (struct symtab_and_line *)
6715 xmalloc (sizeof (struct symtab_and_line));
6716 make_cleanup (xfree, sals.sals);
6717 init_sal (&sal); /* initialize to zeroes */
6718 sal.line = default_breakpoint_line;
6719 sal.symtab = default_breakpoint_symtab;
6720 sal.pc = default_breakpoint_address;
6721 if (sal.symtab == 0)
6722 error (_("No source file specified."));
6730 /* We don't call resolve_sal_pc here. That's not
6731 as bad as it seems, because all existing breakpoints
6732 typically have both file/line and pc set. So, if
6733 clear is given file/line, we can match this to existing
6734 breakpoint without obtaining pc at all.
6736 We only support clearing given the address explicitly
6737 present in breakpoint table. Say, we've set breakpoint
6738 at file:line. There were several PC values for that file:line,
6739 due to optimization, all in one block.
6740 We've picked one PC value. If "clear" is issued with another
6741 PC corresponding to the same file:line, the breakpoint won't
6742 be cleared. We probably can still clear the breakpoint, but
6743 since the other PC value is never presented to user, user
6744 can only find it by guessing, and it does not seem important
6747 /* For each line spec given, delete bps which correspond
6748 to it. Do it in two passes, solely to preserve the current
6749 behavior that from_tty is forced true if we delete more than
6753 for (i = 0; i < sals.nelts; i++)
6755 /* If exact pc given, clear bpts at that pc.
6756 If line given (pc == 0), clear all bpts on specified line.
6757 If defaulting, clear all bpts on default line
6760 defaulting sal.pc != 0 tests to do
6765 1 0 <can't happen> */
6769 /* Find all matching breakpoints and add them to
6774 /* Are we going to delete b? */
6775 if (b->type != bp_none
6776 && b->type != bp_watchpoint
6777 && b->type != bp_hardware_watchpoint
6778 && b->type != bp_read_watchpoint
6779 && b->type != bp_access_watchpoint)
6781 struct bp_location *loc = b->loc;
6782 for (; loc; loc = loc->next)
6784 int pc_match = sal.pc
6785 && (loc->address == sal.pc)
6786 && (!section_is_overlay (loc->section)
6787 || loc->section == sal.section);
6788 int line_match = ((default_match || (0 == sal.pc))
6789 && b->source_file != NULL
6790 && sal.symtab != NULL
6791 && strcmp (b->source_file, sal.symtab->filename) == 0
6792 && b->line_number == sal.line);
6793 if (pc_match || line_match)
6802 VEC_safe_push(breakpoint_p, found, b);
6805 /* Now go thru the 'found' chain and delete them. */
6806 if (VEC_empty(breakpoint_p, found))
6809 error (_("No breakpoint at %s."), arg);
6811 error (_("No breakpoint at this line."));
6814 if (VEC_length(breakpoint_p, found) > 1)
6815 from_tty = 1; /* Always report if deleted more than one */
6818 if (VEC_length(breakpoint_p, found) == 1)
6819 printf_unfiltered (_("Deleted breakpoint "));
6821 printf_unfiltered (_("Deleted breakpoints "));
6823 breakpoints_changed ();
6825 for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
6828 printf_unfiltered ("%d ", b->number);
6829 delete_breakpoint (b);
6832 putchar_unfiltered ('\n');
6835 /* Delete breakpoint in BS if they are `delete' breakpoints and
6836 all breakpoints that are marked for deletion, whether hit or not.
6837 This is called after any breakpoint is hit, or after errors. */
6840 breakpoint_auto_delete (bpstat bs)
6842 struct breakpoint *b, *temp;
6844 for (; bs; bs = bs->next)
6845 if (bs->breakpoint_at
6846 && bs->breakpoint_at->owner
6847 && bs->breakpoint_at->owner->disposition == disp_del
6849 delete_breakpoint (bs->breakpoint_at->owner);
6851 ALL_BREAKPOINTS_SAFE (b, temp)
6853 if (b->disposition == disp_del_at_next_stop)
6854 delete_breakpoint (b);
6858 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
6859 into the inferior, only remove already-inserted locations that no
6860 longer should be inserted. Functions that delete a breakpoint or
6861 breakpoints should pass false, so that deleting a breakpoint
6862 doesn't have the side effect of inserting the locations of other
6863 breakpoints that are marked not-inserted, but should_be_inserted
6864 returns true on them.
6866 This behaviour is useful is situations close to tear-down -- e.g.,
6867 after an exec, while the target still has execution, but breakpoint
6868 shadows of the previous executable image should *NOT* be restored
6869 to the new image; or before detaching, where the target still has
6870 execution and wants to delete breakpoints from GDB's lists, and all
6871 breakpoints had already been removed from the inferior. */
6874 update_global_location_list (int should_insert)
6876 struct breakpoint *b;
6877 struct bp_location **next = &bp_location_chain;
6878 struct bp_location *loc;
6879 struct bp_location *loc2;
6880 struct gdb_exception e;
6881 VEC(bp_location_p) *old_locations = NULL;
6885 /* Store old locations for future reference. */
6886 for (loc = bp_location_chain; loc; loc = loc->global_next)
6887 VEC_safe_push (bp_location_p, old_locations, loc);
6889 bp_location_chain = NULL;
6892 for (loc = b->loc; loc; loc = loc->next)
6895 next = &(loc->global_next);
6900 /* Identify bp_location instances that are no longer present in the new
6901 list, and therefore should be freed. Note that it's not necessary that
6902 those locations should be removed from inferior -- if there's another
6903 location at the same address (previously marked as duplicate),
6904 we don't need to remove/insert the location. */
6905 for (ix = 0; VEC_iterate(bp_location_p, old_locations, ix, loc); ++ix)
6907 /* Tells if 'loc' is found amoung the new locations. If not, we
6909 int found_object = 0;
6910 /* Tells if the location should remain inserted in the target. */
6911 int keep_in_target = 0;
6913 for (loc2 = bp_location_chain; loc2; loc2 = loc2->global_next)
6920 /* If this location is no longer present, and inserted, look if there's
6921 maybe a new location at the same address. If so, mark that one
6922 inserted, and don't remove this one. This is needed so that we
6923 don't have a time window where a breakpoint at certain location is not
6928 /* If the location is inserted now, we might have to remove it. */
6930 if (found_object && should_be_inserted (loc))
6932 /* The location is still present in the location list, and still
6933 should be inserted. Don't do anything. */
6938 /* The location is either no longer present, or got disabled.
6939 See if there's another location at the same address, in which
6940 case we don't need to remove this one from the target. */
6941 if (breakpoint_address_is_meaningful (loc->owner))
6942 for (loc2 = bp_location_chain; loc2; loc2 = loc2->global_next)
6944 /* For the sake of should_insert_location. The
6945 call to check_duplicates will fix up this later. */
6946 loc2->duplicate = 0;
6947 if (should_be_inserted (loc2)
6948 && loc2 != loc && loc2->address == loc->address)
6951 loc2->target_info = loc->target_info;
6958 if (!keep_in_target)
6960 if (remove_breakpoint (loc, mark_uninserted))
6962 /* This is just about all we can do. We could keep this
6963 location on the global list, and try to remove it next
6964 time, but there's no particular reason why we will
6967 Note that at this point, loc->owner is still valid,
6968 as delete_breakpoint frees the breakpoint only
6969 after calling us. */
6970 printf_filtered (_("warning: Error removing breakpoint %d\n"),
6971 loc->owner->number);
6979 if (removed && non_stop)
6981 /* This location was removed from the targets. In non-stop mode,
6982 a race condition is possible where we've removed a breakpoint,
6983 but stop events for that breakpoint are already queued and will
6984 arrive later. To suppress spurious SIGTRAPs reported to user,
6985 we keep this breakpoint location for a bit, and will retire it
6986 after we see 3 * thread_count events.
6987 The theory here is that reporting of events should,
6988 "on the average", be fair, so after that many event we'll see
6989 events from all threads that have anything of interest, and no
6990 longer need to keep this breakpoint. This is just a
6991 heuristic, but if it's wrong, we'll report unexpected SIGTRAP,
6992 which is usability issue, but not a correctness problem. */
6993 loc->events_till_retirement = 3 * (thread_count () + 1);
6996 VEC_safe_push (bp_location_p, moribund_locations, loc);
6999 free_bp_location (loc);
7005 check_duplicates (b);
7008 if (breakpoints_always_inserted_mode () && should_insert
7009 && (target_has_execution
7010 || (gdbarch_has_global_solist (target_gdbarch)
7011 && target_supports_multi_process ())))
7012 insert_breakpoint_locations ();
7016 breakpoint_retire_moribund (void)
7018 struct bp_location *loc;
7021 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
7022 if (--(loc->events_till_retirement) == 0)
7024 free_bp_location (loc);
7025 VEC_unordered_remove (bp_location_p, moribund_locations, ix);
7031 update_global_location_list_nothrow (int inserting)
7033 struct gdb_exception e;
7034 TRY_CATCH (e, RETURN_MASK_ERROR)
7035 update_global_location_list (inserting);
7038 /* Clear BPT from a BPS. */
7040 bpstat_remove_breakpoint (bpstat bps, struct breakpoint *bpt)
7043 for (bs = bps; bs; bs = bs->next)
7044 if (bs->breakpoint_at && bs->breakpoint_at->owner == bpt)
7046 bs->breakpoint_at = NULL;
7048 /* bs->commands will be freed later. */
7052 /* Callback for iterate_over_threads. */
7054 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
7056 struct breakpoint *bpt = data;
7057 bpstat_remove_breakpoint (th->stop_bpstat, bpt);
7061 /* Delete a breakpoint and clean up all traces of it in the data
7065 delete_breakpoint (struct breakpoint *bpt)
7067 struct breakpoint *b;
7068 struct bp_location *loc, *next;
7070 gdb_assert (bpt != NULL);
7072 /* Has this bp already been deleted? This can happen because multiple
7073 lists can hold pointers to bp's. bpstat lists are especial culprits.
7075 One example of this happening is a watchpoint's scope bp. When the
7076 scope bp triggers, we notice that the watchpoint is out of scope, and
7077 delete it. We also delete its scope bp. But the scope bp is marked
7078 "auto-deleting", and is already on a bpstat. That bpstat is then
7079 checked for auto-deleting bp's, which are deleted.
7081 A real solution to this problem might involve reference counts in bp's,
7082 and/or giving them pointers back to their referencing bpstat's, and
7083 teaching delete_breakpoint to only free a bp's storage when no more
7084 references were extent. A cheaper bandaid was chosen. */
7085 if (bpt->type == bp_none)
7088 observer_notify_breakpoint_deleted (bpt->number);
7090 if (breakpoint_chain == bpt)
7091 breakpoint_chain = bpt->next;
7096 b->next = bpt->next;
7100 free_command_lines (&bpt->commands);
7101 if (bpt->cond_string != NULL)
7102 xfree (bpt->cond_string);
7103 if (bpt->addr_string != NULL)
7104 xfree (bpt->addr_string);
7105 if (bpt->exp != NULL)
7107 if (bpt->exp_string != NULL)
7108 xfree (bpt->exp_string);
7109 if (bpt->val != NULL)
7110 value_free (bpt->val);
7111 if (bpt->source_file != NULL)
7112 xfree (bpt->source_file);
7113 if (bpt->exec_pathname != NULL)
7114 xfree (bpt->exec_pathname);
7116 /* Be sure no bpstat's are pointing at it after it's been freed. */
7117 /* FIXME, how can we find all bpstat's?
7118 We just check stop_bpstat for now. Note that we cannot just
7119 remove bpstats pointing at bpt from the stop_bpstat list
7120 entirely, as breakpoint commands are associated with the bpstat;
7121 if we remove it here, then the later call to
7122 bpstat_do_actions (&stop_bpstat);
7123 in event-top.c won't do anything, and temporary breakpoints
7124 with commands won't work. */
7126 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
7128 /* Now that breakpoint is removed from breakpoint
7129 list, update the global location list. This
7130 will remove locations that used to belong to
7131 this breakpoint. Do this before freeing
7132 the breakpoint itself, since remove_breakpoint
7133 looks at location's owner. It might be better
7134 design to have location completely self-contained,
7135 but it's not the case now. */
7136 update_global_location_list (0);
7139 /* On the chance that someone will soon try again to delete this same
7140 bp, we mark it as deleted before freeing its storage. */
7141 bpt->type = bp_none;
7147 do_delete_breakpoint_cleanup (void *b)
7149 delete_breakpoint (b);
7153 make_cleanup_delete_breakpoint (struct breakpoint *b)
7155 return make_cleanup (do_delete_breakpoint_cleanup, b);
7159 delete_command (char *arg, int from_tty)
7161 struct breakpoint *b, *temp;
7167 int breaks_to_delete = 0;
7169 /* Delete all breakpoints if no argument.
7170 Do not delete internal or call-dummy breakpoints, these
7171 have to be deleted with an explicit breakpoint number argument. */
7174 if (b->type != bp_call_dummy &&
7175 b->type != bp_shlib_event &&
7176 b->type != bp_thread_event &&
7177 b->type != bp_overlay_event &&
7180 breaks_to_delete = 1;
7185 /* Ask user only if there are some breakpoints to delete. */
7187 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
7189 ALL_BREAKPOINTS_SAFE (b, temp)
7191 if (b->type != bp_call_dummy &&
7192 b->type != bp_shlib_event &&
7193 b->type != bp_thread_event &&
7194 b->type != bp_overlay_event &&
7196 delete_breakpoint (b);
7201 map_breakpoint_numbers (arg, delete_breakpoint);
7205 all_locations_are_pending (struct bp_location *loc)
7207 for (; loc; loc = loc->next)
7208 if (!loc->shlib_disabled)
7213 /* Subroutine of update_breakpoint_locations to simplify it.
7214 Return non-zero if multiple fns in list LOC have the same name.
7215 Null names are ignored. */
7218 ambiguous_names_p (struct bp_location *loc)
7220 struct bp_location *l;
7221 htab_t htab = htab_create_alloc (13, htab_hash_string,
7222 (int (*) (const void *, const void *)) streq,
7223 NULL, xcalloc, xfree);
7225 for (l = loc; l != NULL; l = l->next)
7228 const char *name = l->function_name;
7230 /* Allow for some names to be NULL, ignore them. */
7234 slot = (const char **) htab_find_slot (htab, (const void *) name,
7236 /* NOTE: We can assume slot != NULL here because xcalloc never returns
7251 update_breakpoint_locations (struct breakpoint *b,
7252 struct symtabs_and_lines sals)
7256 struct bp_location *existing_locations = b->loc;
7258 /* If there's no new locations, and all existing locations
7259 are pending, don't do anything. This optimizes
7260 the common case where all locations are in the same
7261 shared library, that was unloaded. We'd like to
7262 retain the location, so that when the library
7263 is loaded again, we don't loose the enabled/disabled
7264 status of the individual locations. */
7265 if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
7270 for (i = 0; i < sals.nelts; ++i)
7272 struct bp_location *new_loc =
7273 add_location_to_breakpoint (b, &(sals.sals[i]));
7275 /* Reparse conditions, they might contain references to the
7277 if (b->cond_string != NULL)
7279 struct gdb_exception e;
7282 TRY_CATCH (e, RETURN_MASK_ERROR)
7284 new_loc->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc),
7289 warning (_("failed to reevaluate condition for breakpoint %d: %s"),
7290 b->number, e.message);
7291 new_loc->enabled = 0;
7295 if (b->source_file != NULL)
7296 xfree (b->source_file);
7297 if (sals.sals[i].symtab == NULL)
7298 b->source_file = NULL;
7301 savestring (sals.sals[i].symtab->filename,
7302 strlen (sals.sals[i].symtab->filename));
7304 if (b->line_number == 0)
7305 b->line_number = sals.sals[i].line;
7308 /* Update locations of permanent breakpoints. */
7309 if (b->enable_state == bp_permanent)
7310 make_breakpoint_permanent (b);
7312 /* If possible, carry over 'disable' status from existing breakpoints. */
7314 struct bp_location *e = existing_locations;
7315 /* If there are multiple breakpoints with the same function name,
7316 e.g. for inline functions, comparing function names won't work.
7317 Instead compare pc addresses; this is just a heuristic as things
7318 may have moved, but in practice it gives the correct answer
7319 often enough until a better solution is found. */
7320 int have_ambiguous_names = ambiguous_names_p (b->loc);
7322 for (; e; e = e->next)
7324 if (!e->enabled && e->function_name)
7326 struct bp_location *l = b->loc;
7327 if (have_ambiguous_names)
7329 for (; l; l = l->next)
7330 if (e->address == l->address)
7338 for (; l; l = l->next)
7339 if (l->function_name
7340 && strcmp (e->function_name, l->function_name) == 0)
7350 update_global_location_list (1);
7354 /* Reset a breakpoint given it's struct breakpoint * BINT.
7355 The value we return ends up being the return value from catch_errors.
7356 Unused in this case. */
7359 breakpoint_re_set_one (void *bint)
7361 /* get past catch_errs */
7362 struct breakpoint *b = (struct breakpoint *) bint;
7366 int *not_found_ptr = ¬_found;
7367 struct symtabs_and_lines sals = {};
7368 struct symtabs_and_lines expanded;
7370 enum enable_state save_enable;
7371 struct gdb_exception e;
7377 warning (_("attempted to reset apparently deleted breakpoint #%d?"),
7381 case bp_hardware_breakpoint:
7382 if (b->addr_string == NULL)
7384 /* Anything without a string can't be re-set. */
7385 delete_breakpoint (b);
7389 set_language (b->language);
7390 input_radix = b->input_radix;
7392 TRY_CATCH (e, RETURN_MASK_ERROR)
7394 sals = decode_line_1 (&s, 1, (struct symtab *) NULL, 0, (char ***) NULL,
7399 int not_found_and_ok = 0;
7400 /* For pending breakpoints, it's expected that parsing
7401 will fail until the right shared library is loaded.
7402 User has already told to create pending breakpoints and
7403 don't need extra messages. If breakpoint is in bp_shlib_disabled
7404 state, then user already saw the message about that breakpoint
7405 being disabled, and don't want to see more errors. */
7407 && (b->condition_not_parsed
7408 || (b->loc && b->loc->shlib_disabled)
7409 || b->enable_state == bp_disabled))
7410 not_found_and_ok = 1;
7412 if (!not_found_and_ok)
7414 /* We surely don't want to warn about the same breakpoint
7415 10 times. One solution, implemented here, is disable
7416 the breakpoint on error. Another solution would be to
7417 have separate 'warning emitted' flag. Since this
7418 happens only when a binary has changed, I don't know
7419 which approach is better. */
7420 b->enable_state = bp_disabled;
7421 throw_exception (e);
7428 gdb_assert (sals.nelts == 1);
7429 resolve_sal_pc (&sals.sals[0]);
7430 if (b->condition_not_parsed && s && s[0])
7432 char *cond_string = 0;
7434 find_condition_and_thread (s, sals.sals[0].pc,
7435 &cond_string, &thread);
7437 b->cond_string = cond_string;
7439 b->condition_not_parsed = 0;
7441 expanded = expand_line_sal_maybe (sals.sals[0]);
7442 update_breakpoint_locations (b, expanded);
7448 case bp_hardware_watchpoint:
7449 case bp_read_watchpoint:
7450 case bp_access_watchpoint:
7451 /* Watchpoint can be either on expression using entirely global variables,
7452 or it can be on local variables.
7454 Watchpoints of the first kind are never auto-deleted, and even persist
7455 across program restarts. Since they can use variables from shared
7456 libraries, we need to reparse expression as libraries are loaded
7459 Watchpoints on local variables can also change meaning as result
7460 of solib event. For example, if a watchpoint uses both a local and
7461 a global variables in expression, it's a local watchpoint, but
7462 unloading of a shared library will make the expression invalid.
7463 This is not a very common use case, but we still re-evaluate
7464 expression, to avoid surprises to the user.
7466 Note that for local watchpoints, we re-evaluate it only if
7467 watchpoints frame id is still valid. If it's not, it means
7468 the watchpoint is out of scope and will be deleted soon. In fact,
7469 I'm not sure we'll ever be called in this case.
7471 If a local watchpoint's frame id is still valid, then
7472 b->exp_valid_block is likewise valid, and we can safely use it.
7474 Don't do anything about disabled watchpoints, since they will
7475 be reevaluated again when enabled. */
7476 update_watchpoint (b, 1 /* reparse */);
7478 /* We needn't really do anything to reset these, since the mask
7479 that requests them is unaffected by e.g., new libraries being
7485 printf_filtered (_("Deleting unknown breakpoint type %d\n"), b->type);
7487 /* Delete overlay event breakpoints; they will be reset later by
7488 breakpoint_re_set. */
7489 case bp_overlay_event:
7490 delete_breakpoint (b);
7493 /* This breakpoint is special, it's set up when the inferior
7494 starts and we really don't want to touch it. */
7495 case bp_shlib_event:
7497 /* Like bp_shlib_event, this breakpoint type is special.
7498 Once it is set up, we do not want to touch it. */
7499 case bp_thread_event:
7501 /* Keep temporary breakpoints, which can be encountered when we step
7502 over a dlopen call and SOLIB_ADD is resetting the breakpoints.
7503 Otherwise these should have been blown away via the cleanup chain
7504 or by breakpoint_init_inferior when we rerun the executable. */
7507 case bp_watchpoint_scope:
7509 case bp_step_resume:
7511 case bp_longjmp_resume:
7518 /* Re-set all breakpoints after symbols have been re-loaded. */
7520 breakpoint_re_set (void)
7522 struct breakpoint *b, *temp;
7523 enum language save_language;
7524 int save_input_radix;
7526 save_language = current_language->la_language;
7527 save_input_radix = input_radix;
7528 ALL_BREAKPOINTS_SAFE (b, temp)
7530 /* Format possible error msg */
7531 char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
7533 struct cleanup *cleanups = make_cleanup (xfree, message);
7534 catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
7535 do_cleanups (cleanups);
7537 set_language (save_language);
7538 input_radix = save_input_radix;
7540 create_overlay_event_breakpoint ("_ovly_debug_event");
7543 /* Reset the thread number of this breakpoint:
7545 - If the breakpoint is for all threads, leave it as-is.
7546 - Else, reset it to the current thread for inferior_ptid. */
7548 breakpoint_re_set_thread (struct breakpoint *b)
7550 if (b->thread != -1)
7552 if (in_thread_list (inferior_ptid))
7553 b->thread = pid_to_thread_id (inferior_ptid);
7557 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
7558 If from_tty is nonzero, it prints a message to that effect,
7559 which ends with a period (no newline). */
7562 set_ignore_count (int bptnum, int count, int from_tty)
7564 struct breakpoint *b;
7570 if (b->number == bptnum)
7572 b->ignore_count = count;
7576 printf_filtered (_("Will stop next time breakpoint %d is reached."),
7578 else if (count == 1)
7579 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
7582 printf_filtered (_("Will ignore next %d crossings of breakpoint %d."),
7585 breakpoints_changed ();
7586 observer_notify_breakpoint_modified (b->number);
7590 error (_("No breakpoint number %d."), bptnum);
7594 make_breakpoint_silent (struct breakpoint *b)
7596 /* Silence the breakpoint. */
7600 /* Command to set ignore-count of breakpoint N to COUNT. */
7603 ignore_command (char *args, int from_tty)
7609 error_no_arg (_("a breakpoint number"));
7611 num = get_number (&p);
7613 error (_("bad breakpoint number: '%s'"), args);
7615 error (_("Second argument (specified ignore-count) is missing."));
7617 set_ignore_count (num,
7618 longest_to_int (value_as_long (parse_and_eval (p))),
7621 printf_filtered ("\n");
7624 /* Call FUNCTION on each of the breakpoints
7625 whose numbers are given in ARGS. */
7628 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *))
7633 struct breakpoint *b, *tmp;
7637 error_no_arg (_("one or more breakpoint numbers"));
7644 num = get_number_or_range (&p1);
7647 warning (_("bad breakpoint number at or near '%s'"), p);
7651 ALL_BREAKPOINTS_SAFE (b, tmp)
7652 if (b->number == num)
7654 struct breakpoint *related_breakpoint = b->related_breakpoint;
7657 if (related_breakpoint)
7658 function (related_breakpoint);
7662 printf_unfiltered (_("No breakpoint number %d.\n"), num);
7668 static struct bp_location *
7669 find_location_by_number (char *number)
7671 char *dot = strchr (number, '.');
7675 struct breakpoint *b;
7676 struct bp_location *loc;
7681 bp_num = get_number_or_range (&p1);
7683 error (_("Bad breakpoint number '%s'"), number);
7686 if (b->number == bp_num)
7691 if (!b || b->number != bp_num)
7692 error (_("Bad breakpoint number '%s'"), number);
7695 loc_num = get_number_or_range (&p1);
7697 error (_("Bad breakpoint location number '%s'"), number);
7701 for (;loc_num && loc; --loc_num, loc = loc->next)
7704 error (_("Bad breakpoint location number '%s'"), dot+1);
7710 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
7711 If from_tty is nonzero, it prints a message to that effect,
7712 which ends with a period (no newline). */
7715 disable_breakpoint (struct breakpoint *bpt)
7717 /* Never disable a watchpoint scope breakpoint; we want to
7718 hit them when we leave scope so we can delete both the
7719 watchpoint and its scope breakpoint at that time. */
7720 if (bpt->type == bp_watchpoint_scope)
7723 /* You can't disable permanent breakpoints. */
7724 if (bpt->enable_state == bp_permanent)
7727 bpt->enable_state = bp_disabled;
7729 update_global_location_list (0);
7731 observer_notify_breakpoint_modified (bpt->number);
7735 disable_command (char *args, int from_tty)
7737 struct breakpoint *bpt;
7739 ALL_BREAKPOINTS (bpt)
7743 warning (_("attempted to disable apparently deleted breakpoint #%d?"),
7748 case bp_hardware_breakpoint:
7750 case bp_hardware_watchpoint:
7751 case bp_read_watchpoint:
7752 case bp_access_watchpoint:
7753 disable_breakpoint (bpt);
7757 else if (strchr (args, '.'))
7759 struct bp_location *loc = find_location_by_number (args);
7762 update_global_location_list (0);
7765 map_breakpoint_numbers (args, disable_breakpoint);
7769 do_enable_breakpoint (struct breakpoint *bpt, enum bpdisp disposition)
7771 int target_resources_ok, other_type_used;
7774 if (bpt->type == bp_hardware_breakpoint)
7777 i = hw_breakpoint_used_count ();
7778 target_resources_ok =
7779 TARGET_CAN_USE_HARDWARE_WATCHPOINT (bp_hardware_breakpoint,
7781 if (target_resources_ok == 0)
7782 error (_("No hardware breakpoint support in the target."));
7783 else if (target_resources_ok < 0)
7784 error (_("Hardware breakpoints used exceeds limit."));
7787 if (bpt->type == bp_watchpoint ||
7788 bpt->type == bp_hardware_watchpoint ||
7789 bpt->type == bp_read_watchpoint ||
7790 bpt->type == bp_access_watchpoint)
7792 struct frame_id saved_frame_id;
7794 saved_frame_id = get_frame_id (get_selected_frame (NULL));
7795 if (bpt->exp_valid_block != NULL)
7797 struct frame_info *fr =
7798 fr = frame_find_by_id (bpt->watchpoint_frame);
7801 printf_filtered (_("\
7802 Cannot enable watchpoint %d because the block in which its expression\n\
7803 is valid is not currently in scope.\n"), bpt->number);
7810 value_free (bpt->val);
7811 mark = value_mark ();
7812 fetch_watchpoint_value (bpt->exp, &bpt->val, NULL, NULL);
7814 release_value (bpt->val);
7817 if (bpt->type == bp_hardware_watchpoint ||
7818 bpt->type == bp_read_watchpoint ||
7819 bpt->type == bp_access_watchpoint)
7821 int i = hw_watchpoint_used_count (bpt->type, &other_type_used);
7822 int mem_cnt = can_use_hardware_watchpoint (bpt->val);
7824 /* Hack around 'unused var' error for some targets here */
7825 (void) mem_cnt, (void) i;
7826 target_resources_ok = TARGET_CAN_USE_HARDWARE_WATCHPOINT (
7827 bpt->type, i + mem_cnt, other_type_used);
7828 /* we can consider of type is bp_hardware_watchpoint, convert to
7829 bp_watchpoint in the following condition */
7830 if (target_resources_ok < 0)
7832 printf_filtered (_("\
7833 Cannot enable watchpoint %d because target watch resources\n\
7834 have been allocated for other watchpoints.\n"), bpt->number);
7835 value_free_to_mark (mark);
7840 select_frame (frame_find_by_id (saved_frame_id));
7841 value_free_to_mark (mark);
7844 if (bpt->enable_state != bp_permanent)
7845 bpt->enable_state = bp_enabled;
7846 bpt->disposition = disposition;
7847 update_global_location_list (1);
7848 breakpoints_changed ();
7850 observer_notify_breakpoint_modified (bpt->number);
7855 enable_breakpoint (struct breakpoint *bpt)
7857 do_enable_breakpoint (bpt, bpt->disposition);
7860 /* The enable command enables the specified breakpoints (or all defined
7861 breakpoints) so they once again become (or continue to be) effective
7862 in stopping the inferior. */
7865 enable_command (char *args, int from_tty)
7867 struct breakpoint *bpt;
7869 ALL_BREAKPOINTS (bpt)
7873 warning (_("attempted to enable apparently deleted breakpoint #%d?"),
7878 case bp_hardware_breakpoint:
7880 case bp_hardware_watchpoint:
7881 case bp_read_watchpoint:
7882 case bp_access_watchpoint:
7883 enable_breakpoint (bpt);
7887 else if (strchr (args, '.'))
7889 struct bp_location *loc = find_location_by_number (args);
7892 update_global_location_list (1);
7895 map_breakpoint_numbers (args, enable_breakpoint);
7899 enable_once_breakpoint (struct breakpoint *bpt)
7901 do_enable_breakpoint (bpt, disp_disable);
7905 enable_once_command (char *args, int from_tty)
7907 map_breakpoint_numbers (args, enable_once_breakpoint);
7911 enable_delete_breakpoint (struct breakpoint *bpt)
7913 do_enable_breakpoint (bpt, disp_del);
7917 enable_delete_command (char *args, int from_tty)
7919 map_breakpoint_numbers (args, enable_delete_breakpoint);
7923 set_breakpoint_cmd (char *args, int from_tty)
7928 show_breakpoint_cmd (char *args, int from_tty)
7932 /* Use default_breakpoint_'s, or nothing if they aren't valid. */
7934 struct symtabs_and_lines
7935 decode_line_spec_1 (char *string, int funfirstline)
7937 struct symtabs_and_lines sals;
7939 error (_("Empty line specification."));
7940 if (default_breakpoint_valid)
7941 sals = decode_line_1 (&string, funfirstline,
7942 default_breakpoint_symtab,
7943 default_breakpoint_line,
7944 (char ***) NULL, NULL);
7946 sals = decode_line_1 (&string, funfirstline,
7947 (struct symtab *) NULL, 0, (char ***) NULL, NULL);
7949 error (_("Junk at end of line specification: %s"), string);
7953 /* Create and insert a raw software breakpoint at PC. Return an
7954 identifier, which should be used to remove the breakpoint later.
7955 In general, places which call this should be using something on the
7956 breakpoint chain instead; this function should be eliminated
7960 deprecated_insert_raw_breakpoint (CORE_ADDR pc)
7962 struct bp_target_info *bp_tgt;
7964 bp_tgt = xmalloc (sizeof (struct bp_target_info));
7965 memset (bp_tgt, 0, sizeof (struct bp_target_info));
7967 bp_tgt->placed_address = pc;
7968 if (target_insert_breakpoint (bp_tgt) != 0)
7970 /* Could not insert the breakpoint. */
7978 /* Remove a breakpoint BP inserted by deprecated_insert_raw_breakpoint. */
7981 deprecated_remove_raw_breakpoint (void *bp)
7983 struct bp_target_info *bp_tgt = bp;
7986 ret = target_remove_breakpoint (bp_tgt);
7992 /* One (or perhaps two) breakpoints used for software single stepping. */
7994 static void *single_step_breakpoints[2];
7996 /* Create and insert a breakpoint for software single step. */
7999 insert_single_step_breakpoint (CORE_ADDR next_pc)
8003 if (single_step_breakpoints[0] == NULL)
8004 bpt_p = &single_step_breakpoints[0];
8007 gdb_assert (single_step_breakpoints[1] == NULL);
8008 bpt_p = &single_step_breakpoints[1];
8011 /* NOTE drow/2006-04-11: A future improvement to this function would be
8012 to only create the breakpoints once, and actually put them on the
8013 breakpoint chain. That would let us use set_raw_breakpoint. We could
8014 adjust the addresses each time they were needed. Doing this requires
8015 corresponding changes elsewhere where single step breakpoints are
8016 handled, however. So, for now, we use this. */
8018 *bpt_p = deprecated_insert_raw_breakpoint (next_pc);
8020 error (_("Could not insert single-step breakpoint at 0x%s"),
8021 paddr_nz (next_pc));
8024 /* Remove and delete any breakpoints used for software single step. */
8027 remove_single_step_breakpoints (void)
8029 gdb_assert (single_step_breakpoints[0] != NULL);
8031 /* See insert_single_step_breakpoint for more about this deprecated
8033 deprecated_remove_raw_breakpoint (single_step_breakpoints[0]);
8034 single_step_breakpoints[0] = NULL;
8036 if (single_step_breakpoints[1] != NULL)
8038 deprecated_remove_raw_breakpoint (single_step_breakpoints[1]);
8039 single_step_breakpoints[1] = NULL;
8043 /* Check whether a software single-step breakpoint is inserted at PC. */
8046 single_step_breakpoint_inserted_here_p (CORE_ADDR pc)
8050 for (i = 0; i < 2; i++)
8052 struct bp_target_info *bp_tgt = single_step_breakpoints[i];
8053 if (bp_tgt && bp_tgt->placed_address == pc)
8061 /* This help string is used for the break, hbreak, tbreak and thbreak commands.
8062 It is defined as a macro to prevent duplication.
8063 COMMAND should be a string constant containing the name of the command. */
8064 #define BREAK_ARGS_HELP(command) \
8065 command" [LOCATION] [thread THREADNUM] [if CONDITION]\n\
8066 LOCATION may be a line number, function name, or \"*\" and an address.\n\
8067 If a line number is specified, break at start of code for that line.\n\
8068 If a function is specified, break at start of code for that function.\n\
8069 If an address is specified, break at that exact address.\n\
8070 With no LOCATION, uses current execution address of selected stack frame.\n\
8071 This is useful for breaking on return to a stack frame.\n\
8073 THREADNUM is the number from \"info threads\".\n\
8074 CONDITION is a boolean expression.\n\
8076 Multiple breakpoints at one place are permitted, and useful if conditional.\n\
8078 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
8080 /* List of subcommands for "catch". */
8081 static struct cmd_list_element *catch_cmdlist;
8083 /* List of subcommands for "tcatch". */
8084 static struct cmd_list_element *tcatch_cmdlist;
8086 /* Like add_cmd, but add the command to both the "catch" and "tcatch"
8087 lists, and pass some additional user data to the command function. */
8089 add_catch_command (char *name, char *docstring,
8090 void (*sfunc) (char *args, int from_tty,
8091 struct cmd_list_element *command),
8092 void *user_data_catch,
8093 void *user_data_tcatch)
8095 struct cmd_list_element *command;
8097 command = add_cmd (name, class_breakpoint, NULL, docstring,
8099 set_cmd_sfunc (command, sfunc);
8100 set_cmd_context (command, user_data_catch);
8102 command = add_cmd (name, class_breakpoint, NULL, docstring,
8104 set_cmd_sfunc (command, sfunc);
8105 set_cmd_context (command, user_data_tcatch);
8109 _initialize_breakpoint (void)
8111 static struct cmd_list_element *breakpoint_set_cmdlist;
8112 static struct cmd_list_element *breakpoint_show_cmdlist;
8113 struct cmd_list_element *c;
8115 observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
8117 breakpoint_chain = 0;
8118 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
8119 before a breakpoint is set. */
8120 breakpoint_count = 0;
8122 add_com ("ignore", class_breakpoint, ignore_command, _("\
8123 Set ignore-count of breakpoint number N to COUNT.\n\
8124 Usage is `ignore N COUNT'."));
8126 add_com_alias ("bc", "ignore", class_breakpoint, 1);
8128 add_com ("commands", class_breakpoint, commands_command, _("\
8129 Set commands to be executed when a breakpoint is hit.\n\
8130 Give breakpoint number as argument after \"commands\".\n\
8131 With no argument, the targeted breakpoint is the last one set.\n\
8132 The commands themselves follow starting on the next line.\n\
8133 Type a line containing \"end\" to indicate the end of them.\n\
8134 Give \"silent\" as the first line to make the breakpoint silent;\n\
8135 then no output is printed when it is hit, except what the commands print."));
8137 add_com ("condition", class_breakpoint, condition_command, _("\
8138 Specify breakpoint number N to break only if COND is true.\n\
8139 Usage is `condition N COND', where N is an integer and COND is an\n\
8140 expression to be evaluated whenever breakpoint N is reached."));
8142 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
8143 Set a temporary breakpoint.\n\
8144 Like \"break\" except the breakpoint is only temporary,\n\
8145 so it will be deleted when hit. Equivalent to \"break\" followed\n\
8146 by using \"enable delete\" on the breakpoint number.\n\
8148 BREAK_ARGS_HELP ("tbreak")));
8149 set_cmd_completer (c, location_completer);
8151 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
8152 Set a hardware assisted breakpoint.\n\
8153 Like \"break\" except the breakpoint requires hardware support,\n\
8154 some target hardware may not have this support.\n\
8156 BREAK_ARGS_HELP ("hbreak")));
8157 set_cmd_completer (c, location_completer);
8159 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
8160 Set a temporary hardware assisted breakpoint.\n\
8161 Like \"hbreak\" except the breakpoint is only temporary,\n\
8162 so it will be deleted when hit.\n\
8164 BREAK_ARGS_HELP ("thbreak")));
8165 set_cmd_completer (c, location_completer);
8167 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
8168 Enable some breakpoints.\n\
8169 Give breakpoint numbers (separated by spaces) as arguments.\n\
8170 With no subcommand, breakpoints are enabled until you command otherwise.\n\
8171 This is used to cancel the effect of the \"disable\" command.\n\
8172 With a subcommand you can enable temporarily."),
8173 &enablelist, "enable ", 1, &cmdlist);
8175 add_com ("ab", class_breakpoint, enable_command, _("\
8176 Enable some breakpoints.\n\
8177 Give breakpoint numbers (separated by spaces) as arguments.\n\
8178 With no subcommand, breakpoints are enabled until you command otherwise.\n\
8179 This is used to cancel the effect of the \"disable\" command.\n\
8180 With a subcommand you can enable temporarily."));
8182 add_com_alias ("en", "enable", class_breakpoint, 1);
8184 add_abbrev_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
8185 Enable some breakpoints.\n\
8186 Give breakpoint numbers (separated by spaces) as arguments.\n\
8187 This is used to cancel the effect of the \"disable\" command.\n\
8188 May be abbreviated to simply \"enable\".\n"),
8189 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
8191 add_cmd ("once", no_class, enable_once_command, _("\
8192 Enable breakpoints for one hit. Give breakpoint numbers.\n\
8193 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
8196 add_cmd ("delete", no_class, enable_delete_command, _("\
8197 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
8198 If a breakpoint is hit while enabled in this fashion, it is deleted."),
8201 add_cmd ("delete", no_class, enable_delete_command, _("\
8202 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
8203 If a breakpoint is hit while enabled in this fashion, it is deleted."),
8206 add_cmd ("once", no_class, enable_once_command, _("\
8207 Enable breakpoints for one hit. Give breakpoint numbers.\n\
8208 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
8211 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
8212 Disable some breakpoints.\n\
8213 Arguments are breakpoint numbers with spaces in between.\n\
8214 To disable all breakpoints, give no argument.\n\
8215 A disabled breakpoint is not forgotten, but has no effect until reenabled."),
8216 &disablelist, "disable ", 1, &cmdlist);
8217 add_com_alias ("dis", "disable", class_breakpoint, 1);
8218 add_com_alias ("disa", "disable", class_breakpoint, 1);
8220 add_com ("sb", class_breakpoint, disable_command, _("\
8221 Disable some breakpoints.\n\
8222 Arguments are breakpoint numbers with spaces in between.\n\
8223 To disable all breakpoints, give no argument.\n\
8224 A disabled breakpoint is not forgotten, but has no effect until reenabled."));
8226 add_cmd ("breakpoints", class_alias, disable_command, _("\
8227 Disable some breakpoints.\n\
8228 Arguments are breakpoint numbers with spaces in between.\n\
8229 To disable all breakpoints, give no argument.\n\
8230 A disabled breakpoint is not forgotten, but has no effect until reenabled.\n\
8231 This command may be abbreviated \"disable\"."),
8234 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
8235 Delete some breakpoints or auto-display expressions.\n\
8236 Arguments are breakpoint numbers with spaces in between.\n\
8237 To delete all breakpoints, give no argument.\n\
8239 Also a prefix command for deletion of other GDB objects.\n\
8240 The \"unset\" command is also an alias for \"delete\"."),
8241 &deletelist, "delete ", 1, &cmdlist);
8242 add_com_alias ("d", "delete", class_breakpoint, 1);
8243 add_com_alias ("del", "delete", class_breakpoint, 1);
8245 add_com ("db", class_breakpoint, delete_command, _("\
8246 Delete some breakpoints.\n\
8247 Arguments are breakpoint numbers with spaces in between.\n\
8248 To delete all breakpoints, give no argument.\n"));
8250 add_cmd ("breakpoints", class_alias, delete_command, _("\
8251 Delete some breakpoints or auto-display expressions.\n\
8252 Arguments are breakpoint numbers with spaces in between.\n\
8253 To delete all breakpoints, give no argument.\n\
8254 This command may be abbreviated \"delete\"."),
8257 add_com ("clear", class_breakpoint, clear_command, _("\
8258 Clear breakpoint at specified line or function.\n\
8259 Argument may be line number, function name, or \"*\" and an address.\n\
8260 If line number is specified, all breakpoints in that line are cleared.\n\
8261 If function is specified, breakpoints at beginning of function are cleared.\n\
8262 If an address is specified, breakpoints at that address are cleared.\n\
8264 With no argument, clears all breakpoints in the line that the selected frame\n\
8267 See also the \"delete\" command which clears breakpoints by number."));
8269 c = add_com ("break", class_breakpoint, break_command, _("\
8270 Set breakpoint at specified line or function.\n"
8271 BREAK_ARGS_HELP ("break")));
8272 set_cmd_completer (c, location_completer);
8274 add_com_alias ("b", "break", class_run, 1);
8275 add_com_alias ("br", "break", class_run, 1);
8276 add_com_alias ("bre", "break", class_run, 1);
8277 add_com_alias ("brea", "break", class_run, 1);
8281 add_com_alias ("ba", "break", class_breakpoint, 1);
8282 add_com_alias ("bu", "ubreak", class_breakpoint, 1);
8287 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
8288 Break in function/address or break at a line in the current file."),
8289 &stoplist, "stop ", 1, &cmdlist);
8290 add_cmd ("in", class_breakpoint, stopin_command,
8291 _("Break in function or address."), &stoplist);
8292 add_cmd ("at", class_breakpoint, stopat_command,
8293 _("Break at a line in the current file."), &stoplist);
8294 add_com ("status", class_info, breakpoints_info, _("\
8295 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
8296 The \"Type\" column indicates one of:\n\
8297 \tbreakpoint - normal breakpoint\n\
8298 \twatchpoint - watchpoint\n\
8299 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
8300 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
8301 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
8302 address and file/line number respectively.\n\
8304 Convenience variable \"$_\" and default examine address for \"x\"\n\
8305 are set to the address of the last breakpoint listed unless the command\n\
8306 is prefixed with \"server \".\n\n\
8307 Convenience variable \"$bpnum\" contains the number of the last\n\
8311 add_info ("breakpoints", breakpoints_info, _("\
8312 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
8313 The \"Type\" column indicates one of:\n\
8314 \tbreakpoint - normal breakpoint\n\
8315 \twatchpoint - watchpoint\n\
8316 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
8317 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
8318 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
8319 address and file/line number respectively.\n\
8321 Convenience variable \"$_\" and default examine address for \"x\"\n\
8322 are set to the address of the last breakpoint listed unless the command\n\
8323 is prefixed with \"server \".\n\n\
8324 Convenience variable \"$bpnum\" contains the number of the last\n\
8328 add_com ("lb", class_breakpoint, breakpoints_info, _("\
8329 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
8330 The \"Type\" column indicates one of:\n\
8331 \tbreakpoint - normal breakpoint\n\
8332 \twatchpoint - watchpoint\n\
8333 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
8334 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
8335 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
8336 address and file/line number respectively.\n\
8338 Convenience variable \"$_\" and default examine address for \"x\"\n\
8339 are set to the address of the last breakpoint listed unless the command\n\
8340 is prefixed with \"server \".\n\n\
8341 Convenience variable \"$bpnum\" contains the number of the last\n\
8344 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
8345 Status of all breakpoints, or breakpoint number NUMBER.\n\
8346 The \"Type\" column indicates one of:\n\
8347 \tbreakpoint - normal breakpoint\n\
8348 \twatchpoint - watchpoint\n\
8349 \tlongjmp - internal breakpoint used to step through longjmp()\n\
8350 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
8351 \tuntil - internal breakpoint used by the \"until\" command\n\
8352 \tfinish - internal breakpoint used by the \"finish\" command\n\
8353 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
8354 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
8355 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
8356 address and file/line number respectively.\n\
8358 Convenience variable \"$_\" and default examine address for \"x\"\n\
8359 are set to the address of the last breakpoint listed unless the command\n\
8360 is prefixed with \"server \".\n\n\
8361 Convenience variable \"$bpnum\" contains the number of the last\n\
8363 &maintenanceinfolist);
8365 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
8366 Set catchpoints to catch events."),
8367 &catch_cmdlist, "catch ",
8368 0/*allow-unknown*/, &cmdlist);
8370 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
8371 Set temporary catchpoints to catch events."),
8372 &tcatch_cmdlist, "tcatch ",
8373 0/*allow-unknown*/, &cmdlist);
8375 /* Add catch and tcatch sub-commands. */
8376 add_catch_command ("catch", _("\
8377 Catch an exception, when caught.\n\
8378 With an argument, catch only exceptions with the given name."),
8379 catch_catch_command,
8382 add_catch_command ("throw", _("\
8383 Catch an exception, when thrown.\n\
8384 With an argument, catch only exceptions with the given name."),
8385 catch_throw_command,
8388 add_catch_command ("fork", _("Catch calls to fork."),
8389 catch_fork_command_1,
8390 (void *) (uintptr_t) catch_fork_permanent,
8391 (void *) (uintptr_t) catch_fork_temporary);
8392 add_catch_command ("vfork", _("Catch calls to vfork."),
8393 catch_fork_command_1,
8394 (void *) (uintptr_t) catch_vfork_permanent,
8395 (void *) (uintptr_t) catch_vfork_temporary);
8396 add_catch_command ("exec", _("Catch calls to exec."),
8397 catch_exec_command_1,
8400 add_catch_command ("exception", _("\
8401 Catch Ada exceptions, when raised.\n\
8402 With an argument, catch only exceptions with the given name."),
8403 catch_ada_exception_command,
8406 add_catch_command ("assert", _("\
8407 Catch failed Ada assertions, when raised.\n\
8408 With an argument, catch only exceptions with the given name."),
8409 catch_assert_command,
8413 c = add_com ("watch", class_breakpoint, watch_command, _("\
8414 Set a watchpoint for an expression.\n\
8415 A watchpoint stops execution of your program whenever the value of\n\
8416 an expression changes."));
8417 set_cmd_completer (c, expression_completer);
8419 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
8420 Set a read watchpoint for an expression.\n\
8421 A watchpoint stops execution of your program whenever the value of\n\
8422 an expression is read."));
8423 set_cmd_completer (c, expression_completer);
8425 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
8426 Set a watchpoint for an expression.\n\
8427 A watchpoint stops execution of your program whenever the value of\n\
8428 an expression is either read or written."));
8429 set_cmd_completer (c, expression_completer);
8431 add_info ("watchpoints", breakpoints_info,
8432 _("Synonym for ``info breakpoints''."));
8435 /* XXX: cagney/2005-02-23: This should be a boolean, and should
8436 respond to changes - contrary to the description. */
8437 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
8438 &can_use_hw_watchpoints, _("\
8439 Set debugger's willingness to use watchpoint hardware."), _("\
8440 Show debugger's willingness to use watchpoint hardware."), _("\
8441 If zero, gdb will not use hardware for new watchpoints, even if\n\
8442 such is available. (However, any hardware watchpoints that were\n\
8443 created before setting this to nonzero, will continue to use watchpoint\n\
8446 show_can_use_hw_watchpoints,
8447 &setlist, &showlist);
8449 can_use_hw_watchpoints = 1;
8451 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
8452 Breakpoint specific settings\n\
8453 Configure various breakpoint-specific variables such as\n\
8454 pending breakpoint behavior"),
8455 &breakpoint_set_cmdlist, "set breakpoint ",
8456 0/*allow-unknown*/, &setlist);
8457 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
8458 Breakpoint specific settings\n\
8459 Configure various breakpoint-specific variables such as\n\
8460 pending breakpoint behavior"),
8461 &breakpoint_show_cmdlist, "show breakpoint ",
8462 0/*allow-unknown*/, &showlist);
8464 add_setshow_auto_boolean_cmd ("pending", no_class,
8465 &pending_break_support, _("\
8466 Set debugger's behavior regarding pending breakpoints."), _("\
8467 Show debugger's behavior regarding pending breakpoints."), _("\
8468 If on, an unrecognized breakpoint location will cause gdb to create a\n\
8469 pending breakpoint. If off, an unrecognized breakpoint location results in\n\
8470 an error. If auto, an unrecognized breakpoint location results in a\n\
8471 user-query to see if a pending breakpoint should be created."),
8473 show_pending_break_support,
8474 &breakpoint_set_cmdlist,
8475 &breakpoint_show_cmdlist);
8477 pending_break_support = AUTO_BOOLEAN_AUTO;
8479 add_setshow_boolean_cmd ("auto-hw", no_class,
8480 &automatic_hardware_breakpoints, _("\
8481 Set automatic usage of hardware breakpoints."), _("\
8482 Show automatic usage of hardware breakpoints."), _("\
8483 If set, the debugger will automatically use hardware breakpoints for\n\
8484 breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
8485 a warning will be emitted for such breakpoints."),
8487 show_automatic_hardware_breakpoints,
8488 &breakpoint_set_cmdlist,
8489 &breakpoint_show_cmdlist);
8491 add_setshow_enum_cmd ("always-inserted", class_support,
8492 always_inserted_enums, &always_inserted_mode, _("\
8493 Set mode for inserting breakpoints."), _("\
8494 Show mode for inserting breakpoints."), _("\
8495 When this mode is off, breakpoints are inserted in inferior when it is\n\
8496 resumed, and removed when execution stops. When this mode is on,\n\
8497 breakpoints are inserted immediately and removed only when the user\n\
8498 deletes the breakpoint. When this mode is auto (which is the default),\n\
8499 the behaviour depends on the non-stop setting (see help set non-stop).\n\
8500 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
8501 behaves as if always-inserted mode is on; if gdb is controlling the\n\
8502 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
8504 &show_always_inserted_mode,
8505 &breakpoint_set_cmdlist,
8506 &breakpoint_show_cmdlist);
8508 automatic_hardware_breakpoints = 1;