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