811cdfb4fe0f29962d8754b5bb438803f6cd60ce
[deliverable/binutils-gdb.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5 2008, 2009 Free Software Foundation, Inc.
6
7 This file is part of GDB.
8
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.
13
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.
18
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/>. */
21
22 #include "defs.h"
23 #include "arch-utils.h"
24 #include <ctype.h>
25 #include "hashtab.h"
26 #include "symtab.h"
27 #include "frame.h"
28 #include "breakpoint.h"
29 #include "tracepoint.h"
30 #include "gdbtypes.h"
31 #include "expression.h"
32 #include "gdbcore.h"
33 #include "gdbcmd.h"
34 #include "value.h"
35 #include "command.h"
36 #include "inferior.h"
37 #include "gdbthread.h"
38 #include "target.h"
39 #include "language.h"
40 #include "gdb_string.h"
41 #include "demangle.h"
42 #include "annotate.h"
43 #include "symfile.h"
44 #include "objfiles.h"
45 #include "source.h"
46 #include "linespec.h"
47 #include "completer.h"
48 #include "gdb.h"
49 #include "ui-out.h"
50 #include "cli/cli-script.h"
51 #include "gdb_assert.h"
52 #include "block.h"
53 #include "solib.h"
54 #include "solist.h"
55 #include "observer.h"
56 #include "exceptions.h"
57 #include "memattr.h"
58 #include "ada-lang.h"
59 #include "top.h"
60 #include "wrapper.h"
61 #include "valprint.h"
62 #include "jit.h"
63 #include "xml-syscall.h"
64
65 /* readline include files */
66 #include "readline/readline.h"
67 #include "readline/history.h"
68
69 /* readline defines this. */
70 #undef savestring
71
72 #include "mi/mi-common.h"
73
74 /* Arguments to pass as context to some catch command handlers. */
75 #define CATCH_PERMANENT ((void *) (uintptr_t) 0)
76 #define CATCH_TEMPORARY ((void *) (uintptr_t) 1)
77
78 /* Prototypes for local functions. */
79
80 static void enable_delete_command (char *, int);
81
82 static void enable_delete_breakpoint (struct breakpoint *);
83
84 static void enable_once_command (char *, int);
85
86 static void enable_once_breakpoint (struct breakpoint *);
87
88 static void disable_command (char *, int);
89
90 static void enable_command (char *, int);
91
92 static void map_breakpoint_numbers (char *, void (*)(struct breakpoint *));
93
94 static void ignore_command (char *, int);
95
96 static int breakpoint_re_set_one (void *);
97
98 static void clear_command (char *, int);
99
100 static void catch_command (char *, int);
101
102 static void watch_command (char *, int);
103
104 static int can_use_hardware_watchpoint (struct value *);
105
106 static void break_command_1 (char *, int, int);
107
108 static void mention (struct breakpoint *);
109
110 /* This function is used in gdbtk sources and thus can not be made static. */
111 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
112 struct symtab_and_line,
113 enum bptype);
114
115 static void check_duplicates (struct breakpoint *);
116
117 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
118
119 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
120 CORE_ADDR bpaddr,
121 enum bptype bptype);
122
123 static void describe_other_breakpoints (struct gdbarch *, CORE_ADDR,
124 struct obj_section *, int);
125
126 static void breakpoints_info (char *, int);
127
128 static void breakpoint_1 (int, int);
129
130 static bpstat bpstat_alloc (const struct bp_location *, bpstat);
131
132 static int breakpoint_cond_eval (void *);
133
134 static void cleanup_executing_breakpoints (void *);
135
136 static void commands_command (char *, int);
137
138 static void condition_command (char *, int);
139
140 static int get_number_trailer (char **, int);
141
142 void set_breakpoint_count (int);
143
144 typedef enum
145 {
146 mark_inserted,
147 mark_uninserted
148 }
149 insertion_state_t;
150
151 static int remove_breakpoint (struct bp_location *, insertion_state_t);
152
153 static enum print_stop_action print_it_typical (bpstat);
154
155 static enum print_stop_action print_bp_stop_message (bpstat bs);
156
157 static int watchpoint_check (void *);
158
159 static void maintenance_info_breakpoints (char *, int);
160
161 static int hw_breakpoint_used_count (void);
162
163 static int hw_watchpoint_used_count (enum bptype, int *);
164
165 static void hbreak_command (char *, int);
166
167 static void thbreak_command (char *, int);
168
169 static void watch_command_1 (char *, int, int);
170
171 static void rwatch_command (char *, int);
172
173 static void awatch_command (char *, int);
174
175 static void do_enable_breakpoint (struct breakpoint *, enum bpdisp);
176
177 static void stop_command (char *arg, int from_tty);
178
179 static void stopin_command (char *arg, int from_tty);
180
181 static void stopat_command (char *arg, int from_tty);
182
183 static char *ep_parse_optional_if_clause (char **arg);
184
185 static char *ep_parse_optional_filename (char **arg);
186
187 static void catch_exception_command_1 (enum exception_event_kind ex_event,
188 char *arg, int tempflag, int from_tty);
189
190 static void tcatch_command (char *arg, int from_tty);
191
192 static void ep_skip_leading_whitespace (char **s);
193
194 static int single_step_breakpoint_inserted_here_p (CORE_ADDR pc);
195
196 static void free_bp_location (struct bp_location *loc);
197
198 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
199
200 static void update_global_location_list (int);
201
202 static void update_global_location_list_nothrow (int);
203
204 static int is_hardware_watchpoint (struct breakpoint *bpt);
205
206 static void insert_breakpoint_locations (void);
207
208 static int syscall_catchpoint_p (struct breakpoint *b);
209
210 static void tracepoints_info (char *, int);
211
212 static void delete_trace_command (char *, int);
213
214 static void enable_trace_command (char *, int);
215
216 static void disable_trace_command (char *, int);
217
218 static void trace_pass_command (char *, int);
219
220 static void skip_prologue_sal (struct symtab_and_line *sal);
221
222
223 /* Flag indicating that a command has proceeded the inferior past the
224 current breakpoint. */
225
226 static int breakpoint_proceeded;
227
228 static const char *
229 bpdisp_text (enum bpdisp disp)
230 {
231 /* NOTE: the following values are a part of MI protocol and represent
232 values of 'disp' field returned when inferior stops at a breakpoint. */
233 static char *bpdisps[] = {"del", "dstp", "dis", "keep"};
234 return bpdisps[(int) disp];
235 }
236
237 /* Prototypes for exported functions. */
238 /* If FALSE, gdb will not use hardware support for watchpoints, even
239 if such is available. */
240 static int can_use_hw_watchpoints;
241
242 static void
243 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
244 struct cmd_list_element *c,
245 const char *value)
246 {
247 fprintf_filtered (file, _("\
248 Debugger's willingness to use watchpoint hardware is %s.\n"),
249 value);
250 }
251
252 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
253 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
254 for unrecognized breakpoint locations.
255 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
256 static enum auto_boolean pending_break_support;
257 static void
258 show_pending_break_support (struct ui_file *file, int from_tty,
259 struct cmd_list_element *c,
260 const char *value)
261 {
262 fprintf_filtered (file, _("\
263 Debugger's behavior regarding pending breakpoints is %s.\n"),
264 value);
265 }
266
267 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
268 set with "break" but falling in read-only memory.
269 If 0, gdb will warn about such breakpoints, but won't automatically
270 use hardware breakpoints. */
271 static int automatic_hardware_breakpoints;
272 static void
273 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
274 struct cmd_list_element *c,
275 const char *value)
276 {
277 fprintf_filtered (file, _("\
278 Automatic usage of hardware breakpoints is %s.\n"),
279 value);
280 }
281
282 /* If on, gdb will keep breakpoints inserted even as inferior is
283 stopped, and immediately insert any new breakpoints. If off, gdb
284 will insert breakpoints into inferior only when resuming it, and
285 will remove breakpoints upon stop. If auto, GDB will behave as ON
286 if in non-stop mode, and as OFF if all-stop mode.*/
287
288 static const char always_inserted_auto[] = "auto";
289 static const char always_inserted_on[] = "on";
290 static const char always_inserted_off[] = "off";
291 static const char *always_inserted_enums[] = {
292 always_inserted_auto,
293 always_inserted_off,
294 always_inserted_on,
295 NULL
296 };
297 static const char *always_inserted_mode = always_inserted_auto;
298 static void
299 show_always_inserted_mode (struct ui_file *file, int from_tty,
300 struct cmd_list_element *c, const char *value)
301 {
302 if (always_inserted_mode == always_inserted_auto)
303 fprintf_filtered (file, _("\
304 Always inserted breakpoint mode is %s (currently %s).\n"),
305 value,
306 breakpoints_always_inserted_mode () ? "on" : "off");
307 else
308 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"), value);
309 }
310
311 int
312 breakpoints_always_inserted_mode (void)
313 {
314 return (always_inserted_mode == always_inserted_on
315 || (always_inserted_mode == always_inserted_auto && non_stop));
316 }
317
318 void _initialize_breakpoint (void);
319
320 /* Are we executing breakpoint commands? */
321 static int executing_breakpoint_commands;
322
323 /* Are overlay event breakpoints enabled? */
324 static int overlay_events_enabled;
325
326 /* Are we executing startup code? */
327 static int executing_startup;
328
329 /* Walk the following statement or block through all breakpoints.
330 ALL_BREAKPOINTS_SAFE does so even if the statment deletes the current
331 breakpoint. */
332
333 #define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
334
335 #define ALL_BREAKPOINTS_SAFE(B,TMP) \
336 for (B = breakpoint_chain; \
337 B ? (TMP=B->next, 1): 0; \
338 B = TMP)
339
340 /* Similar iterators for the low-level breakpoints. */
341
342 #define ALL_BP_LOCATIONS(B) for (B = bp_location_chain; B; B = B->global_next)
343
344 #define ALL_BP_LOCATIONS_SAFE(B,TMP) \
345 for (B = bp_location_chain; \
346 B ? (TMP=B->global_next, 1): 0; \
347 B = TMP)
348
349 /* Iterator for tracepoints only. */
350
351 #define ALL_TRACEPOINTS(B) \
352 for (B = breakpoint_chain; B; B = B->next) \
353 if ((B)->type == bp_tracepoint)
354
355 /* Chains of all breakpoints defined. */
356
357 struct breakpoint *breakpoint_chain;
358
359 struct bp_location *bp_location_chain;
360
361 /* The locations that no longer correspond to any breakpoint,
362 unlinked from bp_location_chain, but for which a hit
363 may still be reported by a target. */
364 VEC(bp_location_p) *moribund_locations = NULL;
365
366 /* Number of last breakpoint made. */
367
368 int breakpoint_count;
369
370 /* Number of last tracepoint made. */
371
372 int tracepoint_count;
373
374 /* Return whether a breakpoint is an active enabled breakpoint. */
375 static int
376 breakpoint_enabled (struct breakpoint *b)
377 {
378 return (b->enable_state == bp_enabled);
379 }
380
381 /* Set breakpoint count to NUM. */
382
383 void
384 set_breakpoint_count (int num)
385 {
386 breakpoint_count = num;
387 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
388 }
389
390 /* Used in run_command to zero the hit count when a new run starts. */
391
392 void
393 clear_breakpoint_hit_counts (void)
394 {
395 struct breakpoint *b;
396
397 ALL_BREAKPOINTS (b)
398 b->hit_count = 0;
399 }
400
401 /* Default address, symtab and line to put a breakpoint at
402 for "break" command with no arg.
403 if default_breakpoint_valid is zero, the other three are
404 not valid, and "break" with no arg is an error.
405
406 This set by print_stack_frame, which calls set_default_breakpoint. */
407
408 int default_breakpoint_valid;
409 CORE_ADDR default_breakpoint_address;
410 struct symtab *default_breakpoint_symtab;
411 int default_breakpoint_line;
412 \f
413 /* *PP is a string denoting a breakpoint. Get the number of the breakpoint.
414 Advance *PP after the string and any trailing whitespace.
415
416 Currently the string can either be a number or "$" followed by the name
417 of a convenience variable. Making it an expression wouldn't work well
418 for map_breakpoint_numbers (e.g. "4 + 5 + 6").
419
420 If the string is a NULL pointer, that denotes the last breakpoint.
421
422 TRAILER is a character which can be found after the number; most
423 commonly this is `-'. If you don't want a trailer, use \0. */
424 static int
425 get_number_trailer (char **pp, int trailer)
426 {
427 int retval = 0; /* default */
428 char *p = *pp;
429
430 if (p == NULL)
431 /* Empty line means refer to the last breakpoint. */
432 return breakpoint_count;
433 else if (*p == '$')
434 {
435 /* Make a copy of the name, so we can null-terminate it
436 to pass to lookup_internalvar(). */
437 char *varname;
438 char *start = ++p;
439 LONGEST val;
440
441 while (isalnum (*p) || *p == '_')
442 p++;
443 varname = (char *) alloca (p - start + 1);
444 strncpy (varname, start, p - start);
445 varname[p - start] = '\0';
446 if (get_internalvar_integer (lookup_internalvar (varname), &val))
447 retval = (int) val;
448 else
449 {
450 printf_filtered (_("Convenience variable must have integer value.\n"));
451 retval = 0;
452 }
453 }
454 else
455 {
456 if (*p == '-')
457 ++p;
458 while (*p >= '0' && *p <= '9')
459 ++p;
460 if (p == *pp)
461 /* There is no number here. (e.g. "cond a == b"). */
462 {
463 /* Skip non-numeric token */
464 while (*p && !isspace((int) *p))
465 ++p;
466 /* Return zero, which caller must interpret as error. */
467 retval = 0;
468 }
469 else
470 retval = atoi (*pp);
471 }
472 if (!(isspace (*p) || *p == '\0' || *p == trailer))
473 {
474 /* Trailing junk: return 0 and let caller print error msg. */
475 while (!(isspace (*p) || *p == '\0' || *p == trailer))
476 ++p;
477 retval = 0;
478 }
479 while (isspace (*p))
480 p++;
481 *pp = p;
482 return retval;
483 }
484
485
486 /* Like get_number_trailer, but don't allow a trailer. */
487 int
488 get_number (char **pp)
489 {
490 return get_number_trailer (pp, '\0');
491 }
492
493 /* Parse a number or a range.
494 * A number will be of the form handled by get_number.
495 * A range will be of the form <number1> - <number2>, and
496 * will represent all the integers between number1 and number2,
497 * inclusive.
498 *
499 * While processing a range, this fuction is called iteratively;
500 * At each call it will return the next value in the range.
501 *
502 * At the beginning of parsing a range, the char pointer PP will
503 * be advanced past <number1> and left pointing at the '-' token.
504 * Subsequent calls will not advance the pointer until the range
505 * is completed. The call that completes the range will advance
506 * pointer PP past <number2>.
507 */
508
509 int
510 get_number_or_range (char **pp)
511 {
512 static int last_retval, end_value;
513 static char *end_ptr;
514 static int in_range = 0;
515
516 if (**pp != '-')
517 {
518 /* Default case: pp is pointing either to a solo number,
519 or to the first number of a range. */
520 last_retval = get_number_trailer (pp, '-');
521 if (**pp == '-')
522 {
523 char **temp;
524
525 /* This is the start of a range (<number1> - <number2>).
526 Skip the '-', parse and remember the second number,
527 and also remember the end of the final token. */
528
529 temp = &end_ptr;
530 end_ptr = *pp + 1;
531 while (isspace ((int) *end_ptr))
532 end_ptr++; /* skip white space */
533 end_value = get_number (temp);
534 if (end_value < last_retval)
535 {
536 error (_("inverted range"));
537 }
538 else if (end_value == last_retval)
539 {
540 /* degenerate range (number1 == number2). Advance the
541 token pointer so that the range will be treated as a
542 single number. */
543 *pp = end_ptr;
544 }
545 else
546 in_range = 1;
547 }
548 }
549 else if (! in_range)
550 error (_("negative value"));
551 else
552 {
553 /* pp points to the '-' that betokens a range. All
554 number-parsing has already been done. Return the next
555 integer value (one greater than the saved previous value).
556 Do not advance the token pointer 'pp' until the end of range
557 is reached. */
558
559 if (++last_retval == end_value)
560 {
561 /* End of range reached; advance token pointer. */
562 *pp = end_ptr;
563 in_range = 0;
564 }
565 }
566 return last_retval;
567 }
568
569 /* Return the breakpoint with the specified number, or NULL
570 if the number does not refer to an existing breakpoint. */
571
572 struct breakpoint *
573 get_breakpoint (int num)
574 {
575 struct breakpoint *b;
576
577 ALL_BREAKPOINTS (b)
578 if (b->number == num)
579 return b;
580
581 return NULL;
582 }
583
584 \f
585 /* condition N EXP -- set break condition of breakpoint N to EXP. */
586
587 static void
588 condition_command (char *arg, int from_tty)
589 {
590 struct breakpoint *b;
591 char *p;
592 int bnum;
593
594 if (arg == 0)
595 error_no_arg (_("breakpoint number"));
596
597 p = arg;
598 bnum = get_number (&p);
599 if (bnum == 0)
600 error (_("Bad breakpoint argument: '%s'"), arg);
601
602 ALL_BREAKPOINTS (b)
603 if (b->number == bnum)
604 {
605 struct bp_location *loc = b->loc;
606 for (; loc; loc = loc->next)
607 {
608 if (loc->cond)
609 {
610 xfree (loc->cond);
611 loc->cond = 0;
612 }
613 }
614 if (b->cond_string != NULL)
615 xfree (b->cond_string);
616
617 if (*p == 0)
618 {
619 b->cond_string = NULL;
620 if (from_tty)
621 printf_filtered (_("Breakpoint %d now unconditional.\n"), bnum);
622 }
623 else
624 {
625 arg = p;
626 /* I don't know if it matters whether this is the string the user
627 typed in or the decompiled expression. */
628 b->cond_string = xstrdup (arg);
629 b->condition_not_parsed = 0;
630 for (loc = b->loc; loc; loc = loc->next)
631 {
632 arg = p;
633 loc->cond =
634 parse_exp_1 (&arg, block_for_pc (loc->address), 0);
635 if (*arg)
636 error (_("Junk at end of expression"));
637 }
638 }
639 breakpoints_changed ();
640 observer_notify_breakpoint_modified (b->number);
641 return;
642 }
643
644 error (_("No breakpoint number %d."), bnum);
645 }
646
647 /* Set the command list of B to COMMANDS. */
648
649 void
650 breakpoint_set_commands (struct breakpoint *b, struct command_line *commands)
651 {
652 free_command_lines (&b->commands);
653 b->commands = commands;
654 breakpoints_changed ();
655 observer_notify_breakpoint_modified (b->number);
656 }
657
658 static void
659 commands_command (char *arg, int from_tty)
660 {
661 struct breakpoint *b;
662 char *p;
663 int bnum;
664 struct command_line *l;
665
666 /* If we allowed this, we would have problems with when to
667 free the storage, if we change the commands currently
668 being read from. */
669
670 if (executing_breakpoint_commands)
671 error (_("Can't use the \"commands\" command among a breakpoint's commands."));
672
673 p = arg;
674 bnum = get_number (&p);
675
676 if (p && *p)
677 error (_("Unexpected extra arguments following breakpoint number."));
678
679 ALL_BREAKPOINTS (b)
680 if (b->number == bnum)
681 {
682 char *tmpbuf = xstrprintf ("Type commands for when breakpoint %d is hit, one per line.",
683 bnum);
684 struct cleanup *cleanups = make_cleanup (xfree, tmpbuf);
685 l = read_command_lines (tmpbuf, from_tty, 1);
686 do_cleanups (cleanups);
687 breakpoint_set_commands (b, l);
688 return;
689 }
690 error (_("No breakpoint number %d."), bnum);
691 }
692
693 /* Like commands_command, but instead of reading the commands from
694 input stream, takes them from an already parsed command structure.
695
696 This is used by cli-script.c to DTRT with breakpoint commands
697 that are part of if and while bodies. */
698 enum command_control_type
699 commands_from_control_command (char *arg, struct command_line *cmd)
700 {
701 struct breakpoint *b;
702 char *p;
703 int bnum;
704
705 /* If we allowed this, we would have problems with when to
706 free the storage, if we change the commands currently
707 being read from. */
708
709 if (executing_breakpoint_commands)
710 error (_("Can't use the \"commands\" command among a breakpoint's commands."));
711
712 /* An empty string for the breakpoint number means the last
713 breakpoint, but get_number expects a NULL pointer. */
714 if (arg && !*arg)
715 p = NULL;
716 else
717 p = arg;
718 bnum = get_number (&p);
719
720 if (p && *p)
721 error (_("Unexpected extra arguments following breakpoint number."));
722
723 ALL_BREAKPOINTS (b)
724 if (b->number == bnum)
725 {
726 free_command_lines (&b->commands);
727 if (cmd->body_count != 1)
728 error (_("Invalid \"commands\" block structure."));
729 /* We need to copy the commands because if/while will free the
730 list after it finishes execution. */
731 b->commands = copy_command_lines (cmd->body_list[0]);
732 breakpoints_changed ();
733 observer_notify_breakpoint_modified (b->number);
734 return simple_control;
735 }
736 error (_("No breakpoint number %d."), bnum);
737 }
738 \f
739 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
740 by replacing any memory breakpoints with their shadowed contents. */
741
742 void
743 breakpoint_restore_shadows (gdb_byte *buf, ULONGEST memaddr, LONGEST len)
744 {
745 struct bp_location *b;
746 CORE_ADDR bp_addr = 0;
747 int bp_size = 0;
748 int bptoffset = 0;
749
750 ALL_BP_LOCATIONS (b)
751 {
752 if (b->owner->type == bp_none)
753 warning (_("reading through apparently deleted breakpoint #%d?"),
754 b->owner->number);
755
756 if (b->loc_type != bp_loc_software_breakpoint)
757 continue;
758 if (!b->inserted)
759 continue;
760 /* Addresses and length of the part of the breakpoint that
761 we need to copy. */
762 bp_addr = b->target_info.placed_address;
763 bp_size = b->target_info.shadow_len;
764 if (bp_size == 0)
765 /* bp isn't valid, or doesn't shadow memory. */
766 continue;
767
768 if (bp_addr + bp_size <= memaddr)
769 /* The breakpoint is entirely before the chunk of memory we
770 are reading. */
771 continue;
772
773 if (bp_addr >= memaddr + len)
774 /* The breakpoint is entirely after the chunk of memory we are
775 reading. */
776 continue;
777
778 /* Offset within shadow_contents. */
779 if (bp_addr < memaddr)
780 {
781 /* Only copy the second part of the breakpoint. */
782 bp_size -= memaddr - bp_addr;
783 bptoffset = memaddr - bp_addr;
784 bp_addr = memaddr;
785 }
786
787 if (bp_addr + bp_size > memaddr + len)
788 {
789 /* Only copy the first part of the breakpoint. */
790 bp_size -= (bp_addr + bp_size) - (memaddr + len);
791 }
792
793 memcpy (buf + bp_addr - memaddr,
794 b->target_info.shadow_contents + bptoffset, bp_size);
795 }
796 }
797 \f
798
799 /* A wrapper function for inserting catchpoints. */
800 static void
801 insert_catchpoint (struct ui_out *uo, void *args)
802 {
803 struct breakpoint *b = (struct breakpoint *) args;
804 int val = -1;
805
806 gdb_assert (b->type == bp_catchpoint);
807 gdb_assert (b->ops != NULL && b->ops->insert != NULL);
808
809 b->ops->insert (b);
810 }
811
812 static int
813 is_hardware_watchpoint (struct breakpoint *bpt)
814 {
815 return (bpt->type == bp_hardware_watchpoint
816 || bpt->type == bp_read_watchpoint
817 || bpt->type == bp_access_watchpoint);
818 }
819
820 /* Find the current value of a watchpoint on EXP. Return the value in
821 *VALP and *RESULTP and the chain of intermediate and final values
822 in *VAL_CHAIN. RESULTP and VAL_CHAIN may be NULL if the caller does
823 not need them.
824
825 If a memory error occurs while evaluating the expression, *RESULTP will
826 be set to NULL. *RESULTP may be a lazy value, if the result could
827 not be read from memory. It is used to determine whether a value
828 is user-specified (we should watch the whole value) or intermediate
829 (we should watch only the bit used to locate the final value).
830
831 If the final value, or any intermediate value, could not be read
832 from memory, *VALP will be set to NULL. *VAL_CHAIN will still be
833 set to any referenced values. *VALP will never be a lazy value.
834 This is the value which we store in struct breakpoint.
835
836 If VAL_CHAIN is non-NULL, *VAL_CHAIN will be released from the
837 value chain. The caller must free the values individually. If
838 VAL_CHAIN is NULL, all generated values will be left on the value
839 chain. */
840
841 static void
842 fetch_watchpoint_value (struct expression *exp, struct value **valp,
843 struct value **resultp, struct value **val_chain)
844 {
845 struct value *mark, *new_mark, *result;
846 volatile struct gdb_exception ex;
847
848 *valp = NULL;
849 if (resultp)
850 *resultp = NULL;
851 if (val_chain)
852 *val_chain = NULL;
853
854 /* Evaluate the expression. */
855 mark = value_mark ();
856 result = NULL;
857
858 TRY_CATCH (ex, RETURN_MASK_ALL)
859 {
860 result = evaluate_expression (exp);
861 }
862 if (ex.reason < 0)
863 {
864 /* Ignore memory errors, we want watchpoints pointing at
865 inaccessible memory to still be created; otherwise, throw the
866 error to some higher catcher. */
867 switch (ex.error)
868 {
869 case MEMORY_ERROR:
870 break;
871 default:
872 throw_exception (ex);
873 break;
874 }
875 }
876
877 new_mark = value_mark ();
878 if (mark == new_mark)
879 return;
880 if (resultp)
881 *resultp = result;
882
883 /* Make sure it's not lazy, so that after the target stops again we
884 have a non-lazy previous value to compare with. */
885 if (result != NULL
886 && (!value_lazy (result) || gdb_value_fetch_lazy (result)))
887 *valp = result;
888
889 if (val_chain)
890 {
891 /* Return the chain of intermediate values. We use this to
892 decide which addresses to watch. */
893 *val_chain = new_mark;
894 value_release_to_mark (mark);
895 }
896 }
897
898 /* Assuming that B is a watchpoint:
899 - Reparse watchpoint expression, if REPARSE is non-zero
900 - Evaluate expression and store the result in B->val
901 - Evaluate the condition if there is one, and store the result
902 in b->loc->cond.
903 - Update the list of values that must be watched in B->loc.
904
905 If the watchpoint disposition is disp_del_at_next_stop, then do nothing.
906 If this is local watchpoint that is out of scope, delete it. */
907 static void
908 update_watchpoint (struct breakpoint *b, int reparse)
909 {
910 int within_current_scope;
911 struct frame_id saved_frame_id;
912 struct bp_location *loc;
913 bpstat bs;
914
915 /* We don't free locations. They are stored in bp_location_chain and
916 update_global_locations will eventually delete them and remove
917 breakpoints if needed. */
918 b->loc = NULL;
919
920 if (b->disposition == disp_del_at_next_stop)
921 return;
922
923 /* Save the current frame's ID so we can restore it after
924 evaluating the watchpoint expression on its own frame. */
925 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
926 took a frame parameter, so that we didn't have to change the
927 selected frame. */
928 saved_frame_id = get_frame_id (get_selected_frame (NULL));
929
930 /* Determine if the watchpoint is within scope. */
931 if (b->exp_valid_block == NULL)
932 within_current_scope = 1;
933 else
934 {
935 struct frame_info *fi;
936 fi = frame_find_by_id (b->watchpoint_frame);
937 within_current_scope = (fi != NULL);
938 if (within_current_scope)
939 select_frame (fi);
940 }
941
942 if (within_current_scope && reparse)
943 {
944 char *s;
945 if (b->exp)
946 {
947 xfree (b->exp);
948 b->exp = NULL;
949 }
950 s = b->exp_string;
951 b->exp = parse_exp_1 (&s, b->exp_valid_block, 0);
952 /* If the meaning of expression itself changed, the old value is
953 no longer relevant. We don't want to report a watchpoint hit
954 to the user when the old value and the new value may actually
955 be completely different objects. */
956 value_free (b->val);
957 b->val = NULL;
958 b->val_valid = 0;
959 }
960
961 /* If we failed to parse the expression, for example because
962 it refers to a global variable in a not-yet-loaded shared library,
963 don't try to insert watchpoint. We don't automatically delete
964 such watchpoint, though, since failure to parse expression
965 is different from out-of-scope watchpoint. */
966 if (within_current_scope && b->exp)
967 {
968 struct value *val_chain, *v, *result, *next;
969
970 fetch_watchpoint_value (b->exp, &v, &result, &val_chain);
971
972 /* Avoid setting b->val if it's already set. The meaning of
973 b->val is 'the last value' user saw, and we should update
974 it only if we reported that last value to user. As it
975 happens, the code that reports it updates b->val directly. */
976 if (!b->val_valid)
977 {
978 b->val = v;
979 b->val_valid = 1;
980 }
981
982 /* Change the type of breakpoint between hardware assisted or an
983 ordinary watchpoint depending on the hardware support and free
984 hardware slots. REPARSE is set when the inferior is started. */
985 if ((b->type == bp_watchpoint || b->type == bp_hardware_watchpoint)
986 && reparse)
987 {
988 int i, mem_cnt, other_type_used;
989
990 i = hw_watchpoint_used_count (bp_hardware_watchpoint,
991 &other_type_used);
992 mem_cnt = can_use_hardware_watchpoint (val_chain);
993
994 if (!mem_cnt)
995 b->type = bp_watchpoint;
996 else
997 {
998 int target_resources_ok = target_can_use_hardware_watchpoint
999 (bp_hardware_watchpoint, i + mem_cnt, other_type_used);
1000 if (target_resources_ok <= 0)
1001 b->type = bp_watchpoint;
1002 else
1003 b->type = bp_hardware_watchpoint;
1004 }
1005 }
1006
1007 /* Look at each value on the value chain. */
1008 for (v = val_chain; v; v = next)
1009 {
1010 /* If it's a memory location, and GDB actually needed
1011 its contents to evaluate the expression, then we
1012 must watch it. If the first value returned is
1013 still lazy, that means an error occurred reading it;
1014 watch it anyway in case it becomes readable. */
1015 if (VALUE_LVAL (v) == lval_memory
1016 && (v == val_chain || ! value_lazy (v)))
1017 {
1018 struct type *vtype = check_typedef (value_type (v));
1019
1020 /* We only watch structs and arrays if user asked
1021 for it explicitly, never if they just happen to
1022 appear in the middle of some value chain. */
1023 if (v == result
1024 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1025 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1026 {
1027 CORE_ADDR addr;
1028 int len, type;
1029 struct bp_location *loc, **tmp;
1030
1031 addr = value_address (v);
1032 len = TYPE_LENGTH (value_type (v));
1033 type = hw_write;
1034 if (b->type == bp_read_watchpoint)
1035 type = hw_read;
1036 else if (b->type == bp_access_watchpoint)
1037 type = hw_access;
1038
1039 loc = allocate_bp_location (b);
1040 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1041 ;
1042 *tmp = loc;
1043 loc->gdbarch = get_type_arch (value_type (v));
1044 loc->address = addr;
1045 loc->length = len;
1046 loc->watchpoint_type = type;
1047 }
1048 }
1049
1050 next = value_next (v);
1051 if (v != b->val)
1052 value_free (v);
1053 }
1054
1055 /* We just regenerated the list of breakpoint locations.
1056 The new location does not have its condition field set to anything
1057 and therefore, we must always reparse the cond_string, independently
1058 of the value of the reparse flag. */
1059 if (b->cond_string != NULL)
1060 {
1061 char *s = b->cond_string;
1062 b->loc->cond = parse_exp_1 (&s, b->exp_valid_block, 0);
1063 }
1064 }
1065 else if (!within_current_scope)
1066 {
1067 printf_filtered (_("\
1068 Watchpoint %d deleted because the program has left the block \n\
1069 in which its expression is valid.\n"),
1070 b->number);
1071 if (b->related_breakpoint)
1072 b->related_breakpoint->disposition = disp_del_at_next_stop;
1073 b->disposition = disp_del_at_next_stop;
1074 }
1075
1076 /* Restore the selected frame. */
1077 select_frame (frame_find_by_id (saved_frame_id));
1078 }
1079
1080
1081 /* Returns 1 iff breakpoint location should be
1082 inserted in the inferior. */
1083 static int
1084 should_be_inserted (struct bp_location *bpt)
1085 {
1086 if (!breakpoint_enabled (bpt->owner))
1087 return 0;
1088
1089 if (bpt->owner->disposition == disp_del_at_next_stop)
1090 return 0;
1091
1092 if (!bpt->enabled || bpt->shlib_disabled || bpt->duplicate)
1093 return 0;
1094
1095 /* Tracepoints are inserted by the target at a time of its choosing,
1096 not by us. */
1097 if (bpt->owner->type == bp_tracepoint)
1098 return 0;
1099
1100 return 1;
1101 }
1102
1103 /* Insert a low-level "breakpoint" of some type. BPT is the breakpoint.
1104 Any error messages are printed to TMP_ERROR_STREAM; and DISABLED_BREAKS,
1105 and HW_BREAKPOINT_ERROR are used to report problems.
1106
1107 NOTE drow/2003-09-09: This routine could be broken down to an object-style
1108 method for each breakpoint or catchpoint type. */
1109 static int
1110 insert_bp_location (struct bp_location *bpt,
1111 struct ui_file *tmp_error_stream,
1112 int *disabled_breaks,
1113 int *hw_breakpoint_error)
1114 {
1115 int val = 0;
1116
1117 if (!should_be_inserted (bpt) || bpt->inserted)
1118 return 0;
1119
1120 /* Initialize the target-specific information. */
1121 memset (&bpt->target_info, 0, sizeof (bpt->target_info));
1122 bpt->target_info.placed_address = bpt->address;
1123
1124 if (bpt->loc_type == bp_loc_software_breakpoint
1125 || bpt->loc_type == bp_loc_hardware_breakpoint)
1126 {
1127 if (bpt->owner->type != bp_hardware_breakpoint)
1128 {
1129 /* If the explicitly specified breakpoint type
1130 is not hardware breakpoint, check the memory map to see
1131 if the breakpoint address is in read only memory or not.
1132 Two important cases are:
1133 - location type is not hardware breakpoint, memory
1134 is readonly. We change the type of the location to
1135 hardware breakpoint.
1136 - location type is hardware breakpoint, memory is read-write.
1137 This means we've previously made the location hardware one, but
1138 then the memory map changed, so we undo.
1139
1140 When breakpoints are removed, remove_breakpoints will
1141 use location types we've just set here, the only possible
1142 problem is that memory map has changed during running program,
1143 but it's not going to work anyway with current gdb. */
1144 struct mem_region *mr
1145 = lookup_mem_region (bpt->target_info.placed_address);
1146
1147 if (mr)
1148 {
1149 if (automatic_hardware_breakpoints)
1150 {
1151 int changed = 0;
1152 enum bp_loc_type new_type;
1153
1154 if (mr->attrib.mode != MEM_RW)
1155 new_type = bp_loc_hardware_breakpoint;
1156 else
1157 new_type = bp_loc_software_breakpoint;
1158
1159 if (new_type != bpt->loc_type)
1160 {
1161 static int said = 0;
1162 bpt->loc_type = new_type;
1163 if (!said)
1164 {
1165 fprintf_filtered (gdb_stdout, _("\
1166 Note: automatically using hardware breakpoints for read-only addresses.\n"));
1167 said = 1;
1168 }
1169 }
1170 }
1171 else if (bpt->loc_type == bp_loc_software_breakpoint
1172 && mr->attrib.mode != MEM_RW)
1173 warning (_("cannot set software breakpoint at readonly address %s"),
1174 paddress (bpt->gdbarch, bpt->address));
1175 }
1176 }
1177
1178 /* First check to see if we have to handle an overlay. */
1179 if (overlay_debugging == ovly_off
1180 || bpt->section == NULL
1181 || !(section_is_overlay (bpt->section)))
1182 {
1183 /* No overlay handling: just set the breakpoint. */
1184
1185 if (bpt->loc_type == bp_loc_hardware_breakpoint)
1186 val = target_insert_hw_breakpoint (bpt->gdbarch,
1187 &bpt->target_info);
1188 else
1189 val = target_insert_breakpoint (bpt->gdbarch,
1190 &bpt->target_info);
1191 }
1192 else
1193 {
1194 /* This breakpoint is in an overlay section.
1195 Shall we set a breakpoint at the LMA? */
1196 if (!overlay_events_enabled)
1197 {
1198 /* Yes -- overlay event support is not active,
1199 so we must try to set a breakpoint at the LMA.
1200 This will not work for a hardware breakpoint. */
1201 if (bpt->loc_type == bp_loc_hardware_breakpoint)
1202 warning (_("hardware breakpoint %d not supported in overlay!"),
1203 bpt->owner->number);
1204 else
1205 {
1206 CORE_ADDR addr = overlay_unmapped_address (bpt->address,
1207 bpt->section);
1208 /* Set a software (trap) breakpoint at the LMA. */
1209 bpt->overlay_target_info = bpt->target_info;
1210 bpt->overlay_target_info.placed_address = addr;
1211 val = target_insert_breakpoint (bpt->gdbarch,
1212 &bpt->overlay_target_info);
1213 if (val != 0)
1214 fprintf_unfiltered (tmp_error_stream,
1215 "Overlay breakpoint %d failed: in ROM?\n",
1216 bpt->owner->number);
1217 }
1218 }
1219 /* Shall we set a breakpoint at the VMA? */
1220 if (section_is_mapped (bpt->section))
1221 {
1222 /* Yes. This overlay section is mapped into memory. */
1223 if (bpt->loc_type == bp_loc_hardware_breakpoint)
1224 val = target_insert_hw_breakpoint (bpt->gdbarch,
1225 &bpt->target_info);
1226 else
1227 val = target_insert_breakpoint (bpt->gdbarch,
1228 &bpt->target_info);
1229 }
1230 else
1231 {
1232 /* No. This breakpoint will not be inserted.
1233 No error, but do not mark the bp as 'inserted'. */
1234 return 0;
1235 }
1236 }
1237
1238 if (val)
1239 {
1240 /* Can't set the breakpoint. */
1241 if (solib_name_from_address (bpt->address))
1242 {
1243 /* See also: disable_breakpoints_in_shlibs. */
1244 val = 0;
1245 bpt->shlib_disabled = 1;
1246 if (!*disabled_breaks)
1247 {
1248 fprintf_unfiltered (tmp_error_stream,
1249 "Cannot insert breakpoint %d.\n",
1250 bpt->owner->number);
1251 fprintf_unfiltered (tmp_error_stream,
1252 "Temporarily disabling shared library breakpoints:\n");
1253 }
1254 *disabled_breaks = 1;
1255 fprintf_unfiltered (tmp_error_stream,
1256 "breakpoint #%d\n", bpt->owner->number);
1257 }
1258 else
1259 {
1260 if (bpt->loc_type == bp_loc_hardware_breakpoint)
1261 {
1262 *hw_breakpoint_error = 1;
1263 fprintf_unfiltered (tmp_error_stream,
1264 "Cannot insert hardware breakpoint %d.\n",
1265 bpt->owner->number);
1266 }
1267 else
1268 {
1269 fprintf_unfiltered (tmp_error_stream,
1270 "Cannot insert breakpoint %d.\n",
1271 bpt->owner->number);
1272 fprintf_filtered (tmp_error_stream,
1273 "Error accessing memory address ");
1274 fputs_filtered (paddress (bpt->gdbarch, bpt->address),
1275 tmp_error_stream);
1276 fprintf_filtered (tmp_error_stream, ": %s.\n",
1277 safe_strerror (val));
1278 }
1279
1280 }
1281 }
1282 else
1283 bpt->inserted = 1;
1284
1285 return val;
1286 }
1287
1288 else if (bpt->loc_type == bp_loc_hardware_watchpoint
1289 /* NOTE drow/2003-09-08: This state only exists for removing
1290 watchpoints. It's not clear that it's necessary... */
1291 && bpt->owner->disposition != disp_del_at_next_stop)
1292 {
1293 val = target_insert_watchpoint (bpt->address,
1294 bpt->length,
1295 bpt->watchpoint_type);
1296 bpt->inserted = (val != -1);
1297 }
1298
1299 else if (bpt->owner->type == bp_catchpoint)
1300 {
1301 struct gdb_exception e = catch_exception (uiout, insert_catchpoint,
1302 bpt->owner, RETURN_MASK_ERROR);
1303 exception_fprintf (gdb_stderr, e, "warning: inserting catchpoint %d: ",
1304 bpt->owner->number);
1305 if (e.reason < 0)
1306 bpt->owner->enable_state = bp_disabled;
1307 else
1308 bpt->inserted = 1;
1309
1310 /* We've already printed an error message if there was a problem
1311 inserting this catchpoint, and we've disabled the catchpoint,
1312 so just return success. */
1313 return 0;
1314 }
1315
1316 return 0;
1317 }
1318
1319 /* Make sure all breakpoints are inserted in inferior.
1320 Throws exception on any error.
1321 A breakpoint that is already inserted won't be inserted
1322 again, so calling this function twice is safe. */
1323 void
1324 insert_breakpoints (void)
1325 {
1326 struct breakpoint *bpt;
1327
1328 ALL_BREAKPOINTS (bpt)
1329 if (is_hardware_watchpoint (bpt))
1330 update_watchpoint (bpt, 0 /* don't reparse. */);
1331
1332 update_global_location_list (1);
1333
1334 /* update_global_location_list does not insert breakpoints when
1335 always_inserted_mode is not enabled. Explicitly insert them
1336 now. */
1337 if (!breakpoints_always_inserted_mode ())
1338 insert_breakpoint_locations ();
1339 }
1340
1341 /* insert_breakpoints is used when starting or continuing the program.
1342 remove_breakpoints is used when the program stops.
1343 Both return zero if successful,
1344 or an `errno' value if could not write the inferior. */
1345
1346 static void
1347 insert_breakpoint_locations (void)
1348 {
1349 struct breakpoint *bpt;
1350 struct bp_location *b, *temp;
1351 int error = 0;
1352 int val = 0;
1353 int disabled_breaks = 0;
1354 int hw_breakpoint_error = 0;
1355
1356 struct ui_file *tmp_error_stream = mem_fileopen ();
1357 struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
1358
1359 /* Explicitly mark the warning -- this will only be printed if
1360 there was an error. */
1361 fprintf_unfiltered (tmp_error_stream, "Warning:\n");
1362
1363 ALL_BP_LOCATIONS_SAFE (b, temp)
1364 {
1365 if (!should_be_inserted (b) || b->inserted)
1366 continue;
1367
1368 /* There is no point inserting thread-specific breakpoints if the
1369 thread no longer exists. */
1370 if (b->owner->thread != -1
1371 && !valid_thread_id (b->owner->thread))
1372 continue;
1373
1374 val = insert_bp_location (b, tmp_error_stream,
1375 &disabled_breaks,
1376 &hw_breakpoint_error);
1377 if (val)
1378 error = val;
1379 }
1380
1381 /* If we failed to insert all locations of a watchpoint,
1382 remove them, as half-inserted watchpoint is of limited use. */
1383 ALL_BREAKPOINTS (bpt)
1384 {
1385 int some_failed = 0;
1386 struct bp_location *loc;
1387
1388 if (!is_hardware_watchpoint (bpt))
1389 continue;
1390
1391 if (!breakpoint_enabled (bpt))
1392 continue;
1393
1394 if (bpt->disposition == disp_del_at_next_stop)
1395 continue;
1396
1397 for (loc = bpt->loc; loc; loc = loc->next)
1398 if (!loc->inserted)
1399 {
1400 some_failed = 1;
1401 break;
1402 }
1403 if (some_failed)
1404 {
1405 for (loc = bpt->loc; loc; loc = loc->next)
1406 if (loc->inserted)
1407 remove_breakpoint (loc, mark_uninserted);
1408
1409 hw_breakpoint_error = 1;
1410 fprintf_unfiltered (tmp_error_stream,
1411 "Could not insert hardware watchpoint %d.\n",
1412 bpt->number);
1413 error = -1;
1414 }
1415 }
1416
1417 if (error)
1418 {
1419 /* If a hardware breakpoint or watchpoint was inserted, add a
1420 message about possibly exhausted resources. */
1421 if (hw_breakpoint_error)
1422 {
1423 fprintf_unfiltered (tmp_error_stream,
1424 "Could not insert hardware breakpoints:\n\
1425 You may have requested too many hardware breakpoints/watchpoints.\n");
1426 }
1427 target_terminal_ours_for_output ();
1428 error_stream (tmp_error_stream);
1429 }
1430
1431 do_cleanups (cleanups);
1432 }
1433
1434 int
1435 remove_breakpoints (void)
1436 {
1437 struct bp_location *b;
1438 int val = 0;
1439
1440 ALL_BP_LOCATIONS (b)
1441 {
1442 if (b->inserted)
1443 val |= remove_breakpoint (b, mark_uninserted);
1444 }
1445 return val;
1446 }
1447
1448 int
1449 remove_hw_watchpoints (void)
1450 {
1451 struct bp_location *b;
1452 int val = 0;
1453
1454 ALL_BP_LOCATIONS (b)
1455 {
1456 if (b->inserted && b->loc_type == bp_loc_hardware_watchpoint)
1457 val |= remove_breakpoint (b, mark_uninserted);
1458 }
1459 return val;
1460 }
1461
1462 int
1463 reattach_breakpoints (int pid)
1464 {
1465 struct bp_location *b;
1466 int val;
1467 struct cleanup *old_chain = save_inferior_ptid ();
1468 struct ui_file *tmp_error_stream = mem_fileopen ();
1469 int dummy1 = 0, dummy2 = 0;
1470
1471 make_cleanup_ui_file_delete (tmp_error_stream);
1472
1473 inferior_ptid = pid_to_ptid (pid);
1474 ALL_BP_LOCATIONS (b)
1475 {
1476 if (b->inserted)
1477 {
1478 b->inserted = 0;
1479 val = insert_bp_location (b, tmp_error_stream,
1480 &dummy1, &dummy2);
1481 if (val != 0)
1482 {
1483 do_cleanups (old_chain);
1484 return val;
1485 }
1486 }
1487 }
1488 do_cleanups (old_chain);
1489 return 0;
1490 }
1491
1492 static int internal_breakpoint_number = -1;
1493
1494 static struct breakpoint *
1495 create_internal_breakpoint (struct gdbarch *gdbarch,
1496 CORE_ADDR address, enum bptype type)
1497 {
1498 struct symtab_and_line sal;
1499 struct breakpoint *b;
1500
1501 init_sal (&sal); /* initialize to zeroes */
1502
1503 sal.pc = address;
1504 sal.section = find_pc_overlay (sal.pc);
1505
1506 b = set_raw_breakpoint (gdbarch, sal, type);
1507 b->number = internal_breakpoint_number--;
1508 b->disposition = disp_donttouch;
1509
1510 return b;
1511 }
1512
1513 static void
1514 create_overlay_event_breakpoint (char *func_name)
1515 {
1516 struct objfile *objfile;
1517
1518 ALL_OBJFILES (objfile)
1519 {
1520 struct breakpoint *b;
1521 struct minimal_symbol *m;
1522
1523 m = lookup_minimal_symbol_text (func_name, objfile);
1524 if (m == NULL)
1525 continue;
1526
1527 b = create_internal_breakpoint (get_objfile_arch (objfile),
1528 SYMBOL_VALUE_ADDRESS (m),
1529 bp_overlay_event);
1530 b->addr_string = xstrdup (func_name);
1531
1532 if (overlay_debugging == ovly_auto)
1533 {
1534 b->enable_state = bp_enabled;
1535 overlay_events_enabled = 1;
1536 }
1537 else
1538 {
1539 b->enable_state = bp_disabled;
1540 overlay_events_enabled = 0;
1541 }
1542 }
1543 update_global_location_list (1);
1544 }
1545
1546 static void
1547 create_longjmp_master_breakpoint (char *func_name)
1548 {
1549 struct objfile *objfile;
1550
1551 ALL_OBJFILES (objfile)
1552 {
1553 struct breakpoint *b;
1554 struct minimal_symbol *m;
1555
1556 if (!gdbarch_get_longjmp_target_p (get_objfile_arch (objfile)))
1557 continue;
1558
1559 m = lookup_minimal_symbol_text (func_name, objfile);
1560 if (m == NULL)
1561 continue;
1562
1563 b = create_internal_breakpoint (get_objfile_arch (objfile),
1564 SYMBOL_VALUE_ADDRESS (m),
1565 bp_longjmp_master);
1566 b->addr_string = xstrdup (func_name);
1567 b->enable_state = bp_disabled;
1568 }
1569 update_global_location_list (1);
1570 }
1571
1572 void
1573 update_breakpoints_after_exec (void)
1574 {
1575 struct breakpoint *b;
1576 struct breakpoint *temp;
1577 struct bp_location *bploc;
1578
1579 /* We're about to delete breakpoints from GDB's lists. If the
1580 INSERTED flag is true, GDB will try to lift the breakpoints by
1581 writing the breakpoints' "shadow contents" back into memory. The
1582 "shadow contents" are NOT valid after an exec, so GDB should not
1583 do that. Instead, the target is responsible from marking
1584 breakpoints out as soon as it detects an exec. We don't do that
1585 here instead, because there may be other attempts to delete
1586 breakpoints after detecting an exec and before reaching here. */
1587 ALL_BP_LOCATIONS (bploc)
1588 gdb_assert (!bploc->inserted);
1589
1590 ALL_BREAKPOINTS_SAFE (b, temp)
1591 {
1592 /* Solib breakpoints must be explicitly reset after an exec(). */
1593 if (b->type == bp_shlib_event)
1594 {
1595 delete_breakpoint (b);
1596 continue;
1597 }
1598
1599 /* JIT breakpoints must be explicitly reset after an exec(). */
1600 if (b->type == bp_jit_event)
1601 {
1602 delete_breakpoint (b);
1603 continue;
1604 }
1605
1606 /* Thread event breakpoints must be set anew after an exec(),
1607 as must overlay event and longjmp master breakpoints. */
1608 if (b->type == bp_thread_event || b->type == bp_overlay_event
1609 || b->type == bp_longjmp_master)
1610 {
1611 delete_breakpoint (b);
1612 continue;
1613 }
1614
1615 /* Step-resume breakpoints are meaningless after an exec(). */
1616 if (b->type == bp_step_resume)
1617 {
1618 delete_breakpoint (b);
1619 continue;
1620 }
1621
1622 /* Longjmp and longjmp-resume breakpoints are also meaningless
1623 after an exec. */
1624 if (b->type == bp_longjmp || b->type == bp_longjmp_resume)
1625 {
1626 delete_breakpoint (b);
1627 continue;
1628 }
1629
1630 if (b->type == bp_catchpoint)
1631 {
1632 /* For now, none of the bp_catchpoint breakpoints need to
1633 do anything at this point. In the future, if some of
1634 the catchpoints need to something, we will need to add
1635 a new method, and call this method from here. */
1636 continue;
1637 }
1638
1639 /* bp_finish is a special case. The only way we ought to be able
1640 to see one of these when an exec() has happened, is if the user
1641 caught a vfork, and then said "finish". Ordinarily a finish just
1642 carries them to the call-site of the current callee, by setting
1643 a temporary bp there and resuming. But in this case, the finish
1644 will carry them entirely through the vfork & exec.
1645
1646 We don't want to allow a bp_finish to remain inserted now. But
1647 we can't safely delete it, 'cause finish_command has a handle to
1648 the bp on a bpstat, and will later want to delete it. There's a
1649 chance (and I've seen it happen) that if we delete the bp_finish
1650 here, that its storage will get reused by the time finish_command
1651 gets 'round to deleting the "use to be a bp_finish" breakpoint.
1652 We really must allow finish_command to delete a bp_finish.
1653
1654 In the absense of a general solution for the "how do we know
1655 it's safe to delete something others may have handles to?"
1656 problem, what we'll do here is just uninsert the bp_finish, and
1657 let finish_command delete it.
1658
1659 (We know the bp_finish is "doomed" in the sense that it's
1660 momentary, and will be deleted as soon as finish_command sees
1661 the inferior stopped. So it doesn't matter that the bp's
1662 address is probably bogus in the new a.out, unlike e.g., the
1663 solib breakpoints.) */
1664
1665 if (b->type == bp_finish)
1666 {
1667 continue;
1668 }
1669
1670 /* Without a symbolic address, we have little hope of the
1671 pre-exec() address meaning the same thing in the post-exec()
1672 a.out. */
1673 if (b->addr_string == NULL)
1674 {
1675 delete_breakpoint (b);
1676 continue;
1677 }
1678 }
1679 /* FIXME what about longjmp breakpoints? Re-create them here? */
1680 create_overlay_event_breakpoint ("_ovly_debug_event");
1681 create_longjmp_master_breakpoint ("longjmp");
1682 create_longjmp_master_breakpoint ("_longjmp");
1683 create_longjmp_master_breakpoint ("siglongjmp");
1684 create_longjmp_master_breakpoint ("_siglongjmp");
1685 }
1686
1687 int
1688 detach_breakpoints (int pid)
1689 {
1690 struct bp_location *b;
1691 int val = 0;
1692 struct cleanup *old_chain = save_inferior_ptid ();
1693
1694 if (pid == PIDGET (inferior_ptid))
1695 error (_("Cannot detach breakpoints of inferior_ptid"));
1696
1697 /* Set inferior_ptid; remove_breakpoint uses this global. */
1698 inferior_ptid = pid_to_ptid (pid);
1699 ALL_BP_LOCATIONS (b)
1700 {
1701 if (b->inserted)
1702 val |= remove_breakpoint (b, mark_inserted);
1703 }
1704 do_cleanups (old_chain);
1705 return val;
1706 }
1707
1708 static int
1709 remove_breakpoint (struct bp_location *b, insertion_state_t is)
1710 {
1711 int val;
1712
1713 if (b->owner->enable_state == bp_permanent)
1714 /* Permanent breakpoints cannot be inserted or removed. */
1715 return 0;
1716
1717 /* The type of none suggests that owner is actually deleted.
1718 This should not ever happen. */
1719 gdb_assert (b->owner->type != bp_none);
1720
1721 if (b->loc_type == bp_loc_software_breakpoint
1722 || b->loc_type == bp_loc_hardware_breakpoint)
1723 {
1724 /* "Normal" instruction breakpoint: either the standard
1725 trap-instruction bp (bp_breakpoint), or a
1726 bp_hardware_breakpoint. */
1727
1728 /* First check to see if we have to handle an overlay. */
1729 if (overlay_debugging == ovly_off
1730 || b->section == NULL
1731 || !(section_is_overlay (b->section)))
1732 {
1733 /* No overlay handling: just remove the breakpoint. */
1734
1735 if (b->loc_type == bp_loc_hardware_breakpoint)
1736 val = target_remove_hw_breakpoint (b->gdbarch, &b->target_info);
1737 else
1738 val = target_remove_breakpoint (b->gdbarch, &b->target_info);
1739 }
1740 else
1741 {
1742 /* This breakpoint is in an overlay section.
1743 Did we set a breakpoint at the LMA? */
1744 if (!overlay_events_enabled)
1745 {
1746 /* Yes -- overlay event support is not active, so we
1747 should have set a breakpoint at the LMA. Remove it.
1748 */
1749 /* Ignore any failures: if the LMA is in ROM, we will
1750 have already warned when we failed to insert it. */
1751 if (b->loc_type == bp_loc_hardware_breakpoint)
1752 target_remove_hw_breakpoint (b->gdbarch,
1753 &b->overlay_target_info);
1754 else
1755 target_remove_breakpoint (b->gdbarch,
1756 &b->overlay_target_info);
1757 }
1758 /* Did we set a breakpoint at the VMA?
1759 If so, we will have marked the breakpoint 'inserted'. */
1760 if (b->inserted)
1761 {
1762 /* Yes -- remove it. Previously we did not bother to
1763 remove the breakpoint if the section had been
1764 unmapped, but let's not rely on that being safe. We
1765 don't know what the overlay manager might do. */
1766 if (b->loc_type == bp_loc_hardware_breakpoint)
1767 val = target_remove_hw_breakpoint (b->gdbarch,
1768 &b->target_info);
1769
1770 /* However, we should remove *software* breakpoints only
1771 if the section is still mapped, or else we overwrite
1772 wrong code with the saved shadow contents. */
1773 else if (section_is_mapped (b->section))
1774 val = target_remove_breakpoint (b->gdbarch,
1775 &b->target_info);
1776 else
1777 val = 0;
1778 }
1779 else
1780 {
1781 /* No -- not inserted, so no need to remove. No error. */
1782 val = 0;
1783 }
1784 }
1785
1786 /* In some cases, we might not be able to remove a breakpoint
1787 in a shared library that has already been removed, but we
1788 have not yet processed the shlib unload event. */
1789 if (val && solib_name_from_address (b->address))
1790 val = 0;
1791
1792 if (val)
1793 return val;
1794 b->inserted = (is == mark_inserted);
1795 }
1796 else if (b->loc_type == bp_loc_hardware_watchpoint)
1797 {
1798 struct value *v;
1799 struct value *n;
1800
1801 b->inserted = (is == mark_inserted);
1802 val = target_remove_watchpoint (b->address, b->length,
1803 b->watchpoint_type);
1804
1805 /* Failure to remove any of the hardware watchpoints comes here. */
1806 if ((is == mark_uninserted) && (b->inserted))
1807 warning (_("Could not remove hardware watchpoint %d."),
1808 b->owner->number);
1809 }
1810 else if (b->owner->type == bp_catchpoint
1811 && breakpoint_enabled (b->owner)
1812 && !b->duplicate)
1813 {
1814 gdb_assert (b->owner->ops != NULL && b->owner->ops->remove != NULL);
1815
1816 val = b->owner->ops->remove (b->owner);
1817 if (val)
1818 return val;
1819 b->inserted = (is == mark_inserted);
1820 }
1821
1822 return 0;
1823 }
1824
1825 /* Clear the "inserted" flag in all breakpoints. */
1826
1827 void
1828 mark_breakpoints_out (void)
1829 {
1830 struct bp_location *bpt;
1831
1832 ALL_BP_LOCATIONS (bpt)
1833 bpt->inserted = 0;
1834 }
1835
1836 /* Clear the "inserted" flag in all breakpoints and delete any
1837 breakpoints which should go away between runs of the program.
1838
1839 Plus other such housekeeping that has to be done for breakpoints
1840 between runs.
1841
1842 Note: this function gets called at the end of a run (by
1843 generic_mourn_inferior) and when a run begins (by
1844 init_wait_for_inferior). */
1845
1846
1847
1848 void
1849 breakpoint_init_inferior (enum inf_context context)
1850 {
1851 struct breakpoint *b, *temp;
1852 struct bp_location *bpt;
1853 int ix;
1854
1855 /* If breakpoint locations are shared across processes, then there's
1856 nothing to do. */
1857 if (gdbarch_has_global_breakpoints (target_gdbarch))
1858 return;
1859
1860 ALL_BP_LOCATIONS (bpt)
1861 if (bpt->owner->enable_state != bp_permanent)
1862 bpt->inserted = 0;
1863
1864 ALL_BREAKPOINTS_SAFE (b, temp)
1865 {
1866 switch (b->type)
1867 {
1868 case bp_call_dummy:
1869 case bp_watchpoint_scope:
1870
1871 /* If the call dummy breakpoint is at the entry point it will
1872 cause problems when the inferior is rerun, so we better
1873 get rid of it.
1874
1875 Also get rid of scope breakpoints. */
1876 delete_breakpoint (b);
1877 break;
1878
1879 case bp_watchpoint:
1880 case bp_hardware_watchpoint:
1881 case bp_read_watchpoint:
1882 case bp_access_watchpoint:
1883
1884 /* Likewise for watchpoints on local expressions. */
1885 if (b->exp_valid_block != NULL)
1886 delete_breakpoint (b);
1887 else if (context == inf_starting)
1888 {
1889 /* Reset val field to force reread of starting value
1890 in insert_breakpoints. */
1891 if (b->val)
1892 value_free (b->val);
1893 b->val = NULL;
1894 b->val_valid = 0;
1895 }
1896 break;
1897 default:
1898 break;
1899 }
1900 }
1901
1902 /* Get rid of the moribund locations. */
1903 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bpt); ++ix)
1904 free_bp_location (bpt);
1905 VEC_free (bp_location_p, moribund_locations);
1906 }
1907
1908 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
1909 exists at PC. It returns ordinary_breakpoint_here if it's an
1910 ordinary breakpoint, or permanent_breakpoint_here if it's a
1911 permanent breakpoint.
1912 - When continuing from a location with an ordinary breakpoint, we
1913 actually single step once before calling insert_breakpoints.
1914 - When continuing from a localion with a permanent breakpoint, we
1915 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
1916 the target, to advance the PC past the breakpoint. */
1917
1918 enum breakpoint_here
1919 breakpoint_here_p (CORE_ADDR pc)
1920 {
1921 const struct bp_location *bpt;
1922 int any_breakpoint_here = 0;
1923
1924 ALL_BP_LOCATIONS (bpt)
1925 {
1926 if (bpt->loc_type != bp_loc_software_breakpoint
1927 && bpt->loc_type != bp_loc_hardware_breakpoint)
1928 continue;
1929
1930 if ((breakpoint_enabled (bpt->owner)
1931 || bpt->owner->enable_state == bp_permanent)
1932 && bpt->address == pc) /* bp is enabled and matches pc */
1933 {
1934 if (overlay_debugging
1935 && section_is_overlay (bpt->section)
1936 && !section_is_mapped (bpt->section))
1937 continue; /* unmapped overlay -- can't be a match */
1938 else if (bpt->owner->enable_state == bp_permanent)
1939 return permanent_breakpoint_here;
1940 else
1941 any_breakpoint_here = 1;
1942 }
1943 }
1944
1945 return any_breakpoint_here ? ordinary_breakpoint_here : 0;
1946 }
1947
1948 /* Return true if there's a moribund breakpoint at PC. */
1949
1950 int
1951 moribund_breakpoint_here_p (CORE_ADDR pc)
1952 {
1953 struct bp_location *loc;
1954 int ix;
1955
1956 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
1957 if (loc->address == pc)
1958 return 1;
1959
1960 return 0;
1961 }
1962
1963 /* Returns non-zero if there's a breakpoint inserted at PC, which is
1964 inserted using regular breakpoint_chain/bp_location_chain mechanism.
1965 This does not check for single-step breakpoints, which are
1966 inserted and removed using direct target manipulation. */
1967
1968 int
1969 regular_breakpoint_inserted_here_p (CORE_ADDR pc)
1970 {
1971 const struct bp_location *bpt;
1972
1973 ALL_BP_LOCATIONS (bpt)
1974 {
1975 if (bpt->loc_type != bp_loc_software_breakpoint
1976 && bpt->loc_type != bp_loc_hardware_breakpoint)
1977 continue;
1978
1979 if (bpt->inserted
1980 && bpt->address == pc) /* bp is inserted and matches pc */
1981 {
1982 if (overlay_debugging
1983 && section_is_overlay (bpt->section)
1984 && !section_is_mapped (bpt->section))
1985 continue; /* unmapped overlay -- can't be a match */
1986 else
1987 return 1;
1988 }
1989 }
1990 return 0;
1991 }
1992
1993 /* Returns non-zero iff there's either regular breakpoint
1994 or a single step breakpoint inserted at PC. */
1995
1996 int
1997 breakpoint_inserted_here_p (CORE_ADDR pc)
1998 {
1999 if (regular_breakpoint_inserted_here_p (pc))
2000 return 1;
2001
2002 if (single_step_breakpoint_inserted_here_p (pc))
2003 return 1;
2004
2005 return 0;
2006 }
2007
2008 /* This function returns non-zero iff there is a software breakpoint
2009 inserted at PC. */
2010
2011 int
2012 software_breakpoint_inserted_here_p (CORE_ADDR pc)
2013 {
2014 const struct bp_location *bpt;
2015 int any_breakpoint_here = 0;
2016
2017 ALL_BP_LOCATIONS (bpt)
2018 {
2019 if (bpt->loc_type != bp_loc_software_breakpoint)
2020 continue;
2021
2022 if (bpt->inserted
2023 && bpt->address == pc) /* bp is enabled and matches pc */
2024 {
2025 if (overlay_debugging
2026 && section_is_overlay (bpt->section)
2027 && !section_is_mapped (bpt->section))
2028 continue; /* unmapped overlay -- can't be a match */
2029 else
2030 return 1;
2031 }
2032 }
2033
2034 /* Also check for software single-step breakpoints. */
2035 if (single_step_breakpoint_inserted_here_p (pc))
2036 return 1;
2037
2038 return 0;
2039 }
2040
2041 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
2042 PC is valid for process/thread PTID. */
2043
2044 int
2045 breakpoint_thread_match (CORE_ADDR pc, ptid_t ptid)
2046 {
2047 const struct bp_location *bpt;
2048 /* The thread and task IDs associated to PTID, computed lazily. */
2049 int thread = -1;
2050 int task = 0;
2051
2052 ALL_BP_LOCATIONS (bpt)
2053 {
2054 if (bpt->loc_type != bp_loc_software_breakpoint
2055 && bpt->loc_type != bp_loc_hardware_breakpoint)
2056 continue;
2057
2058 if (!breakpoint_enabled (bpt->owner)
2059 && bpt->owner->enable_state != bp_permanent)
2060 continue;
2061
2062 if (bpt->address != pc)
2063 continue;
2064
2065 if (bpt->owner->thread != -1)
2066 {
2067 /* This is a thread-specific breakpoint. Check that ptid
2068 matches that thread. If thread hasn't been computed yet,
2069 it is now time to do so. */
2070 if (thread == -1)
2071 thread = pid_to_thread_id (ptid);
2072 if (bpt->owner->thread != thread)
2073 continue;
2074 }
2075
2076 if (bpt->owner->task != 0)
2077 {
2078 /* This is a task-specific breakpoint. Check that ptid
2079 matches that task. If task hasn't been computed yet,
2080 it is now time to do so. */
2081 if (task == 0)
2082 task = ada_get_task_number (ptid);
2083 if (bpt->owner->task != task)
2084 continue;
2085 }
2086
2087 if (overlay_debugging
2088 && section_is_overlay (bpt->section)
2089 && !section_is_mapped (bpt->section))
2090 continue; /* unmapped overlay -- can't be a match */
2091
2092 return 1;
2093 }
2094
2095 return 0;
2096 }
2097 \f
2098
2099 /* bpstat stuff. External routines' interfaces are documented
2100 in breakpoint.h. */
2101
2102 int
2103 ep_is_catchpoint (struct breakpoint *ep)
2104 {
2105 return (ep->type == bp_catchpoint);
2106 }
2107
2108 void
2109 bpstat_free (bpstat bs)
2110 {
2111 if (bs->old_val != NULL)
2112 value_free (bs->old_val);
2113 free_command_lines (&bs->commands);
2114 xfree (bs);
2115 }
2116
2117 /* Clear a bpstat so that it says we are not at any breakpoint.
2118 Also free any storage that is part of a bpstat. */
2119
2120 void
2121 bpstat_clear (bpstat *bsp)
2122 {
2123 bpstat p;
2124 bpstat q;
2125
2126 if (bsp == 0)
2127 return;
2128 p = *bsp;
2129 while (p != NULL)
2130 {
2131 q = p->next;
2132 bpstat_free (p);
2133 p = q;
2134 }
2135 *bsp = NULL;
2136 }
2137
2138 /* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
2139 is part of the bpstat is copied as well. */
2140
2141 bpstat
2142 bpstat_copy (bpstat bs)
2143 {
2144 bpstat p = NULL;
2145 bpstat tmp;
2146 bpstat retval = NULL;
2147
2148 if (bs == NULL)
2149 return bs;
2150
2151 for (; bs != NULL; bs = bs->next)
2152 {
2153 tmp = (bpstat) xmalloc (sizeof (*tmp));
2154 memcpy (tmp, bs, sizeof (*tmp));
2155 if (bs->commands != NULL)
2156 tmp->commands = copy_command_lines (bs->commands);
2157 if (bs->old_val != NULL)
2158 {
2159 tmp->old_val = value_copy (bs->old_val);
2160 release_value (tmp->old_val);
2161 }
2162
2163 if (p == NULL)
2164 /* This is the first thing in the chain. */
2165 retval = tmp;
2166 else
2167 p->next = tmp;
2168 p = tmp;
2169 }
2170 p->next = NULL;
2171 return retval;
2172 }
2173
2174 /* Find the bpstat associated with this breakpoint */
2175
2176 bpstat
2177 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
2178 {
2179 if (bsp == NULL)
2180 return NULL;
2181
2182 for (; bsp != NULL; bsp = bsp->next)
2183 {
2184 if (bsp->breakpoint_at && bsp->breakpoint_at->owner == breakpoint)
2185 return bsp;
2186 }
2187 return NULL;
2188 }
2189
2190 /* Find a step_resume breakpoint associated with this bpstat.
2191 (If there are multiple step_resume bp's on the list, this function
2192 will arbitrarily pick one.)
2193
2194 It is an error to use this function if BPSTAT doesn't contain a
2195 step_resume breakpoint.
2196
2197 See wait_for_inferior's use of this function. */
2198 struct breakpoint *
2199 bpstat_find_step_resume_breakpoint (bpstat bsp)
2200 {
2201 int current_thread;
2202
2203 gdb_assert (bsp != NULL);
2204
2205 current_thread = pid_to_thread_id (inferior_ptid);
2206
2207 for (; bsp != NULL; bsp = bsp->next)
2208 {
2209 if ((bsp->breakpoint_at != NULL)
2210 && (bsp->breakpoint_at->owner->type == bp_step_resume)
2211 && (bsp->breakpoint_at->owner->thread == current_thread
2212 || bsp->breakpoint_at->owner->thread == -1))
2213 return bsp->breakpoint_at->owner;
2214 }
2215
2216 internal_error (__FILE__, __LINE__, _("No step_resume breakpoint found."));
2217 }
2218
2219
2220 /* Put in *NUM the breakpoint number of the first breakpoint we are stopped
2221 at. *BSP upon return is a bpstat which points to the remaining
2222 breakpoints stopped at (but which is not guaranteed to be good for
2223 anything but further calls to bpstat_num).
2224 Return 0 if passed a bpstat which does not indicate any breakpoints.
2225 Return -1 if stopped at a breakpoint that has been deleted since
2226 we set it.
2227 Return 1 otherwise. */
2228
2229 int
2230 bpstat_num (bpstat *bsp, int *num)
2231 {
2232 struct breakpoint *b;
2233
2234 if ((*bsp) == NULL)
2235 return 0; /* No more breakpoint values */
2236
2237 /* We assume we'll never have several bpstats that
2238 correspond to a single breakpoint -- otherwise,
2239 this function might return the same number more
2240 than once and this will look ugly. */
2241 b = (*bsp)->breakpoint_at ? (*bsp)->breakpoint_at->owner : NULL;
2242 *bsp = (*bsp)->next;
2243 if (b == NULL)
2244 return -1; /* breakpoint that's been deleted since */
2245
2246 *num = b->number; /* We have its number */
2247 return 1;
2248 }
2249
2250 /* Modify BS so that the actions will not be performed. */
2251
2252 void
2253 bpstat_clear_actions (bpstat bs)
2254 {
2255 for (; bs != NULL; bs = bs->next)
2256 {
2257 free_command_lines (&bs->commands);
2258 if (bs->old_val != NULL)
2259 {
2260 value_free (bs->old_val);
2261 bs->old_val = NULL;
2262 }
2263 }
2264 }
2265
2266 /* Called when a command is about to proceed the inferior. */
2267
2268 static void
2269 breakpoint_about_to_proceed (void)
2270 {
2271 if (!ptid_equal (inferior_ptid, null_ptid))
2272 {
2273 struct thread_info *tp = inferior_thread ();
2274
2275 /* Allow inferior function calls in breakpoint commands to not
2276 interrupt the command list. When the call finishes
2277 successfully, the inferior will be standing at the same
2278 breakpoint as if nothing happened. */
2279 if (tp->in_infcall)
2280 return;
2281 }
2282
2283 breakpoint_proceeded = 1;
2284 }
2285
2286 /* Stub for cleaning up our state if we error-out of a breakpoint command */
2287 static void
2288 cleanup_executing_breakpoints (void *ignore)
2289 {
2290 executing_breakpoint_commands = 0;
2291 }
2292
2293 /* Execute all the commands associated with all the breakpoints at this
2294 location. Any of these commands could cause the process to proceed
2295 beyond this point, etc. We look out for such changes by checking
2296 the global "breakpoint_proceeded" after each command.
2297
2298 Returns true if a breakpoint command resumed the inferior. In that
2299 case, it is the caller's responsibility to recall it again with the
2300 bpstat of the current thread. */
2301
2302 static int
2303 bpstat_do_actions_1 (bpstat *bsp)
2304 {
2305 bpstat bs;
2306 struct cleanup *old_chain;
2307 int again = 0;
2308
2309 /* Avoid endless recursion if a `source' command is contained
2310 in bs->commands. */
2311 if (executing_breakpoint_commands)
2312 return 0;
2313
2314 executing_breakpoint_commands = 1;
2315 old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
2316
2317 /* This pointer will iterate over the list of bpstat's. */
2318 bs = *bsp;
2319
2320 breakpoint_proceeded = 0;
2321 for (; bs != NULL; bs = bs->next)
2322 {
2323 struct command_line *cmd;
2324 struct cleanup *this_cmd_tree_chain;
2325
2326 /* Take ownership of the BSP's command tree, if it has one.
2327
2328 The command tree could legitimately contain commands like
2329 'step' and 'next', which call clear_proceed_status, which
2330 frees stop_bpstat's command tree. To make sure this doesn't
2331 free the tree we're executing out from under us, we need to
2332 take ownership of the tree ourselves. Since a given bpstat's
2333 commands are only executed once, we don't need to copy it; we
2334 can clear the pointer in the bpstat, and make sure we free
2335 the tree when we're done. */
2336 cmd = bs->commands;
2337 bs->commands = 0;
2338 this_cmd_tree_chain = make_cleanup_free_command_lines (&cmd);
2339
2340 while (cmd != NULL)
2341 {
2342 execute_control_command (cmd);
2343
2344 if (breakpoint_proceeded)
2345 break;
2346 else
2347 cmd = cmd->next;
2348 }
2349
2350 /* We can free this command tree now. */
2351 do_cleanups (this_cmd_tree_chain);
2352
2353 if (breakpoint_proceeded)
2354 {
2355 if (target_can_async_p ())
2356 /* If we are in async mode, then the target might be still
2357 running, not stopped at any breakpoint, so nothing for
2358 us to do here -- just return to the event loop. */
2359 ;
2360 else
2361 /* In sync mode, when execute_control_command returns
2362 we're already standing on the next breakpoint.
2363 Breakpoint commands for that stop were not run, since
2364 execute_command does not run breakpoint commands --
2365 only command_line_handler does, but that one is not
2366 involved in execution of breakpoint commands. So, we
2367 can now execute breakpoint commands. It should be
2368 noted that making execute_command do bpstat actions is
2369 not an option -- in this case we'll have recursive
2370 invocation of bpstat for each breakpoint with a
2371 command, and can easily blow up GDB stack. Instead, we
2372 return true, which will trigger the caller to recall us
2373 with the new stop_bpstat. */
2374 again = 1;
2375 break;
2376 }
2377 }
2378 do_cleanups (old_chain);
2379 return again;
2380 }
2381
2382 void
2383 bpstat_do_actions (void)
2384 {
2385 /* Do any commands attached to breakpoint we are stopped at. */
2386 while (!ptid_equal (inferior_ptid, null_ptid)
2387 && target_has_execution
2388 && !is_exited (inferior_ptid)
2389 && !is_executing (inferior_ptid))
2390 /* Since in sync mode, bpstat_do_actions may resume the inferior,
2391 and only return when it is stopped at the next breakpoint, we
2392 keep doing breakpoint actions until it returns false to
2393 indicate the inferior was not resumed. */
2394 if (!bpstat_do_actions_1 (&inferior_thread ()->stop_bpstat))
2395 break;
2396 }
2397
2398 /* Print out the (old or new) value associated with a watchpoint. */
2399
2400 static void
2401 watchpoint_value_print (struct value *val, struct ui_file *stream)
2402 {
2403 if (val == NULL)
2404 fprintf_unfiltered (stream, _("<unreadable>"));
2405 else
2406 {
2407 struct value_print_options opts;
2408 get_user_print_options (&opts);
2409 value_print (val, stream, &opts);
2410 }
2411 }
2412
2413 /* This is the normal print function for a bpstat. In the future,
2414 much of this logic could (should?) be moved to bpstat_stop_status,
2415 by having it set different print_it values.
2416
2417 Current scheme: When we stop, bpstat_print() is called. It loops
2418 through the bpstat list of things causing this stop, calling the
2419 print_bp_stop_message function on each one. The behavior of the
2420 print_bp_stop_message function depends on the print_it field of
2421 bpstat. If such field so indicates, call this function here.
2422
2423 Return values from this routine (ultimately used by bpstat_print()
2424 and normal_stop() to decide what to do):
2425 PRINT_NOTHING: Means we already printed all we needed to print,
2426 don't print anything else.
2427 PRINT_SRC_ONLY: Means we printed something, and we do *not* desire
2428 that something to be followed by a location.
2429 PRINT_SCR_AND_LOC: Means we printed something, and we *do* desire
2430 that something to be followed by a location.
2431 PRINT_UNKNOWN: Means we printed nothing or we need to do some more
2432 analysis. */
2433
2434 static enum print_stop_action
2435 print_it_typical (bpstat bs)
2436 {
2437 struct cleanup *old_chain;
2438 struct breakpoint *b;
2439 const struct bp_location *bl;
2440 struct ui_stream *stb;
2441 int bp_temp = 0;
2442 enum print_stop_action result;
2443
2444 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
2445 which has since been deleted. */
2446 if (bs->breakpoint_at == NULL)
2447 return PRINT_UNKNOWN;
2448 bl = bs->breakpoint_at;
2449 b = bl->owner;
2450
2451 stb = ui_out_stream_new (uiout);
2452 old_chain = make_cleanup_ui_out_stream_delete (stb);
2453
2454 switch (b->type)
2455 {
2456 case bp_breakpoint:
2457 case bp_hardware_breakpoint:
2458 bp_temp = bs->breakpoint_at->owner->disposition == disp_del;
2459 if (bl->address != bl->requested_address)
2460 breakpoint_adjustment_warning (bl->requested_address,
2461 bl->address,
2462 b->number, 1);
2463 annotate_breakpoint (b->number);
2464 if (bp_temp)
2465 ui_out_text (uiout, "\nTemporary breakpoint ");
2466 else
2467 ui_out_text (uiout, "\nBreakpoint ");
2468 if (ui_out_is_mi_like_p (uiout))
2469 {
2470 ui_out_field_string (uiout, "reason",
2471 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
2472 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
2473 }
2474 ui_out_field_int (uiout, "bkptno", b->number);
2475 ui_out_text (uiout, ", ");
2476 result = PRINT_SRC_AND_LOC;
2477 break;
2478
2479 case bp_shlib_event:
2480 /* Did we stop because the user set the stop_on_solib_events
2481 variable? (If so, we report this as a generic, "Stopped due
2482 to shlib event" message.) */
2483 printf_filtered (_("Stopped due to shared library event\n"));
2484 result = PRINT_NOTHING;
2485 break;
2486
2487 case bp_thread_event:
2488 /* Not sure how we will get here.
2489 GDB should not stop for these breakpoints. */
2490 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
2491 result = PRINT_NOTHING;
2492 break;
2493
2494 case bp_overlay_event:
2495 /* By analogy with the thread event, GDB should not stop for these. */
2496 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
2497 result = PRINT_NOTHING;
2498 break;
2499
2500 case bp_longjmp_master:
2501 /* These should never be enabled. */
2502 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
2503 result = PRINT_NOTHING;
2504 break;
2505
2506 case bp_watchpoint:
2507 case bp_hardware_watchpoint:
2508 annotate_watchpoint (b->number);
2509 if (ui_out_is_mi_like_p (uiout))
2510 ui_out_field_string
2511 (uiout, "reason",
2512 async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
2513 mention (b);
2514 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
2515 ui_out_text (uiout, "\nOld value = ");
2516 watchpoint_value_print (bs->old_val, stb->stream);
2517 ui_out_field_stream (uiout, "old", stb);
2518 ui_out_text (uiout, "\nNew value = ");
2519 watchpoint_value_print (b->val, stb->stream);
2520 ui_out_field_stream (uiout, "new", stb);
2521 ui_out_text (uiout, "\n");
2522 /* More than one watchpoint may have been triggered. */
2523 result = PRINT_UNKNOWN;
2524 break;
2525
2526 case bp_read_watchpoint:
2527 if (ui_out_is_mi_like_p (uiout))
2528 ui_out_field_string
2529 (uiout, "reason",
2530 async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
2531 mention (b);
2532 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
2533 ui_out_text (uiout, "\nValue = ");
2534 watchpoint_value_print (b->val, stb->stream);
2535 ui_out_field_stream (uiout, "value", stb);
2536 ui_out_text (uiout, "\n");
2537 result = PRINT_UNKNOWN;
2538 break;
2539
2540 case bp_access_watchpoint:
2541 if (bs->old_val != NULL)
2542 {
2543 annotate_watchpoint (b->number);
2544 if (ui_out_is_mi_like_p (uiout))
2545 ui_out_field_string
2546 (uiout, "reason",
2547 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
2548 mention (b);
2549 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
2550 ui_out_text (uiout, "\nOld value = ");
2551 watchpoint_value_print (bs->old_val, stb->stream);
2552 ui_out_field_stream (uiout, "old", stb);
2553 ui_out_text (uiout, "\nNew value = ");
2554 }
2555 else
2556 {
2557 mention (b);
2558 if (ui_out_is_mi_like_p (uiout))
2559 ui_out_field_string
2560 (uiout, "reason",
2561 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
2562 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
2563 ui_out_text (uiout, "\nValue = ");
2564 }
2565 watchpoint_value_print (b->val, stb->stream);
2566 ui_out_field_stream (uiout, "new", stb);
2567 ui_out_text (uiout, "\n");
2568 result = PRINT_UNKNOWN;
2569 break;
2570
2571 /* Fall through, we don't deal with these types of breakpoints
2572 here. */
2573
2574 case bp_finish:
2575 if (ui_out_is_mi_like_p (uiout))
2576 ui_out_field_string
2577 (uiout, "reason",
2578 async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
2579 result = PRINT_UNKNOWN;
2580 break;
2581
2582 case bp_until:
2583 if (ui_out_is_mi_like_p (uiout))
2584 ui_out_field_string
2585 (uiout, "reason",
2586 async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
2587 result = PRINT_UNKNOWN;
2588 break;
2589
2590 case bp_none:
2591 case bp_longjmp:
2592 case bp_longjmp_resume:
2593 case bp_step_resume:
2594 case bp_watchpoint_scope:
2595 case bp_call_dummy:
2596 case bp_tracepoint:
2597 case bp_jit_event:
2598 default:
2599 result = PRINT_UNKNOWN;
2600 break;
2601 }
2602
2603 do_cleanups (old_chain);
2604 return result;
2605 }
2606
2607 /* Generic routine for printing messages indicating why we
2608 stopped. The behavior of this function depends on the value
2609 'print_it' in the bpstat structure. Under some circumstances we
2610 may decide not to print anything here and delegate the task to
2611 normal_stop(). */
2612
2613 static enum print_stop_action
2614 print_bp_stop_message (bpstat bs)
2615 {
2616 switch (bs->print_it)
2617 {
2618 case print_it_noop:
2619 /* Nothing should be printed for this bpstat entry. */
2620 return PRINT_UNKNOWN;
2621 break;
2622
2623 case print_it_done:
2624 /* We still want to print the frame, but we already printed the
2625 relevant messages. */
2626 return PRINT_SRC_AND_LOC;
2627 break;
2628
2629 case print_it_normal:
2630 {
2631 const struct bp_location *bl = bs->breakpoint_at;
2632 struct breakpoint *b = bl ? bl->owner : NULL;
2633
2634 /* Normal case. Call the breakpoint's print_it method, or
2635 print_it_typical. */
2636 /* FIXME: how breakpoint can ever be NULL here? */
2637 if (b != NULL && b->ops != NULL && b->ops->print_it != NULL)
2638 return b->ops->print_it (b);
2639 else
2640 return print_it_typical (bs);
2641 }
2642 break;
2643
2644 default:
2645 internal_error (__FILE__, __LINE__,
2646 _("print_bp_stop_message: unrecognized enum value"));
2647 break;
2648 }
2649 }
2650
2651 /* Print a message indicating what happened. This is called from
2652 normal_stop(). The input to this routine is the head of the bpstat
2653 list - a list of the eventpoints that caused this stop. This
2654 routine calls the generic print routine for printing a message
2655 about reasons for stopping. This will print (for example) the
2656 "Breakpoint n," part of the output. The return value of this
2657 routine is one of:
2658
2659 PRINT_UNKNOWN: Means we printed nothing
2660 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
2661 code to print the location. An example is
2662 "Breakpoint 1, " which should be followed by
2663 the location.
2664 PRINT_SRC_ONLY: Means we printed something, but there is no need
2665 to also print the location part of the message.
2666 An example is the catch/throw messages, which
2667 don't require a location appended to the end.
2668 PRINT_NOTHING: We have done some printing and we don't need any
2669 further info to be printed.*/
2670
2671 enum print_stop_action
2672 bpstat_print (bpstat bs)
2673 {
2674 int val;
2675
2676 /* Maybe another breakpoint in the chain caused us to stop.
2677 (Currently all watchpoints go on the bpstat whether hit or not.
2678 That probably could (should) be changed, provided care is taken
2679 with respect to bpstat_explains_signal). */
2680 for (; bs; bs = bs->next)
2681 {
2682 val = print_bp_stop_message (bs);
2683 if (val == PRINT_SRC_ONLY
2684 || val == PRINT_SRC_AND_LOC
2685 || val == PRINT_NOTHING)
2686 return val;
2687 }
2688
2689 /* We reached the end of the chain, or we got a null BS to start
2690 with and nothing was printed. */
2691 return PRINT_UNKNOWN;
2692 }
2693
2694 /* Evaluate the expression EXP and return 1 if value is zero.
2695 This is used inside a catch_errors to evaluate the breakpoint condition.
2696 The argument is a "struct expression *" that has been cast to char * to
2697 make it pass through catch_errors. */
2698
2699 static int
2700 breakpoint_cond_eval (void *exp)
2701 {
2702 struct value *mark = value_mark ();
2703 int i = !value_true (evaluate_expression ((struct expression *) exp));
2704 value_free_to_mark (mark);
2705 return i;
2706 }
2707
2708 /* Allocate a new bpstat and chain it to the current one. */
2709
2710 static bpstat
2711 bpstat_alloc (const struct bp_location *bl, bpstat cbs /* Current "bs" value */ )
2712 {
2713 bpstat bs;
2714
2715 bs = (bpstat) xmalloc (sizeof (*bs));
2716 cbs->next = bs;
2717 bs->breakpoint_at = bl;
2718 /* If the condition is false, etc., don't do the commands. */
2719 bs->commands = NULL;
2720 bs->old_val = NULL;
2721 bs->print_it = print_it_normal;
2722 return bs;
2723 }
2724 \f
2725 /* The target has stopped with waitstatus WS. Check if any hardware
2726 watchpoints have triggered, according to the target. */
2727
2728 int
2729 watchpoints_triggered (struct target_waitstatus *ws)
2730 {
2731 int stopped_by_watchpoint = target_stopped_by_watchpoint ();
2732 CORE_ADDR addr;
2733 struct breakpoint *b;
2734
2735 if (!stopped_by_watchpoint)
2736 {
2737 /* We were not stopped by a watchpoint. Mark all watchpoints
2738 as not triggered. */
2739 ALL_BREAKPOINTS (b)
2740 if (b->type == bp_hardware_watchpoint
2741 || b->type == bp_read_watchpoint
2742 || b->type == bp_access_watchpoint)
2743 b->watchpoint_triggered = watch_triggered_no;
2744
2745 return 0;
2746 }
2747
2748 if (!target_stopped_data_address (&current_target, &addr))
2749 {
2750 /* We were stopped by a watchpoint, but we don't know where.
2751 Mark all watchpoints as unknown. */
2752 ALL_BREAKPOINTS (b)
2753 if (b->type == bp_hardware_watchpoint
2754 || b->type == bp_read_watchpoint
2755 || b->type == bp_access_watchpoint)
2756 b->watchpoint_triggered = watch_triggered_unknown;
2757
2758 return stopped_by_watchpoint;
2759 }
2760
2761 /* The target could report the data address. Mark watchpoints
2762 affected by this data address as triggered, and all others as not
2763 triggered. */
2764
2765 ALL_BREAKPOINTS (b)
2766 if (b->type == bp_hardware_watchpoint
2767 || b->type == bp_read_watchpoint
2768 || b->type == bp_access_watchpoint)
2769 {
2770 struct bp_location *loc;
2771 struct value *v;
2772
2773 b->watchpoint_triggered = watch_triggered_no;
2774 for (loc = b->loc; loc; loc = loc->next)
2775 /* Exact match not required. Within range is
2776 sufficient. */
2777 if (target_watchpoint_addr_within_range (&current_target,
2778 addr, loc->address,
2779 loc->length))
2780 {
2781 b->watchpoint_triggered = watch_triggered_yes;
2782 break;
2783 }
2784 }
2785
2786 return 1;
2787 }
2788
2789 /* Possible return values for watchpoint_check (this can't be an enum
2790 because of check_errors). */
2791 /* The watchpoint has been deleted. */
2792 #define WP_DELETED 1
2793 /* The value has changed. */
2794 #define WP_VALUE_CHANGED 2
2795 /* The value has not changed. */
2796 #define WP_VALUE_NOT_CHANGED 3
2797
2798 #define BP_TEMPFLAG 1
2799 #define BP_HARDWAREFLAG 2
2800
2801 /* Check watchpoint condition. */
2802
2803 static int
2804 watchpoint_check (void *p)
2805 {
2806 bpstat bs = (bpstat) p;
2807 struct breakpoint *b;
2808 struct frame_info *fr;
2809 int within_current_scope;
2810
2811 b = bs->breakpoint_at->owner;
2812
2813 if (b->exp_valid_block == NULL)
2814 within_current_scope = 1;
2815 else
2816 {
2817 struct frame_info *frame = get_current_frame ();
2818 struct gdbarch *frame_arch = get_frame_arch (frame);
2819 CORE_ADDR frame_pc = get_frame_pc (frame);
2820
2821 fr = frame_find_by_id (b->watchpoint_frame);
2822 within_current_scope = (fr != NULL);
2823
2824 /* If we've gotten confused in the unwinder, we might have
2825 returned a frame that can't describe this variable. */
2826 if (within_current_scope)
2827 {
2828 struct symbol *function;
2829
2830 function = get_frame_function (fr);
2831 if (function == NULL
2832 || !contained_in (b->exp_valid_block,
2833 SYMBOL_BLOCK_VALUE (function)))
2834 within_current_scope = 0;
2835 }
2836
2837 /* in_function_epilogue_p() returns a non-zero value if we're still
2838 in the function but the stack frame has already been invalidated.
2839 Since we can't rely on the values of local variables after the
2840 stack has been destroyed, we are treating the watchpoint in that
2841 state as `not changed' without further checking. Don't mark
2842 watchpoints as changed if the current frame is in an epilogue -
2843 even if they are in some other frame, our view of the stack
2844 is likely to be wrong. */
2845 if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
2846 return WP_VALUE_NOT_CHANGED;
2847
2848 if (within_current_scope)
2849 /* If we end up stopping, the current frame will get selected
2850 in normal_stop. So this call to select_frame won't affect
2851 the user. */
2852 select_frame (fr);
2853 }
2854
2855 if (within_current_scope)
2856 {
2857 /* We use value_{,free_to_}mark because it could be a
2858 *long* time before we return to the command level and
2859 call free_all_values. We can't call free_all_values because
2860 we might be in the middle of evaluating a function call. */
2861
2862 struct value *mark = value_mark ();
2863 struct value *new_val;
2864
2865 fetch_watchpoint_value (b->exp, &new_val, NULL, NULL);
2866 if ((b->val != NULL) != (new_val != NULL)
2867 || (b->val != NULL && !value_equal (b->val, new_val)))
2868 {
2869 if (new_val != NULL)
2870 {
2871 release_value (new_val);
2872 value_free_to_mark (mark);
2873 }
2874 bs->old_val = b->val;
2875 b->val = new_val;
2876 b->val_valid = 1;
2877 /* We will stop here */
2878 return WP_VALUE_CHANGED;
2879 }
2880 else
2881 {
2882 /* Nothing changed, don't do anything. */
2883 value_free_to_mark (mark);
2884 /* We won't stop here */
2885 return WP_VALUE_NOT_CHANGED;
2886 }
2887 }
2888 else
2889 {
2890 /* This seems like the only logical thing to do because
2891 if we temporarily ignored the watchpoint, then when
2892 we reenter the block in which it is valid it contains
2893 garbage (in the case of a function, it may have two
2894 garbage values, one before and one after the prologue).
2895 So we can't even detect the first assignment to it and
2896 watch after that (since the garbage may or may not equal
2897 the first value assigned). */
2898 /* We print all the stop information in print_it_typical(), but
2899 in this case, by the time we call print_it_typical() this bp
2900 will be deleted already. So we have no choice but print the
2901 information here. */
2902 if (ui_out_is_mi_like_p (uiout))
2903 ui_out_field_string
2904 (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
2905 ui_out_text (uiout, "\nWatchpoint ");
2906 ui_out_field_int (uiout, "wpnum", b->number);
2907 ui_out_text (uiout, " deleted because the program has left the block in\n\
2908 which its expression is valid.\n");
2909
2910 if (b->related_breakpoint)
2911 b->related_breakpoint->disposition = disp_del_at_next_stop;
2912 b->disposition = disp_del_at_next_stop;
2913
2914 return WP_DELETED;
2915 }
2916 }
2917
2918 /* Return true if it looks like target has stopped due to hitting
2919 breakpoint location BL. This function does not check if we
2920 should stop, only if BL explains the stop. */
2921 static int
2922 bpstat_check_location (const struct bp_location *bl, CORE_ADDR bp_addr)
2923 {
2924 struct breakpoint *b = bl->owner;
2925
2926 if (b->type != bp_watchpoint
2927 && b->type != bp_hardware_watchpoint
2928 && b->type != bp_read_watchpoint
2929 && b->type != bp_access_watchpoint
2930 && b->type != bp_hardware_breakpoint
2931 && b->type != bp_catchpoint) /* a non-watchpoint bp */
2932 {
2933 if (bl->address != bp_addr) /* address doesn't match */
2934 return 0;
2935 if (overlay_debugging /* unmapped overlay section */
2936 && section_is_overlay (bl->section)
2937 && !section_is_mapped (bl->section))
2938 return 0;
2939 }
2940
2941 /* Continuable hardware watchpoints are treated as non-existent if the
2942 reason we stopped wasn't a hardware watchpoint (we didn't stop on
2943 some data address). Otherwise gdb won't stop on a break instruction
2944 in the code (not from a breakpoint) when a hardware watchpoint has
2945 been defined. Also skip watchpoints which we know did not trigger
2946 (did not match the data address). */
2947
2948 if ((b->type == bp_hardware_watchpoint
2949 || b->type == bp_read_watchpoint
2950 || b->type == bp_access_watchpoint)
2951 && b->watchpoint_triggered == watch_triggered_no)
2952 return 0;
2953
2954 if (b->type == bp_hardware_breakpoint)
2955 {
2956 if (bl->address != bp_addr)
2957 return 0;
2958 if (overlay_debugging /* unmapped overlay section */
2959 && section_is_overlay (bl->section)
2960 && !section_is_mapped (bl->section))
2961 return 0;
2962 }
2963
2964 if (b->type == bp_catchpoint)
2965 {
2966 gdb_assert (b->ops != NULL && b->ops->breakpoint_hit != NULL);
2967 if (!b->ops->breakpoint_hit (b))
2968 return 0;
2969 }
2970
2971 return 1;
2972 }
2973
2974 /* If BS refers to a watchpoint, determine if the watched values
2975 has actually changed, and we should stop. If not, set BS->stop
2976 to 0. */
2977 static void
2978 bpstat_check_watchpoint (bpstat bs)
2979 {
2980 const struct bp_location *bl = bs->breakpoint_at;
2981 struct breakpoint *b = bl->owner;
2982
2983 if (b->type == bp_watchpoint
2984 || b->type == bp_read_watchpoint
2985 || b->type == bp_access_watchpoint
2986 || b->type == bp_hardware_watchpoint)
2987 {
2988 CORE_ADDR addr;
2989 struct value *v;
2990 int must_check_value = 0;
2991
2992 if (b->type == bp_watchpoint)
2993 /* For a software watchpoint, we must always check the
2994 watched value. */
2995 must_check_value = 1;
2996 else if (b->watchpoint_triggered == watch_triggered_yes)
2997 /* We have a hardware watchpoint (read, write, or access)
2998 and the target earlier reported an address watched by
2999 this watchpoint. */
3000 must_check_value = 1;
3001 else if (b->watchpoint_triggered == watch_triggered_unknown
3002 && b->type == bp_hardware_watchpoint)
3003 /* We were stopped by a hardware watchpoint, but the target could
3004 not report the data address. We must check the watchpoint's
3005 value. Access and read watchpoints are out of luck; without
3006 a data address, we can't figure it out. */
3007 must_check_value = 1;
3008
3009 if (must_check_value)
3010 {
3011 char *message = xstrprintf ("Error evaluating expression for watchpoint %d\n",
3012 b->number);
3013 struct cleanup *cleanups = make_cleanup (xfree, message);
3014 int e = catch_errors (watchpoint_check, bs, message,
3015 RETURN_MASK_ALL);
3016 do_cleanups (cleanups);
3017 switch (e)
3018 {
3019 case WP_DELETED:
3020 /* We've already printed what needs to be printed. */
3021 bs->print_it = print_it_done;
3022 /* Stop. */
3023 break;
3024 case WP_VALUE_CHANGED:
3025 if (b->type == bp_read_watchpoint)
3026 {
3027 /* Don't stop: read watchpoints shouldn't fire if
3028 the value has changed. This is for targets
3029 which cannot set read-only watchpoints. */
3030 bs->print_it = print_it_noop;
3031 bs->stop = 0;
3032 }
3033 break;
3034 case WP_VALUE_NOT_CHANGED:
3035 if (b->type == bp_hardware_watchpoint
3036 || b->type == bp_watchpoint)
3037 {
3038 /* Don't stop: write watchpoints shouldn't fire if
3039 the value hasn't changed. */
3040 bs->print_it = print_it_noop;
3041 bs->stop = 0;
3042 }
3043 /* Stop. */
3044 break;
3045 default:
3046 /* Can't happen. */
3047 case 0:
3048 /* Error from catch_errors. */
3049 printf_filtered (_("Watchpoint %d deleted.\n"), b->number);
3050 if (b->related_breakpoint)
3051 b->related_breakpoint->disposition = disp_del_at_next_stop;
3052 b->disposition = disp_del_at_next_stop;
3053 /* We've already printed what needs to be printed. */
3054 bs->print_it = print_it_done;
3055 break;
3056 }
3057 }
3058 else /* must_check_value == 0 */
3059 {
3060 /* This is a case where some watchpoint(s) triggered, but
3061 not at the address of this watchpoint, or else no
3062 watchpoint triggered after all. So don't print
3063 anything for this watchpoint. */
3064 bs->print_it = print_it_noop;
3065 bs->stop = 0;
3066 }
3067 }
3068 }
3069
3070
3071 /* Check conditions (condition proper, frame, thread and ignore count)
3072 of breakpoint referred to by BS. If we should not stop for this
3073 breakpoint, set BS->stop to 0. */
3074 static void
3075 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
3076 {
3077 int thread_id = pid_to_thread_id (ptid);
3078 const struct bp_location *bl = bs->breakpoint_at;
3079 struct breakpoint *b = bl->owner;
3080
3081 if (frame_id_p (b->frame_id)
3082 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
3083 bs->stop = 0;
3084 else if (bs->stop)
3085 {
3086 int value_is_zero = 0;
3087
3088 /* If this is a scope breakpoint, mark the associated
3089 watchpoint as triggered so that we will handle the
3090 out-of-scope event. We'll get to the watchpoint next
3091 iteration. */
3092 if (b->type == bp_watchpoint_scope)
3093 b->related_breakpoint->watchpoint_triggered = watch_triggered_yes;
3094
3095 if (bl->cond && bl->owner->disposition != disp_del_at_next_stop)
3096 {
3097 /* We use value_mark and value_free_to_mark because it could
3098 be a long time before we return to the command level and
3099 call free_all_values. We can't call free_all_values
3100 because we might be in the middle of evaluating a
3101 function call. */
3102 struct value *mark = value_mark ();
3103
3104 /* Need to select the frame, with all that implies so that
3105 the conditions will have the right context. Because we
3106 use the frame, we will not see an inlined function's
3107 variables when we arrive at a breakpoint at the start
3108 of the inlined function; the current frame will be the
3109 call site. */
3110 select_frame (get_current_frame ());
3111 value_is_zero
3112 = catch_errors (breakpoint_cond_eval, (bl->cond),
3113 "Error in testing breakpoint condition:\n",
3114 RETURN_MASK_ALL);
3115 /* FIXME-someday, should give breakpoint # */
3116 value_free_to_mark (mark);
3117 }
3118 if (bl->cond && value_is_zero)
3119 {
3120 bs->stop = 0;
3121 }
3122 else if (b->thread != -1 && b->thread != thread_id)
3123 {
3124 bs->stop = 0;
3125 }
3126 else if (b->ignore_count > 0)
3127 {
3128 b->ignore_count--;
3129 annotate_ignore_count_change ();
3130 bs->stop = 0;
3131 /* Increase the hit count even though we don't
3132 stop. */
3133 ++(b->hit_count);
3134 }
3135 }
3136 }
3137
3138
3139 /* Get a bpstat associated with having just stopped at address
3140 BP_ADDR in thread PTID.
3141
3142 Determine whether we stopped at a breakpoint, etc, or whether we
3143 don't understand this stop. Result is a chain of bpstat's such that:
3144
3145 if we don't understand the stop, the result is a null pointer.
3146
3147 if we understand why we stopped, the result is not null.
3148
3149 Each element of the chain refers to a particular breakpoint or
3150 watchpoint at which we have stopped. (We may have stopped for
3151 several reasons concurrently.)
3152
3153 Each element of the chain has valid next, breakpoint_at,
3154 commands, FIXME??? fields. */
3155
3156 bpstat
3157 bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid)
3158 {
3159 struct breakpoint *b = NULL;
3160 const struct bp_location *bl;
3161 struct bp_location *loc;
3162 /* Root of the chain of bpstat's */
3163 struct bpstats root_bs[1];
3164 /* Pointer to the last thing in the chain currently. */
3165 bpstat bs = root_bs;
3166 int ix;
3167 int need_remove_insert;
3168
3169 ALL_BP_LOCATIONS (bl)
3170 {
3171 b = bl->owner;
3172 gdb_assert (b);
3173 if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
3174 continue;
3175
3176 /* For hardware watchpoints, we look only at the first location.
3177 The watchpoint_check function will work on entire expression,
3178 not the individual locations. For read watchopints, the
3179 watchpoints_triggered function have checked all locations
3180 alrea
3181 */
3182 if (b->type == bp_hardware_watchpoint && bl != b->loc)
3183 continue;
3184
3185 if (!bpstat_check_location (bl, bp_addr))
3186 continue;
3187
3188 /* Come here if it's a watchpoint, or if the break address matches */
3189
3190 bs = bpstat_alloc (bl, bs); /* Alloc a bpstat to explain stop */
3191
3192 /* Assume we stop. Should we find watchpoint that is not actually
3193 triggered, or if condition of breakpoint is false, we'll reset
3194 'stop' to 0. */
3195 bs->stop = 1;
3196 bs->print = 1;
3197
3198 bpstat_check_watchpoint (bs);
3199 if (!bs->stop)
3200 continue;
3201
3202 if (b->type == bp_thread_event || b->type == bp_overlay_event
3203 || b->type == bp_longjmp_master)
3204 /* We do not stop for these. */
3205 bs->stop = 0;
3206 else
3207 bpstat_check_breakpoint_conditions (bs, ptid);
3208
3209 if (bs->stop)
3210 {
3211 ++(b->hit_count);
3212
3213 /* We will stop here */
3214 if (b->disposition == disp_disable)
3215 {
3216 if (b->enable_state != bp_permanent)
3217 b->enable_state = bp_disabled;
3218 update_global_location_list (0);
3219 }
3220 if (b->silent)
3221 bs->print = 0;
3222 bs->commands = b->commands;
3223 if (bs->commands
3224 && (strcmp ("silent", bs->commands->line) == 0
3225 || (xdb_commands && strcmp ("Q", bs->commands->line) == 0)))
3226 {
3227 bs->commands = bs->commands->next;
3228 bs->print = 0;
3229 }
3230 bs->commands = copy_command_lines (bs->commands);
3231 }
3232
3233 /* Print nothing for this entry if we dont stop or if we dont print. */
3234 if (bs->stop == 0 || bs->print == 0)
3235 bs->print_it = print_it_noop;
3236 }
3237
3238 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3239 {
3240 if (loc->address == bp_addr)
3241 {
3242 bs = bpstat_alloc (loc, bs);
3243 /* For hits of moribund locations, we should just proceed. */
3244 bs->stop = 0;
3245 bs->print = 0;
3246 bs->print_it = print_it_noop;
3247 }
3248 }
3249
3250 bs->next = NULL; /* Terminate the chain */
3251 bs = root_bs->next; /* Re-grab the head of the chain */
3252
3253 /* If we aren't stopping, the value of some hardware watchpoint may
3254 not have changed, but the intermediate memory locations we are
3255 watching may have. Don't bother if we're stopping; this will get
3256 done later. */
3257 for (bs = root_bs->next; bs != NULL; bs = bs->next)
3258 if (bs->stop)
3259 break;
3260
3261 need_remove_insert = 0;
3262 if (bs == NULL)
3263 for (bs = root_bs->next; bs != NULL; bs = bs->next)
3264 if (!bs->stop
3265 && bs->breakpoint_at->owner
3266 && (bs->breakpoint_at->owner->type == bp_hardware_watchpoint
3267 || bs->breakpoint_at->owner->type == bp_read_watchpoint
3268 || bs->breakpoint_at->owner->type == bp_access_watchpoint))
3269 {
3270 /* remove/insert can invalidate bs->breakpoint_at, if this
3271 location is no longer used by the watchpoint. Prevent
3272 further code from trying to use it. */
3273 bs->breakpoint_at = NULL;
3274 need_remove_insert = 1;
3275 }
3276
3277 if (need_remove_insert)
3278 {
3279 remove_breakpoints ();
3280 insert_breakpoints ();
3281 }
3282
3283 return root_bs->next;
3284 }
3285 \f
3286 /* Tell what to do about this bpstat. */
3287 struct bpstat_what
3288 bpstat_what (bpstat bs)
3289 {
3290 /* Classify each bpstat as one of the following. */
3291 enum class
3292 {
3293 /* This bpstat element has no effect on the main_action. */
3294 no_effect = 0,
3295
3296 /* There was a watchpoint, stop but don't print. */
3297 wp_silent,
3298
3299 /* There was a watchpoint, stop and print. */
3300 wp_noisy,
3301
3302 /* There was a breakpoint but we're not stopping. */
3303 bp_nostop,
3304
3305 /* There was a breakpoint, stop but don't print. */
3306 bp_silent,
3307
3308 /* There was a breakpoint, stop and print. */
3309 bp_noisy,
3310
3311 /* We hit the longjmp breakpoint. */
3312 long_jump,
3313
3314 /* We hit the longjmp_resume breakpoint. */
3315 long_resume,
3316
3317 /* We hit the step_resume breakpoint. */
3318 step_resume,
3319
3320 /* We hit the shared library event breakpoint. */
3321 shlib_event,
3322
3323 /* We hit the jit event breakpoint. */
3324 jit_event,
3325
3326 /* This is just used to count how many enums there are. */
3327 class_last
3328 };
3329
3330 /* Here is the table which drives this routine. So that we can
3331 format it pretty, we define some abbreviations for the
3332 enum bpstat_what codes. */
3333 #define kc BPSTAT_WHAT_KEEP_CHECKING
3334 #define ss BPSTAT_WHAT_STOP_SILENT
3335 #define sn BPSTAT_WHAT_STOP_NOISY
3336 #define sgl BPSTAT_WHAT_SINGLE
3337 #define slr BPSTAT_WHAT_SET_LONGJMP_RESUME
3338 #define clr BPSTAT_WHAT_CLEAR_LONGJMP_RESUME
3339 #define sr BPSTAT_WHAT_STEP_RESUME
3340 #define shl BPSTAT_WHAT_CHECK_SHLIBS
3341 #define jit BPSTAT_WHAT_CHECK_JIT
3342
3343 /* "Can't happen." Might want to print an error message.
3344 abort() is not out of the question, but chances are GDB is just
3345 a bit confused, not unusable. */
3346 #define err BPSTAT_WHAT_STOP_NOISY
3347
3348 /* Given an old action and a class, come up with a new action. */
3349 /* One interesting property of this table is that wp_silent is the same
3350 as bp_silent and wp_noisy is the same as bp_noisy. That is because
3351 after stopping, the check for whether to step over a breakpoint
3352 (BPSTAT_WHAT_SINGLE type stuff) is handled in proceed() without
3353 reference to how we stopped. We retain separate wp_silent and
3354 bp_silent codes in case we want to change that someday.
3355
3356 Another possibly interesting property of this table is that
3357 there's a partial ordering, priority-like, of the actions. Once
3358 you've decided that some action is appropriate, you'll never go
3359 back and decide something of a lower priority is better. The
3360 ordering is:
3361
3362 kc < jit clr sgl shl slr sn sr ss
3363 sgl < jit shl slr sn sr ss
3364 slr < jit err shl sn sr ss
3365 clr < jit err shl sn sr ss
3366 ss < jit shl sn sr
3367 sn < jit shl sr
3368 jit < shl sr
3369 shl < sr
3370 sr <
3371
3372 What I think this means is that we don't need a damned table
3373 here. If you just put the rows and columns in the right order,
3374 it'd look awfully regular. We could simply walk the bpstat list
3375 and choose the highest priority action we find, with a little
3376 logic to handle the 'err' cases. */
3377
3378 /* step_resume entries: a step resume breakpoint overrides another
3379 breakpoint of signal handling (see comment in wait_for_inferior
3380 at where we set the step_resume breakpoint). */
3381
3382 static const enum bpstat_what_main_action
3383 table[(int) class_last][(int) BPSTAT_WHAT_LAST] =
3384 {
3385 /* old action */
3386 /* kc ss sn sgl slr clr sr shl jit */
3387 /* no_effect */ {kc, ss, sn, sgl, slr, clr, sr, shl, jit},
3388 /* wp_silent */ {ss, ss, sn, ss, ss, ss, sr, shl, jit},
3389 /* wp_noisy */ {sn, sn, sn, sn, sn, sn, sr, shl, jit},
3390 /* bp_nostop */ {sgl, ss, sn, sgl, slr, slr, sr, shl, jit},
3391 /* bp_silent */ {ss, ss, sn, ss, ss, ss, sr, shl, jit},
3392 /* bp_noisy */ {sn, sn, sn, sn, sn, sn, sr, shl, jit},
3393 /* long_jump */ {slr, ss, sn, slr, slr, err, sr, shl, jit},
3394 /* long_resume */ {clr, ss, sn, err, err, err, sr, shl, jit},
3395 /* step_resume */ {sr, sr, sr, sr, sr, sr, sr, sr, sr },
3396 /* shlib */ {shl, shl, shl, shl, shl, shl, sr, shl, shl},
3397 /* jit_event */ {jit, jit, jit, jit, jit, jit, sr, jit, jit}
3398 };
3399
3400 #undef kc
3401 #undef ss
3402 #undef sn
3403 #undef sgl
3404 #undef slr
3405 #undef clr
3406 #undef err
3407 #undef sr
3408 #undef ts
3409 #undef shl
3410 #undef jit
3411 enum bpstat_what_main_action current_action = BPSTAT_WHAT_KEEP_CHECKING;
3412 struct bpstat_what retval;
3413
3414 retval.call_dummy = 0;
3415 for (; bs != NULL; bs = bs->next)
3416 {
3417 enum class bs_class = no_effect;
3418 if (bs->breakpoint_at == NULL)
3419 /* I suspect this can happen if it was a momentary breakpoint
3420 which has since been deleted. */
3421 continue;
3422 if (bs->breakpoint_at->owner == NULL)
3423 bs_class = bp_nostop;
3424 else
3425 switch (bs->breakpoint_at->owner->type)
3426 {
3427 case bp_none:
3428 continue;
3429
3430 case bp_breakpoint:
3431 case bp_hardware_breakpoint:
3432 case bp_until:
3433 case bp_finish:
3434 if (bs->stop)
3435 {
3436 if (bs->print)
3437 bs_class = bp_noisy;
3438 else
3439 bs_class = bp_silent;
3440 }
3441 else
3442 bs_class = bp_nostop;
3443 break;
3444 case bp_watchpoint:
3445 case bp_hardware_watchpoint:
3446 case bp_read_watchpoint:
3447 case bp_access_watchpoint:
3448 if (bs->stop)
3449 {
3450 if (bs->print)
3451 bs_class = wp_noisy;
3452 else
3453 bs_class = wp_silent;
3454 }
3455 else
3456 /* There was a watchpoint, but we're not stopping.
3457 This requires no further action. */
3458 bs_class = no_effect;
3459 break;
3460 case bp_longjmp:
3461 bs_class = long_jump;
3462 break;
3463 case bp_longjmp_resume:
3464 bs_class = long_resume;
3465 break;
3466 case bp_step_resume:
3467 if (bs->stop)
3468 {
3469 bs_class = step_resume;
3470 }
3471 else
3472 /* It is for the wrong frame. */
3473 bs_class = bp_nostop;
3474 break;
3475 case bp_watchpoint_scope:
3476 bs_class = bp_nostop;
3477 break;
3478 case bp_shlib_event:
3479 bs_class = shlib_event;
3480 break;
3481 case bp_jit_event:
3482 bs_class = jit_event;
3483 break;
3484 case bp_thread_event:
3485 case bp_overlay_event:
3486 case bp_longjmp_master:
3487 bs_class = bp_nostop;
3488 break;
3489 case bp_catchpoint:
3490 if (bs->stop)
3491 {
3492 if (bs->print)
3493 bs_class = bp_noisy;
3494 else
3495 bs_class = bp_silent;
3496 }
3497 else
3498 /* There was a catchpoint, but we're not stopping.
3499 This requires no further action. */
3500 bs_class = no_effect;
3501 break;
3502 case bp_call_dummy:
3503 /* Make sure the action is stop (silent or noisy),
3504 so infrun.c pops the dummy frame. */
3505 bs_class = bp_silent;
3506 retval.call_dummy = 1;
3507 break;
3508 case bp_tracepoint:
3509 /* Tracepoint hits should not be reported back to GDB, and
3510 if one got through somehow, it should have been filtered
3511 out already. */
3512 internal_error (__FILE__, __LINE__,
3513 _("bpstat_what: bp_tracepoint encountered"));
3514 break;
3515 }
3516 current_action = table[(int) bs_class][(int) current_action];
3517 }
3518 retval.main_action = current_action;
3519 return retval;
3520 }
3521
3522 /* Nonzero if we should step constantly (e.g. watchpoints on machines
3523 without hardware support). This isn't related to a specific bpstat,
3524 just to things like whether watchpoints are set. */
3525
3526 int
3527 bpstat_should_step (void)
3528 {
3529 struct breakpoint *b;
3530 ALL_BREAKPOINTS (b)
3531 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
3532 return 1;
3533 return 0;
3534 }
3535
3536 \f
3537
3538 static void print_breakpoint_location (struct breakpoint *b,
3539 struct bp_location *loc,
3540 char *wrap_indent,
3541 struct ui_stream *stb)
3542 {
3543 if (b->source_file)
3544 {
3545 struct symbol *sym
3546 = find_pc_sect_function (loc->address, loc->section);
3547 if (sym)
3548 {
3549 ui_out_text (uiout, "in ");
3550 ui_out_field_string (uiout, "func",
3551 SYMBOL_PRINT_NAME (sym));
3552 ui_out_wrap_hint (uiout, wrap_indent);
3553 ui_out_text (uiout, " at ");
3554 }
3555 ui_out_field_string (uiout, "file", b->source_file);
3556 ui_out_text (uiout, ":");
3557
3558 if (ui_out_is_mi_like_p (uiout))
3559 {
3560 struct symtab_and_line sal = find_pc_line (loc->address, 0);
3561 char *fullname = symtab_to_fullname (sal.symtab);
3562
3563 if (fullname)
3564 ui_out_field_string (uiout, "fullname", fullname);
3565 }
3566
3567 ui_out_field_int (uiout, "line", b->line_number);
3568 }
3569 else if (!b->loc)
3570 {
3571 ui_out_field_string (uiout, "pending", b->addr_string);
3572 }
3573 else
3574 {
3575 print_address_symbolic (loc->address, stb->stream, demangle, "");
3576 ui_out_field_stream (uiout, "at", stb);
3577 }
3578 }
3579
3580 /* Print B to gdb_stdout. */
3581 static void
3582 print_one_breakpoint_location (struct breakpoint *b,
3583 struct bp_location *loc,
3584 int loc_number,
3585 struct bp_location **last_loc,
3586 int print_address_bits)
3587 {
3588 struct command_line *l;
3589 struct symbol *sym;
3590 struct ep_type_description
3591 {
3592 enum bptype type;
3593 char *description;
3594 };
3595 static struct ep_type_description bptypes[] =
3596 {
3597 {bp_none, "?deleted?"},
3598 {bp_breakpoint, "breakpoint"},
3599 {bp_hardware_breakpoint, "hw breakpoint"},
3600 {bp_until, "until"},
3601 {bp_finish, "finish"},
3602 {bp_watchpoint, "watchpoint"},
3603 {bp_hardware_watchpoint, "hw watchpoint"},
3604 {bp_read_watchpoint, "read watchpoint"},
3605 {bp_access_watchpoint, "acc watchpoint"},
3606 {bp_longjmp, "longjmp"},
3607 {bp_longjmp_resume, "longjmp resume"},
3608 {bp_step_resume, "step resume"},
3609 {bp_watchpoint_scope, "watchpoint scope"},
3610 {bp_call_dummy, "call dummy"},
3611 {bp_shlib_event, "shlib events"},
3612 {bp_thread_event, "thread events"},
3613 {bp_overlay_event, "overlay events"},
3614 {bp_longjmp_master, "longjmp master"},
3615 {bp_catchpoint, "catchpoint"},
3616 {bp_tracepoint, "tracepoint"},
3617 {bp_jit_event, "jit events"},
3618 };
3619
3620 static char bpenables[] = "nynny";
3621 char wrap_indent[80];
3622 struct ui_stream *stb = ui_out_stream_new (uiout);
3623 struct cleanup *old_chain = make_cleanup_ui_out_stream_delete (stb);
3624 struct cleanup *bkpt_chain;
3625
3626 int header_of_multiple = 0;
3627 int part_of_multiple = (loc != NULL);
3628 struct value_print_options opts;
3629
3630 get_user_print_options (&opts);
3631
3632 gdb_assert (!loc || loc_number != 0);
3633 /* See comment in print_one_breakpoint concerning
3634 treatment of breakpoints with single disabled
3635 location. */
3636 if (loc == NULL
3637 && (b->loc != NULL
3638 && (b->loc->next != NULL || !b->loc->enabled)))
3639 header_of_multiple = 1;
3640 if (loc == NULL)
3641 loc = b->loc;
3642
3643 annotate_record ();
3644 bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
3645
3646 /* 1 */
3647 annotate_field (0);
3648 if (part_of_multiple)
3649 {
3650 char *formatted;
3651 formatted = xstrprintf ("%d.%d", b->number, loc_number);
3652 ui_out_field_string (uiout, "number", formatted);
3653 xfree (formatted);
3654 }
3655 else
3656 {
3657 ui_out_field_int (uiout, "number", b->number);
3658 }
3659
3660 /* 2 */
3661 annotate_field (1);
3662 if (part_of_multiple)
3663 ui_out_field_skip (uiout, "type");
3664 else
3665 {
3666 if (((int) b->type >= (sizeof (bptypes) / sizeof (bptypes[0])))
3667 || ((int) b->type != bptypes[(int) b->type].type))
3668 internal_error (__FILE__, __LINE__,
3669 _("bptypes table does not describe type #%d."),
3670 (int) b->type);
3671 ui_out_field_string (uiout, "type", bptypes[(int) b->type].description);
3672 }
3673
3674 /* 3 */
3675 annotate_field (2);
3676 if (part_of_multiple)
3677 ui_out_field_skip (uiout, "disp");
3678 else
3679 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
3680
3681
3682 /* 4 */
3683 annotate_field (3);
3684 if (part_of_multiple)
3685 ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
3686 else
3687 ui_out_field_fmt (uiout, "enabled", "%c",
3688 bpenables[(int) b->enable_state]);
3689 ui_out_spaces (uiout, 2);
3690
3691
3692 /* 5 and 6 */
3693 strcpy (wrap_indent, " ");
3694 if (opts.addressprint)
3695 {
3696 if (print_address_bits <= 32)
3697 strcat (wrap_indent, " ");
3698 else
3699 strcat (wrap_indent, " ");
3700 }
3701
3702 if (b->ops != NULL && b->ops->print_one != NULL)
3703 {
3704 /* Although the print_one can possibly print
3705 all locations, calling it here is not likely
3706 to get any nice result. So, make sure there's
3707 just one location. */
3708 gdb_assert (b->loc == NULL || b->loc->next == NULL);
3709 b->ops->print_one (b, last_loc);
3710 }
3711 else
3712 switch (b->type)
3713 {
3714 case bp_none:
3715 internal_error (__FILE__, __LINE__,
3716 _("print_one_breakpoint: bp_none encountered\n"));
3717 break;
3718
3719 case bp_watchpoint:
3720 case bp_hardware_watchpoint:
3721 case bp_read_watchpoint:
3722 case bp_access_watchpoint:
3723 /* Field 4, the address, is omitted (which makes the columns
3724 not line up too nicely with the headers, but the effect
3725 is relatively readable). */
3726 if (opts.addressprint)
3727 ui_out_field_skip (uiout, "addr");
3728 annotate_field (5);
3729 ui_out_field_string (uiout, "what", b->exp_string);
3730 break;
3731
3732 case bp_breakpoint:
3733 case bp_hardware_breakpoint:
3734 case bp_until:
3735 case bp_finish:
3736 case bp_longjmp:
3737 case bp_longjmp_resume:
3738 case bp_step_resume:
3739 case bp_watchpoint_scope:
3740 case bp_call_dummy:
3741 case bp_shlib_event:
3742 case bp_thread_event:
3743 case bp_overlay_event:
3744 case bp_longjmp_master:
3745 case bp_tracepoint:
3746 case bp_jit_event:
3747 if (opts.addressprint)
3748 {
3749 annotate_field (4);
3750 if (header_of_multiple)
3751 ui_out_field_string (uiout, "addr", "<MULTIPLE>");
3752 else if (b->loc == NULL || loc->shlib_disabled)
3753 ui_out_field_string (uiout, "addr", "<PENDING>");
3754 else
3755 ui_out_field_core_addr (uiout, "addr",
3756 loc->gdbarch, loc->address);
3757 }
3758 annotate_field (5);
3759 if (!header_of_multiple)
3760 print_breakpoint_location (b, loc, wrap_indent, stb);
3761 if (b->loc)
3762 *last_loc = b->loc;
3763 break;
3764 }
3765
3766 if (!part_of_multiple)
3767 {
3768 if (b->thread != -1)
3769 {
3770 /* FIXME: This seems to be redundant and lost here; see the
3771 "stop only in" line a little further down. */
3772 ui_out_text (uiout, " thread ");
3773 ui_out_field_int (uiout, "thread", b->thread);
3774 }
3775 else if (b->task != 0)
3776 {
3777 ui_out_text (uiout, " task ");
3778 ui_out_field_int (uiout, "task", b->task);
3779 }
3780 }
3781
3782 ui_out_text (uiout, "\n");
3783
3784 if (part_of_multiple && frame_id_p (b->frame_id))
3785 {
3786 annotate_field (6);
3787 ui_out_text (uiout, "\tstop only in stack frame at ");
3788 /* FIXME: cagney/2002-12-01: Shouldn't be poeking around inside
3789 the frame ID. */
3790 ui_out_field_core_addr (uiout, "frame",
3791 b->gdbarch, b->frame_id.stack_addr);
3792 ui_out_text (uiout, "\n");
3793 }
3794
3795 if (!part_of_multiple && b->cond_string && !ada_exception_catchpoint_p (b))
3796 {
3797 /* We do not print the condition for Ada exception catchpoints
3798 because the condition is an internal implementation detail
3799 that we do not want to expose to the user. */
3800 annotate_field (7);
3801 if (b->type == bp_tracepoint)
3802 ui_out_text (uiout, "\ttrace only if ");
3803 else
3804 ui_out_text (uiout, "\tstop only if ");
3805 ui_out_field_string (uiout, "cond", b->cond_string);
3806 ui_out_text (uiout, "\n");
3807 }
3808
3809 if (!part_of_multiple && b->thread != -1)
3810 {
3811 /* FIXME should make an annotation for this */
3812 ui_out_text (uiout, "\tstop only in thread ");
3813 ui_out_field_int (uiout, "thread", b->thread);
3814 ui_out_text (uiout, "\n");
3815 }
3816
3817 if (!part_of_multiple && b->hit_count)
3818 {
3819 /* FIXME should make an annotation for this */
3820 if (ep_is_catchpoint (b))
3821 ui_out_text (uiout, "\tcatchpoint");
3822 else
3823 ui_out_text (uiout, "\tbreakpoint");
3824 ui_out_text (uiout, " already hit ");
3825 ui_out_field_int (uiout, "times", b->hit_count);
3826 if (b->hit_count == 1)
3827 ui_out_text (uiout, " time\n");
3828 else
3829 ui_out_text (uiout, " times\n");
3830 }
3831
3832 /* Output the count also if it is zero, but only if this is
3833 mi. FIXME: Should have a better test for this. */
3834 if (ui_out_is_mi_like_p (uiout))
3835 if (!part_of_multiple && b->hit_count == 0)
3836 ui_out_field_int (uiout, "times", b->hit_count);
3837
3838 if (!part_of_multiple && b->ignore_count)
3839 {
3840 annotate_field (8);
3841 ui_out_text (uiout, "\tignore next ");
3842 ui_out_field_int (uiout, "ignore", b->ignore_count);
3843 ui_out_text (uiout, " hits\n");
3844 }
3845
3846 l = b->commands;
3847 if (!part_of_multiple && l)
3848 {
3849 struct cleanup *script_chain;
3850
3851 annotate_field (9);
3852 script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
3853 print_command_lines (uiout, l, 4);
3854 do_cleanups (script_chain);
3855 }
3856
3857 if (!part_of_multiple && b->pass_count)
3858 {
3859 annotate_field (10);
3860 ui_out_text (uiout, "\tpass count ");
3861 ui_out_field_int (uiout, "pass", b->pass_count);
3862 ui_out_text (uiout, " \n");
3863 }
3864
3865 if (!part_of_multiple && b->step_count)
3866 {
3867 annotate_field (11);
3868 ui_out_text (uiout, "\tstep count ");
3869 ui_out_field_int (uiout, "step", b->step_count);
3870 ui_out_text (uiout, " \n");
3871 }
3872
3873 if (!part_of_multiple && b->actions)
3874 {
3875 struct action_line *action;
3876 annotate_field (12);
3877 for (action = b->actions; action; action = action->next)
3878 {
3879 ui_out_text (uiout, " A\t");
3880 ui_out_text (uiout, action->action);
3881 ui_out_text (uiout, "\n");
3882 }
3883 }
3884
3885 if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
3886 {
3887 if (b->addr_string)
3888 ui_out_field_string (uiout, "original-location", b->addr_string);
3889 else if (b->exp_string)
3890 ui_out_field_string (uiout, "original-location", b->exp_string);
3891 }
3892
3893 do_cleanups (bkpt_chain);
3894 do_cleanups (old_chain);
3895 }
3896
3897 static void
3898 print_one_breakpoint (struct breakpoint *b,
3899 struct bp_location **last_loc, int print_address_bits)
3900 {
3901 print_one_breakpoint_location (b, NULL, 0, last_loc, print_address_bits);
3902
3903 /* If this breakpoint has custom print function,
3904 it's already printed. Otherwise, print individual
3905 locations, if any. */
3906 if (b->ops == NULL || b->ops->print_one == NULL)
3907 {
3908 /* If breakpoint has a single location that is
3909 disabled, we print it as if it had
3910 several locations, since otherwise it's hard to
3911 represent "breakpoint enabled, location disabled"
3912 situation.
3913 Note that while hardware watchpoints have
3914 several locations internally, that's no a property
3915 exposed to user. */
3916 if (b->loc
3917 && !is_hardware_watchpoint (b)
3918 && (b->loc->next || !b->loc->enabled)
3919 && !ui_out_is_mi_like_p (uiout))
3920 {
3921 struct bp_location *loc;
3922 int n = 1;
3923 for (loc = b->loc; loc; loc = loc->next, ++n)
3924 print_one_breakpoint_location (b, loc, n, last_loc,
3925 print_address_bits);
3926 }
3927 }
3928 }
3929
3930 static int
3931 breakpoint_address_bits (struct breakpoint *b)
3932 {
3933 int print_address_bits = 0;
3934 struct bp_location *loc;
3935
3936 for (loc = b->loc; loc; loc = loc->next)
3937 {
3938 int addr_bit = gdbarch_addr_bit (b->gdbarch);
3939 if (addr_bit > print_address_bits)
3940 print_address_bits = addr_bit;
3941 }
3942
3943 return print_address_bits;
3944 }
3945
3946 struct captured_breakpoint_query_args
3947 {
3948 int bnum;
3949 };
3950
3951 static int
3952 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
3953 {
3954 struct captured_breakpoint_query_args *args = data;
3955 struct breakpoint *b;
3956 struct bp_location *dummy_loc = NULL;
3957 ALL_BREAKPOINTS (b)
3958 {
3959 if (args->bnum == b->number)
3960 {
3961 int print_address_bits = breakpoint_address_bits (b);
3962 print_one_breakpoint (b, &dummy_loc, print_address_bits);
3963 return GDB_RC_OK;
3964 }
3965 }
3966 return GDB_RC_NONE;
3967 }
3968
3969 enum gdb_rc
3970 gdb_breakpoint_query (struct ui_out *uiout, int bnum, char **error_message)
3971 {
3972 struct captured_breakpoint_query_args args;
3973 args.bnum = bnum;
3974 /* For the moment we don't trust print_one_breakpoint() to not throw
3975 an error. */
3976 if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
3977 error_message, RETURN_MASK_ALL) < 0)
3978 return GDB_RC_FAIL;
3979 else
3980 return GDB_RC_OK;
3981 }
3982
3983 /* Return non-zero if B is user settable (breakpoints, watchpoints,
3984 catchpoints, et.al.). */
3985
3986 static int
3987 user_settable_breakpoint (const struct breakpoint *b)
3988 {
3989 return (b->type == bp_breakpoint
3990 || b->type == bp_catchpoint
3991 || b->type == bp_hardware_breakpoint
3992 || b->type == bp_tracepoint
3993 || b->type == bp_watchpoint
3994 || b->type == bp_read_watchpoint
3995 || b->type == bp_access_watchpoint
3996 || b->type == bp_hardware_watchpoint);
3997 }
3998
3999 /* Print information on user settable breakpoint (watchpoint, etc)
4000 number BNUM. If BNUM is -1 print all user settable breakpoints.
4001 If ALLFLAG is non-zero, include non- user settable breakpoints. */
4002
4003 static void
4004 breakpoint_1 (int bnum, int allflag)
4005 {
4006 struct breakpoint *b;
4007 struct bp_location *last_loc = NULL;
4008 int nr_printable_breakpoints;
4009 struct cleanup *bkpttbl_chain;
4010 struct value_print_options opts;
4011 int print_address_bits = 0;
4012
4013 get_user_print_options (&opts);
4014
4015 /* Compute the number of rows in the table, as well as the
4016 size required for address fields. */
4017 nr_printable_breakpoints = 0;
4018 ALL_BREAKPOINTS (b)
4019 if (bnum == -1
4020 || bnum == b->number)
4021 {
4022 if (allflag || user_settable_breakpoint (b))
4023 {
4024 int addr_bit = breakpoint_address_bits (b);
4025 if (addr_bit > print_address_bits)
4026 print_address_bits = addr_bit;
4027
4028 nr_printable_breakpoints++;
4029 }
4030 }
4031
4032 if (opts.addressprint)
4033 bkpttbl_chain
4034 = make_cleanup_ui_out_table_begin_end (uiout, 6, nr_printable_breakpoints,
4035 "BreakpointTable");
4036 else
4037 bkpttbl_chain
4038 = make_cleanup_ui_out_table_begin_end (uiout, 5, nr_printable_breakpoints,
4039 "BreakpointTable");
4040
4041 if (nr_printable_breakpoints > 0)
4042 annotate_breakpoints_headers ();
4043 if (nr_printable_breakpoints > 0)
4044 annotate_field (0);
4045 ui_out_table_header (uiout, 7, ui_left, "number", "Num"); /* 1 */
4046 if (nr_printable_breakpoints > 0)
4047 annotate_field (1);
4048 ui_out_table_header (uiout, 14, ui_left, "type", "Type"); /* 2 */
4049 if (nr_printable_breakpoints > 0)
4050 annotate_field (2);
4051 ui_out_table_header (uiout, 4, ui_left, "disp", "Disp"); /* 3 */
4052 if (nr_printable_breakpoints > 0)
4053 annotate_field (3);
4054 ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb"); /* 4 */
4055 if (opts.addressprint)
4056 {
4057 if (nr_printable_breakpoints > 0)
4058 annotate_field (4);
4059 if (print_address_bits <= 32)
4060 ui_out_table_header (uiout, 10, ui_left, "addr", "Address");/* 5 */
4061 else
4062 ui_out_table_header (uiout, 18, ui_left, "addr", "Address");/* 5 */
4063 }
4064 if (nr_printable_breakpoints > 0)
4065 annotate_field (5);
4066 ui_out_table_header (uiout, 40, ui_noalign, "what", "What"); /* 6 */
4067 ui_out_table_body (uiout);
4068 if (nr_printable_breakpoints > 0)
4069 annotate_breakpoints_table ();
4070
4071 ALL_BREAKPOINTS (b)
4072 if (bnum == -1
4073 || bnum == b->number)
4074 {
4075 /* We only print out user settable breakpoints unless the
4076 allflag is set. */
4077 if (allflag || user_settable_breakpoint (b))
4078 print_one_breakpoint (b, &last_loc, print_address_bits);
4079 }
4080
4081 do_cleanups (bkpttbl_chain);
4082
4083 if (nr_printable_breakpoints == 0)
4084 {
4085 if (bnum == -1)
4086 ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
4087 else
4088 ui_out_message (uiout, 0, "No breakpoint or watchpoint number %d.\n",
4089 bnum);
4090 }
4091 else
4092 {
4093 if (last_loc && !server_command)
4094 set_next_address (last_loc->gdbarch, last_loc->address);
4095 }
4096
4097 /* FIXME? Should this be moved up so that it is only called when
4098 there have been breakpoints? */
4099 annotate_breakpoints_table_end ();
4100 }
4101
4102 static void
4103 breakpoints_info (char *bnum_exp, int from_tty)
4104 {
4105 int bnum = -1;
4106
4107 if (bnum_exp)
4108 bnum = parse_and_eval_long (bnum_exp);
4109
4110 breakpoint_1 (bnum, 0);
4111 }
4112
4113 static void
4114 maintenance_info_breakpoints (char *bnum_exp, int from_tty)
4115 {
4116 int bnum = -1;
4117
4118 if (bnum_exp)
4119 bnum = parse_and_eval_long (bnum_exp);
4120
4121 breakpoint_1 (bnum, 1);
4122 }
4123
4124 static int
4125 breakpoint_has_pc (struct breakpoint *b,
4126 CORE_ADDR pc, struct obj_section *section)
4127 {
4128 struct bp_location *bl = b->loc;
4129 for (; bl; bl = bl->next)
4130 {
4131 if (bl->address == pc
4132 && (!overlay_debugging || bl->section == section))
4133 return 1;
4134 }
4135 return 0;
4136 }
4137
4138 /* Print a message describing any breakpoints set at PC. */
4139
4140 static void
4141 describe_other_breakpoints (struct gdbarch *gdbarch, CORE_ADDR pc,
4142 struct obj_section *section, int thread)
4143 {
4144 int others = 0;
4145 struct breakpoint *b;
4146
4147 ALL_BREAKPOINTS (b)
4148 others += breakpoint_has_pc (b, pc, section);
4149 if (others > 0)
4150 {
4151 if (others == 1)
4152 printf_filtered (_("Note: breakpoint "));
4153 else /* if (others == ???) */
4154 printf_filtered (_("Note: breakpoints "));
4155 ALL_BREAKPOINTS (b)
4156 if (breakpoint_has_pc (b, pc, section))
4157 {
4158 others--;
4159 printf_filtered ("%d", b->number);
4160 if (b->thread == -1 && thread != -1)
4161 printf_filtered (" (all threads)");
4162 else if (b->thread != -1)
4163 printf_filtered (" (thread %d)", b->thread);
4164 printf_filtered ("%s%s ",
4165 ((b->enable_state == bp_disabled
4166 || b->enable_state == bp_call_disabled
4167 || b->enable_state == bp_startup_disabled)
4168 ? " (disabled)"
4169 : b->enable_state == bp_permanent
4170 ? " (permanent)"
4171 : ""),
4172 (others > 1) ? ","
4173 : ((others == 1) ? " and" : ""));
4174 }
4175 printf_filtered (_("also set at pc "));
4176 fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
4177 printf_filtered (".\n");
4178 }
4179 }
4180 \f
4181 /* Set the default place to put a breakpoint
4182 for the `break' command with no arguments. */
4183
4184 void
4185 set_default_breakpoint (int valid, CORE_ADDR addr, struct symtab *symtab,
4186 int line)
4187 {
4188 default_breakpoint_valid = valid;
4189 default_breakpoint_address = addr;
4190 default_breakpoint_symtab = symtab;
4191 default_breakpoint_line = line;
4192 }
4193
4194 /* Return true iff it is meaningful to use the address member of
4195 BPT. For some breakpoint types, the address member is irrelevant
4196 and it makes no sense to attempt to compare it to other addresses
4197 (or use it for any other purpose either).
4198
4199 More specifically, each of the following breakpoint types will always
4200 have a zero valued address and we don't want check_duplicates() to mark
4201 breakpoints of any of these types to be a duplicate of an actual
4202 breakpoint at address zero:
4203
4204 bp_watchpoint
4205 bp_hardware_watchpoint
4206 bp_read_watchpoint
4207 bp_access_watchpoint
4208 bp_catchpoint */
4209
4210 static int
4211 breakpoint_address_is_meaningful (struct breakpoint *bpt)
4212 {
4213 enum bptype type = bpt->type;
4214
4215 return (type != bp_watchpoint
4216 && type != bp_hardware_watchpoint
4217 && type != bp_read_watchpoint
4218 && type != bp_access_watchpoint
4219 && type != bp_catchpoint);
4220 }
4221
4222 /* Rescan breakpoints at the same address and section as BPT,
4223 marking the first one as "first" and any others as "duplicates".
4224 This is so that the bpt instruction is only inserted once.
4225 If we have a permanent breakpoint at the same place as BPT, make
4226 that one the official one, and the rest as duplicates. */
4227
4228 static void
4229 check_duplicates_for (CORE_ADDR address, struct obj_section *section)
4230 {
4231 struct bp_location *b;
4232 int count = 0;
4233 struct bp_location *perm_bp = 0;
4234
4235 ALL_BP_LOCATIONS (b)
4236 if (b->owner->enable_state != bp_disabled
4237 && b->owner->enable_state != bp_call_disabled
4238 && b->owner->enable_state != bp_startup_disabled
4239 && b->enabled
4240 && !b->shlib_disabled
4241 && b->address == address /* address / overlay match */
4242 && (!overlay_debugging || b->section == section)
4243 && breakpoint_address_is_meaningful (b->owner))
4244 {
4245 /* Have we found a permanent breakpoint? */
4246 if (b->owner->enable_state == bp_permanent)
4247 {
4248 perm_bp = b;
4249 break;
4250 }
4251
4252 count++;
4253 b->duplicate = count > 1;
4254 }
4255
4256 /* If we found a permanent breakpoint at this address, go over the
4257 list again and declare all the other breakpoints there (except
4258 other permanent breakpoints) to be the duplicates. */
4259 if (perm_bp)
4260 {
4261 perm_bp->duplicate = 0;
4262
4263 /* Permanent breakpoint should always be inserted. */
4264 if (! perm_bp->inserted)
4265 internal_error (__FILE__, __LINE__,
4266 _("allegedly permanent breakpoint is not "
4267 "actually inserted"));
4268
4269 ALL_BP_LOCATIONS (b)
4270 if (b != perm_bp)
4271 {
4272 if (b->owner->enable_state != bp_permanent
4273 && b->owner->enable_state != bp_disabled
4274 && b->owner->enable_state != bp_call_disabled
4275 && b->owner->enable_state != bp_startup_disabled
4276 && b->enabled && !b->shlib_disabled
4277 && b->address == address /* address / overlay match */
4278 && (!overlay_debugging || b->section == section)
4279 && breakpoint_address_is_meaningful (b->owner))
4280 {
4281 if (b->inserted)
4282 internal_error (__FILE__, __LINE__,
4283 _("another breakpoint was inserted on top of "
4284 "a permanent breakpoint"));
4285
4286 b->duplicate = 1;
4287 }
4288 }
4289 }
4290 }
4291
4292 static void
4293 check_duplicates (struct breakpoint *bpt)
4294 {
4295 struct bp_location *bl = bpt->loc;
4296
4297 if (! breakpoint_address_is_meaningful (bpt))
4298 return;
4299
4300 for (; bl; bl = bl->next)
4301 check_duplicates_for (bl->address, bl->section);
4302 }
4303
4304 static void
4305 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
4306 int bnum, int have_bnum)
4307 {
4308 char astr1[40];
4309 char astr2[40];
4310
4311 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
4312 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
4313 if (have_bnum)
4314 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
4315 bnum, astr1, astr2);
4316 else
4317 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
4318 }
4319
4320 /* Adjust a breakpoint's address to account for architectural constraints
4321 on breakpoint placement. Return the adjusted address. Note: Very
4322 few targets require this kind of adjustment. For most targets,
4323 this function is simply the identity function. */
4324
4325 static CORE_ADDR
4326 adjust_breakpoint_address (struct gdbarch *gdbarch,
4327 CORE_ADDR bpaddr, enum bptype bptype)
4328 {
4329 if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
4330 {
4331 /* Very few targets need any kind of breakpoint adjustment. */
4332 return bpaddr;
4333 }
4334 else if (bptype == bp_watchpoint
4335 || bptype == bp_hardware_watchpoint
4336 || bptype == bp_read_watchpoint
4337 || bptype == bp_access_watchpoint
4338 || bptype == bp_catchpoint)
4339 {
4340 /* Watchpoints and the various bp_catch_* eventpoints should not
4341 have their addresses modified. */
4342 return bpaddr;
4343 }
4344 else
4345 {
4346 CORE_ADDR adjusted_bpaddr;
4347
4348 /* Some targets have architectural constraints on the placement
4349 of breakpoint instructions. Obtain the adjusted address. */
4350 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
4351
4352 /* An adjusted breakpoint address can significantly alter
4353 a user's expectations. Print a warning if an adjustment
4354 is required. */
4355 if (adjusted_bpaddr != bpaddr)
4356 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
4357
4358 return adjusted_bpaddr;
4359 }
4360 }
4361
4362 /* Allocate a struct bp_location. */
4363
4364 static struct bp_location *
4365 allocate_bp_location (struct breakpoint *bpt)
4366 {
4367 struct bp_location *loc, *loc_p;
4368
4369 loc = xmalloc (sizeof (struct bp_location));
4370 memset (loc, 0, sizeof (*loc));
4371
4372 loc->owner = bpt;
4373 loc->cond = NULL;
4374 loc->shlib_disabled = 0;
4375 loc->enabled = 1;
4376
4377 switch (bpt->type)
4378 {
4379 case bp_breakpoint:
4380 case bp_tracepoint:
4381 case bp_until:
4382 case bp_finish:
4383 case bp_longjmp:
4384 case bp_longjmp_resume:
4385 case bp_step_resume:
4386 case bp_watchpoint_scope:
4387 case bp_call_dummy:
4388 case bp_shlib_event:
4389 case bp_thread_event:
4390 case bp_overlay_event:
4391 case bp_jit_event:
4392 case bp_longjmp_master:
4393 loc->loc_type = bp_loc_software_breakpoint;
4394 break;
4395 case bp_hardware_breakpoint:
4396 loc->loc_type = bp_loc_hardware_breakpoint;
4397 break;
4398 case bp_hardware_watchpoint:
4399 case bp_read_watchpoint:
4400 case bp_access_watchpoint:
4401 loc->loc_type = bp_loc_hardware_watchpoint;
4402 break;
4403 case bp_watchpoint:
4404 case bp_catchpoint:
4405 loc->loc_type = bp_loc_other;
4406 break;
4407 default:
4408 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
4409 }
4410
4411 return loc;
4412 }
4413
4414 static void free_bp_location (struct bp_location *loc)
4415 {
4416 if (loc->cond)
4417 xfree (loc->cond);
4418
4419 if (loc->function_name)
4420 xfree (loc->function_name);
4421
4422 xfree (loc);
4423 }
4424
4425 /* Helper to set_raw_breakpoint below. Creates a breakpoint
4426 that has type BPTYPE and has no locations as yet. */
4427 /* This function is used in gdbtk sources and thus can not be made static. */
4428
4429 static struct breakpoint *
4430 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
4431 enum bptype bptype)
4432 {
4433 struct breakpoint *b, *b1;
4434
4435 b = (struct breakpoint *) xmalloc (sizeof (struct breakpoint));
4436 memset (b, 0, sizeof (*b));
4437
4438 b->type = bptype;
4439 b->gdbarch = gdbarch;
4440 b->language = current_language->la_language;
4441 b->input_radix = input_radix;
4442 b->thread = -1;
4443 b->enable_state = bp_enabled;
4444 b->next = 0;
4445 b->silent = 0;
4446 b->ignore_count = 0;
4447 b->commands = NULL;
4448 b->frame_id = null_frame_id;
4449 b->forked_inferior_pid = null_ptid;
4450 b->exec_pathname = NULL;
4451 b->syscalls_to_be_caught = NULL;
4452 b->ops = NULL;
4453 b->condition_not_parsed = 0;
4454
4455 /* Add this breakpoint to the end of the chain
4456 so that a list of breakpoints will come out in order
4457 of increasing numbers. */
4458
4459 b1 = breakpoint_chain;
4460 if (b1 == 0)
4461 breakpoint_chain = b;
4462 else
4463 {
4464 while (b1->next)
4465 b1 = b1->next;
4466 b1->next = b;
4467 }
4468 return b;
4469 }
4470
4471 /* Initialize loc->function_name. */
4472 static void
4473 set_breakpoint_location_function (struct bp_location *loc)
4474 {
4475 if (loc->owner->type == bp_breakpoint
4476 || loc->owner->type == bp_hardware_breakpoint
4477 || loc->owner->type == bp_tracepoint)
4478 {
4479 find_pc_partial_function (loc->address, &(loc->function_name),
4480 NULL, NULL);
4481 if (loc->function_name)
4482 loc->function_name = xstrdup (loc->function_name);
4483 }
4484 }
4485
4486 /* Attempt to determine architecture of location identified by SAL. */
4487 static struct gdbarch *
4488 get_sal_arch (struct symtab_and_line sal)
4489 {
4490 if (sal.section)
4491 return get_objfile_arch (sal.section->objfile);
4492 if (sal.symtab)
4493 return get_objfile_arch (sal.symtab->objfile);
4494
4495 return NULL;
4496 }
4497
4498 /* set_raw_breakpoint is a low level routine for allocating and
4499 partially initializing a breakpoint of type BPTYPE. The newly
4500 created breakpoint's address, section, source file name, and line
4501 number are provided by SAL. The newly created and partially
4502 initialized breakpoint is added to the breakpoint chain and
4503 is also returned as the value of this function.
4504
4505 It is expected that the caller will complete the initialization of
4506 the newly created breakpoint struct as well as output any status
4507 information regarding the creation of a new breakpoint. In
4508 particular, set_raw_breakpoint does NOT set the breakpoint
4509 number! Care should be taken to not allow an error to occur
4510 prior to completing the initialization of the breakpoint. If this
4511 should happen, a bogus breakpoint will be left on the chain. */
4512
4513 struct breakpoint *
4514 set_raw_breakpoint (struct gdbarch *gdbarch,
4515 struct symtab_and_line sal, enum bptype bptype)
4516 {
4517 struct breakpoint *b = set_raw_breakpoint_without_location (gdbarch, bptype);
4518 CORE_ADDR adjusted_address;
4519 struct gdbarch *loc_gdbarch;
4520
4521 loc_gdbarch = get_sal_arch (sal);
4522 if (!loc_gdbarch)
4523 loc_gdbarch = b->gdbarch;
4524
4525 /* Adjust the breakpoint's address prior to allocating a location.
4526 Once we call allocate_bp_location(), that mostly uninitialized
4527 location will be placed on the location chain. Adjustment of the
4528 breakpoint may cause target_read_memory() to be called and we do
4529 not want its scan of the location chain to find a breakpoint and
4530 location that's only been partially initialized. */
4531 adjusted_address = adjust_breakpoint_address (loc_gdbarch, sal.pc, b->type);
4532
4533 b->loc = allocate_bp_location (b);
4534 b->loc->gdbarch = loc_gdbarch;
4535 b->loc->requested_address = sal.pc;
4536 b->loc->address = adjusted_address;
4537
4538 if (sal.symtab == NULL)
4539 b->source_file = NULL;
4540 else
4541 b->source_file = xstrdup (sal.symtab->filename);
4542 b->loc->section = sal.section;
4543 b->line_number = sal.line;
4544
4545 set_breakpoint_location_function (b->loc);
4546
4547 breakpoints_changed ();
4548
4549 return b;
4550 }
4551
4552
4553 /* Note that the breakpoint object B describes a permanent breakpoint
4554 instruction, hard-wired into the inferior's code. */
4555 void
4556 make_breakpoint_permanent (struct breakpoint *b)
4557 {
4558 struct bp_location *bl;
4559 b->enable_state = bp_permanent;
4560
4561 /* By definition, permanent breakpoints are already present in the code.
4562 Mark all locations as inserted. For now, make_breakpoint_permanent
4563 is called in just one place, so it's hard to say if it's reasonable
4564 to have permanent breakpoint with multiple locations or not,
4565 but it's easy to implmement. */
4566 for (bl = b->loc; bl; bl = bl->next)
4567 bl->inserted = 1;
4568 }
4569
4570 /* Call this routine when stepping and nexting to enable a breakpoint
4571 if we do a longjmp() in THREAD. When we hit that breakpoint, call
4572 set_longjmp_resume_breakpoint() to figure out where we are going. */
4573
4574 void
4575 set_longjmp_breakpoint (int thread)
4576 {
4577 struct breakpoint *b, *temp;
4578
4579 /* To avoid having to rescan all objfile symbols at every step,
4580 we maintain a list of continually-inserted but always disabled
4581 longjmp "master" breakpoints. Here, we simply create momentary
4582 clones of those and enable them for the requested thread. */
4583 ALL_BREAKPOINTS_SAFE (b, temp)
4584 if (b->type == bp_longjmp_master)
4585 {
4586 struct breakpoint *clone = clone_momentary_breakpoint (b);
4587 clone->type = bp_longjmp;
4588 clone->thread = thread;
4589 }
4590 }
4591
4592 /* Delete all longjmp breakpoints from THREAD. */
4593 void
4594 delete_longjmp_breakpoint (int thread)
4595 {
4596 struct breakpoint *b, *temp;
4597
4598 ALL_BREAKPOINTS_SAFE (b, temp)
4599 if (b->type == bp_longjmp)
4600 {
4601 if (b->thread == thread)
4602 delete_breakpoint (b);
4603 }
4604 }
4605
4606 void
4607 enable_overlay_breakpoints (void)
4608 {
4609 struct breakpoint *b;
4610
4611 ALL_BREAKPOINTS (b)
4612 if (b->type == bp_overlay_event)
4613 {
4614 b->enable_state = bp_enabled;
4615 update_global_location_list (1);
4616 overlay_events_enabled = 1;
4617 }
4618 }
4619
4620 void
4621 disable_overlay_breakpoints (void)
4622 {
4623 struct breakpoint *b;
4624
4625 ALL_BREAKPOINTS (b)
4626 if (b->type == bp_overlay_event)
4627 {
4628 b->enable_state = bp_disabled;
4629 update_global_location_list (0);
4630 overlay_events_enabled = 0;
4631 }
4632 }
4633
4634 struct breakpoint *
4635 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
4636 {
4637 struct breakpoint *b;
4638
4639 b = create_internal_breakpoint (gdbarch, address, bp_thread_event);
4640
4641 b->enable_state = bp_enabled;
4642 /* addr_string has to be used or breakpoint_re_set will delete me. */
4643 b->addr_string
4644 = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
4645
4646 update_global_location_list_nothrow (1);
4647
4648 return b;
4649 }
4650
4651 void
4652 remove_thread_event_breakpoints (void)
4653 {
4654 struct breakpoint *b, *temp;
4655
4656 ALL_BREAKPOINTS_SAFE (b, temp)
4657 if (b->type == bp_thread_event)
4658 delete_breakpoint (b);
4659 }
4660
4661 struct captured_parse_breakpoint_args
4662 {
4663 char **arg_p;
4664 struct symtabs_and_lines *sals_p;
4665 char ***addr_string_p;
4666 int *not_found_ptr;
4667 };
4668
4669 struct lang_and_radix
4670 {
4671 enum language lang;
4672 int radix;
4673 };
4674
4675 /* Create a breakpoint for JIT code registration and unregistration. */
4676
4677 struct breakpoint *
4678 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
4679 {
4680 struct breakpoint *b;
4681
4682 b = create_internal_breakpoint (gdbarch, address, bp_jit_event);
4683 update_global_location_list_nothrow (1);
4684 return b;
4685 }
4686
4687 void
4688 remove_solib_event_breakpoints (void)
4689 {
4690 struct breakpoint *b, *temp;
4691
4692 ALL_BREAKPOINTS_SAFE (b, temp)
4693 if (b->type == bp_shlib_event)
4694 delete_breakpoint (b);
4695 }
4696
4697 struct breakpoint *
4698 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
4699 {
4700 struct breakpoint *b;
4701
4702 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event);
4703 update_global_location_list_nothrow (1);
4704 return b;
4705 }
4706
4707 /* Disable any breakpoints that are on code in shared libraries. Only
4708 apply to enabled breakpoints, disabled ones can just stay disabled. */
4709
4710 void
4711 disable_breakpoints_in_shlibs (void)
4712 {
4713 struct bp_location *loc;
4714
4715 ALL_BP_LOCATIONS (loc)
4716 {
4717 struct breakpoint *b = loc->owner;
4718 /* We apply the check to all breakpoints, including disabled
4719 for those with loc->duplicate set. This is so that when breakpoint
4720 becomes enabled, or the duplicate is removed, gdb will try to insert
4721 all breakpoints. If we don't set shlib_disabled here, we'll try
4722 to insert those breakpoints and fail. */
4723 if (((b->type == bp_breakpoint)
4724 || (b->type == bp_hardware_breakpoint)
4725 || (b->type == bp_tracepoint))
4726 && !loc->shlib_disabled
4727 #ifdef PC_SOLIB
4728 && PC_SOLIB (loc->address)
4729 #else
4730 && solib_name_from_address (loc->address)
4731 #endif
4732 )
4733 {
4734 loc->shlib_disabled = 1;
4735 }
4736 }
4737 }
4738
4739 /* Disable any breakpoints that are in in an unloaded shared library. Only
4740 apply to enabled breakpoints, disabled ones can just stay disabled. */
4741
4742 static void
4743 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
4744 {
4745 struct bp_location *loc;
4746 int disabled_shlib_breaks = 0;
4747
4748 /* SunOS a.out shared libraries are always mapped, so do not
4749 disable breakpoints; they will only be reported as unloaded
4750 through clear_solib when GDB discards its shared library
4751 list. See clear_solib for more information. */
4752 if (exec_bfd != NULL
4753 && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
4754 return;
4755
4756 ALL_BP_LOCATIONS (loc)
4757 {
4758 struct breakpoint *b = loc->owner;
4759 if ((loc->loc_type == bp_loc_hardware_breakpoint
4760 || loc->loc_type == bp_loc_software_breakpoint)
4761 && !loc->shlib_disabled
4762 && (b->type == bp_breakpoint || b->type == bp_hardware_breakpoint)
4763 && solib_contains_address_p (solib, loc->address))
4764 {
4765 loc->shlib_disabled = 1;
4766 /* At this point, we cannot rely on remove_breakpoint
4767 succeeding so we must mark the breakpoint as not inserted
4768 to prevent future errors occurring in remove_breakpoints. */
4769 loc->inserted = 0;
4770 if (!disabled_shlib_breaks)
4771 {
4772 target_terminal_ours_for_output ();
4773 warning (_("Temporarily disabling breakpoints for unloaded shared library \"%s\""),
4774 solib->so_name);
4775 }
4776 disabled_shlib_breaks = 1;
4777 }
4778 }
4779 }
4780
4781 /* FORK & VFORK catchpoints. */
4782
4783 /* Implement the "insert" breakpoint_ops method for fork catchpoints. */
4784
4785 static void
4786 insert_catch_fork (struct breakpoint *b)
4787 {
4788 target_insert_fork_catchpoint (PIDGET (inferior_ptid));
4789 }
4790
4791 /* Implement the "remove" breakpoint_ops method for fork catchpoints. */
4792
4793 static int
4794 remove_catch_fork (struct breakpoint *b)
4795 {
4796 return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
4797 }
4798
4799 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
4800 catchpoints. */
4801
4802 static int
4803 breakpoint_hit_catch_fork (struct breakpoint *b)
4804 {
4805 return inferior_has_forked (inferior_ptid, &b->forked_inferior_pid);
4806 }
4807
4808 /* Implement the "print_it" breakpoint_ops method for fork catchpoints. */
4809
4810 static enum print_stop_action
4811 print_it_catch_fork (struct breakpoint *b)
4812 {
4813 annotate_catchpoint (b->number);
4814 printf_filtered (_("\nCatchpoint %d (forked process %d), "),
4815 b->number, ptid_get_pid (b->forked_inferior_pid));
4816 return PRINT_SRC_AND_LOC;
4817 }
4818
4819 /* Implement the "print_one" breakpoint_ops method for fork catchpoints. */
4820
4821 static void
4822 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
4823 {
4824 struct value_print_options opts;
4825
4826 get_user_print_options (&opts);
4827
4828 /* Field 4, the address, is omitted (which makes the columns
4829 not line up too nicely with the headers, but the effect
4830 is relatively readable). */
4831 if (opts.addressprint)
4832 ui_out_field_skip (uiout, "addr");
4833 annotate_field (5);
4834 ui_out_text (uiout, "fork");
4835 if (!ptid_equal (b->forked_inferior_pid, null_ptid))
4836 {
4837 ui_out_text (uiout, ", process ");
4838 ui_out_field_int (uiout, "what",
4839 ptid_get_pid (b->forked_inferior_pid));
4840 ui_out_spaces (uiout, 1);
4841 }
4842 }
4843
4844 /* Implement the "print_mention" breakpoint_ops method for fork
4845 catchpoints. */
4846
4847 static void
4848 print_mention_catch_fork (struct breakpoint *b)
4849 {
4850 printf_filtered (_("Catchpoint %d (fork)"), b->number);
4851 }
4852
4853 /* The breakpoint_ops structure to be used in fork catchpoints. */
4854
4855 static struct breakpoint_ops catch_fork_breakpoint_ops =
4856 {
4857 insert_catch_fork,
4858 remove_catch_fork,
4859 breakpoint_hit_catch_fork,
4860 print_it_catch_fork,
4861 print_one_catch_fork,
4862 print_mention_catch_fork
4863 };
4864
4865 /* Implement the "insert" breakpoint_ops method for vfork catchpoints. */
4866
4867 static void
4868 insert_catch_vfork (struct breakpoint *b)
4869 {
4870 target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
4871 }
4872
4873 /* Implement the "remove" breakpoint_ops method for vfork catchpoints. */
4874
4875 static int
4876 remove_catch_vfork (struct breakpoint *b)
4877 {
4878 return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
4879 }
4880
4881 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
4882 catchpoints. */
4883
4884 static int
4885 breakpoint_hit_catch_vfork (struct breakpoint *b)
4886 {
4887 return inferior_has_vforked (inferior_ptid, &b->forked_inferior_pid);
4888 }
4889
4890 /* Implement the "print_it" breakpoint_ops method for vfork catchpoints. */
4891
4892 static enum print_stop_action
4893 print_it_catch_vfork (struct breakpoint *b)
4894 {
4895 annotate_catchpoint (b->number);
4896 printf_filtered (_("\nCatchpoint %d (vforked process %d), "),
4897 b->number, ptid_get_pid (b->forked_inferior_pid));
4898 return PRINT_SRC_AND_LOC;
4899 }
4900
4901 /* Implement the "print_one" breakpoint_ops method for vfork catchpoints. */
4902
4903 static void
4904 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
4905 {
4906 struct value_print_options opts;
4907
4908 get_user_print_options (&opts);
4909 /* Field 4, the address, is omitted (which makes the columns
4910 not line up too nicely with the headers, but the effect
4911 is relatively readable). */
4912 if (opts.addressprint)
4913 ui_out_field_skip (uiout, "addr");
4914 annotate_field (5);
4915 ui_out_text (uiout, "vfork");
4916 if (!ptid_equal (b->forked_inferior_pid, null_ptid))
4917 {
4918 ui_out_text (uiout, ", process ");
4919 ui_out_field_int (uiout, "what",
4920 ptid_get_pid (b->forked_inferior_pid));
4921 ui_out_spaces (uiout, 1);
4922 }
4923 }
4924
4925 /* Implement the "print_mention" breakpoint_ops method for vfork
4926 catchpoints. */
4927
4928 static void
4929 print_mention_catch_vfork (struct breakpoint *b)
4930 {
4931 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
4932 }
4933
4934 /* The breakpoint_ops structure to be used in vfork catchpoints. */
4935
4936 static struct breakpoint_ops catch_vfork_breakpoint_ops =
4937 {
4938 insert_catch_vfork,
4939 remove_catch_vfork,
4940 breakpoint_hit_catch_vfork,
4941 print_it_catch_vfork,
4942 print_one_catch_vfork,
4943 print_mention_catch_vfork
4944 };
4945
4946 /* Implement the "insert" breakpoint_ops method for syscall
4947 catchpoints. */
4948
4949 static void
4950 insert_catch_syscall (struct breakpoint *b)
4951 {
4952 struct inferior *inf = current_inferior ();
4953
4954 ++inf->total_syscalls_count;
4955 if (!b->syscalls_to_be_caught)
4956 ++inf->any_syscall_count;
4957 else
4958 {
4959 int i, iter;
4960 for (i = 0;
4961 VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
4962 i++)
4963 {
4964 int elem;
4965 if (iter >= VEC_length (int, inf->syscalls_counts))
4966 {
4967 int old_size = VEC_length (int, inf->syscalls_counts);
4968 uintptr_t vec_addr_offset = old_size * ((uintptr_t) sizeof (int));
4969 uintptr_t vec_addr;
4970 VEC_safe_grow (int, inf->syscalls_counts, iter + 1);
4971 vec_addr = (uintptr_t) VEC_address (int, inf->syscalls_counts) +
4972 vec_addr_offset;
4973 memset ((void *) vec_addr, 0,
4974 (iter + 1 - old_size) * sizeof (int));
4975 }
4976 elem = VEC_index (int, inf->syscalls_counts, iter);
4977 VEC_replace (int, inf->syscalls_counts, iter, ++elem);
4978 }
4979 }
4980
4981 target_set_syscall_catchpoint (PIDGET (inferior_ptid),
4982 inf->total_syscalls_count != 0,
4983 inf->any_syscall_count,
4984 VEC_length (int, inf->syscalls_counts),
4985 VEC_address (int, inf->syscalls_counts));
4986 }
4987
4988 /* Implement the "remove" breakpoint_ops method for syscall
4989 catchpoints. */
4990
4991 static int
4992 remove_catch_syscall (struct breakpoint *b)
4993 {
4994 struct inferior *inf = current_inferior ();
4995
4996 --inf->total_syscalls_count;
4997 if (!b->syscalls_to_be_caught)
4998 --inf->any_syscall_count;
4999 else
5000 {
5001 int i, iter;
5002 for (i = 0;
5003 VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
5004 i++)
5005 {
5006 int elem;
5007 if (iter >= VEC_length (int, inf->syscalls_counts))
5008 /* Shouldn't happen. */
5009 continue;
5010 elem = VEC_index (int, inf->syscalls_counts, iter);
5011 VEC_replace (int, inf->syscalls_counts, iter, --elem);
5012 }
5013 }
5014
5015 return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
5016 inf->total_syscalls_count != 0,
5017 inf->any_syscall_count,
5018 VEC_length (int, inf->syscalls_counts),
5019 VEC_address (int, inf->syscalls_counts));
5020 }
5021
5022 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
5023 catchpoints. */
5024
5025 static int
5026 breakpoint_hit_catch_syscall (struct breakpoint *b)
5027 {
5028 /* We must check if we are catching specific syscalls in this breakpoint.
5029 If we are, then we must guarantee that the called syscall is the same
5030 syscall we are catching. */
5031 int syscall_number = 0;
5032
5033 if (!inferior_has_called_syscall (inferior_ptid, &syscall_number))
5034 return 0;
5035
5036 /* Now, checking if the syscall is the same. */
5037 if (b->syscalls_to_be_caught)
5038 {
5039 int i, iter;
5040 for (i = 0;
5041 VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
5042 i++)
5043 if (syscall_number == iter)
5044 break;
5045 /* Not the same. */
5046 if (!iter)
5047 return 0;
5048 }
5049
5050 return 1;
5051 }
5052
5053 /* Implement the "print_it" breakpoint_ops method for syscall
5054 catchpoints. */
5055
5056 static enum print_stop_action
5057 print_it_catch_syscall (struct breakpoint *b)
5058 {
5059 /* These are needed because we want to know in which state a
5060 syscall is. It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
5061 or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
5062 must print "called syscall" or "returned from syscall". */
5063 ptid_t ptid;
5064 struct target_waitstatus last;
5065 struct syscall s;
5066 struct cleanup *old_chain;
5067 char *syscall_id;
5068
5069 get_last_target_status (&ptid, &last);
5070
5071 get_syscall_by_number (last.value.syscall_number, &s);
5072
5073 annotate_catchpoint (b->number);
5074
5075 if (s.name == NULL)
5076 syscall_id = xstrprintf ("%d", last.value.syscall_number);
5077 else
5078 syscall_id = xstrprintf ("'%s'", s.name);
5079
5080 old_chain = make_cleanup (xfree, syscall_id);
5081
5082 if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
5083 printf_filtered (_("\nCatchpoint %d (call to syscall %s), "),
5084 b->number, syscall_id);
5085 else if (last.kind == TARGET_WAITKIND_SYSCALL_RETURN)
5086 printf_filtered (_("\nCatchpoint %d (returned from syscall %s), "),
5087 b->number, syscall_id);
5088
5089 do_cleanups (old_chain);
5090
5091 return PRINT_SRC_AND_LOC;
5092 }
5093
5094 /* Implement the "print_one" breakpoint_ops method for syscall
5095 catchpoints. */
5096
5097 static void
5098 print_one_catch_syscall (struct breakpoint *b,
5099 struct bp_location **last_loc)
5100 {
5101 struct value_print_options opts;
5102
5103 get_user_print_options (&opts);
5104 /* Field 4, the address, is omitted (which makes the columns
5105 not line up too nicely with the headers, but the effect
5106 is relatively readable). */
5107 if (opts.addressprint)
5108 ui_out_field_skip (uiout, "addr");
5109 annotate_field (5);
5110
5111 if (b->syscalls_to_be_caught
5112 && VEC_length (int, b->syscalls_to_be_caught) > 1)
5113 ui_out_text (uiout, "syscalls \"");
5114 else
5115 ui_out_text (uiout, "syscall \"");
5116
5117 if (b->syscalls_to_be_caught)
5118 {
5119 int i, iter;
5120 char *text = xstrprintf ("%s", "");
5121 for (i = 0;
5122 VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
5123 i++)
5124 {
5125 char *x = text;
5126 struct syscall s;
5127 get_syscall_by_number (iter, &s);
5128
5129 if (s.name != NULL)
5130 text = xstrprintf ("%s%s, ", text, s.name);
5131 else
5132 text = xstrprintf ("%s%d, ", text, iter);
5133
5134 /* We have to xfree the last 'text' (now stored at 'x')
5135 because xstrprintf dinamically allocates new space for it
5136 on every call. */
5137 xfree (x);
5138 }
5139 /* Remove the last comma. */
5140 text[strlen (text) - 2] = '\0';
5141 ui_out_field_string (uiout, "what", text);
5142 }
5143 else
5144 ui_out_field_string (uiout, "what", "<any syscall>");
5145 ui_out_text (uiout, "\" ");
5146 }
5147
5148 /* Implement the "print_mention" breakpoint_ops method for syscall
5149 catchpoints. */
5150
5151 static void
5152 print_mention_catch_syscall (struct breakpoint *b)
5153 {
5154 if (b->syscalls_to_be_caught)
5155 {
5156 int i, iter;
5157
5158 if (VEC_length (int, b->syscalls_to_be_caught) > 1)
5159 printf_filtered (_("Catchpoint %d (syscalls"), b->number);
5160 else
5161 printf_filtered (_("Catchpoint %d (syscall"), b->number);
5162
5163 for (i = 0;
5164 VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
5165 i++)
5166 {
5167 struct syscall s;
5168 get_syscall_by_number (iter, &s);
5169
5170 if (s.name)
5171 printf_filtered (" '%s' [%d]", s.name, s.number);
5172 else
5173 printf_filtered (" %d", s.number);
5174 }
5175 printf_filtered (")");
5176 }
5177 else
5178 printf_filtered (_("Catchpoint %d (any syscall)"),
5179 b->number);
5180 }
5181
5182 /* The breakpoint_ops structure to be used in syscall catchpoints. */
5183
5184 static struct breakpoint_ops catch_syscall_breakpoint_ops =
5185 {
5186 insert_catch_syscall,
5187 remove_catch_syscall,
5188 breakpoint_hit_catch_syscall,
5189 print_it_catch_syscall,
5190 print_one_catch_syscall,
5191 print_mention_catch_syscall
5192 };
5193
5194 /* Returns non-zero if 'b' is a syscall catchpoint. */
5195
5196 static int
5197 syscall_catchpoint_p (struct breakpoint *b)
5198 {
5199 return (b->ops == &catch_syscall_breakpoint_ops);
5200 }
5201
5202 /* Create a new breakpoint of the bp_catchpoint kind and return it,
5203 but does NOT mention it nor update the global location list.
5204 This is useful if you need to fill more fields in the
5205 struct breakpoint before calling mention.
5206
5207 If TEMPFLAG is non-zero, then make the breakpoint temporary.
5208 If COND_STRING is not NULL, then store it in the breakpoint.
5209 OPS, if not NULL, is the breakpoint_ops structure associated
5210 to the catchpoint. */
5211
5212 static struct breakpoint *
5213 create_catchpoint_without_mention (struct gdbarch *gdbarch, int tempflag,
5214 char *cond_string,
5215 struct breakpoint_ops *ops)
5216 {
5217 struct symtab_and_line sal;
5218 struct breakpoint *b;
5219
5220 init_sal (&sal);
5221
5222 b = set_raw_breakpoint (gdbarch, sal, bp_catchpoint);
5223 set_breakpoint_count (breakpoint_count + 1);
5224 b->number = breakpoint_count;
5225
5226 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
5227 b->thread = -1;
5228 b->addr_string = NULL;
5229 b->enable_state = bp_enabled;
5230 b->disposition = tempflag ? disp_del : disp_donttouch;
5231 b->ops = ops;
5232
5233 return b;
5234 }
5235
5236 /* Create a new breakpoint of the bp_catchpoint kind and return it.
5237
5238 If TEMPFLAG is non-zero, then make the breakpoint temporary.
5239 If COND_STRING is not NULL, then store it in the breakpoint.
5240 OPS, if not NULL, is the breakpoint_ops structure associated
5241 to the catchpoint. */
5242
5243 static struct breakpoint *
5244 create_catchpoint (struct gdbarch *gdbarch, int tempflag,
5245 char *cond_string, struct breakpoint_ops *ops)
5246 {
5247 struct breakpoint *b =
5248 create_catchpoint_without_mention (gdbarch, tempflag, cond_string, ops);
5249
5250 mention (b);
5251 update_global_location_list (1);
5252
5253 return b;
5254 }
5255
5256 static void
5257 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
5258 int tempflag, char *cond_string,
5259 struct breakpoint_ops *ops)
5260 {
5261 struct breakpoint *b
5262 = create_catchpoint (gdbarch, tempflag, cond_string, ops);
5263
5264 /* FIXME: We should put this information in a breakpoint private data
5265 area. */
5266 b->forked_inferior_pid = null_ptid;
5267 }
5268
5269 /* Exec catchpoints. */
5270
5271 static void
5272 insert_catch_exec (struct breakpoint *b)
5273 {
5274 target_insert_exec_catchpoint (PIDGET (inferior_ptid));
5275 }
5276
5277 static int
5278 remove_catch_exec (struct breakpoint *b)
5279 {
5280 return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
5281 }
5282
5283 static int
5284 breakpoint_hit_catch_exec (struct breakpoint *b)
5285 {
5286 return inferior_has_execd (inferior_ptid, &b->exec_pathname);
5287 }
5288
5289 static enum print_stop_action
5290 print_it_catch_exec (struct breakpoint *b)
5291 {
5292 annotate_catchpoint (b->number);
5293 printf_filtered (_("\nCatchpoint %d (exec'd %s), "), b->number,
5294 b->exec_pathname);
5295 return PRINT_SRC_AND_LOC;
5296 }
5297
5298 static void
5299 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
5300 {
5301 struct value_print_options opts;
5302
5303 get_user_print_options (&opts);
5304
5305 /* Field 4, the address, is omitted (which makes the columns
5306 not line up too nicely with the headers, but the effect
5307 is relatively readable). */
5308 if (opts.addressprint)
5309 ui_out_field_skip (uiout, "addr");
5310 annotate_field (5);
5311 ui_out_text (uiout, "exec");
5312 if (b->exec_pathname != NULL)
5313 {
5314 ui_out_text (uiout, ", program \"");
5315 ui_out_field_string (uiout, "what", b->exec_pathname);
5316 ui_out_text (uiout, "\" ");
5317 }
5318 }
5319
5320 static void
5321 print_mention_catch_exec (struct breakpoint *b)
5322 {
5323 printf_filtered (_("Catchpoint %d (exec)"), b->number);
5324 }
5325
5326 static struct breakpoint_ops catch_exec_breakpoint_ops =
5327 {
5328 insert_catch_exec,
5329 remove_catch_exec,
5330 breakpoint_hit_catch_exec,
5331 print_it_catch_exec,
5332 print_one_catch_exec,
5333 print_mention_catch_exec
5334 };
5335
5336 static void
5337 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
5338 struct breakpoint_ops *ops)
5339 {
5340 struct gdbarch *gdbarch = get_current_arch ();
5341 struct breakpoint *b =
5342 create_catchpoint_without_mention (gdbarch, tempflag, NULL, ops);
5343
5344 b->syscalls_to_be_caught = filter;
5345
5346 /* Now, we have to mention the breakpoint and update the global
5347 location list. */
5348 mention (b);
5349 update_global_location_list (1);
5350 }
5351
5352 static int
5353 hw_breakpoint_used_count (void)
5354 {
5355 struct breakpoint *b;
5356 int i = 0;
5357
5358 ALL_BREAKPOINTS (b)
5359 {
5360 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
5361 i++;
5362 }
5363
5364 return i;
5365 }
5366
5367 static int
5368 hw_watchpoint_used_count (enum bptype type, int *other_type_used)
5369 {
5370 struct breakpoint *b;
5371 int i = 0;
5372
5373 *other_type_used = 0;
5374 ALL_BREAKPOINTS (b)
5375 {
5376 if (breakpoint_enabled (b))
5377 {
5378 if (b->type == type)
5379 i++;
5380 else if ((b->type == bp_hardware_watchpoint
5381 || b->type == bp_read_watchpoint
5382 || b->type == bp_access_watchpoint))
5383 *other_type_used = 1;
5384 }
5385 }
5386 return i;
5387 }
5388
5389 void
5390 disable_watchpoints_before_interactive_call_start (void)
5391 {
5392 struct breakpoint *b;
5393
5394 ALL_BREAKPOINTS (b)
5395 {
5396 if (((b->type == bp_watchpoint)
5397 || (b->type == bp_hardware_watchpoint)
5398 || (b->type == bp_read_watchpoint)
5399 || (b->type == bp_access_watchpoint))
5400 && breakpoint_enabled (b))
5401 {
5402 b->enable_state = bp_call_disabled;
5403 update_global_location_list (0);
5404 }
5405 }
5406 }
5407
5408 void
5409 enable_watchpoints_after_interactive_call_stop (void)
5410 {
5411 struct breakpoint *b;
5412
5413 ALL_BREAKPOINTS (b)
5414 {
5415 if (((b->type == bp_watchpoint)
5416 || (b->type == bp_hardware_watchpoint)
5417 || (b->type == bp_read_watchpoint)
5418 || (b->type == bp_access_watchpoint))
5419 && (b->enable_state == bp_call_disabled))
5420 {
5421 b->enable_state = bp_enabled;
5422 update_global_location_list (1);
5423 }
5424 }
5425 }
5426
5427 void
5428 disable_breakpoints_before_startup (void)
5429 {
5430 struct breakpoint *b;
5431 int found = 0;
5432
5433 ALL_BREAKPOINTS (b)
5434 {
5435 if ((b->type == bp_breakpoint
5436 || b->type == bp_hardware_breakpoint)
5437 && breakpoint_enabled (b))
5438 {
5439 b->enable_state = bp_startup_disabled;
5440 found = 1;
5441 }
5442 }
5443
5444 if (found)
5445 update_global_location_list (0);
5446
5447 executing_startup = 1;
5448 }
5449
5450 void
5451 enable_breakpoints_after_startup (void)
5452 {
5453 struct breakpoint *b;
5454 int found = 0;
5455
5456 executing_startup = 0;
5457
5458 ALL_BREAKPOINTS (b)
5459 {
5460 if ((b->type == bp_breakpoint
5461 || b->type == bp_hardware_breakpoint)
5462 && b->enable_state == bp_startup_disabled)
5463 {
5464 b->enable_state = bp_enabled;
5465 found = 1;
5466 }
5467 }
5468
5469 if (found)
5470 breakpoint_re_set ();
5471 }
5472
5473
5474 /* Set a breakpoint that will evaporate an end of command
5475 at address specified by SAL.
5476 Restrict it to frame FRAME if FRAME is nonzero. */
5477
5478 struct breakpoint *
5479 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
5480 struct frame_id frame_id, enum bptype type)
5481 {
5482 struct breakpoint *b;
5483
5484 /* If FRAME_ID is valid, it should be a real frame, not an inlined
5485 one. */
5486 gdb_assert (!frame_id_inlined_p (frame_id));
5487
5488 b = set_raw_breakpoint (gdbarch, sal, type);
5489 b->enable_state = bp_enabled;
5490 b->disposition = disp_donttouch;
5491 b->frame_id = frame_id;
5492
5493 /* If we're debugging a multi-threaded program, then we
5494 want momentary breakpoints to be active in only a
5495 single thread of control. */
5496 if (in_thread_list (inferior_ptid))
5497 b->thread = pid_to_thread_id (inferior_ptid);
5498
5499 update_global_location_list_nothrow (1);
5500
5501 return b;
5502 }
5503
5504 /* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
5505 ORIG is NULL. */
5506
5507 struct breakpoint *
5508 clone_momentary_breakpoint (struct breakpoint *orig)
5509 {
5510 struct breakpoint *copy;
5511
5512 /* If there's nothing to clone, then return nothing. */
5513 if (orig == NULL)
5514 return NULL;
5515
5516 copy = set_raw_breakpoint_without_location (orig->gdbarch, orig->type);
5517 copy->loc = allocate_bp_location (copy);
5518 set_breakpoint_location_function (copy->loc);
5519
5520 copy->loc->gdbarch = orig->loc->gdbarch;
5521 copy->loc->requested_address = orig->loc->requested_address;
5522 copy->loc->address = orig->loc->address;
5523 copy->loc->section = orig->loc->section;
5524
5525 if (orig->source_file == NULL)
5526 copy->source_file = NULL;
5527 else
5528 copy->source_file = xstrdup (orig->source_file);
5529
5530 copy->line_number = orig->line_number;
5531 copy->frame_id = orig->frame_id;
5532 copy->thread = orig->thread;
5533
5534 copy->enable_state = bp_enabled;
5535 copy->disposition = disp_donttouch;
5536 copy->number = internal_breakpoint_number--;
5537
5538 update_global_location_list_nothrow (0);
5539 return copy;
5540 }
5541
5542 struct breakpoint *
5543 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
5544 enum bptype type)
5545 {
5546 struct symtab_and_line sal;
5547
5548 sal = find_pc_line (pc, 0);
5549 sal.pc = pc;
5550 sal.section = find_pc_overlay (pc);
5551 sal.explicit_pc = 1;
5552
5553 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
5554 }
5555 \f
5556
5557 /* Tell the user we have just set a breakpoint B. */
5558
5559 static void
5560 mention (struct breakpoint *b)
5561 {
5562 int say_where = 0;
5563 struct cleanup *ui_out_chain;
5564 struct value_print_options opts;
5565
5566 get_user_print_options (&opts);
5567
5568 /* FIXME: This is misplaced; mention() is called by things (like
5569 hitting a watchpoint) other than breakpoint creation. It should
5570 be possible to clean this up and at the same time replace the
5571 random calls to breakpoint_changed with this hook. */
5572 observer_notify_breakpoint_created (b->number);
5573
5574 if (b->ops != NULL && b->ops->print_mention != NULL)
5575 b->ops->print_mention (b);
5576 else
5577 switch (b->type)
5578 {
5579 case bp_none:
5580 printf_filtered (_("(apparently deleted?) Eventpoint %d: "), b->number);
5581 break;
5582 case bp_watchpoint:
5583 ui_out_text (uiout, "Watchpoint ");
5584 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
5585 ui_out_field_int (uiout, "number", b->number);
5586 ui_out_text (uiout, ": ");
5587 ui_out_field_string (uiout, "exp", b->exp_string);
5588 do_cleanups (ui_out_chain);
5589 break;
5590 case bp_hardware_watchpoint:
5591 ui_out_text (uiout, "Hardware watchpoint ");
5592 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
5593 ui_out_field_int (uiout, "number", b->number);
5594 ui_out_text (uiout, ": ");
5595 ui_out_field_string (uiout, "exp", b->exp_string);
5596 do_cleanups (ui_out_chain);
5597 break;
5598 case bp_read_watchpoint:
5599 ui_out_text (uiout, "Hardware read watchpoint ");
5600 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
5601 ui_out_field_int (uiout, "number", b->number);
5602 ui_out_text (uiout, ": ");
5603 ui_out_field_string (uiout, "exp", b->exp_string);
5604 do_cleanups (ui_out_chain);
5605 break;
5606 case bp_access_watchpoint:
5607 ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
5608 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
5609 ui_out_field_int (uiout, "number", b->number);
5610 ui_out_text (uiout, ": ");
5611 ui_out_field_string (uiout, "exp", b->exp_string);
5612 do_cleanups (ui_out_chain);
5613 break;
5614 case bp_breakpoint:
5615 if (ui_out_is_mi_like_p (uiout))
5616 {
5617 say_where = 0;
5618 break;
5619 }
5620 if (b->disposition == disp_del)
5621 printf_filtered (_("Temporary breakpoint"));
5622 else
5623 printf_filtered (_("Breakpoint"));
5624 printf_filtered (_(" %d"), b->number);
5625 say_where = 1;
5626 break;
5627 case bp_hardware_breakpoint:
5628 if (ui_out_is_mi_like_p (uiout))
5629 {
5630 say_where = 0;
5631 break;
5632 }
5633 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
5634 say_where = 1;
5635 break;
5636 case bp_tracepoint:
5637 if (ui_out_is_mi_like_p (uiout))
5638 {
5639 say_where = 0;
5640 break;
5641 }
5642 printf_filtered (_("Tracepoint"));
5643 printf_filtered (_(" %d"), b->number);
5644 say_where = 1;
5645 break;
5646
5647 case bp_until:
5648 case bp_finish:
5649 case bp_longjmp:
5650 case bp_longjmp_resume:
5651 case bp_step_resume:
5652 case bp_call_dummy:
5653 case bp_watchpoint_scope:
5654 case bp_shlib_event:
5655 case bp_thread_event:
5656 case bp_overlay_event:
5657 case bp_jit_event:
5658 case bp_longjmp_master:
5659 break;
5660 }
5661
5662 if (say_where)
5663 {
5664 /* i18n: cagney/2005-02-11: Below needs to be merged into a
5665 single string. */
5666 if (b->loc == NULL)
5667 {
5668 printf_filtered (_(" (%s) pending."), b->addr_string);
5669 }
5670 else
5671 {
5672 if (opts.addressprint || b->source_file == NULL)
5673 {
5674 printf_filtered (" at ");
5675 fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
5676 gdb_stdout);
5677 }
5678 if (b->source_file)
5679 printf_filtered (": file %s, line %d.",
5680 b->source_file, b->line_number);
5681
5682 if (b->loc->next)
5683 {
5684 struct bp_location *loc = b->loc;
5685 int n = 0;
5686 for (; loc; loc = loc->next)
5687 ++n;
5688 printf_filtered (" (%d locations)", n);
5689 }
5690
5691 }
5692 }
5693 if (ui_out_is_mi_like_p (uiout))
5694 return;
5695 printf_filtered ("\n");
5696 }
5697 \f
5698
5699 static struct bp_location *
5700 add_location_to_breakpoint (struct breakpoint *b,
5701 const struct symtab_and_line *sal)
5702 {
5703 struct bp_location *loc, **tmp;
5704
5705 loc = allocate_bp_location (b);
5706 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
5707 ;
5708 *tmp = loc;
5709 loc->gdbarch = get_sal_arch (*sal);
5710 if (!loc->gdbarch)
5711 loc->gdbarch = b->gdbarch;
5712 loc->requested_address = sal->pc;
5713 loc->address = adjust_breakpoint_address (loc->gdbarch,
5714 loc->requested_address, b->type);
5715 loc->section = sal->section;
5716
5717 set_breakpoint_location_function (loc);
5718 return loc;
5719 }
5720 \f
5721
5722 /* Return 1 if LOC is pointing to a permanent breakpoint,
5723 return 0 otherwise. */
5724
5725 static int
5726 bp_loc_is_permanent (struct bp_location *loc)
5727 {
5728 int len;
5729 CORE_ADDR addr;
5730 const gdb_byte *brk;
5731 gdb_byte *target_mem;
5732 struct cleanup *cleanup;
5733 int retval = 0;
5734
5735 gdb_assert (loc != NULL);
5736
5737 addr = loc->address;
5738 brk = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
5739
5740 /* Software breakpoints unsupported? */
5741 if (brk == NULL)
5742 return 0;
5743
5744 target_mem = alloca (len);
5745
5746 /* Enable the automatic memory restoration from breakpoints while
5747 we read the memory. Otherwise we could say about our temporary
5748 breakpoints they are permanent. */
5749 cleanup = make_show_memory_breakpoints_cleanup (0);
5750
5751 if (target_read_memory (loc->address, target_mem, len) == 0
5752 && memcmp (target_mem, brk, len) == 0)
5753 retval = 1;
5754
5755 do_cleanups (cleanup);
5756
5757 return retval;
5758 }
5759
5760
5761
5762 /* Create a breakpoint with SAL as location. Use ADDR_STRING
5763 as textual description of the location, and COND_STRING
5764 as condition expression. */
5765
5766 static void
5767 create_breakpoint (struct gdbarch *gdbarch,
5768 struct symtabs_and_lines sals, char *addr_string,
5769 char *cond_string,
5770 enum bptype type, enum bpdisp disposition,
5771 int thread, int task, int ignore_count,
5772 struct breakpoint_ops *ops, int from_tty, int enabled)
5773 {
5774 struct breakpoint *b = NULL;
5775 int i;
5776
5777 if (type == bp_hardware_breakpoint)
5778 {
5779 int i = hw_breakpoint_used_count ();
5780 int target_resources_ok =
5781 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
5782 i + 1, 0);
5783 if (target_resources_ok == 0)
5784 error (_("No hardware breakpoint support in the target."));
5785 else if (target_resources_ok < 0)
5786 error (_("Hardware breakpoints used exceeds limit."));
5787 }
5788
5789 for (i = 0; i < sals.nelts; ++i)
5790 {
5791 struct symtab_and_line sal = sals.sals[i];
5792 struct bp_location *loc;
5793
5794 if (from_tty)
5795 {
5796 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
5797 if (!loc_gdbarch)
5798 loc_gdbarch = gdbarch;
5799
5800 describe_other_breakpoints (loc_gdbarch,
5801 sal.pc, sal.section, thread);
5802 }
5803
5804 if (i == 0)
5805 {
5806 b = set_raw_breakpoint (gdbarch, sal, type);
5807 set_breakpoint_count (breakpoint_count + 1);
5808 b->number = breakpoint_count;
5809 b->thread = thread;
5810 b->task = task;
5811
5812 b->cond_string = cond_string;
5813 b->ignore_count = ignore_count;
5814 b->enable_state = enabled ? bp_enabled : bp_disabled;
5815 b->disposition = disposition;
5816
5817 if (enabled && executing_startup
5818 && (b->type == bp_breakpoint
5819 || b->type == bp_hardware_breakpoint))
5820 b->enable_state = bp_startup_disabled;
5821
5822 loc = b->loc;
5823 }
5824 else
5825 {
5826 loc = add_location_to_breakpoint (b, &sal);
5827 }
5828
5829 if (bp_loc_is_permanent (loc))
5830 make_breakpoint_permanent (b);
5831
5832 if (b->cond_string)
5833 {
5834 char *arg = b->cond_string;
5835 loc->cond = parse_exp_1 (&arg, block_for_pc (loc->address), 0);
5836 if (*arg)
5837 error (_("Garbage %s follows condition"), arg);
5838 }
5839 }
5840
5841 if (addr_string)
5842 b->addr_string = addr_string;
5843 else
5844 /* addr_string has to be used or breakpoint_re_set will delete
5845 me. */
5846 b->addr_string
5847 = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
5848
5849 b->ops = ops;
5850 mention (b);
5851 }
5852
5853 /* Remove element at INDEX_TO_REMOVE from SAL, shifting other
5854 elements to fill the void space. */
5855 static void
5856 remove_sal (struct symtabs_and_lines *sal, int index_to_remove)
5857 {
5858 int i = index_to_remove+1;
5859 int last_index = sal->nelts-1;
5860
5861 for (;i <= last_index; ++i)
5862 sal->sals[i-1] = sal->sals[i];
5863
5864 --(sal->nelts);
5865 }
5866
5867 /* If appropriate, obtains all sals that correspond
5868 to the same file and line as SAL. This is done
5869 only if SAL does not have explicit PC and has
5870 line and file information. If we got just a single
5871 expanded sal, return the original.
5872
5873 Otherwise, if SAL.explicit_line is not set, filter out
5874 all sals for which the name of enclosing function
5875 is different from SAL. This makes sure that if we have
5876 breakpoint originally set in template instantiation, say
5877 foo<int>(), we won't expand SAL to locations at the same
5878 line in all existing instantiations of 'foo'.
5879
5880 */
5881 static struct symtabs_and_lines
5882 expand_line_sal_maybe (struct symtab_and_line sal)
5883 {
5884 struct symtabs_and_lines expanded;
5885 CORE_ADDR original_pc = sal.pc;
5886 char *original_function = NULL;
5887 int found;
5888 int i;
5889
5890 /* If we have explicit pc, don't expand.
5891 If we have no line number, we can't expand. */
5892 if (sal.explicit_pc || sal.line == 0 || sal.symtab == NULL)
5893 {
5894 expanded.nelts = 1;
5895 expanded.sals = xmalloc (sizeof (struct symtab_and_line));
5896 expanded.sals[0] = sal;
5897 return expanded;
5898 }
5899
5900 sal.pc = 0;
5901 find_pc_partial_function (original_pc, &original_function, NULL, NULL);
5902
5903 expanded = expand_line_sal (sal);
5904 if (expanded.nelts == 1)
5905 {
5906 /* We had one sal, we got one sal. Without futher
5907 processing, just return the original sal. */
5908 xfree (expanded.sals);
5909 expanded.nelts = 1;
5910 expanded.sals = xmalloc (sizeof (struct symtab_and_line));
5911 sal.pc = original_pc;
5912 expanded.sals[0] = sal;
5913 return expanded;
5914 }
5915
5916 if (!sal.explicit_line)
5917 {
5918 CORE_ADDR func_addr, func_end;
5919 for (i = 0; i < expanded.nelts; ++i)
5920 {
5921 CORE_ADDR pc = expanded.sals[i].pc;
5922 char *this_function;
5923 if (find_pc_partial_function (pc, &this_function,
5924 &func_addr, &func_end))
5925 {
5926 if (this_function
5927 && strcmp (this_function, original_function) != 0)
5928 {
5929 remove_sal (&expanded, i);
5930 --i;
5931 }
5932 else if (func_addr == pc)
5933 {
5934 /* We're at beginning of a function, and should
5935 skip prologue. */
5936 struct symbol *sym = find_pc_function (pc);
5937 if (sym)
5938 expanded.sals[i] = find_function_start_sal (sym, 1);
5939 else
5940 {
5941 /* Since find_pc_partial_function returned true,
5942 we should really always find the section here. */
5943 struct obj_section *section = find_pc_section (pc);
5944 if (section)
5945 {
5946 struct gdbarch *gdbarch
5947 = get_objfile_arch (section->objfile);
5948 expanded.sals[i].pc
5949 = gdbarch_skip_prologue (gdbarch, pc);
5950 }
5951 }
5952 }
5953 }
5954 }
5955 }
5956 else
5957 {
5958 for (i = 0; i < expanded.nelts; ++i)
5959 {
5960 /* If this SAL corresponds to a breakpoint inserted using a
5961 line number, then skip the function prologue if necessary. */
5962 skip_prologue_sal (&expanded.sals[i]);
5963 }
5964 }
5965
5966
5967 if (expanded.nelts <= 1)
5968 {
5969 /* This is un ugly workaround. If we get zero
5970 expanded sals then something is really wrong.
5971 Fix that by returnign the original sal. */
5972 xfree (expanded.sals);
5973 expanded.nelts = 1;
5974 expanded.sals = xmalloc (sizeof (struct symtab_and_line));
5975 sal.pc = original_pc;
5976 expanded.sals[0] = sal;
5977 return expanded;
5978 }
5979
5980 if (original_pc)
5981 {
5982 found = 0;
5983 for (i = 0; i < expanded.nelts; ++i)
5984 if (expanded.sals[i].pc == original_pc)
5985 {
5986 found = 1;
5987 break;
5988 }
5989 gdb_assert (found);
5990 }
5991
5992 return expanded;
5993 }
5994
5995 /* Add SALS.nelts breakpoints to the breakpoint table. For each
5996 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
5997 value. COND_STRING, if not NULL, specified the condition to be
5998 used for all breakpoints. Essentially the only case where
5999 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
6000 function. In that case, it's still not possible to specify
6001 separate conditions for different overloaded functions, so
6002 we take just a single condition string.
6003
6004 NOTE: If the function succeeds, the caller is expected to cleanup
6005 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
6006 array contents). If the function fails (error() is called), the
6007 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
6008 COND and SALS arrays and each of those arrays contents. */
6009
6010 static void
6011 create_breakpoints (struct gdbarch *gdbarch,
6012 struct symtabs_and_lines sals, char **addr_string,
6013 char *cond_string,
6014 enum bptype type, enum bpdisp disposition,
6015 int thread, int task, int ignore_count,
6016 struct breakpoint_ops *ops, int from_tty,
6017 int enabled)
6018 {
6019 int i;
6020 for (i = 0; i < sals.nelts; ++i)
6021 {
6022 struct symtabs_and_lines expanded =
6023 expand_line_sal_maybe (sals.sals[i]);
6024
6025 create_breakpoint (gdbarch, expanded, addr_string[i],
6026 cond_string, type, disposition,
6027 thread, task, ignore_count, ops, from_tty, enabled);
6028 }
6029 }
6030
6031 /* Parse ARG which is assumed to be a SAL specification possibly
6032 followed by conditionals. On return, SALS contains an array of SAL
6033 addresses found. ADDR_STRING contains a vector of (canonical)
6034 address strings. ARG points to the end of the SAL. */
6035
6036 static void
6037 parse_breakpoint_sals (char **address,
6038 struct symtabs_and_lines *sals,
6039 char ***addr_string,
6040 int *not_found_ptr)
6041 {
6042 char *addr_start = *address;
6043 *addr_string = NULL;
6044 /* If no arg given, or if first arg is 'if ', use the default
6045 breakpoint. */
6046 if ((*address) == NULL
6047 || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
6048 {
6049 if (default_breakpoint_valid)
6050 {
6051 struct symtab_and_line sal;
6052 init_sal (&sal); /* initialize to zeroes */
6053 sals->sals = (struct symtab_and_line *)
6054 xmalloc (sizeof (struct symtab_and_line));
6055 sal.pc = default_breakpoint_address;
6056 sal.line = default_breakpoint_line;
6057 sal.symtab = default_breakpoint_symtab;
6058 sal.section = find_pc_overlay (sal.pc);
6059
6060 /* "break" without arguments is equivalent to "break *PC" where PC is
6061 the default_breakpoint_address. So make sure to set
6062 sal.explicit_pc to prevent GDB from trying to expand the list of
6063 sals to include all other instances with the same symtab and line.
6064 */
6065 sal.explicit_pc = 1;
6066
6067 sals->sals[0] = sal;
6068 sals->nelts = 1;
6069 }
6070 else
6071 error (_("No default breakpoint address now."));
6072 }
6073 else
6074 {
6075 /* Force almost all breakpoints to be in terms of the
6076 current_source_symtab (which is decode_line_1's default). This
6077 should produce the results we want almost all of the time while
6078 leaving default_breakpoint_* alone.
6079 ObjC: However, don't match an Objective-C method name which
6080 may have a '+' or '-' succeeded by a '[' */
6081
6082 struct symtab_and_line cursal = get_current_source_symtab_and_line ();
6083
6084 if (default_breakpoint_valid
6085 && (!cursal.symtab
6086 || ((strchr ("+-", (*address)[0]) != NULL)
6087 && ((*address)[1] != '['))))
6088 *sals = decode_line_1 (address, 1, default_breakpoint_symtab,
6089 default_breakpoint_line, addr_string,
6090 not_found_ptr);
6091 else
6092 *sals = decode_line_1 (address, 1, (struct symtab *) NULL, 0,
6093 addr_string, not_found_ptr);
6094 }
6095 /* For any SAL that didn't have a canonical string, fill one in. */
6096 if (sals->nelts > 0 && *addr_string == NULL)
6097 *addr_string = xcalloc (sals->nelts, sizeof (char **));
6098 if (addr_start != (*address))
6099 {
6100 int i;
6101 for (i = 0; i < sals->nelts; i++)
6102 {
6103 /* Add the string if not present. */
6104 if ((*addr_string)[i] == NULL)
6105 (*addr_string)[i] = savestring (addr_start, (*address) - addr_start);
6106 }
6107 }
6108 }
6109
6110
6111 /* Convert each SAL into a real PC. Verify that the PC can be
6112 inserted as a breakpoint. If it can't throw an error. */
6113
6114 static void
6115 breakpoint_sals_to_pc (struct symtabs_and_lines *sals,
6116 char *address)
6117 {
6118 int i;
6119 for (i = 0; i < sals->nelts; i++)
6120 resolve_sal_pc (&sals->sals[i]);
6121 }
6122
6123 static void
6124 do_captured_parse_breakpoint (struct ui_out *ui, void *data)
6125 {
6126 struct captured_parse_breakpoint_args *args = data;
6127
6128 parse_breakpoint_sals (args->arg_p, args->sals_p, args->addr_string_p,
6129 args->not_found_ptr);
6130 }
6131
6132 /* Given TOK, a string specification of condition and thread, as
6133 accepted by the 'break' command, extract the condition
6134 string and thread number and set *COND_STRING and *THREAD.
6135 PC identifies the context at which the condition should be parsed.
6136 If no condition is found, *COND_STRING is set to NULL.
6137 If no thread is found, *THREAD is set to -1. */
6138 static void
6139 find_condition_and_thread (char *tok, CORE_ADDR pc,
6140 char **cond_string, int *thread, int *task)
6141 {
6142 *cond_string = NULL;
6143 *thread = -1;
6144 while (tok && *tok)
6145 {
6146 char *end_tok;
6147 int toklen;
6148 char *cond_start = NULL;
6149 char *cond_end = NULL;
6150 while (*tok == ' ' || *tok == '\t')
6151 tok++;
6152
6153 end_tok = tok;
6154
6155 while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
6156 end_tok++;
6157
6158 toklen = end_tok - tok;
6159
6160 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
6161 {
6162 struct expression *expr;
6163
6164 tok = cond_start = end_tok + 1;
6165 expr = parse_exp_1 (&tok, block_for_pc (pc), 0);
6166 xfree (expr);
6167 cond_end = tok;
6168 *cond_string = savestring (cond_start,
6169 cond_end - cond_start);
6170 }
6171 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
6172 {
6173 char *tmptok;
6174
6175 tok = end_tok + 1;
6176 tmptok = tok;
6177 *thread = strtol (tok, &tok, 0);
6178 if (tok == tmptok)
6179 error (_("Junk after thread keyword."));
6180 if (!valid_thread_id (*thread))
6181 error (_("Unknown thread %d."), *thread);
6182 }
6183 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
6184 {
6185 char *tmptok;
6186
6187 tok = end_tok + 1;
6188 tmptok = tok;
6189 *task = strtol (tok, &tok, 0);
6190 if (tok == tmptok)
6191 error (_("Junk after task keyword."));
6192 if (!valid_task_id (*task))
6193 error (_("Unknown task %d\n"), *task);
6194 }
6195 else
6196 error (_("Junk at end of arguments."));
6197 }
6198 }
6199
6200 /* Set a breakpoint. This function is shared between
6201 CLI and MI functions for setting a breakpoint.
6202 This function has two major modes of operations,
6203 selected by the PARSE_CONDITION_AND_THREAD parameter.
6204 If non-zero, the function will parse arg, extracting
6205 breakpoint location, address and thread. Otherwise,
6206 ARG is just the location of breakpoint, with condition
6207 and thread specified by the COND_STRING and THREAD
6208 parameters. */
6209
6210 static void
6211 break_command_really (struct gdbarch *gdbarch,
6212 char *arg, char *cond_string, int thread,
6213 int parse_condition_and_thread,
6214 int tempflag, int hardwareflag, int traceflag,
6215 int ignore_count,
6216 enum auto_boolean pending_break_support,
6217 struct breakpoint_ops *ops,
6218 int from_tty,
6219 int enabled)
6220 {
6221 struct gdb_exception e;
6222 struct symtabs_and_lines sals;
6223 struct symtab_and_line pending_sal;
6224 char *copy_arg;
6225 char *err_msg;
6226 char *addr_start = arg;
6227 char **addr_string;
6228 struct cleanup *old_chain;
6229 struct cleanup *bkpt_chain = NULL;
6230 struct captured_parse_breakpoint_args parse_args;
6231 int i;
6232 int pending = 0;
6233 int not_found = 0;
6234 enum bptype type_wanted;
6235 int task = 0;
6236
6237 sals.sals = NULL;
6238 sals.nelts = 0;
6239 addr_string = NULL;
6240
6241 parse_args.arg_p = &arg;
6242 parse_args.sals_p = &sals;
6243 parse_args.addr_string_p = &addr_string;
6244 parse_args.not_found_ptr = &not_found;
6245
6246 e = catch_exception (uiout, do_captured_parse_breakpoint,
6247 &parse_args, RETURN_MASK_ALL);
6248
6249 /* If caller is interested in rc value from parse, set value. */
6250 switch (e.reason)
6251 {
6252 case RETURN_QUIT:
6253 throw_exception (e);
6254 case RETURN_ERROR:
6255 switch (e.error)
6256 {
6257 case NOT_FOUND_ERROR:
6258
6259 /* If pending breakpoint support is turned off, throw
6260 error. */
6261
6262 if (pending_break_support == AUTO_BOOLEAN_FALSE)
6263 throw_exception (e);
6264
6265 exception_print (gdb_stderr, e);
6266
6267 /* If pending breakpoint support is auto query and the user
6268 selects no, then simply return the error code. */
6269 if (pending_break_support == AUTO_BOOLEAN_AUTO
6270 && !nquery ("Make breakpoint pending on future shared library load? "))
6271 return;
6272
6273 /* At this point, either the user was queried about setting
6274 a pending breakpoint and selected yes, or pending
6275 breakpoint behavior is on and thus a pending breakpoint
6276 is defaulted on behalf of the user. */
6277 copy_arg = xstrdup (addr_start);
6278 addr_string = &copy_arg;
6279 sals.nelts = 1;
6280 sals.sals = &pending_sal;
6281 pending_sal.pc = 0;
6282 pending = 1;
6283 break;
6284 default:
6285 throw_exception (e);
6286 }
6287 default:
6288 if (!sals.nelts)
6289 return;
6290 }
6291
6292 /* Create a chain of things that always need to be cleaned up. */
6293 old_chain = make_cleanup (null_cleanup, 0);
6294
6295 if (!pending)
6296 {
6297 /* Make sure that all storage allocated to SALS gets freed. */
6298 make_cleanup (xfree, sals.sals);
6299
6300 /* Cleanup the addr_string array but not its contents. */
6301 make_cleanup (xfree, addr_string);
6302 }
6303
6304 /* ----------------------------- SNIP -----------------------------
6305 Anything added to the cleanup chain beyond this point is assumed
6306 to be part of a breakpoint. If the breakpoint create succeeds
6307 then the memory is not reclaimed. */
6308 bkpt_chain = make_cleanup (null_cleanup, 0);
6309
6310 /* Mark the contents of the addr_string for cleanup. These go on
6311 the bkpt_chain and only occur if the breakpoint create fails. */
6312 for (i = 0; i < sals.nelts; i++)
6313 {
6314 if (addr_string[i] != NULL)
6315 make_cleanup (xfree, addr_string[i]);
6316 }
6317
6318 /* Resolve all line numbers to PC's and verify that the addresses
6319 are ok for the target. */
6320 if (!pending)
6321 breakpoint_sals_to_pc (&sals, addr_start);
6322
6323 type_wanted = (traceflag
6324 ? bp_tracepoint
6325 : (hardwareflag ? bp_hardware_breakpoint : bp_breakpoint));
6326
6327 /* Verify that condition can be parsed, before setting any
6328 breakpoints. Allocate a separate condition expression for each
6329 breakpoint. */
6330 if (!pending)
6331 {
6332 if (parse_condition_and_thread)
6333 {
6334 /* Here we only parse 'arg' to separate condition
6335 from thread number, so parsing in context of first
6336 sal is OK. When setting the breakpoint we'll
6337 re-parse it in context of each sal. */
6338 cond_string = NULL;
6339 thread = -1;
6340 find_condition_and_thread (arg, sals.sals[0].pc, &cond_string,
6341 &thread, &task);
6342 if (cond_string)
6343 make_cleanup (xfree, cond_string);
6344 }
6345 else
6346 {
6347 /* Create a private copy of condition string. */
6348 if (cond_string)
6349 {
6350 cond_string = xstrdup (cond_string);
6351 make_cleanup (xfree, cond_string);
6352 }
6353 }
6354 create_breakpoints (gdbarch, sals, addr_string, cond_string, type_wanted,
6355 tempflag ? disp_del : disp_donttouch,
6356 thread, task, ignore_count, ops, from_tty, enabled);
6357 }
6358 else
6359 {
6360 struct symtab_and_line sal = {0};
6361 struct breakpoint *b;
6362
6363 make_cleanup (xfree, copy_arg);
6364
6365 b = set_raw_breakpoint_without_location (gdbarch, type_wanted);
6366 set_breakpoint_count (breakpoint_count + 1);
6367 b->number = breakpoint_count;
6368 b->thread = -1;
6369 b->addr_string = addr_string[0];
6370 b->cond_string = NULL;
6371 b->ignore_count = ignore_count;
6372 b->disposition = tempflag ? disp_del : disp_donttouch;
6373 b->condition_not_parsed = 1;
6374 b->ops = ops;
6375 b->enable_state = enabled ? bp_enabled : bp_disabled;
6376
6377 if (enabled && executing_startup
6378 && (b->type == bp_breakpoint
6379 || b->type == bp_hardware_breakpoint))
6380 b->enable_state = bp_startup_disabled;
6381
6382 mention (b);
6383 }
6384
6385 if (sals.nelts > 1)
6386 warning (_("Multiple breakpoints were set.\n"
6387 "Use the \"delete\" command to delete unwanted breakpoints."));
6388 /* That's it. Discard the cleanups for data inserted into the
6389 breakpoint. */
6390 discard_cleanups (bkpt_chain);
6391 /* But cleanup everything else. */
6392 do_cleanups (old_chain);
6393
6394 /* error call may happen here - have BKPT_CHAIN already discarded. */
6395 update_global_location_list (1);
6396 }
6397
6398 /* Set a breakpoint.
6399 ARG is a string describing breakpoint address,
6400 condition, and thread.
6401 FLAG specifies if a breakpoint is hardware on,
6402 and if breakpoint is temporary, using BP_HARDWARE_FLAG
6403 and BP_TEMPFLAG. */
6404
6405 static void
6406 break_command_1 (char *arg, int flag, int from_tty)
6407 {
6408 int hardwareflag = flag & BP_HARDWAREFLAG;
6409 int tempflag = flag & BP_TEMPFLAG;
6410
6411 break_command_really (get_current_arch (),
6412 arg,
6413 NULL, 0, 1 /* parse arg */,
6414 tempflag, hardwareflag, 0 /* traceflag */,
6415 0 /* Ignore count */,
6416 pending_break_support,
6417 NULL /* breakpoint_ops */,
6418 from_tty,
6419 1 /* enabled */);
6420 }
6421
6422
6423 void
6424 set_breakpoint (struct gdbarch *gdbarch,
6425 char *address, char *condition,
6426 int hardwareflag, int tempflag,
6427 int thread, int ignore_count,
6428 int pending, int enabled)
6429 {
6430 break_command_really (gdbarch,
6431 address, condition, thread,
6432 0 /* condition and thread are valid. */,
6433 tempflag, hardwareflag, 0 /* traceflag */,
6434 ignore_count,
6435 pending
6436 ? AUTO_BOOLEAN_TRUE : AUTO_BOOLEAN_FALSE,
6437 NULL, 0, enabled);
6438 }
6439
6440 /* Adjust SAL to the first instruction past the function prologue.
6441 The end of the prologue is determined using the line table from
6442 the debugging information. explicit_pc and explicit_line are
6443 not modified.
6444
6445 If SAL is already past the prologue, then do nothing. */
6446
6447 static void
6448 skip_prologue_sal (struct symtab_and_line *sal)
6449 {
6450 struct symbol *sym = find_pc_function (sal->pc);
6451 struct symtab_and_line start_sal;
6452
6453 if (sym == NULL)
6454 return;
6455
6456 start_sal = find_function_start_sal (sym, 1);
6457 if (sal->pc < start_sal.pc)
6458 {
6459 start_sal.explicit_line = sal->explicit_line;
6460 start_sal.explicit_pc = sal->explicit_pc;
6461 *sal = start_sal;
6462 }
6463 }
6464
6465 /* Helper function for break_command_1 and disassemble_command. */
6466
6467 void
6468 resolve_sal_pc (struct symtab_and_line *sal)
6469 {
6470 CORE_ADDR pc;
6471
6472 if (sal->pc == 0 && sal->symtab != NULL)
6473 {
6474 if (!find_line_pc (sal->symtab, sal->line, &pc))
6475 error (_("No line %d in file \"%s\"."),
6476 sal->line, sal->symtab->filename);
6477 sal->pc = pc;
6478
6479 /* If this SAL corresponds to a breakpoint inserted using
6480 a line number, then skip the function prologue if necessary. */
6481 if (sal->explicit_line)
6482 {
6483 /* Preserve the original line number. */
6484 int saved_line = sal->line;
6485 skip_prologue_sal (sal);
6486 sal->line = saved_line;
6487 }
6488 }
6489
6490 if (sal->section == 0 && sal->symtab != NULL)
6491 {
6492 struct blockvector *bv;
6493 struct block *b;
6494 struct symbol *sym;
6495
6496 bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
6497 if (bv != NULL)
6498 {
6499 sym = block_linkage_function (b);
6500 if (sym != NULL)
6501 {
6502 fixup_symbol_section (sym, sal->symtab->objfile);
6503 sal->section = SYMBOL_OBJ_SECTION (sym);
6504 }
6505 else
6506 {
6507 /* It really is worthwhile to have the section, so we'll just
6508 have to look harder. This case can be executed if we have
6509 line numbers but no functions (as can happen in assembly
6510 source). */
6511
6512 struct minimal_symbol *msym;
6513
6514 msym = lookup_minimal_symbol_by_pc (sal->pc);
6515 if (msym)
6516 sal->section = SYMBOL_OBJ_SECTION (msym);
6517 }
6518 }
6519 }
6520 }
6521
6522 void
6523 break_command (char *arg, int from_tty)
6524 {
6525 break_command_1 (arg, 0, from_tty);
6526 }
6527
6528 void
6529 tbreak_command (char *arg, int from_tty)
6530 {
6531 break_command_1 (arg, BP_TEMPFLAG, from_tty);
6532 }
6533
6534 static void
6535 hbreak_command (char *arg, int from_tty)
6536 {
6537 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
6538 }
6539
6540 static void
6541 thbreak_command (char *arg, int from_tty)
6542 {
6543 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
6544 }
6545
6546 static void
6547 stop_command (char *arg, int from_tty)
6548 {
6549 printf_filtered (_("Specify the type of breakpoint to set.\n\
6550 Usage: stop in <function | address>\n\
6551 stop at <line>\n"));
6552 }
6553
6554 static void
6555 stopin_command (char *arg, int from_tty)
6556 {
6557 int badInput = 0;
6558
6559 if (arg == (char *) NULL)
6560 badInput = 1;
6561 else if (*arg != '*')
6562 {
6563 char *argptr = arg;
6564 int hasColon = 0;
6565
6566 /* look for a ':'. If this is a line number specification, then
6567 say it is bad, otherwise, it should be an address or
6568 function/method name */
6569 while (*argptr && !hasColon)
6570 {
6571 hasColon = (*argptr == ':');
6572 argptr++;
6573 }
6574
6575 if (hasColon)
6576 badInput = (*argptr != ':'); /* Not a class::method */
6577 else
6578 badInput = isdigit (*arg); /* a simple line number */
6579 }
6580
6581 if (badInput)
6582 printf_filtered (_("Usage: stop in <function | address>\n"));
6583 else
6584 break_command_1 (arg, 0, from_tty);
6585 }
6586
6587 static void
6588 stopat_command (char *arg, int from_tty)
6589 {
6590 int badInput = 0;
6591
6592 if (arg == (char *) NULL || *arg == '*') /* no line number */
6593 badInput = 1;
6594 else
6595 {
6596 char *argptr = arg;
6597 int hasColon = 0;
6598
6599 /* look for a ':'. If there is a '::' then get out, otherwise
6600 it is probably a line number. */
6601 while (*argptr && !hasColon)
6602 {
6603 hasColon = (*argptr == ':');
6604 argptr++;
6605 }
6606
6607 if (hasColon)
6608 badInput = (*argptr == ':'); /* we have class::method */
6609 else
6610 badInput = !isdigit (*arg); /* not a line number */
6611 }
6612
6613 if (badInput)
6614 printf_filtered (_("Usage: stop at <line>\n"));
6615 else
6616 break_command_1 (arg, 0, from_tty);
6617 }
6618
6619 /* accessflag: hw_write: watch write,
6620 hw_read: watch read,
6621 hw_access: watch access (read or write) */
6622 static void
6623 watch_command_1 (char *arg, int accessflag, int from_tty)
6624 {
6625 struct gdbarch *gdbarch = get_current_arch ();
6626 struct breakpoint *b, *scope_breakpoint = NULL;
6627 struct symtab_and_line sal;
6628 struct expression *exp;
6629 struct block *exp_valid_block;
6630 struct value *val, *mark;
6631 struct frame_info *frame;
6632 char *exp_start = NULL;
6633 char *exp_end = NULL;
6634 char *tok, *id_tok_start, *end_tok;
6635 int toklen;
6636 char *cond_start = NULL;
6637 char *cond_end = NULL;
6638 struct expression *cond = NULL;
6639 int i, other_type_used, target_resources_ok = 0;
6640 enum bptype bp_type;
6641 int mem_cnt = 0;
6642 int thread = -1;
6643
6644 init_sal (&sal); /* initialize to zeroes */
6645
6646 /* Make sure that we actually have parameters to parse. */
6647 if (arg != NULL && arg[0] != '\0')
6648 {
6649 toklen = strlen (arg); /* Size of argument list. */
6650
6651 /* Points tok to the end of the argument list. */
6652 tok = arg + toklen - 1;
6653
6654 /* Go backwards in the parameters list. Skip the last parameter.
6655 If we're expecting a 'thread <thread_num>' parameter, this should
6656 be the thread identifier. */
6657 while (tok > arg && (*tok == ' ' || *tok == '\t'))
6658 tok--;
6659 while (tok > arg && (*tok != ' ' && *tok != '\t'))
6660 tok--;
6661
6662 /* Points end_tok to the beginning of the last token. */
6663 id_tok_start = tok + 1;
6664
6665 /* Go backwards in the parameters list. Skip one more parameter.
6666 If we're expecting a 'thread <thread_num>' parameter, we should
6667 reach a "thread" token. */
6668 while (tok > arg && (*tok == ' ' || *tok == '\t'))
6669 tok--;
6670
6671 end_tok = tok;
6672
6673 while (tok > arg && (*tok != ' ' && *tok != '\t'))
6674 tok--;
6675
6676 /* Move the pointer forward to skip the whitespace and
6677 calculate the length of the token. */
6678 tok++;
6679 toklen = end_tok - tok;
6680
6681 if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
6682 {
6683 /* At this point we've found a "thread" token, which means
6684 the user is trying to set a watchpoint that triggers
6685 only in a specific thread. */
6686 char *endp;
6687
6688 /* Extract the thread ID from the next token. */
6689 thread = strtol (id_tok_start, &endp, 0);
6690
6691 /* Check if the user provided a valid numeric value for the
6692 thread ID. */
6693 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
6694 error (_("Invalid thread ID specification %s."), id_tok_start);
6695
6696 /* Check if the thread actually exists. */
6697 if (!valid_thread_id (thread))
6698 error (_("Unknown thread %d."), thread);
6699
6700 /* Truncate the string and get rid of the thread <thread_num>
6701 parameter before the parameter list is parsed by the
6702 evaluate_expression() function. */
6703 *tok = '\0';
6704 }
6705 }
6706
6707 /* Parse the rest of the arguments. */
6708 innermost_block = NULL;
6709 exp_start = arg;
6710 exp = parse_exp_1 (&arg, 0, 0);
6711 exp_end = arg;
6712 /* Remove trailing whitespace from the expression before saving it.
6713 This makes the eventual display of the expression string a bit
6714 prettier. */
6715 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
6716 --exp_end;
6717
6718 exp_valid_block = innermost_block;
6719 mark = value_mark ();
6720 fetch_watchpoint_value (exp, &val, NULL, NULL);
6721 if (val != NULL)
6722 release_value (val);
6723
6724 tok = arg;
6725 while (*tok == ' ' || *tok == '\t')
6726 tok++;
6727 end_tok = tok;
6728
6729 while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
6730 end_tok++;
6731
6732 toklen = end_tok - tok;
6733 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
6734 {
6735 tok = cond_start = end_tok + 1;
6736 cond = parse_exp_1 (&tok, 0, 0);
6737 cond_end = tok;
6738 }
6739 if (*tok)
6740 error (_("Junk at end of command."));
6741
6742 if (accessflag == hw_read)
6743 bp_type = bp_read_watchpoint;
6744 else if (accessflag == hw_access)
6745 bp_type = bp_access_watchpoint;
6746 else
6747 bp_type = bp_hardware_watchpoint;
6748
6749 mem_cnt = can_use_hardware_watchpoint (val);
6750 if (mem_cnt == 0 && bp_type != bp_hardware_watchpoint)
6751 error (_("Expression cannot be implemented with read/access watchpoint."));
6752 if (mem_cnt != 0)
6753 {
6754 i = hw_watchpoint_used_count (bp_type, &other_type_used);
6755 target_resources_ok =
6756 target_can_use_hardware_watchpoint (bp_type, i + mem_cnt,
6757 other_type_used);
6758 if (target_resources_ok == 0 && bp_type != bp_hardware_watchpoint)
6759 error (_("Target does not support this type of hardware watchpoint."));
6760
6761 if (target_resources_ok < 0 && bp_type != bp_hardware_watchpoint)
6762 error (_("Target can only support one kind of HW watchpoint at a time."));
6763 }
6764
6765 /* Change the type of breakpoint to an ordinary watchpoint if a hardware
6766 watchpoint could not be set. */
6767 if (!mem_cnt || target_resources_ok <= 0)
6768 bp_type = bp_watchpoint;
6769
6770 frame = block_innermost_frame (exp_valid_block);
6771
6772 /* If the expression is "local", then set up a "watchpoint scope"
6773 breakpoint at the point where we've left the scope of the watchpoint
6774 expression. Create the scope breakpoint before the watchpoint, so
6775 that we will encounter it first in bpstat_stop_status. */
6776 if (innermost_block && frame)
6777 {
6778 if (frame_id_p (frame_unwind_caller_id (frame)))
6779 {
6780 scope_breakpoint
6781 = create_internal_breakpoint (frame_unwind_caller_arch (frame),
6782 frame_unwind_caller_pc (frame),
6783 bp_watchpoint_scope);
6784
6785 scope_breakpoint->enable_state = bp_enabled;
6786
6787 /* Automatically delete the breakpoint when it hits. */
6788 scope_breakpoint->disposition = disp_del;
6789
6790 /* Only break in the proper frame (help with recursion). */
6791 scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
6792
6793 /* Set the address at which we will stop. */
6794 scope_breakpoint->loc->gdbarch
6795 = frame_unwind_caller_arch (frame);
6796 scope_breakpoint->loc->requested_address
6797 = frame_unwind_caller_pc (frame);
6798 scope_breakpoint->loc->address
6799 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
6800 scope_breakpoint->loc->requested_address,
6801 scope_breakpoint->type);
6802 }
6803 }
6804
6805 /* Now set up the breakpoint. */
6806 b = set_raw_breakpoint (gdbarch, sal, bp_type);
6807 set_breakpoint_count (breakpoint_count + 1);
6808 b->number = breakpoint_count;
6809 b->thread = thread;
6810 b->disposition = disp_donttouch;
6811 b->exp = exp;
6812 b->exp_valid_block = exp_valid_block;
6813 b->exp_string = savestring (exp_start, exp_end - exp_start);
6814 b->val = val;
6815 b->val_valid = 1;
6816 b->loc->cond = cond;
6817 if (cond_start)
6818 b->cond_string = savestring (cond_start, cond_end - cond_start);
6819 else
6820 b->cond_string = 0;
6821
6822 if (frame)
6823 b->watchpoint_frame = get_frame_id (frame);
6824 else
6825 b->watchpoint_frame = null_frame_id;
6826
6827 if (scope_breakpoint != NULL)
6828 {
6829 /* The scope breakpoint is related to the watchpoint. We will
6830 need to act on them together. */
6831 b->related_breakpoint = scope_breakpoint;
6832 scope_breakpoint->related_breakpoint = b;
6833 }
6834
6835 value_free_to_mark (mark);
6836 mention (b);
6837 update_global_location_list (1);
6838 }
6839
6840 /* Return count of locations need to be watched and can be handled
6841 in hardware. If the watchpoint can not be handled
6842 in hardware return zero. */
6843
6844 static int
6845 can_use_hardware_watchpoint (struct value *v)
6846 {
6847 int found_memory_cnt = 0;
6848 struct value *head = v;
6849
6850 /* Did the user specifically forbid us to use hardware watchpoints? */
6851 if (!can_use_hw_watchpoints)
6852 return 0;
6853
6854 /* Make sure that the value of the expression depends only upon
6855 memory contents, and values computed from them within GDB. If we
6856 find any register references or function calls, we can't use a
6857 hardware watchpoint.
6858
6859 The idea here is that evaluating an expression generates a series
6860 of values, one holding the value of every subexpression. (The
6861 expression a*b+c has five subexpressions: a, b, a*b, c, and
6862 a*b+c.) GDB's values hold almost enough information to establish
6863 the criteria given above --- they identify memory lvalues,
6864 register lvalues, computed values, etcetera. So we can evaluate
6865 the expression, and then scan the chain of values that leaves
6866 behind to decide whether we can detect any possible change to the
6867 expression's final value using only hardware watchpoints.
6868
6869 However, I don't think that the values returned by inferior
6870 function calls are special in any way. So this function may not
6871 notice that an expression involving an inferior function call
6872 can't be watched with hardware watchpoints. FIXME. */
6873 for (; v; v = value_next (v))
6874 {
6875 if (VALUE_LVAL (v) == lval_memory)
6876 {
6877 if (value_lazy (v))
6878 /* A lazy memory lvalue is one that GDB never needed to fetch;
6879 we either just used its address (e.g., `a' in `a.b') or
6880 we never needed it at all (e.g., `a' in `a,b'). */
6881 ;
6882 else
6883 {
6884 /* Ahh, memory we actually used! Check if we can cover
6885 it with hardware watchpoints. */
6886 struct type *vtype = check_typedef (value_type (v));
6887
6888 /* We only watch structs and arrays if user asked for it
6889 explicitly, never if they just happen to appear in a
6890 middle of some value chain. */
6891 if (v == head
6892 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
6893 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
6894 {
6895 CORE_ADDR vaddr = value_address (v);
6896 int len = TYPE_LENGTH (value_type (v));
6897
6898 if (!target_region_ok_for_hw_watchpoint (vaddr, len))
6899 return 0;
6900 else
6901 found_memory_cnt++;
6902 }
6903 }
6904 }
6905 else if (VALUE_LVAL (v) != not_lval
6906 && deprecated_value_modifiable (v) == 0)
6907 return 0; /* ??? What does this represent? */
6908 else if (VALUE_LVAL (v) == lval_register)
6909 return 0; /* cannot watch a register with a HW watchpoint */
6910 }
6911
6912 /* The expression itself looks suitable for using a hardware
6913 watchpoint, but give the target machine a chance to reject it. */
6914 return found_memory_cnt;
6915 }
6916
6917 void
6918 watch_command_wrapper (char *arg, int from_tty)
6919 {
6920 watch_command (arg, from_tty);
6921 }
6922
6923 static void
6924 watch_command (char *arg, int from_tty)
6925 {
6926 watch_command_1 (arg, hw_write, from_tty);
6927 }
6928
6929 void
6930 rwatch_command_wrapper (char *arg, int from_tty)
6931 {
6932 rwatch_command (arg, from_tty);
6933 }
6934
6935 static void
6936 rwatch_command (char *arg, int from_tty)
6937 {
6938 watch_command_1 (arg, hw_read, from_tty);
6939 }
6940
6941 void
6942 awatch_command_wrapper (char *arg, int from_tty)
6943 {
6944 awatch_command (arg, from_tty);
6945 }
6946
6947 static void
6948 awatch_command (char *arg, int from_tty)
6949 {
6950 watch_command_1 (arg, hw_access, from_tty);
6951 }
6952 \f
6953
6954 /* Helper routines for the until_command routine in infcmd.c. Here
6955 because it uses the mechanisms of breakpoints. */
6956
6957 struct until_break_command_continuation_args
6958 {
6959 struct breakpoint *breakpoint;
6960 struct breakpoint *breakpoint2;
6961 };
6962
6963 /* This function is called by fetch_inferior_event via the
6964 cmd_continuation pointer, to complete the until command. It takes
6965 care of cleaning up the temporary breakpoints set up by the until
6966 command. */
6967 static void
6968 until_break_command_continuation (void *arg)
6969 {
6970 struct until_break_command_continuation_args *a = arg;
6971
6972 delete_breakpoint (a->breakpoint);
6973 if (a->breakpoint2)
6974 delete_breakpoint (a->breakpoint2);
6975 }
6976
6977 void
6978 until_break_command (char *arg, int from_tty, int anywhere)
6979 {
6980 struct symtabs_and_lines sals;
6981 struct symtab_and_line sal;
6982 struct frame_info *frame = get_selected_frame (NULL);
6983 struct breakpoint *breakpoint;
6984 struct breakpoint *breakpoint2 = NULL;
6985 struct cleanup *old_chain;
6986
6987 clear_proceed_status ();
6988
6989 /* Set a breakpoint where the user wants it and at return from
6990 this function */
6991
6992 if (default_breakpoint_valid)
6993 sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
6994 default_breakpoint_line, (char ***) NULL, NULL);
6995 else
6996 sals = decode_line_1 (&arg, 1, (struct symtab *) NULL,
6997 0, (char ***) NULL, NULL);
6998
6999 if (sals.nelts != 1)
7000 error (_("Couldn't get information on specified line."));
7001
7002 sal = sals.sals[0];
7003 xfree (sals.sals); /* malloc'd, so freed */
7004
7005 if (*arg)
7006 error (_("Junk at end of arguments."));
7007
7008 resolve_sal_pc (&sal);
7009
7010 if (anywhere)
7011 /* If the user told us to continue until a specified location,
7012 we don't specify a frame at which we need to stop. */
7013 breakpoint = set_momentary_breakpoint (get_frame_arch (frame), sal,
7014 null_frame_id, bp_until);
7015 else
7016 /* Otherwise, specify the selected frame, because we want to stop only
7017 at the very same frame. */
7018 breakpoint = set_momentary_breakpoint (get_frame_arch (frame), sal,
7019 get_stack_frame_id (frame),
7020 bp_until);
7021
7022 old_chain = make_cleanup_delete_breakpoint (breakpoint);
7023
7024 /* Keep within the current frame, or in frames called by the current
7025 one. */
7026
7027 if (frame_id_p (frame_unwind_caller_id (frame)))
7028 {
7029 sal = find_pc_line (frame_unwind_caller_pc (frame), 0);
7030 sal.pc = frame_unwind_caller_pc (frame);
7031 breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
7032 sal,
7033 frame_unwind_caller_id (frame),
7034 bp_until);
7035 make_cleanup_delete_breakpoint (breakpoint2);
7036 }
7037
7038 proceed (-1, TARGET_SIGNAL_DEFAULT, 0);
7039
7040 /* If we are running asynchronously, and proceed call above has actually
7041 managed to start the target, arrange for breakpoints to be
7042 deleted when the target stops. Otherwise, we're already stopped and
7043 delete breakpoints via cleanup chain. */
7044
7045 if (target_can_async_p () && is_running (inferior_ptid))
7046 {
7047 struct until_break_command_continuation_args *args;
7048 args = xmalloc (sizeof (*args));
7049
7050 args->breakpoint = breakpoint;
7051 args->breakpoint2 = breakpoint2;
7052
7053 discard_cleanups (old_chain);
7054 add_continuation (inferior_thread (),
7055 until_break_command_continuation, args,
7056 xfree);
7057 }
7058 else
7059 do_cleanups (old_chain);
7060 }
7061
7062 static void
7063 ep_skip_leading_whitespace (char **s)
7064 {
7065 if ((s == NULL) || (*s == NULL))
7066 return;
7067 while (isspace (**s))
7068 *s += 1;
7069 }
7070
7071 /* This function attempts to parse an optional "if <cond>" clause
7072 from the arg string. If one is not found, it returns NULL.
7073
7074 Else, it returns a pointer to the condition string. (It does not
7075 attempt to evaluate the string against a particular block.) And,
7076 it updates arg to point to the first character following the parsed
7077 if clause in the arg string. */
7078
7079 static char *
7080 ep_parse_optional_if_clause (char **arg)
7081 {
7082 char *cond_string;
7083
7084 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
7085 return NULL;
7086
7087 /* Skip the "if" keyword. */
7088 (*arg) += 2;
7089
7090 /* Skip any extra leading whitespace, and record the start of the
7091 condition string. */
7092 ep_skip_leading_whitespace (arg);
7093 cond_string = *arg;
7094
7095 /* Assume that the condition occupies the remainder of the arg string. */
7096 (*arg) += strlen (cond_string);
7097
7098 return cond_string;
7099 }
7100
7101 /* This function attempts to parse an optional filename from the arg
7102 string. If one is not found, it returns NULL.
7103
7104 Else, it returns a pointer to the parsed filename. (This function
7105 makes no attempt to verify that a file of that name exists, or is
7106 accessible.) And, it updates arg to point to the first character
7107 following the parsed filename in the arg string.
7108
7109 Note that clients needing to preserve the returned filename for
7110 future access should copy it to their own buffers. */
7111 static char *
7112 ep_parse_optional_filename (char **arg)
7113 {
7114 static char filename[1024];
7115 char *arg_p = *arg;
7116 int i;
7117 char c;
7118
7119 if ((*arg_p == '\0') || isspace (*arg_p))
7120 return NULL;
7121
7122 for (i = 0;; i++)
7123 {
7124 c = *arg_p;
7125 if (isspace (c))
7126 c = '\0';
7127 filename[i] = c;
7128 if (c == '\0')
7129 break;
7130 arg_p++;
7131 }
7132 *arg = arg_p;
7133
7134 return filename;
7135 }
7136
7137 /* Commands to deal with catching events, such as signals, exceptions,
7138 process start/exit, etc. */
7139
7140 typedef enum
7141 {
7142 catch_fork_temporary, catch_vfork_temporary,
7143 catch_fork_permanent, catch_vfork_permanent
7144 }
7145 catch_fork_kind;
7146
7147 static void
7148 catch_fork_command_1 (char *arg, int from_tty, struct cmd_list_element *command)
7149 {
7150 struct gdbarch *gdbarch = get_current_arch ();
7151 char *cond_string = NULL;
7152 catch_fork_kind fork_kind;
7153 int tempflag;
7154
7155 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
7156 tempflag = (fork_kind == catch_fork_temporary
7157 || fork_kind == catch_vfork_temporary);
7158
7159 if (!arg)
7160 arg = "";
7161 ep_skip_leading_whitespace (&arg);
7162
7163 /* The allowed syntax is:
7164 catch [v]fork
7165 catch [v]fork if <cond>
7166
7167 First, check if there's an if clause. */
7168 cond_string = ep_parse_optional_if_clause (&arg);
7169
7170 if ((*arg != '\0') && !isspace (*arg))
7171 error (_("Junk at end of arguments."));
7172
7173 /* If this target supports it, create a fork or vfork catchpoint
7174 and enable reporting of such events. */
7175 switch (fork_kind)
7176 {
7177 case catch_fork_temporary:
7178 case catch_fork_permanent:
7179 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
7180 &catch_fork_breakpoint_ops);
7181 break;
7182 case catch_vfork_temporary:
7183 case catch_vfork_permanent:
7184 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
7185 &catch_vfork_breakpoint_ops);
7186 break;
7187 default:
7188 error (_("unsupported or unknown fork kind; cannot catch it"));
7189 break;
7190 }
7191 }
7192
7193 static void
7194 catch_exec_command_1 (char *arg, int from_tty, struct cmd_list_element *command)
7195 {
7196 struct gdbarch *gdbarch = get_current_arch ();
7197 int tempflag;
7198 char *cond_string = NULL;
7199
7200 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7201
7202 if (!arg)
7203 arg = "";
7204 ep_skip_leading_whitespace (&arg);
7205
7206 /* The allowed syntax is:
7207 catch exec
7208 catch exec if <cond>
7209
7210 First, check if there's an if clause. */
7211 cond_string = ep_parse_optional_if_clause (&arg);
7212
7213 if ((*arg != '\0') && !isspace (*arg))
7214 error (_("Junk at end of arguments."));
7215
7216 /* If this target supports it, create an exec catchpoint
7217 and enable reporting of such events. */
7218 create_catchpoint (gdbarch, tempflag, cond_string,
7219 &catch_exec_breakpoint_ops);
7220 }
7221
7222 static enum print_stop_action
7223 print_exception_catchpoint (struct breakpoint *b)
7224 {
7225 int bp_temp, bp_throw;
7226
7227 annotate_catchpoint (b->number);
7228
7229 bp_throw = strstr (b->addr_string, "throw") != NULL;
7230 if (b->loc->address != b->loc->requested_address)
7231 breakpoint_adjustment_warning (b->loc->requested_address,
7232 b->loc->address,
7233 b->number, 1);
7234 bp_temp = b->disposition == disp_del;
7235 ui_out_text (uiout,
7236 bp_temp ? "Temporary catchpoint "
7237 : "Catchpoint ");
7238 if (!ui_out_is_mi_like_p (uiout))
7239 ui_out_field_int (uiout, "bkptno", b->number);
7240 ui_out_text (uiout,
7241 bp_throw ? " (exception thrown), "
7242 : " (exception caught), ");
7243 if (ui_out_is_mi_like_p (uiout))
7244 {
7245 ui_out_field_string (uiout, "reason",
7246 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
7247 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7248 ui_out_field_int (uiout, "bkptno", b->number);
7249 }
7250 return PRINT_SRC_AND_LOC;
7251 }
7252
7253 static void
7254 print_one_exception_catchpoint (struct breakpoint *b, struct bp_location **last_loc)
7255 {
7256 struct value_print_options opts;
7257 get_user_print_options (&opts);
7258 if (opts.addressprint)
7259 {
7260 annotate_field (4);
7261 if (b->loc == NULL || b->loc->shlib_disabled)
7262 ui_out_field_string (uiout, "addr", "<PENDING>");
7263 else
7264 ui_out_field_core_addr (uiout, "addr",
7265 b->loc->gdbarch, b->loc->address);
7266 }
7267 annotate_field (5);
7268 if (b->loc)
7269 *last_loc = b->loc;
7270 if (strstr (b->addr_string, "throw") != NULL)
7271 ui_out_field_string (uiout, "what", "exception throw");
7272 else
7273 ui_out_field_string (uiout, "what", "exception catch");
7274 }
7275
7276 static void
7277 print_mention_exception_catchpoint (struct breakpoint *b)
7278 {
7279 int bp_temp;
7280 int bp_throw;
7281
7282 bp_temp = b->disposition == disp_del;
7283 bp_throw = strstr (b->addr_string, "throw") != NULL;
7284 ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
7285 : _("Catchpoint "));
7286 ui_out_field_int (uiout, "bkptno", b->number);
7287 ui_out_text (uiout, bp_throw ? _(" (throw)")
7288 : _(" (catch)"));
7289 }
7290
7291 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops = {
7292 NULL, /* insert */
7293 NULL, /* remove */
7294 NULL, /* breakpoint_hit */
7295 print_exception_catchpoint,
7296 print_one_exception_catchpoint,
7297 print_mention_exception_catchpoint
7298 };
7299
7300 static int
7301 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
7302 enum exception_event_kind ex_event, int from_tty)
7303 {
7304 char *trigger_func_name;
7305
7306 if (ex_event == EX_EVENT_CATCH)
7307 trigger_func_name = "__cxa_begin_catch";
7308 else
7309 trigger_func_name = "__cxa_throw";
7310
7311 break_command_really (get_current_arch (),
7312 trigger_func_name, cond_string, -1,
7313 0 /* condition and thread are valid. */,
7314 tempflag, 0, 0,
7315 0,
7316 AUTO_BOOLEAN_TRUE /* pending */,
7317 &gnu_v3_exception_catchpoint_ops, from_tty,
7318 1 /* enabled */);
7319
7320 return 1;
7321 }
7322
7323 /* Deal with "catch catch" and "catch throw" commands */
7324
7325 static void
7326 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
7327 int tempflag, int from_tty)
7328 {
7329 char *cond_string = NULL;
7330 struct symtab_and_line *sal = NULL;
7331
7332 if (!arg)
7333 arg = "";
7334 ep_skip_leading_whitespace (&arg);
7335
7336 cond_string = ep_parse_optional_if_clause (&arg);
7337
7338 if ((*arg != '\0') && !isspace (*arg))
7339 error (_("Junk at end of arguments."));
7340
7341 if (ex_event != EX_EVENT_THROW
7342 && ex_event != EX_EVENT_CATCH)
7343 error (_("Unsupported or unknown exception event; cannot catch it"));
7344
7345 if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
7346 return;
7347
7348 warning (_("Unsupported with this platform/compiler combination."));
7349 }
7350
7351 /* Implementation of "catch catch" command. */
7352
7353 static void
7354 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
7355 {
7356 int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7357 catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
7358 }
7359
7360 /* Implementation of "catch throw" command. */
7361
7362 static void
7363 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
7364 {
7365 int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7366 catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
7367 }
7368
7369 /* Create a breakpoint struct for Ada exception catchpoints. */
7370
7371 static void
7372 create_ada_exception_breakpoint (struct gdbarch *gdbarch,
7373 struct symtab_and_line sal,
7374 char *addr_string,
7375 char *exp_string,
7376 char *cond_string,
7377 struct expression *cond,
7378 struct breakpoint_ops *ops,
7379 int tempflag,
7380 int from_tty)
7381 {
7382 struct breakpoint *b;
7383
7384 if (from_tty)
7385 {
7386 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
7387 if (!loc_gdbarch)
7388 loc_gdbarch = gdbarch;
7389
7390 describe_other_breakpoints (loc_gdbarch, sal.pc, sal.section, -1);
7391 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
7392 version for exception catchpoints, because two catchpoints
7393 used for different exception names will use the same address.
7394 In this case, a "breakpoint ... also set at..." warning is
7395 unproductive. Besides. the warning phrasing is also a bit
7396 inapropriate, we should use the word catchpoint, and tell
7397 the user what type of catchpoint it is. The above is good
7398 enough for now, though. */
7399 }
7400
7401 b = set_raw_breakpoint (gdbarch, sal, bp_breakpoint);
7402 set_breakpoint_count (breakpoint_count + 1);
7403
7404 b->enable_state = bp_enabled;
7405 b->disposition = tempflag ? disp_del : disp_donttouch;
7406 b->number = breakpoint_count;
7407 b->ignore_count = 0;
7408 b->loc->cond = cond;
7409 b->addr_string = addr_string;
7410 b->language = language_ada;
7411 b->cond_string = cond_string;
7412 b->exp_string = exp_string;
7413 b->thread = -1;
7414 b->ops = ops;
7415
7416 mention (b);
7417 update_global_location_list (1);
7418 }
7419
7420 /* Implement the "catch exception" command. */
7421
7422 static void
7423 catch_ada_exception_command (char *arg, int from_tty,
7424 struct cmd_list_element *command)
7425 {
7426 struct gdbarch *gdbarch = get_current_arch ();
7427 int tempflag;
7428 struct symtab_and_line sal;
7429 enum bptype type;
7430 char *addr_string = NULL;
7431 char *exp_string = NULL;
7432 char *cond_string = NULL;
7433 struct expression *cond = NULL;
7434 struct breakpoint_ops *ops = NULL;
7435
7436 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7437
7438 if (!arg)
7439 arg = "";
7440 sal = ada_decode_exception_location (arg, &addr_string, &exp_string,
7441 &cond_string, &cond, &ops);
7442 create_ada_exception_breakpoint (gdbarch, sal, addr_string, exp_string,
7443 cond_string, cond, ops, tempflag,
7444 from_tty);
7445 }
7446
7447 /* Cleanup function for a syscall filter list. */
7448 static void
7449 clean_up_filters (void *arg)
7450 {
7451 VEC(int) *iter = *(VEC(int) **) arg;
7452 VEC_free (int, iter);
7453 }
7454
7455 /* Splits the argument using space as delimiter. Returns an xmalloc'd
7456 filter list, or NULL if no filtering is required. */
7457 static VEC(int) *
7458 catch_syscall_split_args (char *arg)
7459 {
7460 VEC(int) *result = NULL;
7461 struct cleanup *cleanup = make_cleanup (clean_up_filters, &result);
7462
7463 while (*arg != '\0')
7464 {
7465 int i, syscall_number;
7466 char *endptr;
7467 char cur_name[128];
7468 struct syscall s;
7469
7470 /* Skip whitespace. */
7471 while (isspace (*arg))
7472 arg++;
7473
7474 for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
7475 cur_name[i] = arg[i];
7476 cur_name[i] = '\0';
7477 arg += i;
7478
7479 /* Check if the user provided a syscall name or a number. */
7480 syscall_number = (int) strtol (cur_name, &endptr, 0);
7481 if (*endptr == '\0')
7482 {
7483 get_syscall_by_number (syscall_number, &s);
7484
7485 if (s.name == NULL)
7486 /* We can issue just a warning, but still create the catchpoint.
7487 This is because, even not knowing the syscall name that
7488 this number represents, we can still try to catch the syscall
7489 number. */
7490 warning (_("The number '%d' does not represent a known syscall."),
7491 syscall_number);
7492 }
7493 else
7494 {
7495 /* We have a name. Let's check if it's valid and convert it
7496 to a number. */
7497 get_syscall_by_name (cur_name, &s);
7498
7499 if (s.number == UNKNOWN_SYSCALL)
7500 /* Here we have to issue an error instead of a warning, because
7501 GDB cannot do anything useful if there's no syscall number to
7502 be caught. */
7503 error (_("Unknown syscall name '%s'."), cur_name);
7504 }
7505
7506 /* Ok, it's valid. */
7507 VEC_safe_push (int, result, s.number);
7508 }
7509
7510 discard_cleanups (cleanup);
7511 return result;
7512 }
7513
7514 /* Implement the "catch syscall" command. */
7515
7516 static void
7517 catch_syscall_command_1 (char *arg, int from_tty, struct cmd_list_element *command)
7518 {
7519 int tempflag;
7520 VEC(int) *filter;
7521 struct syscall s;
7522 struct gdbarch *gdbarch = get_current_arch ();
7523
7524 /* Checking if the feature if supported. */
7525 if (gdbarch_get_syscall_number_p (gdbarch) == 0)
7526 error (_("The feature 'catch syscall' is not supported on \
7527 this architeture yet."));
7528
7529 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7530
7531 ep_skip_leading_whitespace (&arg);
7532
7533 /* We need to do this first "dummy" translation in order
7534 to get the syscall XML file loaded or, most important,
7535 to display a warning to the user if there's no XML file
7536 for his/her architecture. */
7537 get_syscall_by_number (0, &s);
7538
7539 /* The allowed syntax is:
7540 catch syscall
7541 catch syscall <name | number> [<name | number> ... <name | number>]
7542
7543 Let's check if there's a syscall name. */
7544
7545 if (arg != NULL)
7546 filter = catch_syscall_split_args (arg);
7547 else
7548 filter = NULL;
7549
7550 create_syscall_event_catchpoint (tempflag, filter,
7551 &catch_syscall_breakpoint_ops);
7552 }
7553
7554 /* Implement the "catch assert" command. */
7555
7556 static void
7557 catch_assert_command (char *arg, int from_tty, struct cmd_list_element *command)
7558 {
7559 struct gdbarch *gdbarch = get_current_arch ();
7560 int tempflag;
7561 struct symtab_and_line sal;
7562 char *addr_string = NULL;
7563 struct breakpoint_ops *ops = NULL;
7564
7565 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7566
7567 if (!arg)
7568 arg = "";
7569 sal = ada_decode_assert_location (arg, &addr_string, &ops);
7570 create_ada_exception_breakpoint (gdbarch, sal, addr_string, NULL, NULL, NULL,
7571 ops, tempflag, from_tty);
7572 }
7573
7574 static void
7575 catch_command (char *arg, int from_tty)
7576 {
7577 error (_("Catch requires an event name."));
7578 }
7579 \f
7580
7581 static void
7582 tcatch_command (char *arg, int from_tty)
7583 {
7584 error (_("Catch requires an event name."));
7585 }
7586
7587 /* Delete breakpoints by address or line. */
7588
7589 static void
7590 clear_command (char *arg, int from_tty)
7591 {
7592 struct breakpoint *b;
7593 VEC(breakpoint_p) *found = 0;
7594 int ix;
7595 int default_match;
7596 struct symtabs_and_lines sals;
7597 struct symtab_and_line sal;
7598 int i;
7599
7600 if (arg)
7601 {
7602 sals = decode_line_spec (arg, 1);
7603 default_match = 0;
7604 }
7605 else
7606 {
7607 sals.sals = (struct symtab_and_line *)
7608 xmalloc (sizeof (struct symtab_and_line));
7609 make_cleanup (xfree, sals.sals);
7610 init_sal (&sal); /* initialize to zeroes */
7611 sal.line = default_breakpoint_line;
7612 sal.symtab = default_breakpoint_symtab;
7613 sal.pc = default_breakpoint_address;
7614 if (sal.symtab == 0)
7615 error (_("No source file specified."));
7616
7617 sals.sals[0] = sal;
7618 sals.nelts = 1;
7619
7620 default_match = 1;
7621 }
7622
7623 /* We don't call resolve_sal_pc here. That's not
7624 as bad as it seems, because all existing breakpoints
7625 typically have both file/line and pc set. So, if
7626 clear is given file/line, we can match this to existing
7627 breakpoint without obtaining pc at all.
7628
7629 We only support clearing given the address explicitly
7630 present in breakpoint table. Say, we've set breakpoint
7631 at file:line. There were several PC values for that file:line,
7632 due to optimization, all in one block.
7633 We've picked one PC value. If "clear" is issued with another
7634 PC corresponding to the same file:line, the breakpoint won't
7635 be cleared. We probably can still clear the breakpoint, but
7636 since the other PC value is never presented to user, user
7637 can only find it by guessing, and it does not seem important
7638 to support that. */
7639
7640 /* For each line spec given, delete bps which correspond
7641 to it. Do it in two passes, solely to preserve the current
7642 behavior that from_tty is forced true if we delete more than
7643 one breakpoint. */
7644
7645 found = NULL;
7646 for (i = 0; i < sals.nelts; i++)
7647 {
7648 /* If exact pc given, clear bpts at that pc.
7649 If line given (pc == 0), clear all bpts on specified line.
7650 If defaulting, clear all bpts on default line
7651 or at default pc.
7652
7653 defaulting sal.pc != 0 tests to do
7654
7655 0 1 pc
7656 1 1 pc _and_ line
7657 0 0 line
7658 1 0 <can't happen> */
7659
7660 sal = sals.sals[i];
7661
7662 /* Find all matching breakpoints and add them to
7663 'found'. */
7664 ALL_BREAKPOINTS (b)
7665 {
7666 int match = 0;
7667 /* Are we going to delete b? */
7668 if (b->type != bp_none
7669 && b->type != bp_watchpoint
7670 && b->type != bp_hardware_watchpoint
7671 && b->type != bp_read_watchpoint
7672 && b->type != bp_access_watchpoint)
7673 {
7674 struct bp_location *loc = b->loc;
7675 for (; loc; loc = loc->next)
7676 {
7677 int pc_match = sal.pc
7678 && (loc->address == sal.pc)
7679 && (!section_is_overlay (loc->section)
7680 || loc->section == sal.section);
7681 int line_match = ((default_match || (0 == sal.pc))
7682 && b->source_file != NULL
7683 && sal.symtab != NULL
7684 && strcmp (b->source_file, sal.symtab->filename) == 0
7685 && b->line_number == sal.line);
7686 if (pc_match || line_match)
7687 {
7688 match = 1;
7689 break;
7690 }
7691 }
7692 }
7693
7694 if (match)
7695 VEC_safe_push(breakpoint_p, found, b);
7696 }
7697 }
7698 /* Now go thru the 'found' chain and delete them. */
7699 if (VEC_empty(breakpoint_p, found))
7700 {
7701 if (arg)
7702 error (_("No breakpoint at %s."), arg);
7703 else
7704 error (_("No breakpoint at this line."));
7705 }
7706
7707 if (VEC_length(breakpoint_p, found) > 1)
7708 from_tty = 1; /* Always report if deleted more than one */
7709 if (from_tty)
7710 {
7711 if (VEC_length(breakpoint_p, found) == 1)
7712 printf_unfiltered (_("Deleted breakpoint "));
7713 else
7714 printf_unfiltered (_("Deleted breakpoints "));
7715 }
7716 breakpoints_changed ();
7717
7718 for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
7719 {
7720 if (from_tty)
7721 printf_unfiltered ("%d ", b->number);
7722 delete_breakpoint (b);
7723 }
7724 if (from_tty)
7725 putchar_unfiltered ('\n');
7726 }
7727 \f
7728 /* Delete breakpoint in BS if they are `delete' breakpoints and
7729 all breakpoints that are marked for deletion, whether hit or not.
7730 This is called after any breakpoint is hit, or after errors. */
7731
7732 void
7733 breakpoint_auto_delete (bpstat bs)
7734 {
7735 struct breakpoint *b, *temp;
7736
7737 for (; bs; bs = bs->next)
7738 if (bs->breakpoint_at
7739 && bs->breakpoint_at->owner
7740 && bs->breakpoint_at->owner->disposition == disp_del
7741 && bs->stop)
7742 delete_breakpoint (bs->breakpoint_at->owner);
7743
7744 ALL_BREAKPOINTS_SAFE (b, temp)
7745 {
7746 if (b->disposition == disp_del_at_next_stop)
7747 delete_breakpoint (b);
7748 }
7749 }
7750
7751 /* A cleanup function which destroys a vector. */
7752
7753 static void
7754 do_vec_free (void *p)
7755 {
7756 VEC(bp_location_p) **vec = p;
7757 if (*vec)
7758 VEC_free (bp_location_p, *vec);
7759 }
7760
7761 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
7762 into the inferior, only remove already-inserted locations that no
7763 longer should be inserted. Functions that delete a breakpoint or
7764 breakpoints should pass false, so that deleting a breakpoint
7765 doesn't have the side effect of inserting the locations of other
7766 breakpoints that are marked not-inserted, but should_be_inserted
7767 returns true on them.
7768
7769 This behaviour is useful is situations close to tear-down -- e.g.,
7770 after an exec, while the target still has execution, but breakpoint
7771 shadows of the previous executable image should *NOT* be restored
7772 to the new image; or before detaching, where the target still has
7773 execution and wants to delete breakpoints from GDB's lists, and all
7774 breakpoints had already been removed from the inferior. */
7775
7776 static void
7777 update_global_location_list (int should_insert)
7778 {
7779 struct breakpoint *b;
7780 struct bp_location **next = &bp_location_chain;
7781 struct bp_location *loc;
7782 struct bp_location *loc2;
7783 VEC(bp_location_p) *old_locations = NULL;
7784 int ret;
7785 int ix;
7786 struct cleanup *cleanups;
7787
7788 cleanups = make_cleanup (do_vec_free, &old_locations);
7789 /* Store old locations for future reference. */
7790 for (loc = bp_location_chain; loc; loc = loc->global_next)
7791 VEC_safe_push (bp_location_p, old_locations, loc);
7792
7793 bp_location_chain = NULL;
7794 ALL_BREAKPOINTS (b)
7795 {
7796 for (loc = b->loc; loc; loc = loc->next)
7797 {
7798 *next = loc;
7799 next = &(loc->global_next);
7800 *next = NULL;
7801 }
7802 }
7803
7804 /* Identify bp_location instances that are no longer present in the new
7805 list, and therefore should be freed. Note that it's not necessary that
7806 those locations should be removed from inferior -- if there's another
7807 location at the same address (previously marked as duplicate),
7808 we don't need to remove/insert the location. */
7809 for (ix = 0; VEC_iterate(bp_location_p, old_locations, ix, loc); ++ix)
7810 {
7811 /* Tells if 'loc' is found amoung the new locations. If not, we
7812 have to free it. */
7813 int found_object = 0;
7814 /* Tells if the location should remain inserted in the target. */
7815 int keep_in_target = 0;
7816 int removed = 0;
7817 for (loc2 = bp_location_chain; loc2; loc2 = loc2->global_next)
7818 if (loc2 == loc)
7819 {
7820 found_object = 1;
7821 break;
7822 }
7823
7824 /* If this location is no longer present, and inserted, look if there's
7825 maybe a new location at the same address. If so, mark that one
7826 inserted, and don't remove this one. This is needed so that we
7827 don't have a time window where a breakpoint at certain location is not
7828 inserted. */
7829
7830 if (loc->inserted)
7831 {
7832 /* If the location is inserted now, we might have to remove it. */
7833
7834 if (found_object && should_be_inserted (loc))
7835 {
7836 /* The location is still present in the location list, and still
7837 should be inserted. Don't do anything. */
7838 keep_in_target = 1;
7839 }
7840 else
7841 {
7842 /* The location is either no longer present, or got disabled.
7843 See if there's another location at the same address, in which
7844 case we don't need to remove this one from the target. */
7845 if (breakpoint_address_is_meaningful (loc->owner))
7846 for (loc2 = bp_location_chain; loc2; loc2 = loc2->global_next)
7847 {
7848 /* For the sake of should_insert_location. The
7849 call to check_duplicates will fix up this later. */
7850 loc2->duplicate = 0;
7851 if (should_be_inserted (loc2)
7852 && loc2 != loc && loc2->address == loc->address)
7853 {
7854 loc2->inserted = 1;
7855 loc2->target_info = loc->target_info;
7856 keep_in_target = 1;
7857 break;
7858 }
7859 }
7860 }
7861
7862 if (!keep_in_target)
7863 {
7864 if (remove_breakpoint (loc, mark_uninserted))
7865 {
7866 /* This is just about all we can do. We could keep this
7867 location on the global list, and try to remove it next
7868 time, but there's no particular reason why we will
7869 succeed next time.
7870
7871 Note that at this point, loc->owner is still valid,
7872 as delete_breakpoint frees the breakpoint only
7873 after calling us. */
7874 printf_filtered (_("warning: Error removing breakpoint %d\n"),
7875 loc->owner->number);
7876 }
7877 removed = 1;
7878 }
7879 }
7880
7881 if (!found_object)
7882 {
7883 if (removed && non_stop)
7884 {
7885 /* This location was removed from the targets. In non-stop mode,
7886 a race condition is possible where we've removed a breakpoint,
7887 but stop events for that breakpoint are already queued and will
7888 arrive later. To suppress spurious SIGTRAPs reported to user,
7889 we keep this breakpoint location for a bit, and will retire it
7890 after we see 3 * thread_count events.
7891 The theory here is that reporting of events should,
7892 "on the average", be fair, so after that many event we'll see
7893 events from all threads that have anything of interest, and no
7894 longer need to keep this breakpoint. This is just a
7895 heuristic, but if it's wrong, we'll report unexpected SIGTRAP,
7896 which is usability issue, but not a correctness problem. */
7897 loc->events_till_retirement = 3 * (thread_count () + 1);
7898 loc->owner = NULL;
7899
7900 VEC_safe_push (bp_location_p, moribund_locations, loc);
7901 }
7902 else
7903 free_bp_location (loc);
7904 }
7905 }
7906
7907 ALL_BREAKPOINTS (b)
7908 {
7909 check_duplicates (b);
7910 }
7911
7912 if (breakpoints_always_inserted_mode () && should_insert
7913 && (have_live_inferiors ()
7914 || (gdbarch_has_global_breakpoints (target_gdbarch))))
7915 insert_breakpoint_locations ();
7916
7917 do_cleanups (cleanups);
7918 }
7919
7920 void
7921 breakpoint_retire_moribund (void)
7922 {
7923 struct bp_location *loc;
7924 int ix;
7925
7926 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
7927 if (--(loc->events_till_retirement) == 0)
7928 {
7929 free_bp_location (loc);
7930 VEC_unordered_remove (bp_location_p, moribund_locations, ix);
7931 --ix;
7932 }
7933 }
7934
7935 static void
7936 update_global_location_list_nothrow (int inserting)
7937 {
7938 struct gdb_exception e;
7939 TRY_CATCH (e, RETURN_MASK_ERROR)
7940 update_global_location_list (inserting);
7941 }
7942
7943 /* Clear BPT from a BPS. */
7944 static void
7945 bpstat_remove_breakpoint (bpstat bps, struct breakpoint *bpt)
7946 {
7947 bpstat bs;
7948 for (bs = bps; bs; bs = bs->next)
7949 if (bs->breakpoint_at && bs->breakpoint_at->owner == bpt)
7950 {
7951 bs->breakpoint_at = NULL;
7952 bs->old_val = NULL;
7953 /* bs->commands will be freed later. */
7954 }
7955 }
7956
7957 /* Callback for iterate_over_threads. */
7958 static int
7959 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
7960 {
7961 struct breakpoint *bpt = data;
7962 bpstat_remove_breakpoint (th->stop_bpstat, bpt);
7963 return 0;
7964 }
7965
7966 /* Delete a breakpoint and clean up all traces of it in the data
7967 structures. */
7968
7969 void
7970 delete_breakpoint (struct breakpoint *bpt)
7971 {
7972 struct breakpoint *b;
7973 struct bp_location *loc, *next;
7974
7975 gdb_assert (bpt != NULL);
7976
7977 /* Has this bp already been deleted? This can happen because multiple
7978 lists can hold pointers to bp's. bpstat lists are especial culprits.
7979
7980 One example of this happening is a watchpoint's scope bp. When the
7981 scope bp triggers, we notice that the watchpoint is out of scope, and
7982 delete it. We also delete its scope bp. But the scope bp is marked
7983 "auto-deleting", and is already on a bpstat. That bpstat is then
7984 checked for auto-deleting bp's, which are deleted.
7985
7986 A real solution to this problem might involve reference counts in bp's,
7987 and/or giving them pointers back to their referencing bpstat's, and
7988 teaching delete_breakpoint to only free a bp's storage when no more
7989 references were extent. A cheaper bandaid was chosen. */
7990 if (bpt->type == bp_none)
7991 return;
7992
7993 observer_notify_breakpoint_deleted (bpt->number);
7994
7995 if (breakpoint_chain == bpt)
7996 breakpoint_chain = bpt->next;
7997
7998 ALL_BREAKPOINTS (b)
7999 if (b->next == bpt)
8000 {
8001 b->next = bpt->next;
8002 break;
8003 }
8004
8005 free_command_lines (&bpt->commands);
8006 if (bpt->cond_string != NULL)
8007 xfree (bpt->cond_string);
8008 if (bpt->addr_string != NULL)
8009 xfree (bpt->addr_string);
8010 if (bpt->exp != NULL)
8011 xfree (bpt->exp);
8012 if (bpt->exp_string != NULL)
8013 xfree (bpt->exp_string);
8014 if (bpt->val != NULL)
8015 value_free (bpt->val);
8016 if (bpt->source_file != NULL)
8017 xfree (bpt->source_file);
8018 if (bpt->exec_pathname != NULL)
8019 xfree (bpt->exec_pathname);
8020 clean_up_filters (&bpt->syscalls_to_be_caught);
8021
8022 /* Be sure no bpstat's are pointing at it after it's been freed. */
8023 /* FIXME, how can we find all bpstat's?
8024 We just check stop_bpstat for now. Note that we cannot just
8025 remove bpstats pointing at bpt from the stop_bpstat list
8026 entirely, as breakpoint commands are associated with the bpstat;
8027 if we remove it here, then the later call to
8028 bpstat_do_actions (&stop_bpstat);
8029 in event-top.c won't do anything, and temporary breakpoints
8030 with commands won't work. */
8031
8032 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
8033
8034 /* Now that breakpoint is removed from breakpoint
8035 list, update the global location list. This
8036 will remove locations that used to belong to
8037 this breakpoint. Do this before freeing
8038 the breakpoint itself, since remove_breakpoint
8039 looks at location's owner. It might be better
8040 design to have location completely self-contained,
8041 but it's not the case now. */
8042 update_global_location_list (0);
8043
8044
8045 /* On the chance that someone will soon try again to delete this same
8046 bp, we mark it as deleted before freeing its storage. */
8047 bpt->type = bp_none;
8048
8049 xfree (bpt);
8050 }
8051
8052 static void
8053 do_delete_breakpoint_cleanup (void *b)
8054 {
8055 delete_breakpoint (b);
8056 }
8057
8058 struct cleanup *
8059 make_cleanup_delete_breakpoint (struct breakpoint *b)
8060 {
8061 return make_cleanup (do_delete_breakpoint_cleanup, b);
8062 }
8063
8064 void
8065 delete_command (char *arg, int from_tty)
8066 {
8067 struct breakpoint *b, *temp;
8068
8069 dont_repeat ();
8070
8071 if (arg == 0)
8072 {
8073 int breaks_to_delete = 0;
8074
8075 /* Delete all breakpoints if no argument.
8076 Do not delete internal or call-dummy breakpoints, these
8077 have to be deleted with an explicit breakpoint number argument. */
8078 ALL_BREAKPOINTS (b)
8079 {
8080 if (b->type != bp_call_dummy
8081 && b->type != bp_shlib_event
8082 && b->type != bp_jit_event
8083 && b->type != bp_thread_event
8084 && b->type != bp_overlay_event
8085 && b->type != bp_longjmp_master
8086 && b->number >= 0)
8087 {
8088 breaks_to_delete = 1;
8089 break;
8090 }
8091 }
8092
8093 /* Ask user only if there are some breakpoints to delete. */
8094 if (!from_tty
8095 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
8096 {
8097 ALL_BREAKPOINTS_SAFE (b, temp)
8098 {
8099 if (b->type != bp_call_dummy
8100 && b->type != bp_shlib_event
8101 && b->type != bp_thread_event
8102 && b->type != bp_jit_event
8103 && b->type != bp_overlay_event
8104 && b->type != bp_longjmp_master
8105 && b->number >= 0)
8106 delete_breakpoint (b);
8107 }
8108 }
8109 }
8110 else
8111 map_breakpoint_numbers (arg, delete_breakpoint);
8112 }
8113
8114 static int
8115 all_locations_are_pending (struct bp_location *loc)
8116 {
8117 for (; loc; loc = loc->next)
8118 if (!loc->shlib_disabled)
8119 return 0;
8120 return 1;
8121 }
8122
8123 /* Subroutine of update_breakpoint_locations to simplify it.
8124 Return non-zero if multiple fns in list LOC have the same name.
8125 Null names are ignored. */
8126
8127 static int
8128 ambiguous_names_p (struct bp_location *loc)
8129 {
8130 struct bp_location *l;
8131 htab_t htab = htab_create_alloc (13, htab_hash_string,
8132 (int (*) (const void *, const void *)) streq,
8133 NULL, xcalloc, xfree);
8134
8135 for (l = loc; l != NULL; l = l->next)
8136 {
8137 const char **slot;
8138 const char *name = l->function_name;
8139
8140 /* Allow for some names to be NULL, ignore them. */
8141 if (name == NULL)
8142 continue;
8143
8144 slot = (const char **) htab_find_slot (htab, (const void *) name,
8145 INSERT);
8146 /* NOTE: We can assume slot != NULL here because xcalloc never returns
8147 NULL. */
8148 if (*slot != NULL)
8149 {
8150 htab_delete (htab);
8151 return 1;
8152 }
8153 *slot = name;
8154 }
8155
8156 htab_delete (htab);
8157 return 0;
8158 }
8159
8160 static void
8161 update_breakpoint_locations (struct breakpoint *b,
8162 struct symtabs_and_lines sals)
8163 {
8164 int i;
8165 char *s;
8166 struct bp_location *existing_locations = b->loc;
8167
8168 /* If there's no new locations, and all existing locations
8169 are pending, don't do anything. This optimizes
8170 the common case where all locations are in the same
8171 shared library, that was unloaded. We'd like to
8172 retain the location, so that when the library
8173 is loaded again, we don't loose the enabled/disabled
8174 status of the individual locations. */
8175 if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
8176 return;
8177
8178 b->loc = NULL;
8179
8180 for (i = 0; i < sals.nelts; ++i)
8181 {
8182 struct bp_location *new_loc =
8183 add_location_to_breakpoint (b, &(sals.sals[i]));
8184
8185 /* Reparse conditions, they might contain references to the
8186 old symtab. */
8187 if (b->cond_string != NULL)
8188 {
8189 struct gdb_exception e;
8190
8191 s = b->cond_string;
8192 TRY_CATCH (e, RETURN_MASK_ERROR)
8193 {
8194 new_loc->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc),
8195 0);
8196 }
8197 if (e.reason < 0)
8198 {
8199 warning (_("failed to reevaluate condition for breakpoint %d: %s"),
8200 b->number, e.message);
8201 new_loc->enabled = 0;
8202 }
8203 }
8204
8205 if (b->source_file != NULL)
8206 xfree (b->source_file);
8207 if (sals.sals[i].symtab == NULL)
8208 b->source_file = NULL;
8209 else
8210 b->source_file = xstrdup (sals.sals[i].symtab->filename);
8211
8212 if (b->line_number == 0)
8213 b->line_number = sals.sals[i].line;
8214 }
8215
8216 /* Update locations of permanent breakpoints. */
8217 if (b->enable_state == bp_permanent)
8218 make_breakpoint_permanent (b);
8219
8220 /* If possible, carry over 'disable' status from existing breakpoints. */
8221 {
8222 struct bp_location *e = existing_locations;
8223 /* If there are multiple breakpoints with the same function name,
8224 e.g. for inline functions, comparing function names won't work.
8225 Instead compare pc addresses; this is just a heuristic as things
8226 may have moved, but in practice it gives the correct answer
8227 often enough until a better solution is found. */
8228 int have_ambiguous_names = ambiguous_names_p (b->loc);
8229
8230 for (; e; e = e->next)
8231 {
8232 if (!e->enabled && e->function_name)
8233 {
8234 struct bp_location *l = b->loc;
8235 if (have_ambiguous_names)
8236 {
8237 for (; l; l = l->next)
8238 if (e->address == l->address)
8239 {
8240 l->enabled = 0;
8241 break;
8242 }
8243 }
8244 else
8245 {
8246 for (; l; l = l->next)
8247 if (l->function_name
8248 && strcmp (e->function_name, l->function_name) == 0)
8249 {
8250 l->enabled = 0;
8251 break;
8252 }
8253 }
8254 }
8255 }
8256 }
8257
8258 update_global_location_list (1);
8259 }
8260
8261
8262 /* Reset a breakpoint given it's struct breakpoint * BINT.
8263 The value we return ends up being the return value from catch_errors.
8264 Unused in this case. */
8265
8266 static int
8267 breakpoint_re_set_one (void *bint)
8268 {
8269 /* get past catch_errs */
8270 struct breakpoint *b = (struct breakpoint *) bint;
8271 struct value *mark;
8272 int i;
8273 int not_found = 0;
8274 int *not_found_ptr = &not_found;
8275 struct symtabs_and_lines sals = {};
8276 struct symtabs_and_lines expanded;
8277 char *s;
8278 enum enable_state save_enable;
8279 struct gdb_exception e;
8280 struct cleanup *cleanups;
8281
8282 switch (b->type)
8283 {
8284 case bp_none:
8285 warning (_("attempted to reset apparently deleted breakpoint #%d?"),
8286 b->number);
8287 return 0;
8288 case bp_breakpoint:
8289 case bp_hardware_breakpoint:
8290 case bp_tracepoint:
8291 /* Do not attempt to re-set breakpoints disabled during startup. */
8292 if (b->enable_state == bp_startup_disabled)
8293 return 0;
8294
8295 if (b->addr_string == NULL)
8296 {
8297 /* Anything without a string can't be re-set. */
8298 delete_breakpoint (b);
8299 return 0;
8300 }
8301
8302 set_language (b->language);
8303 input_radix = b->input_radix;
8304 s = b->addr_string;
8305 TRY_CATCH (e, RETURN_MASK_ERROR)
8306 {
8307 sals = decode_line_1 (&s, 1, (struct symtab *) NULL, 0, (char ***) NULL,
8308 not_found_ptr);
8309 }
8310 if (e.reason < 0)
8311 {
8312 int not_found_and_ok = 0;
8313 /* For pending breakpoints, it's expected that parsing
8314 will fail until the right shared library is loaded.
8315 User has already told to create pending breakpoints and
8316 don't need extra messages. If breakpoint is in bp_shlib_disabled
8317 state, then user already saw the message about that breakpoint
8318 being disabled, and don't want to see more errors. */
8319 if (not_found
8320 && (b->condition_not_parsed
8321 || (b->loc && b->loc->shlib_disabled)
8322 || b->enable_state == bp_disabled))
8323 not_found_and_ok = 1;
8324
8325 if (!not_found_and_ok)
8326 {
8327 /* We surely don't want to warn about the same breakpoint
8328 10 times. One solution, implemented here, is disable
8329 the breakpoint on error. Another solution would be to
8330 have separate 'warning emitted' flag. Since this
8331 happens only when a binary has changed, I don't know
8332 which approach is better. */
8333 b->enable_state = bp_disabled;
8334 throw_exception (e);
8335 }
8336 }
8337
8338 if (not_found)
8339 break;
8340
8341 gdb_assert (sals.nelts == 1);
8342 resolve_sal_pc (&sals.sals[0]);
8343 if (b->condition_not_parsed && s && s[0])
8344 {
8345 char *cond_string = 0;
8346 int thread = -1;
8347 int task = 0;
8348
8349 find_condition_and_thread (s, sals.sals[0].pc,
8350 &cond_string, &thread, &task);
8351 if (cond_string)
8352 b->cond_string = cond_string;
8353 b->thread = thread;
8354 b->task = task;
8355 b->condition_not_parsed = 0;
8356 }
8357 expanded = expand_line_sal_maybe (sals.sals[0]);
8358 cleanups = make_cleanup (xfree, sals.sals);
8359 update_breakpoint_locations (b, expanded);
8360 do_cleanups (cleanups);
8361 break;
8362
8363 case bp_watchpoint:
8364 case bp_hardware_watchpoint:
8365 case bp_read_watchpoint:
8366 case bp_access_watchpoint:
8367 /* Watchpoint can be either on expression using entirely global variables,
8368 or it can be on local variables.
8369
8370 Watchpoints of the first kind are never auto-deleted, and even persist
8371 across program restarts. Since they can use variables from shared
8372 libraries, we need to reparse expression as libraries are loaded
8373 and unloaded.
8374
8375 Watchpoints on local variables can also change meaning as result
8376 of solib event. For example, if a watchpoint uses both a local and
8377 a global variables in expression, it's a local watchpoint, but
8378 unloading of a shared library will make the expression invalid.
8379 This is not a very common use case, but we still re-evaluate
8380 expression, to avoid surprises to the user.
8381
8382 Note that for local watchpoints, we re-evaluate it only if
8383 watchpoints frame id is still valid. If it's not, it means
8384 the watchpoint is out of scope and will be deleted soon. In fact,
8385 I'm not sure we'll ever be called in this case.
8386
8387 If a local watchpoint's frame id is still valid, then
8388 b->exp_valid_block is likewise valid, and we can safely use it.
8389
8390 Don't do anything about disabled watchpoints, since they will
8391 be reevaluated again when enabled. */
8392 update_watchpoint (b, 1 /* reparse */);
8393 break;
8394 /* We needn't really do anything to reset these, since the mask
8395 that requests them is unaffected by e.g., new libraries being
8396 loaded. */
8397 case bp_catchpoint:
8398 break;
8399
8400 default:
8401 printf_filtered (_("Deleting unknown breakpoint type %d\n"), b->type);
8402 /* fall through */
8403 /* Delete overlay event and longjmp master breakpoints; they will be
8404 reset later by breakpoint_re_set. */
8405 case bp_overlay_event:
8406 case bp_longjmp_master:
8407 delete_breakpoint (b);
8408 break;
8409
8410 /* This breakpoint is special, it's set up when the inferior
8411 starts and we really don't want to touch it. */
8412 case bp_shlib_event:
8413
8414 /* Like bp_shlib_event, this breakpoint type is special.
8415 Once it is set up, we do not want to touch it. */
8416 case bp_thread_event:
8417
8418 /* Keep temporary breakpoints, which can be encountered when we step
8419 over a dlopen call and SOLIB_ADD is resetting the breakpoints.
8420 Otherwise these should have been blown away via the cleanup chain
8421 or by breakpoint_init_inferior when we rerun the executable. */
8422 case bp_until:
8423 case bp_finish:
8424 case bp_watchpoint_scope:
8425 case bp_call_dummy:
8426 case bp_step_resume:
8427 case bp_longjmp:
8428 case bp_longjmp_resume:
8429 case bp_jit_event:
8430 break;
8431 }
8432
8433 return 0;
8434 }
8435
8436 /* Re-set all breakpoints after symbols have been re-loaded. */
8437 void
8438 breakpoint_re_set (void)
8439 {
8440 struct breakpoint *b, *temp;
8441 enum language save_language;
8442 int save_input_radix;
8443
8444 save_language = current_language->la_language;
8445 save_input_radix = input_radix;
8446 ALL_BREAKPOINTS_SAFE (b, temp)
8447 {
8448 /* Format possible error msg */
8449 char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
8450 b->number);
8451 struct cleanup *cleanups = make_cleanup (xfree, message);
8452 catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
8453 do_cleanups (cleanups);
8454 }
8455 set_language (save_language);
8456 input_radix = save_input_radix;
8457
8458 jit_breakpoint_re_set ();
8459
8460 create_overlay_event_breakpoint ("_ovly_debug_event");
8461 create_longjmp_master_breakpoint ("longjmp");
8462 create_longjmp_master_breakpoint ("_longjmp");
8463 create_longjmp_master_breakpoint ("siglongjmp");
8464 create_longjmp_master_breakpoint ("_siglongjmp");
8465 }
8466 \f
8467 /* Reset the thread number of this breakpoint:
8468
8469 - If the breakpoint is for all threads, leave it as-is.
8470 - Else, reset it to the current thread for inferior_ptid. */
8471 void
8472 breakpoint_re_set_thread (struct breakpoint *b)
8473 {
8474 if (b->thread != -1)
8475 {
8476 if (in_thread_list (inferior_ptid))
8477 b->thread = pid_to_thread_id (inferior_ptid);
8478 }
8479 }
8480
8481 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
8482 If from_tty is nonzero, it prints a message to that effect,
8483 which ends with a period (no newline). */
8484
8485 void
8486 set_ignore_count (int bptnum, int count, int from_tty)
8487 {
8488 struct breakpoint *b;
8489
8490 if (count < 0)
8491 count = 0;
8492
8493 ALL_BREAKPOINTS (b)
8494 if (b->number == bptnum)
8495 {
8496 b->ignore_count = count;
8497 if (from_tty)
8498 {
8499 if (count == 0)
8500 printf_filtered (_("Will stop next time breakpoint %d is reached."),
8501 bptnum);
8502 else if (count == 1)
8503 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
8504 bptnum);
8505 else
8506 printf_filtered (_("Will ignore next %d crossings of breakpoint %d."),
8507 count, bptnum);
8508 }
8509 breakpoints_changed ();
8510 observer_notify_breakpoint_modified (b->number);
8511 return;
8512 }
8513
8514 error (_("No breakpoint number %d."), bptnum);
8515 }
8516
8517 void
8518 make_breakpoint_silent (struct breakpoint *b)
8519 {
8520 /* Silence the breakpoint. */
8521 b->silent = 1;
8522 }
8523
8524 /* Command to set ignore-count of breakpoint N to COUNT. */
8525
8526 static void
8527 ignore_command (char *args, int from_tty)
8528 {
8529 char *p = args;
8530 int num;
8531
8532 if (p == 0)
8533 error_no_arg (_("a breakpoint number"));
8534
8535 num = get_number (&p);
8536 if (num == 0)
8537 error (_("bad breakpoint number: '%s'"), args);
8538 if (*p == 0)
8539 error (_("Second argument (specified ignore-count) is missing."));
8540
8541 set_ignore_count (num,
8542 longest_to_int (value_as_long (parse_and_eval (p))),
8543 from_tty);
8544 if (from_tty)
8545 printf_filtered ("\n");
8546 }
8547 \f
8548 /* Call FUNCTION on each of the breakpoints
8549 whose numbers are given in ARGS. */
8550
8551 static void
8552 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *))
8553 {
8554 char *p = args;
8555 char *p1;
8556 int num;
8557 struct breakpoint *b, *tmp;
8558 int match;
8559
8560 if (p == 0)
8561 error_no_arg (_("one or more breakpoint numbers"));
8562
8563 while (*p)
8564 {
8565 match = 0;
8566 p1 = p;
8567
8568 num = get_number_or_range (&p1);
8569 if (num == 0)
8570 {
8571 warning (_("bad breakpoint number at or near '%s'"), p);
8572 }
8573 else
8574 {
8575 ALL_BREAKPOINTS_SAFE (b, tmp)
8576 if (b->number == num)
8577 {
8578 struct breakpoint *related_breakpoint = b->related_breakpoint;
8579 match = 1;
8580 function (b);
8581 if (related_breakpoint)
8582 function (related_breakpoint);
8583 break;
8584 }
8585 if (match == 0)
8586 printf_unfiltered (_("No breakpoint number %d.\n"), num);
8587 }
8588 p = p1;
8589 }
8590 }
8591
8592 static struct bp_location *
8593 find_location_by_number (char *number)
8594 {
8595 char *dot = strchr (number, '.');
8596 char *p1;
8597 int bp_num;
8598 int loc_num;
8599 struct breakpoint *b;
8600 struct bp_location *loc;
8601
8602 *dot = '\0';
8603
8604 p1 = number;
8605 bp_num = get_number_or_range (&p1);
8606 if (bp_num == 0)
8607 error (_("Bad breakpoint number '%s'"), number);
8608
8609 ALL_BREAKPOINTS (b)
8610 if (b->number == bp_num)
8611 {
8612 break;
8613 }
8614
8615 if (!b || b->number != bp_num)
8616 error (_("Bad breakpoint number '%s'"), number);
8617
8618 p1 = dot+1;
8619 loc_num = get_number_or_range (&p1);
8620 if (loc_num == 0)
8621 error (_("Bad breakpoint location number '%s'"), number);
8622
8623 --loc_num;
8624 loc = b->loc;
8625 for (;loc_num && loc; --loc_num, loc = loc->next)
8626 ;
8627 if (!loc)
8628 error (_("Bad breakpoint location number '%s'"), dot+1);
8629
8630 return loc;
8631 }
8632
8633
8634 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
8635 If from_tty is nonzero, it prints a message to that effect,
8636 which ends with a period (no newline). */
8637
8638 void
8639 disable_breakpoint (struct breakpoint *bpt)
8640 {
8641 /* Never disable a watchpoint scope breakpoint; we want to
8642 hit them when we leave scope so we can delete both the
8643 watchpoint and its scope breakpoint at that time. */
8644 if (bpt->type == bp_watchpoint_scope)
8645 return;
8646
8647 /* You can't disable permanent breakpoints. */
8648 if (bpt->enable_state == bp_permanent)
8649 return;
8650
8651 bpt->enable_state = bp_disabled;
8652
8653 update_global_location_list (0);
8654
8655 observer_notify_breakpoint_modified (bpt->number);
8656 }
8657
8658 static void
8659 disable_command (char *args, int from_tty)
8660 {
8661 struct breakpoint *bpt;
8662 if (args == 0)
8663 ALL_BREAKPOINTS (bpt)
8664 switch (bpt->type)
8665 {
8666 case bp_none:
8667 warning (_("attempted to disable apparently deleted breakpoint #%d?"),
8668 bpt->number);
8669 continue;
8670 case bp_breakpoint:
8671 case bp_tracepoint:
8672 case bp_catchpoint:
8673 case bp_hardware_breakpoint:
8674 case bp_watchpoint:
8675 case bp_hardware_watchpoint:
8676 case bp_read_watchpoint:
8677 case bp_access_watchpoint:
8678 disable_breakpoint (bpt);
8679 default:
8680 continue;
8681 }
8682 else if (strchr (args, '.'))
8683 {
8684 struct bp_location *loc = find_location_by_number (args);
8685 if (loc)
8686 loc->enabled = 0;
8687 update_global_location_list (0);
8688 }
8689 else
8690 map_breakpoint_numbers (args, disable_breakpoint);
8691 }
8692
8693 static void
8694 do_enable_breakpoint (struct breakpoint *bpt, enum bpdisp disposition)
8695 {
8696 int target_resources_ok, other_type_used;
8697 struct value *mark;
8698
8699 if (bpt->type == bp_hardware_breakpoint)
8700 {
8701 int i;
8702 i = hw_breakpoint_used_count ();
8703 target_resources_ok =
8704 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8705 i + 1, 0);
8706 if (target_resources_ok == 0)
8707 error (_("No hardware breakpoint support in the target."));
8708 else if (target_resources_ok < 0)
8709 error (_("Hardware breakpoints used exceeds limit."));
8710 }
8711
8712 if (bpt->type == bp_watchpoint
8713 || bpt->type == bp_hardware_watchpoint
8714 || bpt->type == bp_read_watchpoint
8715 || bpt->type == bp_access_watchpoint)
8716 {
8717 struct gdb_exception e;
8718
8719 TRY_CATCH (e, RETURN_MASK_ALL)
8720 {
8721 update_watchpoint (bpt, 1 /* reparse */);
8722 }
8723 if (e.reason < 0)
8724 {
8725 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
8726 bpt->number);
8727 return;
8728 }
8729 }
8730
8731 if (bpt->enable_state != bp_permanent)
8732 bpt->enable_state = bp_enabled;
8733 bpt->disposition = disposition;
8734 update_global_location_list (1);
8735 breakpoints_changed ();
8736
8737 observer_notify_breakpoint_modified (bpt->number);
8738 }
8739
8740
8741 void
8742 enable_breakpoint (struct breakpoint *bpt)
8743 {
8744 do_enable_breakpoint (bpt, bpt->disposition);
8745 }
8746
8747 /* The enable command enables the specified breakpoints (or all defined
8748 breakpoints) so they once again become (or continue to be) effective
8749 in stopping the inferior. */
8750
8751 static void
8752 enable_command (char *args, int from_tty)
8753 {
8754 struct breakpoint *bpt;
8755 if (args == 0)
8756 ALL_BREAKPOINTS (bpt)
8757 switch (bpt->type)
8758 {
8759 case bp_none:
8760 warning (_("attempted to enable apparently deleted breakpoint #%d?"),
8761 bpt->number);
8762 continue;
8763 case bp_breakpoint:
8764 case bp_tracepoint:
8765 case bp_catchpoint:
8766 case bp_hardware_breakpoint:
8767 case bp_watchpoint:
8768 case bp_hardware_watchpoint:
8769 case bp_read_watchpoint:
8770 case bp_access_watchpoint:
8771 enable_breakpoint (bpt);
8772 default:
8773 continue;
8774 }
8775 else if (strchr (args, '.'))
8776 {
8777 struct bp_location *loc = find_location_by_number (args);
8778 if (loc)
8779 loc->enabled = 1;
8780 update_global_location_list (1);
8781 }
8782 else
8783 map_breakpoint_numbers (args, enable_breakpoint);
8784 }
8785
8786 static void
8787 enable_once_breakpoint (struct breakpoint *bpt)
8788 {
8789 do_enable_breakpoint (bpt, disp_disable);
8790 }
8791
8792 static void
8793 enable_once_command (char *args, int from_tty)
8794 {
8795 map_breakpoint_numbers (args, enable_once_breakpoint);
8796 }
8797
8798 static void
8799 enable_delete_breakpoint (struct breakpoint *bpt)
8800 {
8801 do_enable_breakpoint (bpt, disp_del);
8802 }
8803
8804 static void
8805 enable_delete_command (char *args, int from_tty)
8806 {
8807 map_breakpoint_numbers (args, enable_delete_breakpoint);
8808 }
8809 \f
8810 static void
8811 set_breakpoint_cmd (char *args, int from_tty)
8812 {
8813 }
8814
8815 static void
8816 show_breakpoint_cmd (char *args, int from_tty)
8817 {
8818 }
8819
8820 /* Use default_breakpoint_'s, or nothing if they aren't valid. */
8821
8822 struct symtabs_and_lines
8823 decode_line_spec_1 (char *string, int funfirstline)
8824 {
8825 struct symtabs_and_lines sals;
8826 if (string == 0)
8827 error (_("Empty line specification."));
8828 if (default_breakpoint_valid)
8829 sals = decode_line_1 (&string, funfirstline,
8830 default_breakpoint_symtab,
8831 default_breakpoint_line,
8832 (char ***) NULL, NULL);
8833 else
8834 sals = decode_line_1 (&string, funfirstline,
8835 (struct symtab *) NULL, 0, (char ***) NULL, NULL);
8836 if (*string)
8837 error (_("Junk at end of line specification: %s"), string);
8838 return sals;
8839 }
8840
8841 /* Create and insert a raw software breakpoint at PC. Return an
8842 identifier, which should be used to remove the breakpoint later.
8843 In general, places which call this should be using something on the
8844 breakpoint chain instead; this function should be eliminated
8845 someday. */
8846
8847 void *
8848 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch, CORE_ADDR pc)
8849 {
8850 struct bp_target_info *bp_tgt;
8851
8852 bp_tgt = xmalloc (sizeof (struct bp_target_info));
8853 memset (bp_tgt, 0, sizeof (struct bp_target_info));
8854
8855 bp_tgt->placed_address = pc;
8856 if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
8857 {
8858 /* Could not insert the breakpoint. */
8859 xfree (bp_tgt);
8860 return NULL;
8861 }
8862
8863 return bp_tgt;
8864 }
8865
8866 /* Remove a breakpoint BP inserted by deprecated_insert_raw_breakpoint. */
8867
8868 int
8869 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
8870 {
8871 struct bp_target_info *bp_tgt = bp;
8872 int ret;
8873
8874 ret = target_remove_breakpoint (gdbarch, bp_tgt);
8875 xfree (bp_tgt);
8876
8877 return ret;
8878 }
8879
8880 /* One (or perhaps two) breakpoints used for software single stepping. */
8881
8882 static void *single_step_breakpoints[2];
8883 static struct gdbarch *single_step_gdbarch[2];
8884
8885 /* Create and insert a breakpoint for software single step. */
8886
8887 void
8888 insert_single_step_breakpoint (struct gdbarch *gdbarch, CORE_ADDR next_pc)
8889 {
8890 void **bpt_p;
8891
8892 if (single_step_breakpoints[0] == NULL)
8893 {
8894 bpt_p = &single_step_breakpoints[0];
8895 single_step_gdbarch[0] = gdbarch;
8896 }
8897 else
8898 {
8899 gdb_assert (single_step_breakpoints[1] == NULL);
8900 bpt_p = &single_step_breakpoints[1];
8901 single_step_gdbarch[1] = gdbarch;
8902 }
8903
8904 /* NOTE drow/2006-04-11: A future improvement to this function would be
8905 to only create the breakpoints once, and actually put them on the
8906 breakpoint chain. That would let us use set_raw_breakpoint. We could
8907 adjust the addresses each time they were needed. Doing this requires
8908 corresponding changes elsewhere where single step breakpoints are
8909 handled, however. So, for now, we use this. */
8910
8911 *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, next_pc);
8912 if (*bpt_p == NULL)
8913 error (_("Could not insert single-step breakpoint at %s"),
8914 paddress (gdbarch, next_pc));
8915 }
8916
8917 /* Remove and delete any breakpoints used for software single step. */
8918
8919 void
8920 remove_single_step_breakpoints (void)
8921 {
8922 gdb_assert (single_step_breakpoints[0] != NULL);
8923
8924 /* See insert_single_step_breakpoint for more about this deprecated
8925 call. */
8926 deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
8927 single_step_breakpoints[0]);
8928 single_step_gdbarch[0] = NULL;
8929 single_step_breakpoints[0] = NULL;
8930
8931 if (single_step_breakpoints[1] != NULL)
8932 {
8933 deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
8934 single_step_breakpoints[1]);
8935 single_step_gdbarch[1] = NULL;
8936 single_step_breakpoints[1] = NULL;
8937 }
8938 }
8939
8940 /* Check whether a software single-step breakpoint is inserted at PC. */
8941
8942 static int
8943 single_step_breakpoint_inserted_here_p (CORE_ADDR pc)
8944 {
8945 int i;
8946
8947 for (i = 0; i < 2; i++)
8948 {
8949 struct bp_target_info *bp_tgt = single_step_breakpoints[i];
8950 if (bp_tgt && bp_tgt->placed_address == pc)
8951 return 1;
8952 }
8953
8954 return 0;
8955 }
8956
8957 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
8958 non-zero otherwise. */
8959 static int
8960 is_syscall_catchpoint_enabled (struct breakpoint *bp)
8961 {
8962 if (syscall_catchpoint_p (bp)
8963 && bp->enable_state != bp_disabled
8964 && bp->enable_state != bp_call_disabled)
8965 return 1;
8966 else
8967 return 0;
8968 }
8969
8970 int
8971 catch_syscall_enabled (void)
8972 {
8973 struct inferior *inf = current_inferior ();
8974
8975 return inf->total_syscalls_count != 0;
8976 }
8977
8978 int
8979 catching_syscall_number (int syscall_number)
8980 {
8981 struct breakpoint *bp;
8982
8983 ALL_BREAKPOINTS (bp)
8984 if (is_syscall_catchpoint_enabled (bp))
8985 {
8986 if (bp->syscalls_to_be_caught)
8987 {
8988 int i, iter;
8989 for (i = 0;
8990 VEC_iterate (int, bp->syscalls_to_be_caught, i, iter);
8991 i++)
8992 if (syscall_number == iter)
8993 return 1;
8994 }
8995 else
8996 return 1;
8997 }
8998
8999 return 0;
9000 }
9001
9002 /* Complete syscall names. Used by "catch syscall". */
9003 static char **
9004 catch_syscall_completer (struct cmd_list_element *cmd,
9005 char *text, char *word)
9006 {
9007 const char **list = get_syscall_names ();
9008 return (list == NULL) ? NULL : complete_on_enum (list, text, word);
9009 }
9010
9011 /* Tracepoint-specific operations. */
9012
9013 /* Set tracepoint count to NUM. */
9014 static void
9015 set_tracepoint_count (int num)
9016 {
9017 tracepoint_count = num;
9018 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
9019 }
9020
9021 void
9022 trace_command (char *arg, int from_tty)
9023 {
9024 break_command_really (get_current_arch (),
9025 arg,
9026 NULL, 0, 1 /* parse arg */,
9027 0 /* tempflag */, 0 /* hardwareflag */,
9028 1 /* traceflag */,
9029 0 /* Ignore count */,
9030 pending_break_support,
9031 NULL,
9032 from_tty,
9033 1 /* enabled */);
9034 set_tracepoint_count (breakpoint_count);
9035 }
9036
9037 /* Print information on tracepoint number TPNUM_EXP, or all if
9038 omitted. */
9039
9040 static void
9041 tracepoints_info (char *tpnum_exp, int from_tty)
9042 {
9043 struct breakpoint *b;
9044 int tps_to_list = 0;
9045
9046 /* In the no-arguments case, say "No tracepoints" if none found. */
9047 if (tpnum_exp == 0)
9048 {
9049 ALL_TRACEPOINTS (b)
9050 {
9051 if (b->number >= 0)
9052 {
9053 tps_to_list = 1;
9054 break;
9055 }
9056 }
9057 if (!tps_to_list)
9058 {
9059 ui_out_message (uiout, 0, "No tracepoints.\n");
9060 return;
9061 }
9062 }
9063
9064 /* Otherwise be the same as "info break". */
9065 breakpoints_info (tpnum_exp, from_tty);
9066 }
9067
9068 /* The 'enable trace' command enables tracepoints.
9069 Not supported by all targets. */
9070 static void
9071 enable_trace_command (char *args, int from_tty)
9072 {
9073 enable_command (args, from_tty);
9074 }
9075
9076 /* The 'disable trace' command disables tracepoints.
9077 Not supported by all targets. */
9078 static void
9079 disable_trace_command (char *args, int from_tty)
9080 {
9081 disable_command (args, from_tty);
9082 }
9083
9084 /* Remove a tracepoint (or all if no argument) */
9085 static void
9086 delete_trace_command (char *arg, int from_tty)
9087 {
9088 struct breakpoint *b, *temp;
9089
9090 dont_repeat ();
9091
9092 if (arg == 0)
9093 {
9094 int breaks_to_delete = 0;
9095
9096 /* Delete all breakpoints if no argument.
9097 Do not delete internal or call-dummy breakpoints, these
9098 have to be deleted with an explicit breakpoint number argument. */
9099 ALL_TRACEPOINTS (b)
9100 {
9101 if (b->number >= 0)
9102 {
9103 breaks_to_delete = 1;
9104 break;
9105 }
9106 }
9107
9108 /* Ask user only if there are some breakpoints to delete. */
9109 if (!from_tty
9110 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
9111 {
9112 ALL_BREAKPOINTS_SAFE (b, temp)
9113 {
9114 if (b->type == bp_tracepoint
9115 && b->number >= 0)
9116 delete_breakpoint (b);
9117 }
9118 }
9119 }
9120 else
9121 map_breakpoint_numbers (arg, delete_breakpoint);
9122 }
9123
9124 /* Set passcount for tracepoint.
9125
9126 First command argument is passcount, second is tracepoint number.
9127 If tracepoint number omitted, apply to most recently defined.
9128 Also accepts special argument "all". */
9129
9130 static void
9131 trace_pass_command (char *args, int from_tty)
9132 {
9133 struct breakpoint *t1 = (struct breakpoint *) -1, *t2;
9134 unsigned int count;
9135 int all = 0;
9136
9137 if (args == 0 || *args == 0)
9138 error (_("passcount command requires an argument (count + optional TP num)"));
9139
9140 count = strtoul (args, &args, 10); /* Count comes first, then TP num. */
9141
9142 while (*args && isspace ((int) *args))
9143 args++;
9144
9145 if (*args && strncasecmp (args, "all", 3) == 0)
9146 {
9147 args += 3; /* Skip special argument "all". */
9148 all = 1;
9149 if (*args)
9150 error (_("Junk at end of arguments."));
9151 }
9152 else
9153 t1 = get_tracepoint_by_number (&args, 1, 1);
9154
9155 do
9156 {
9157 if (t1)
9158 {
9159 ALL_TRACEPOINTS (t2)
9160 if (t1 == (struct breakpoint *) -1 || t1 == t2)
9161 {
9162 t2->pass_count = count;
9163 observer_notify_tracepoint_modified (t2->number);
9164 if (from_tty)
9165 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
9166 t2->number, count);
9167 }
9168 if (! all && *args)
9169 t1 = get_tracepoint_by_number (&args, 1, 0);
9170 }
9171 }
9172 while (*args);
9173 }
9174
9175 struct breakpoint *
9176 get_tracepoint (int num)
9177 {
9178 struct breakpoint *t;
9179
9180 ALL_TRACEPOINTS (t)
9181 if (t->number == num)
9182 return t;
9183
9184 return NULL;
9185 }
9186
9187 /* Utility: parse a tracepoint number and look it up in the list.
9188 If MULTI_P is true, there might be a range of tracepoints in ARG.
9189 if OPTIONAL_P is true, then if the argument is missing, the most
9190 recent tracepoint (tracepoint_count) is returned. */
9191 struct breakpoint *
9192 get_tracepoint_by_number (char **arg, int multi_p, int optional_p)
9193 {
9194 extern int tracepoint_count;
9195 struct breakpoint *t;
9196 int tpnum;
9197 char *instring = arg == NULL ? NULL : *arg;
9198
9199 if (arg == NULL || *arg == NULL || ! **arg)
9200 {
9201 if (optional_p)
9202 tpnum = tracepoint_count;
9203 else
9204 error_no_arg (_("tracepoint number"));
9205 }
9206 else
9207 tpnum = multi_p ? get_number_or_range (arg) : get_number (arg);
9208
9209 if (tpnum <= 0)
9210 {
9211 if (instring && *instring)
9212 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
9213 instring);
9214 else
9215 printf_filtered (_("Tracepoint argument missing and no previous tracepoint\n"));
9216 return NULL;
9217 }
9218
9219 ALL_TRACEPOINTS (t)
9220 if (t->number == tpnum)
9221 {
9222 return t;
9223 }
9224
9225 /* FIXME: if we are in the middle of a range we don't want to give
9226 a message. The current interface to get_number_or_range doesn't
9227 allow us to discover this. */
9228 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
9229 return NULL;
9230 }
9231
9232 /* save-tracepoints command */
9233 static void
9234 tracepoint_save_command (char *args, int from_tty)
9235 {
9236 struct breakpoint *tp;
9237 int any_tp = 0;
9238 struct action_line *line;
9239 FILE *fp;
9240 char *i1 = " ", *i2 = " ";
9241 char *indent, *actionline, *pathname;
9242 char tmp[40];
9243 struct cleanup *cleanup;
9244
9245 if (args == 0 || *args == 0)
9246 error (_("Argument required (file name in which to save tracepoints)"));
9247
9248 /* See if we have anything to save. */
9249 ALL_TRACEPOINTS (tp)
9250 {
9251 any_tp = 1;
9252 break;
9253 }
9254 if (!any_tp)
9255 {
9256 warning (_("save-tracepoints: no tracepoints to save."));
9257 return;
9258 }
9259
9260 pathname = tilde_expand (args);
9261 cleanup = make_cleanup (xfree, pathname);
9262 fp = fopen (pathname, "w");
9263 if (!fp)
9264 error (_("Unable to open file '%s' for saving tracepoints (%s)"),
9265 args, safe_strerror (errno));
9266 make_cleanup_fclose (fp);
9267
9268 ALL_TRACEPOINTS (tp)
9269 {
9270 if (tp->addr_string)
9271 fprintf (fp, "trace %s\n", tp->addr_string);
9272 else
9273 {
9274 sprintf_vma (tmp, tp->loc->address);
9275 fprintf (fp, "trace *0x%s\n", tmp);
9276 }
9277
9278 if (tp->pass_count)
9279 fprintf (fp, " passcount %d\n", tp->pass_count);
9280
9281 if (tp->actions)
9282 {
9283 fprintf (fp, " actions\n");
9284 indent = i1;
9285 for (line = tp->actions; line; line = line->next)
9286 {
9287 struct cmd_list_element *cmd;
9288
9289 QUIT; /* allow user to bail out with ^C */
9290 actionline = line->action;
9291 while (isspace ((int) *actionline))
9292 actionline++;
9293
9294 fprintf (fp, "%s%s\n", indent, actionline);
9295 if (*actionline != '#') /* skip for comment lines */
9296 {
9297 cmd = lookup_cmd (&actionline, cmdlist, "", -1, 1);
9298 if (cmd == 0)
9299 error (_("Bad action list item: %s"), actionline);
9300 if (cmd_cfunc_eq (cmd, while_stepping_pseudocommand))
9301 indent = i2;
9302 else if (cmd_cfunc_eq (cmd, end_actions_pseudocommand))
9303 indent = i1;
9304 }
9305 }
9306 }
9307 }
9308 do_cleanups (cleanup);
9309 if (from_tty)
9310 printf_filtered (_("Tracepoints saved to file '%s'.\n"), args);
9311 return;
9312 }
9313
9314 /* Create a vector of all tracepoints. */
9315
9316 VEC(breakpoint_p) *
9317 all_tracepoints ()
9318 {
9319 VEC(breakpoint_p) *tp_vec = 0;
9320 struct breakpoint *tp;
9321
9322 ALL_TRACEPOINTS (tp)
9323 {
9324 VEC_safe_push (breakpoint_p, tp_vec, tp);
9325 }
9326
9327 return tp_vec;
9328 }
9329
9330 \f
9331 /* This help string is used for the break, hbreak, tbreak and thbreak commands.
9332 It is defined as a macro to prevent duplication.
9333 COMMAND should be a string constant containing the name of the command. */
9334 #define BREAK_ARGS_HELP(command) \
9335 command" [LOCATION] [thread THREADNUM] [if CONDITION]\n\
9336 LOCATION may be a line number, function name, or \"*\" and an address.\n\
9337 If a line number is specified, break at start of code for that line.\n\
9338 If a function is specified, break at start of code for that function.\n\
9339 If an address is specified, break at that exact address.\n\
9340 With no LOCATION, uses current execution address of selected stack frame.\n\
9341 This is useful for breaking on return to a stack frame.\n\
9342 \n\
9343 THREADNUM is the number from \"info threads\".\n\
9344 CONDITION is a boolean expression.\n\
9345 \n\
9346 Multiple breakpoints at one place are permitted, and useful if conditional.\n\
9347 \n\
9348 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
9349
9350 /* List of subcommands for "catch". */
9351 static struct cmd_list_element *catch_cmdlist;
9352
9353 /* List of subcommands for "tcatch". */
9354 static struct cmd_list_element *tcatch_cmdlist;
9355
9356 /* Like add_cmd, but add the command to both the "catch" and "tcatch"
9357 lists, and pass some additional user data to the command function. */
9358 static void
9359 add_catch_command (char *name, char *docstring,
9360 void (*sfunc) (char *args, int from_tty,
9361 struct cmd_list_element *command),
9362 char **(*completer) (struct cmd_list_element *cmd,
9363 char *text, char *word),
9364 void *user_data_catch,
9365 void *user_data_tcatch)
9366 {
9367 struct cmd_list_element *command;
9368
9369 command = add_cmd (name, class_breakpoint, NULL, docstring,
9370 &catch_cmdlist);
9371 set_cmd_sfunc (command, sfunc);
9372 set_cmd_context (command, user_data_catch);
9373 set_cmd_completer (command, completer);
9374
9375 command = add_cmd (name, class_breakpoint, NULL, docstring,
9376 &tcatch_cmdlist);
9377 set_cmd_sfunc (command, sfunc);
9378 set_cmd_context (command, user_data_tcatch);
9379 set_cmd_completer (command, completer);
9380 }
9381
9382 void
9383 _initialize_breakpoint (void)
9384 {
9385 static struct cmd_list_element *breakpoint_set_cmdlist;
9386 static struct cmd_list_element *breakpoint_show_cmdlist;
9387 struct cmd_list_element *c;
9388
9389 observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
9390
9391 breakpoint_chain = 0;
9392 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
9393 before a breakpoint is set. */
9394 breakpoint_count = 0;
9395
9396 tracepoint_count = 0;
9397
9398 add_com ("ignore", class_breakpoint, ignore_command, _("\
9399 Set ignore-count of breakpoint number N to COUNT.\n\
9400 Usage is `ignore N COUNT'."));
9401 if (xdb_commands)
9402 add_com_alias ("bc", "ignore", class_breakpoint, 1);
9403
9404 add_com ("commands", class_breakpoint, commands_command, _("\
9405 Set commands to be executed when a breakpoint is hit.\n\
9406 Give breakpoint number as argument after \"commands\".\n\
9407 With no argument, the targeted breakpoint is the last one set.\n\
9408 The commands themselves follow starting on the next line.\n\
9409 Type a line containing \"end\" to indicate the end of them.\n\
9410 Give \"silent\" as the first line to make the breakpoint silent;\n\
9411 then no output is printed when it is hit, except what the commands print."));
9412
9413 add_com ("condition", class_breakpoint, condition_command, _("\
9414 Specify breakpoint number N to break only if COND is true.\n\
9415 Usage is `condition N COND', where N is an integer and COND is an\n\
9416 expression to be evaluated whenever breakpoint N is reached."));
9417
9418 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
9419 Set a temporary breakpoint.\n\
9420 Like \"break\" except the breakpoint is only temporary,\n\
9421 so it will be deleted when hit. Equivalent to \"break\" followed\n\
9422 by using \"enable delete\" on the breakpoint number.\n\
9423 \n"
9424 BREAK_ARGS_HELP ("tbreak")));
9425 set_cmd_completer (c, location_completer);
9426
9427 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
9428 Set a hardware assisted breakpoint.\n\
9429 Like \"break\" except the breakpoint requires hardware support,\n\
9430 some target hardware may not have this support.\n\
9431 \n"
9432 BREAK_ARGS_HELP ("hbreak")));
9433 set_cmd_completer (c, location_completer);
9434
9435 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
9436 Set a temporary hardware assisted breakpoint.\n\
9437 Like \"hbreak\" except the breakpoint is only temporary,\n\
9438 so it will be deleted when hit.\n\
9439 \n"
9440 BREAK_ARGS_HELP ("thbreak")));
9441 set_cmd_completer (c, location_completer);
9442
9443 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
9444 Enable some breakpoints.\n\
9445 Give breakpoint numbers (separated by spaces) as arguments.\n\
9446 With no subcommand, breakpoints are enabled until you command otherwise.\n\
9447 This is used to cancel the effect of the \"disable\" command.\n\
9448 With a subcommand you can enable temporarily."),
9449 &enablelist, "enable ", 1, &cmdlist);
9450 if (xdb_commands)
9451 add_com ("ab", class_breakpoint, enable_command, _("\
9452 Enable some breakpoints.\n\
9453 Give breakpoint numbers (separated by spaces) as arguments.\n\
9454 With no subcommand, breakpoints are enabled until you command otherwise.\n\
9455 This is used to cancel the effect of the \"disable\" command.\n\
9456 With a subcommand you can enable temporarily."));
9457
9458 add_com_alias ("en", "enable", class_breakpoint, 1);
9459
9460 add_abbrev_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
9461 Enable some breakpoints.\n\
9462 Give breakpoint numbers (separated by spaces) as arguments.\n\
9463 This is used to cancel the effect of the \"disable\" command.\n\
9464 May be abbreviated to simply \"enable\".\n"),
9465 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
9466
9467 add_cmd ("once", no_class, enable_once_command, _("\
9468 Enable breakpoints for one hit. Give breakpoint numbers.\n\
9469 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
9470 &enablebreaklist);
9471
9472 add_cmd ("delete", no_class, enable_delete_command, _("\
9473 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
9474 If a breakpoint is hit while enabled in this fashion, it is deleted."),
9475 &enablebreaklist);
9476
9477 add_cmd ("delete", no_class, enable_delete_command, _("\
9478 Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
9479 If a breakpoint is hit while enabled in this fashion, it is deleted."),
9480 &enablelist);
9481
9482 add_cmd ("once", no_class, enable_once_command, _("\
9483 Enable breakpoints for one hit. Give breakpoint numbers.\n\
9484 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
9485 &enablelist);
9486
9487 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
9488 Disable some breakpoints.\n\
9489 Arguments are breakpoint numbers with spaces in between.\n\
9490 To disable all breakpoints, give no argument.\n\
9491 A disabled breakpoint is not forgotten, but has no effect until reenabled."),
9492 &disablelist, "disable ", 1, &cmdlist);
9493 add_com_alias ("dis", "disable", class_breakpoint, 1);
9494 add_com_alias ("disa", "disable", class_breakpoint, 1);
9495 if (xdb_commands)
9496 add_com ("sb", class_breakpoint, disable_command, _("\
9497 Disable some breakpoints.\n\
9498 Arguments are breakpoint numbers with spaces in between.\n\
9499 To disable all breakpoints, give no argument.\n\
9500 A disabled breakpoint is not forgotten, but has no effect until reenabled."));
9501
9502 add_cmd ("breakpoints", class_alias, disable_command, _("\
9503 Disable some breakpoints.\n\
9504 Arguments are breakpoint numbers with spaces in between.\n\
9505 To disable all breakpoints, give no argument.\n\
9506 A disabled breakpoint is not forgotten, but has no effect until reenabled.\n\
9507 This command may be abbreviated \"disable\"."),
9508 &disablelist);
9509
9510 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
9511 Delete some breakpoints or auto-display expressions.\n\
9512 Arguments are breakpoint numbers with spaces in between.\n\
9513 To delete all breakpoints, give no argument.\n\
9514 \n\
9515 Also a prefix command for deletion of other GDB objects.\n\
9516 The \"unset\" command is also an alias for \"delete\"."),
9517 &deletelist, "delete ", 1, &cmdlist);
9518 add_com_alias ("d", "delete", class_breakpoint, 1);
9519 add_com_alias ("del", "delete", class_breakpoint, 1);
9520 if (xdb_commands)
9521 add_com ("db", class_breakpoint, delete_command, _("\
9522 Delete some breakpoints.\n\
9523 Arguments are breakpoint numbers with spaces in between.\n\
9524 To delete all breakpoints, give no argument.\n"));
9525
9526 add_cmd ("breakpoints", class_alias, delete_command, _("\
9527 Delete some breakpoints or auto-display expressions.\n\
9528 Arguments are breakpoint numbers with spaces in between.\n\
9529 To delete all breakpoints, give no argument.\n\
9530 This command may be abbreviated \"delete\"."),
9531 &deletelist);
9532
9533 add_com ("clear", class_breakpoint, clear_command, _("\
9534 Clear breakpoint at specified line or function.\n\
9535 Argument may be line number, function name, or \"*\" and an address.\n\
9536 If line number is specified, all breakpoints in that line are cleared.\n\
9537 If function is specified, breakpoints at beginning of function are cleared.\n\
9538 If an address is specified, breakpoints at that address are cleared.\n\
9539 \n\
9540 With no argument, clears all breakpoints in the line that the selected frame\n\
9541 is executing in.\n\
9542 \n\
9543 See also the \"delete\" command which clears breakpoints by number."));
9544
9545 c = add_com ("break", class_breakpoint, break_command, _("\
9546 Set breakpoint at specified line or function.\n"
9547 BREAK_ARGS_HELP ("break")));
9548 set_cmd_completer (c, location_completer);
9549
9550 add_com_alias ("b", "break", class_run, 1);
9551 add_com_alias ("br", "break", class_run, 1);
9552 add_com_alias ("bre", "break", class_run, 1);
9553 add_com_alias ("brea", "break", class_run, 1);
9554
9555 if (xdb_commands)
9556 add_com_alias ("ba", "break", class_breakpoint, 1);
9557
9558 if (dbx_commands)
9559 {
9560 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
9561 Break in function/address or break at a line in the current file."),
9562 &stoplist, "stop ", 1, &cmdlist);
9563 add_cmd ("in", class_breakpoint, stopin_command,
9564 _("Break in function or address."), &stoplist);
9565 add_cmd ("at", class_breakpoint, stopat_command,
9566 _("Break at a line in the current file."), &stoplist);
9567 add_com ("status", class_info, breakpoints_info, _("\
9568 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
9569 The \"Type\" column indicates one of:\n\
9570 \tbreakpoint - normal breakpoint\n\
9571 \twatchpoint - watchpoint\n\
9572 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
9573 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
9574 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
9575 address and file/line number respectively.\n\
9576 \n\
9577 Convenience variable \"$_\" and default examine address for \"x\"\n\
9578 are set to the address of the last breakpoint listed unless the command\n\
9579 is prefixed with \"server \".\n\n\
9580 Convenience variable \"$bpnum\" contains the number of the last\n\
9581 breakpoint set."));
9582 }
9583
9584 add_info ("breakpoints", breakpoints_info, _("\
9585 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
9586 The \"Type\" column indicates one of:\n\
9587 \tbreakpoint - normal breakpoint\n\
9588 \twatchpoint - watchpoint\n\
9589 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
9590 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
9591 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
9592 address and file/line number respectively.\n\
9593 \n\
9594 Convenience variable \"$_\" and default examine address for \"x\"\n\
9595 are set to the address of the last breakpoint listed unless the command\n\
9596 is prefixed with \"server \".\n\n\
9597 Convenience variable \"$bpnum\" contains the number of the last\n\
9598 breakpoint set."));
9599
9600 if (xdb_commands)
9601 add_com ("lb", class_breakpoint, breakpoints_info, _("\
9602 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
9603 The \"Type\" column indicates one of:\n\
9604 \tbreakpoint - normal breakpoint\n\
9605 \twatchpoint - watchpoint\n\
9606 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
9607 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
9608 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
9609 address and file/line number respectively.\n\
9610 \n\
9611 Convenience variable \"$_\" and default examine address for \"x\"\n\
9612 are set to the address of the last breakpoint listed unless the command\n\
9613 is prefixed with \"server \".\n\n\
9614 Convenience variable \"$bpnum\" contains the number of the last\n\
9615 breakpoint set."));
9616
9617 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
9618 Status of all breakpoints, or breakpoint number NUMBER.\n\
9619 The \"Type\" column indicates one of:\n\
9620 \tbreakpoint - normal breakpoint\n\
9621 \twatchpoint - watchpoint\n\
9622 \tlongjmp - internal breakpoint used to step through longjmp()\n\
9623 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
9624 \tuntil - internal breakpoint used by the \"until\" command\n\
9625 \tfinish - internal breakpoint used by the \"finish\" command\n\
9626 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
9627 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
9628 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
9629 address and file/line number respectively.\n\
9630 \n\
9631 Convenience variable \"$_\" and default examine address for \"x\"\n\
9632 are set to the address of the last breakpoint listed unless the command\n\
9633 is prefixed with \"server \".\n\n\
9634 Convenience variable \"$bpnum\" contains the number of the last\n\
9635 breakpoint set."),
9636 &maintenanceinfolist);
9637
9638 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
9639 Set catchpoints to catch events."),
9640 &catch_cmdlist, "catch ",
9641 0/*allow-unknown*/, &cmdlist);
9642
9643 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
9644 Set temporary catchpoints to catch events."),
9645 &tcatch_cmdlist, "tcatch ",
9646 0/*allow-unknown*/, &cmdlist);
9647
9648 /* Add catch and tcatch sub-commands. */
9649 add_catch_command ("catch", _("\
9650 Catch an exception, when caught.\n\
9651 With an argument, catch only exceptions with the given name."),
9652 catch_catch_command,
9653 NULL,
9654 CATCH_PERMANENT,
9655 CATCH_TEMPORARY);
9656 add_catch_command ("throw", _("\
9657 Catch an exception, when thrown.\n\
9658 With an argument, catch only exceptions with the given name."),
9659 catch_throw_command,
9660 NULL,
9661 CATCH_PERMANENT,
9662 CATCH_TEMPORARY);
9663 add_catch_command ("fork", _("Catch calls to fork."),
9664 catch_fork_command_1,
9665 NULL,
9666 (void *) (uintptr_t) catch_fork_permanent,
9667 (void *) (uintptr_t) catch_fork_temporary);
9668 add_catch_command ("vfork", _("Catch calls to vfork."),
9669 catch_fork_command_1,
9670 NULL,
9671 (void *) (uintptr_t) catch_vfork_permanent,
9672 (void *) (uintptr_t) catch_vfork_temporary);
9673 add_catch_command ("exec", _("Catch calls to exec."),
9674 catch_exec_command_1,
9675 NULL,
9676 CATCH_PERMANENT,
9677 CATCH_TEMPORARY);
9678 add_catch_command ("syscall", _("\
9679 Catch system calls by their names and/or numbers.\n\
9680 Arguments say which system calls to catch. If no arguments\n\
9681 are given, every system call will be caught.\n\
9682 Arguments, if given, should be one or more system call names\n\
9683 (if your system supports that), or system call numbers."),
9684 catch_syscall_command_1,
9685 catch_syscall_completer,
9686 CATCH_PERMANENT,
9687 CATCH_TEMPORARY);
9688 add_catch_command ("exception", _("\
9689 Catch Ada exceptions, when raised.\n\
9690 With an argument, catch only exceptions with the given name."),
9691 catch_ada_exception_command,
9692 NULL,
9693 CATCH_PERMANENT,
9694 CATCH_TEMPORARY);
9695 add_catch_command ("assert", _("\
9696 Catch failed Ada assertions, when raised.\n\
9697 With an argument, catch only exceptions with the given name."),
9698 catch_assert_command,
9699 NULL,
9700 CATCH_PERMANENT,
9701 CATCH_TEMPORARY);
9702
9703 c = add_com ("watch", class_breakpoint, watch_command, _("\
9704 Set a watchpoint for an expression.\n\
9705 A watchpoint stops execution of your program whenever the value of\n\
9706 an expression changes."));
9707 set_cmd_completer (c, expression_completer);
9708
9709 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
9710 Set a read watchpoint for an expression.\n\
9711 A watchpoint stops execution of your program whenever the value of\n\
9712 an expression is read."));
9713 set_cmd_completer (c, expression_completer);
9714
9715 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
9716 Set a watchpoint for an expression.\n\
9717 A watchpoint stops execution of your program whenever the value of\n\
9718 an expression is either read or written."));
9719 set_cmd_completer (c, expression_completer);
9720
9721 add_info ("watchpoints", breakpoints_info,
9722 _("Synonym for ``info breakpoints''."));
9723
9724
9725 /* XXX: cagney/2005-02-23: This should be a boolean, and should
9726 respond to changes - contrary to the description. */
9727 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
9728 &can_use_hw_watchpoints, _("\
9729 Set debugger's willingness to use watchpoint hardware."), _("\
9730 Show debugger's willingness to use watchpoint hardware."), _("\
9731 If zero, gdb will not use hardware for new watchpoints, even if\n\
9732 such is available. (However, any hardware watchpoints that were\n\
9733 created before setting this to nonzero, will continue to use watchpoint\n\
9734 hardware.)"),
9735 NULL,
9736 show_can_use_hw_watchpoints,
9737 &setlist, &showlist);
9738
9739 can_use_hw_watchpoints = 1;
9740
9741 /* Tracepoint manipulation commands. */
9742
9743 c = add_com ("trace", class_breakpoint, trace_command, _("\
9744 Set a tracepoint at specified line or function.\n\
9745 \n"
9746 BREAK_ARGS_HELP ("trace") "\n\
9747 Do \"help tracepoints\" for info on other tracepoint commands."));
9748 set_cmd_completer (c, location_completer);
9749
9750 add_com_alias ("tp", "trace", class_alias, 0);
9751 add_com_alias ("tr", "trace", class_alias, 1);
9752 add_com_alias ("tra", "trace", class_alias, 1);
9753 add_com_alias ("trac", "trace", class_alias, 1);
9754
9755 add_info ("tracepoints", tracepoints_info, _("\
9756 Status of tracepoints, or tracepoint number NUMBER.\n\
9757 Convenience variable \"$tpnum\" contains the number of the\n\
9758 last tracepoint set."));
9759
9760 add_info_alias ("tp", "tracepoints", 1);
9761
9762 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
9763 Delete specified tracepoints.\n\
9764 Arguments are tracepoint numbers, separated by spaces.\n\
9765 No argument means delete all tracepoints."),
9766 &deletelist);
9767
9768 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
9769 Disable specified tracepoints.\n\
9770 Arguments are tracepoint numbers, separated by spaces.\n\
9771 No argument means disable all tracepoints."),
9772 &disablelist);
9773 deprecate_cmd (c, "disable");
9774
9775 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
9776 Enable specified tracepoints.\n\
9777 Arguments are tracepoint numbers, separated by spaces.\n\
9778 No argument means enable all tracepoints."),
9779 &enablelist);
9780 deprecate_cmd (c, "enable");
9781
9782 add_com ("passcount", class_trace, trace_pass_command, _("\
9783 Set the passcount for a tracepoint.\n\
9784 The trace will end when the tracepoint has been passed 'count' times.\n\
9785 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
9786 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
9787
9788 c = add_com ("save-tracepoints", class_trace, tracepoint_save_command, _("\
9789 Save current tracepoint definitions as a script.\n\
9790 Use the 'source' command in another debug session to restore them."));
9791 set_cmd_completer (c, filename_completer);
9792
9793 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
9794 Breakpoint specific settings\n\
9795 Configure various breakpoint-specific variables such as\n\
9796 pending breakpoint behavior"),
9797 &breakpoint_set_cmdlist, "set breakpoint ",
9798 0/*allow-unknown*/, &setlist);
9799 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
9800 Breakpoint specific settings\n\
9801 Configure various breakpoint-specific variables such as\n\
9802 pending breakpoint behavior"),
9803 &breakpoint_show_cmdlist, "show breakpoint ",
9804 0/*allow-unknown*/, &showlist);
9805
9806 add_setshow_auto_boolean_cmd ("pending", no_class,
9807 &pending_break_support, _("\
9808 Set debugger's behavior regarding pending breakpoints."), _("\
9809 Show debugger's behavior regarding pending breakpoints."), _("\
9810 If on, an unrecognized breakpoint location will cause gdb to create a\n\
9811 pending breakpoint. If off, an unrecognized breakpoint location results in\n\
9812 an error. If auto, an unrecognized breakpoint location results in a\n\
9813 user-query to see if a pending breakpoint should be created."),
9814 NULL,
9815 show_pending_break_support,
9816 &breakpoint_set_cmdlist,
9817 &breakpoint_show_cmdlist);
9818
9819 pending_break_support = AUTO_BOOLEAN_AUTO;
9820
9821 add_setshow_boolean_cmd ("auto-hw", no_class,
9822 &automatic_hardware_breakpoints, _("\
9823 Set automatic usage of hardware breakpoints."), _("\
9824 Show automatic usage of hardware breakpoints."), _("\
9825 If set, the debugger will automatically use hardware breakpoints for\n\
9826 breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
9827 a warning will be emitted for such breakpoints."),
9828 NULL,
9829 show_automatic_hardware_breakpoints,
9830 &breakpoint_set_cmdlist,
9831 &breakpoint_show_cmdlist);
9832
9833 add_setshow_enum_cmd ("always-inserted", class_support,
9834 always_inserted_enums, &always_inserted_mode, _("\
9835 Set mode for inserting breakpoints."), _("\
9836 Show mode for inserting breakpoints."), _("\
9837 When this mode is off, breakpoints are inserted in inferior when it is\n\
9838 resumed, and removed when execution stops. When this mode is on,\n\
9839 breakpoints are inserted immediately and removed only when the user\n\
9840 deletes the breakpoint. When this mode is auto (which is the default),\n\
9841 the behaviour depends on the non-stop setting (see help set non-stop).\n\
9842 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
9843 behaves as if always-inserted mode is on; if gdb is controlling the\n\
9844 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
9845 NULL,
9846 &show_always_inserted_mode,
9847 &breakpoint_set_cmdlist,
9848 &breakpoint_show_cmdlist);
9849
9850 automatic_hardware_breakpoints = 1;
9851
9852 observer_attach_about_to_proceed (breakpoint_about_to_proceed);
9853 }
This page took 0.326497 seconds and 3 git commands to generate.