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