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