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