daily update
[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
f1310107
TJB
134static int breakpoint_location_address_match (struct bp_location *bl,
135 struct address_space *aspace,
136 CORE_ADDR addr);
137
a14ed312 138static void breakpoints_info (char *, int);
c906108c 139
d77f58be
SS
140static void watchpoints_info (char *, int);
141
e5a67952
MS
142static int breakpoint_1 (char *, int,
143 int (*) (const struct breakpoint *));
c906108c 144
4efb68b1 145static int breakpoint_cond_eval (void *);
c906108c 146
4efb68b1 147static void cleanup_executing_breakpoints (void *);
c906108c 148
a14ed312 149static void commands_command (char *, int);
c906108c 150
a14ed312 151static void condition_command (char *, int);
c906108c 152
c5aa993b
JM
153typedef enum
154 {
155 mark_inserted,
156 mark_uninserted
157 }
158insertion_state_t;
c906108c 159
0bde7532 160static int remove_breakpoint (struct bp_location *, insertion_state_t);
6c95b8df 161static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
c906108c 162
a14ed312 163static enum print_stop_action print_it_typical (bpstat);
e514a9d6
JM
164
165static enum print_stop_action print_bp_stop_message (bpstat bs);
c906108c 166
4efb68b1 167static int watchpoint_check (void *);
c906108c 168
a14ed312 169static void maintenance_info_breakpoints (char *, int);
c906108c 170
a14ed312 171static int hw_breakpoint_used_count (void);
c906108c 172
a14ed312 173static int hw_watchpoint_used_count (enum bptype, int *);
c906108c 174
a14ed312 175static void hbreak_command (char *, int);
c906108c 176
a14ed312 177static void thbreak_command (char *, int);
c906108c 178
a14ed312 179static void do_enable_breakpoint (struct breakpoint *, enum bpdisp);
c906108c 180
a14ed312 181static void stop_command (char *arg, int from_tty);
7a292a7a 182
a14ed312 183static void stopin_command (char *arg, int from_tty);
7a292a7a 184
a14ed312 185static void stopat_command (char *arg, int from_tty);
7a292a7a 186
a14ed312 187static char *ep_parse_optional_if_clause (char **arg);
7a292a7a 188
d85310f7
MS
189static void catch_exception_command_1 (enum exception_event_kind ex_event,
190 char *arg, int tempflag, int from_tty);
7a292a7a 191
a14ed312 192static void tcatch_command (char *arg, int from_tty);
7a292a7a 193
d03285ec
UW
194static void detach_single_step_breakpoints (void);
195
6c95b8df
PA
196static int single_step_breakpoint_inserted_here_p (struct address_space *,
197 CORE_ADDR pc);
1aafd4da 198
fe3f5fa8 199static void free_bp_location (struct bp_location *loc);
f431efe5
PA
200static void incref_bp_location (struct bp_location *loc);
201static void decref_bp_location (struct bp_location **loc);
fe3f5fa8 202
39d61571 203static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
a5606eee 204
b60e7edf 205static void update_global_location_list (int);
a5606eee 206
b60e7edf 207static void update_global_location_list_nothrow (int);
74960c60 208
d77f58be 209static int is_hardware_watchpoint (const struct breakpoint *bpt);
74960c60 210
d77f58be 211static int is_watchpoint (const struct breakpoint *bpt);
60e1c644 212
74960c60 213static void insert_breakpoint_locations (void);
a5606eee 214
a96d9b2e
SDJ
215static int syscall_catchpoint_p (struct breakpoint *b);
216
1042e4c0
SS
217static void tracepoints_info (char *, int);
218
219static void delete_trace_command (char *, int);
220
221static void enable_trace_command (char *, int);
222
223static void disable_trace_command (char *, int);
224
225static void trace_pass_command (char *, int);
226
0fb4aa4b
PA
227/* Assuming we're creating a static tracepoint, does S look like a
228 static tracepoint marker spec ("-m MARKER_ID")? */
229#define is_marker_spec(s) \
f5a8e22b 230 (s != NULL && strncmp (s, "-m", 2) == 0 && ((s)[2] == ' ' || (s)[2] == '\t'))
0fb4aa4b 231
5cea2a26
PA
232/* A reference-counted struct command_line. This lets multiple
233 breakpoints share a single command list. */
234struct counted_command_line
235{
236 /* The reference count. */
237 int refc;
238
239 /* The command list. */
240 struct command_line *commands;
241};
242
243struct command_line *
244breakpoint_commands (struct breakpoint *b)
245{
246 return b->commands ? b->commands->commands : NULL;
247}
3daf8fe5 248
f3b1572e
PA
249/* Flag indicating that a command has proceeded the inferior past the
250 current breakpoint. */
251
252static int breakpoint_proceeded;
253
956a9fb9 254const char *
2cec12e5
AR
255bpdisp_text (enum bpdisp disp)
256{
4a64f543
MS
257 /* NOTE: the following values are a part of MI protocol and
258 represent values of 'disp' field returned when inferior stops at
259 a breakpoint. */
bc043ef3 260 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
cc59ec59 261
2cec12e5
AR
262 return bpdisps[(int) disp];
263}
c906108c 264
4a64f543 265/* Prototypes for exported functions. */
c906108c 266/* If FALSE, gdb will not use hardware support for watchpoints, even
4a64f543 267 if such is available. */
c906108c
SS
268static int can_use_hw_watchpoints;
269
920d2a44
AC
270static void
271show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
272 struct cmd_list_element *c,
273 const char *value)
274{
3e43a32a
MS
275 fprintf_filtered (file,
276 _("Debugger's willingness to use "
277 "watchpoint hardware is %s.\n"),
920d2a44
AC
278 value);
279}
280
fa8d40ab
JJ
281/* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
282 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
4a64f543 283 for unrecognized breakpoint locations.
fa8d40ab
JJ
284 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
285static enum auto_boolean pending_break_support;
920d2a44
AC
286static void
287show_pending_break_support (struct ui_file *file, int from_tty,
288 struct cmd_list_element *c,
289 const char *value)
290{
3e43a32a
MS
291 fprintf_filtered (file,
292 _("Debugger's behavior regarding "
293 "pending breakpoints is %s.\n"),
920d2a44
AC
294 value);
295}
fa8d40ab 296
765dc015 297/* If 1, gdb will automatically use hardware breakpoints for breakpoints
4a64f543 298 set with "break" but falling in read-only memory.
765dc015
VP
299 If 0, gdb will warn about such breakpoints, but won't automatically
300 use hardware breakpoints. */
301static int automatic_hardware_breakpoints;
302static void
303show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
304 struct cmd_list_element *c,
305 const char *value)
306{
3e43a32a
MS
307 fprintf_filtered (file,
308 _("Automatic usage of hardware breakpoints is %s.\n"),
765dc015
VP
309 value);
310}
311
33e5cbd6
PA
312/* If on, gdb will keep breakpoints inserted even as inferior is
313 stopped, and immediately insert any new breakpoints. If off, gdb
314 will insert breakpoints into inferior only when resuming it, and
315 will remove breakpoints upon stop. If auto, GDB will behave as ON
316 if in non-stop mode, and as OFF if all-stop mode.*/
317
318static const char always_inserted_auto[] = "auto";
319static const char always_inserted_on[] = "on";
320static const char always_inserted_off[] = "off";
321static const char *always_inserted_enums[] = {
322 always_inserted_auto,
323 always_inserted_off,
324 always_inserted_on,
325 NULL
326};
327static const char *always_inserted_mode = always_inserted_auto;
328static void
74960c60 329show_always_inserted_mode (struct ui_file *file, int from_tty,
33e5cbd6 330 struct cmd_list_element *c, const char *value)
74960c60 331{
33e5cbd6 332 if (always_inserted_mode == always_inserted_auto)
3e43a32a
MS
333 fprintf_filtered (file,
334 _("Always inserted breakpoint "
335 "mode is %s (currently %s).\n"),
33e5cbd6
PA
336 value,
337 breakpoints_always_inserted_mode () ? "on" : "off");
338 else
3e43a32a
MS
339 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
340 value);
74960c60
VP
341}
342
33e5cbd6
PA
343int
344breakpoints_always_inserted_mode (void)
345{
346 return (always_inserted_mode == always_inserted_on
347 || (always_inserted_mode == always_inserted_auto && non_stop));
348}
765dc015 349
a14ed312 350void _initialize_breakpoint (void);
c906108c 351
c906108c
SS
352/* Are we executing breakpoint commands? */
353static int executing_breakpoint_commands;
354
c02f5703
MS
355/* Are overlay event breakpoints enabled? */
356static int overlay_events_enabled;
357
e09342b5
TJB
358/* See description in breakpoint.h. */
359int target_exact_watchpoints = 0;
360
c906108c 361/* Walk the following statement or block through all breakpoints.
4a64f543
MS
362 ALL_BREAKPOINTS_SAFE does so even if the statment deletes the
363 current breakpoint. */
c906108c 364
5c44784c 365#define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
c906108c 366
5c44784c
JM
367#define ALL_BREAKPOINTS_SAFE(B,TMP) \
368 for (B = breakpoint_chain; \
369 B ? (TMP=B->next, 1): 0; \
370 B = TMP)
c906108c 371
4a64f543
MS
372/* Similar iterator for the low-level breakpoints. SAFE variant is
373 not provided so update_global_location_list must not be called
374 while executing the block of ALL_BP_LOCATIONS. */
7cc221ef 375
876fa593
JK
376#define ALL_BP_LOCATIONS(B,BP_TMP) \
377 for (BP_TMP = bp_location; \
378 BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
379 BP_TMP++)
7cc221ef 380
1042e4c0
SS
381/* Iterator for tracepoints only. */
382
383#define ALL_TRACEPOINTS(B) \
384 for (B = breakpoint_chain; B; B = B->next) \
d77f58be 385 if (is_tracepoint (B))
1042e4c0 386
7cc221ef 387/* Chains of all breakpoints defined. */
c906108c
SS
388
389struct breakpoint *breakpoint_chain;
390
876fa593
JK
391/* Array is sorted by bp_location_compare - primarily by the ADDRESS. */
392
393static struct bp_location **bp_location;
394
395/* Number of elements of BP_LOCATION. */
396
397static unsigned bp_location_count;
398
4a64f543
MS
399/* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
400 ADDRESS for the current elements of BP_LOCATION which get a valid
401 result from bp_location_has_shadow. You can use it for roughly
402 limiting the subrange of BP_LOCATION to scan for shadow bytes for
403 an address you need to read. */
876fa593
JK
404
405static CORE_ADDR bp_location_placed_address_before_address_max;
406
4a64f543
MS
407/* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
408 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
409 BP_LOCATION which get a valid result from bp_location_has_shadow.
410 You can use it for roughly limiting the subrange of BP_LOCATION to
411 scan for shadow bytes for an address you need to read. */
876fa593
JK
412
413static CORE_ADDR bp_location_shadow_len_after_address_max;
7cc221ef 414
4a64f543
MS
415/* The locations that no longer correspond to any breakpoint, unlinked
416 from bp_location array, but for which a hit may still be reported
417 by a target. */
20874c92
VP
418VEC(bp_location_p) *moribund_locations = NULL;
419
c906108c
SS
420/* Number of last breakpoint made. */
421
95a42b64
TT
422static int breakpoint_count;
423
86b17b60
PA
424/* The value of `breakpoint_count' before the last command that
425 created breakpoints. If the last (break-like) command created more
426 than one breakpoint, then the difference between BREAKPOINT_COUNT
427 and PREV_BREAKPOINT_COUNT is more than one. */
428static int prev_breakpoint_count;
c906108c 429
1042e4c0
SS
430/* Number of last tracepoint made. */
431
95a42b64 432static int tracepoint_count;
1042e4c0 433
6149aea9
PA
434static struct cmd_list_element *breakpoint_set_cmdlist;
435static struct cmd_list_element *breakpoint_show_cmdlist;
9291a0cd 436struct cmd_list_element *save_cmdlist;
6149aea9 437
468d015d
JJ
438/* Return whether a breakpoint is an active enabled breakpoint. */
439static int
440breakpoint_enabled (struct breakpoint *b)
441{
0d381245 442 return (b->enable_state == bp_enabled);
468d015d
JJ
443}
444
c906108c
SS
445/* Set breakpoint count to NUM. */
446
95a42b64 447static void
fba45db2 448set_breakpoint_count (int num)
c906108c 449{
86b17b60 450 prev_breakpoint_count = breakpoint_count;
c906108c 451 breakpoint_count = num;
4fa62494 452 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
c906108c
SS
453}
454
86b17b60
PA
455/* Used by `start_rbreak_breakpoints' below, to record the current
456 breakpoint count before "rbreak" creates any breakpoint. */
457static int rbreak_start_breakpoint_count;
458
95a42b64
TT
459/* Called at the start an "rbreak" command to record the first
460 breakpoint made. */
86b17b60 461
95a42b64
TT
462void
463start_rbreak_breakpoints (void)
464{
86b17b60 465 rbreak_start_breakpoint_count = breakpoint_count;
95a42b64
TT
466}
467
468/* Called at the end of an "rbreak" command to record the last
469 breakpoint made. */
86b17b60 470
95a42b64
TT
471void
472end_rbreak_breakpoints (void)
473{
86b17b60 474 prev_breakpoint_count = rbreak_start_breakpoint_count;
95a42b64
TT
475}
476
4a64f543 477/* Used in run_command to zero the hit count when a new run starts. */
c906108c
SS
478
479void
fba45db2 480clear_breakpoint_hit_counts (void)
c906108c
SS
481{
482 struct breakpoint *b;
483
484 ALL_BREAKPOINTS (b)
485 b->hit_count = 0;
486}
487
9add0f1b
TT
488/* Allocate a new counted_command_line with reference count of 1.
489 The new structure owns COMMANDS. */
490
491static struct counted_command_line *
492alloc_counted_command_line (struct command_line *commands)
493{
494 struct counted_command_line *result
495 = xmalloc (sizeof (struct counted_command_line));
cc59ec59 496
9add0f1b
TT
497 result->refc = 1;
498 result->commands = commands;
499 return result;
500}
501
502/* Increment reference count. This does nothing if CMD is NULL. */
503
504static void
505incref_counted_command_line (struct counted_command_line *cmd)
506{
507 if (cmd)
508 ++cmd->refc;
509}
510
511/* Decrement reference count. If the reference count reaches 0,
512 destroy the counted_command_line. Sets *CMDP to NULL. This does
513 nothing if *CMDP is NULL. */
514
515static void
516decref_counted_command_line (struct counted_command_line **cmdp)
517{
518 if (*cmdp)
519 {
520 if (--(*cmdp)->refc == 0)
521 {
522 free_command_lines (&(*cmdp)->commands);
523 xfree (*cmdp);
524 }
525 *cmdp = NULL;
526 }
527}
528
529/* A cleanup function that calls decref_counted_command_line. */
530
531static void
532do_cleanup_counted_command_line (void *arg)
533{
534 decref_counted_command_line (arg);
535}
536
537/* Create a cleanup that calls decref_counted_command_line on the
538 argument. */
539
540static struct cleanup *
541make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
542{
543 return make_cleanup (do_cleanup_counted_command_line, cmdp);
544}
545
c906108c
SS
546/* Default address, symtab and line to put a breakpoint at
547 for "break" command with no arg.
4a64f543 548 If default_breakpoint_valid is zero, the other three are
c906108c
SS
549 not valid, and "break" with no arg is an error.
550
551 This set by print_stack_frame, which calls set_default_breakpoint. */
552
553int default_breakpoint_valid;
554CORE_ADDR default_breakpoint_address;
555struct symtab *default_breakpoint_symtab;
556int default_breakpoint_line;
6c95b8df
PA
557struct program_space *default_breakpoint_pspace;
558
c906108c 559\f
48cb2d85
VP
560/* Return the breakpoint with the specified number, or NULL
561 if the number does not refer to an existing breakpoint. */
562
563struct breakpoint *
564get_breakpoint (int num)
565{
566 struct breakpoint *b;
567
568 ALL_BREAKPOINTS (b)
569 if (b->number == num)
570 return b;
571
572 return NULL;
573}
5c44784c 574
c906108c 575\f
adc36818
PM
576
577void
578set_breakpoint_condition (struct breakpoint *b, char *exp,
579 int from_tty)
580{
581 struct bp_location *loc = b->loc;
582
583 for (; loc; loc = loc->next)
584 {
585 xfree (loc->cond);
586 loc->cond = NULL;
587 }
588 xfree (b->cond_string);
589 b->cond_string = NULL;
590 xfree (b->cond_exp);
591 b->cond_exp = NULL;
592
593 if (*exp == 0)
594 {
595 if (from_tty)
596 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
597 }
598 else
599 {
600 char *arg = exp;
cc59ec59 601
adc36818
PM
602 /* I don't know if it matters whether this is the string the user
603 typed in or the decompiled expression. */
604 b->cond_string = xstrdup (arg);
605 b->condition_not_parsed = 0;
606
607 if (is_watchpoint (b))
608 {
609 innermost_block = NULL;
610 arg = exp;
611 b->cond_exp = parse_exp_1 (&arg, 0, 0);
612 if (*arg)
613 error (_("Junk at end of expression"));
614 b->cond_exp_valid_block = innermost_block;
615 }
616 else
617 {
618 for (loc = b->loc; loc; loc = loc->next)
619 {
620 arg = exp;
621 loc->cond =
622 parse_exp_1 (&arg, block_for_pc (loc->address), 0);
623 if (*arg)
624 error (_("Junk at end of expression"));
625 }
626 }
627 }
628 breakpoints_changed ();
8d3788bd 629 observer_notify_breakpoint_modified (b);
adc36818
PM
630}
631
c906108c
SS
632/* condition N EXP -- set break condition of breakpoint N to EXP. */
633
634static void
fba45db2 635condition_command (char *arg, int from_tty)
c906108c 636{
52f0bd74 637 struct breakpoint *b;
c906108c 638 char *p;
52f0bd74 639 int bnum;
c906108c
SS
640
641 if (arg == 0)
e2e0b3e5 642 error_no_arg (_("breakpoint number"));
c906108c
SS
643
644 p = arg;
645 bnum = get_number (&p);
5c44784c 646 if (bnum == 0)
8a3fe4f8 647 error (_("Bad breakpoint argument: '%s'"), arg);
c906108c
SS
648
649 ALL_BREAKPOINTS (b)
650 if (b->number == bnum)
2f069f6f 651 {
7371cf6d
PM
652 /* Check if this breakpoint has a Python object assigned to
653 it, and if it has a definition of the "stop"
654 method. This method and conditions entered into GDB from
655 the CLI are mutually exclusive. */
656 if (b->py_bp_object
657 && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
658 error (_("Cannot set a condition where a Python 'stop' "
659 "method has been defined in the breakpoint."));
2566ad2d 660 set_breakpoint_condition (b, p, from_tty);
2f069f6f
JB
661 return;
662 }
c906108c 663
8a3fe4f8 664 error (_("No breakpoint number %d."), bnum);
c906108c
SS
665}
666
a7bdde9e
VP
667/* Check that COMMAND do not contain commands that are suitable
668 only for tracepoints and not suitable for ordinary breakpoints.
4a64f543
MS
669 Throw if any such commands is found. */
670
a7bdde9e
VP
671static void
672check_no_tracepoint_commands (struct command_line *commands)
673{
674 struct command_line *c;
cc59ec59 675
a7bdde9e
VP
676 for (c = commands; c; c = c->next)
677 {
678 int i;
679
680 if (c->control_type == while_stepping_control)
3e43a32a
MS
681 error (_("The 'while-stepping' command can "
682 "only be used for tracepoints"));
a7bdde9e
VP
683
684 for (i = 0; i < c->body_count; ++i)
685 check_no_tracepoint_commands ((c->body_list)[i]);
686
687 /* Not that command parsing removes leading whitespace and comment
4a64f543 688 lines and also empty lines. So, we only need to check for
a7bdde9e
VP
689 command directly. */
690 if (strstr (c->line, "collect ") == c->line)
691 error (_("The 'collect' command can only be used for tracepoints"));
692
51661e93
VP
693 if (strstr (c->line, "teval ") == c->line)
694 error (_("The 'teval' command can only be used for tracepoints"));
a7bdde9e
VP
695 }
696}
697
d77f58be
SS
698/* Encapsulate tests for different types of tracepoints. */
699
a7bdde9e 700int
d77f58be 701is_tracepoint (const struct breakpoint *b)
a7bdde9e 702{
0fb4aa4b
PA
703 return (b->type == bp_tracepoint
704 || b->type == bp_fast_tracepoint
705 || b->type == bp_static_tracepoint);
a7bdde9e 706}
d77f58be 707
95a42b64
TT
708/* A helper function that validsates that COMMANDS are valid for a
709 breakpoint. This function will throw an exception if a problem is
710 found. */
48cb2d85 711
95a42b64
TT
712static void
713validate_commands_for_breakpoint (struct breakpoint *b,
714 struct command_line *commands)
48cb2d85 715{
d77f58be 716 if (is_tracepoint (b))
a7bdde9e 717 {
4a64f543
MS
718 /* We need to verify that each top-level element of commands is
719 valid for tracepoints, that there's at most one
720 while-stepping element, and that while-stepping's body has
721 valid tracing commands excluding nested while-stepping. */
a7bdde9e
VP
722 struct command_line *c;
723 struct command_line *while_stepping = 0;
724 for (c = commands; c; c = c->next)
725 {
a7bdde9e
VP
726 if (c->control_type == while_stepping_control)
727 {
728 if (b->type == bp_fast_tracepoint)
3e43a32a
MS
729 error (_("The 'while-stepping' command "
730 "cannot be used for fast tracepoint"));
0fb4aa4b 731 else if (b->type == bp_static_tracepoint)
3e43a32a
MS
732 error (_("The 'while-stepping' command "
733 "cannot be used for static tracepoint"));
a7bdde9e
VP
734
735 if (while_stepping)
3e43a32a
MS
736 error (_("The 'while-stepping' command "
737 "can be used only once"));
a7bdde9e
VP
738 else
739 while_stepping = c;
740 }
741 }
742 if (while_stepping)
743 {
744 struct command_line *c2;
745
746 gdb_assert (while_stepping->body_count == 1);
747 c2 = while_stepping->body_list[0];
748 for (; c2; c2 = c2->next)
749 {
a7bdde9e
VP
750 if (c2->control_type == while_stepping_control)
751 error (_("The 'while-stepping' command cannot be nested"));
752 }
753 }
754 }
755 else
756 {
757 check_no_tracepoint_commands (commands);
758 }
95a42b64
TT
759}
760
0fb4aa4b
PA
761/* Return a vector of all the static tracepoints set at ADDR. The
762 caller is responsible for releasing the vector. */
763
764VEC(breakpoint_p) *
765static_tracepoints_here (CORE_ADDR addr)
766{
767 struct breakpoint *b;
768 VEC(breakpoint_p) *found = 0;
769 struct bp_location *loc;
770
771 ALL_BREAKPOINTS (b)
772 if (b->type == bp_static_tracepoint)
773 {
774 for (loc = b->loc; loc; loc = loc->next)
775 if (loc->address == addr)
776 VEC_safe_push(breakpoint_p, found, b);
777 }
778
779 return found;
780}
781
95a42b64 782/* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
4a64f543 783 validate that only allowed commands are included. */
95a42b64
TT
784
785void
4a64f543
MS
786breakpoint_set_commands (struct breakpoint *b,
787 struct command_line *commands)
95a42b64
TT
788{
789 validate_commands_for_breakpoint (b, commands);
a7bdde9e 790
9add0f1b
TT
791 decref_counted_command_line (&b->commands);
792 b->commands = alloc_counted_command_line (commands);
48cb2d85 793 breakpoints_changed ();
8d3788bd 794 observer_notify_breakpoint_modified (b);
48cb2d85
VP
795}
796
45a43567
TT
797/* Set the internal `silent' flag on the breakpoint. Note that this
798 is not the same as the "silent" that may appear in the breakpoint's
799 commands. */
800
801void
802breakpoint_set_silent (struct breakpoint *b, int silent)
803{
804 int old_silent = b->silent;
805
806 b->silent = silent;
807 if (old_silent != silent)
8d3788bd 808 observer_notify_breakpoint_modified (b);
45a43567
TT
809}
810
811/* Set the thread for this breakpoint. If THREAD is -1, make the
812 breakpoint work for any thread. */
813
814void
815breakpoint_set_thread (struct breakpoint *b, int thread)
816{
817 int old_thread = b->thread;
818
819 b->thread = thread;
820 if (old_thread != thread)
8d3788bd 821 observer_notify_breakpoint_modified (b);
45a43567
TT
822}
823
824/* Set the task for this breakpoint. If TASK is 0, make the
825 breakpoint work for any task. */
826
827void
828breakpoint_set_task (struct breakpoint *b, int task)
829{
830 int old_task = b->task;
831
832 b->task = task;
833 if (old_task != task)
8d3788bd 834 observer_notify_breakpoint_modified (b);
45a43567
TT
835}
836
95a42b64
TT
837void
838check_tracepoint_command (char *line, void *closure)
a7bdde9e
VP
839{
840 struct breakpoint *b = closure;
cc59ec59 841
a7bdde9e
VP
842 validate_actionline (&line, b);
843}
844
95a42b64
TT
845/* A structure used to pass information through
846 map_breakpoint_numbers. */
847
848struct commands_info
849{
850 /* True if the command was typed at a tty. */
851 int from_tty;
86b17b60
PA
852
853 /* The breakpoint range spec. */
854 char *arg;
855
95a42b64
TT
856 /* Non-NULL if the body of the commands are being read from this
857 already-parsed command. */
858 struct command_line *control;
86b17b60 859
95a42b64
TT
860 /* The command lines read from the user, or NULL if they have not
861 yet been read. */
862 struct counted_command_line *cmd;
863};
864
865/* A callback for map_breakpoint_numbers that sets the commands for
866 commands_command. */
867
c906108c 868static void
95a42b64 869do_map_commands_command (struct breakpoint *b, void *data)
c906108c 870{
95a42b64 871 struct commands_info *info = data;
c906108c 872
95a42b64
TT
873 if (info->cmd == NULL)
874 {
875 struct command_line *l;
5c44784c 876
95a42b64
TT
877 if (info->control != NULL)
878 l = copy_command_lines (info->control->body_list[0]);
879 else
86b17b60
PA
880 {
881 struct cleanup *old_chain;
882 char *str;
c5aa993b 883
3e43a32a
MS
884 str = xstrprintf (_("Type commands for breakpoint(s) "
885 "%s, one per line."),
86b17b60
PA
886 info->arg);
887
888 old_chain = make_cleanup (xfree, str);
889
890 l = read_command_lines (str,
891 info->from_tty, 1,
d77f58be 892 (is_tracepoint (b)
86b17b60
PA
893 ? check_tracepoint_command : 0),
894 b);
895
896 do_cleanups (old_chain);
897 }
a7bdde9e 898
95a42b64
TT
899 info->cmd = alloc_counted_command_line (l);
900 }
901
902 /* If a breakpoint was on the list more than once, we don't need to
903 do anything. */
904 if (b->commands != info->cmd)
905 {
906 validate_commands_for_breakpoint (b, info->cmd->commands);
907 incref_counted_command_line (info->cmd);
908 decref_counted_command_line (&b->commands);
909 b->commands = info->cmd;
910 breakpoints_changed ();
8d3788bd 911 observer_notify_breakpoint_modified (b);
c5aa993b 912 }
95a42b64
TT
913}
914
915static void
4a64f543
MS
916commands_command_1 (char *arg, int from_tty,
917 struct command_line *control)
95a42b64
TT
918{
919 struct cleanup *cleanups;
920 struct commands_info info;
921
922 info.from_tty = from_tty;
923 info.control = control;
924 info.cmd = NULL;
925 /* If we read command lines from the user, then `info' will hold an
926 extra reference to the commands that we must clean up. */
927 cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
928
929 if (arg == NULL || !*arg)
930 {
86b17b60 931 if (breakpoint_count - prev_breakpoint_count > 1)
4a64f543
MS
932 arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1,
933 breakpoint_count);
95a42b64
TT
934 else if (breakpoint_count > 0)
935 arg = xstrprintf ("%d", breakpoint_count);
86b17b60
PA
936 else
937 {
938 /* So that we don't try to free the incoming non-NULL
939 argument in the cleanup below. Mapping breakpoint
940 numbers will fail in this case. */
941 arg = NULL;
942 }
95a42b64 943 }
9766ced4
SS
944 else
945 /* The command loop has some static state, so we need to preserve
946 our argument. */
947 arg = xstrdup (arg);
86b17b60
PA
948
949 if (arg != NULL)
950 make_cleanup (xfree, arg);
951
952 info.arg = arg;
95a42b64
TT
953
954 map_breakpoint_numbers (arg, do_map_commands_command, &info);
955
956 if (info.cmd == NULL)
957 error (_("No breakpoints specified."));
958
959 do_cleanups (cleanups);
960}
961
962static void
963commands_command (char *arg, int from_tty)
964{
965 commands_command_1 (arg, from_tty, NULL);
c906108c 966}
40c03ae8
EZ
967
968/* Like commands_command, but instead of reading the commands from
969 input stream, takes them from an already parsed command structure.
970
971 This is used by cli-script.c to DTRT with breakpoint commands
972 that are part of if and while bodies. */
973enum command_control_type
974commands_from_control_command (char *arg, struct command_line *cmd)
975{
95a42b64
TT
976 commands_command_1 (arg, 0, cmd);
977 return simple_control;
40c03ae8 978}
876fa593
JK
979
980/* Return non-zero if BL->TARGET_INFO contains valid information. */
981
982static int
983bp_location_has_shadow (struct bp_location *bl)
984{
985 if (bl->loc_type != bp_loc_software_breakpoint)
986 return 0;
987 if (!bl->inserted)
988 return 0;
989 if (bl->target_info.shadow_len == 0)
990 /* bp isn't valid, or doesn't shadow memory. */
991 return 0;
992 return 1;
993}
994
8defab1a 995/* Update BUF, which is LEN bytes read from the target address MEMADDR,
876fa593
JK
996 by replacing any memory breakpoints with their shadowed contents.
997
998 The range of shadowed area by each bp_location is:
35df4500
TJB
999 bl->address - bp_location_placed_address_before_address_max
1000 up to bl->address + bp_location_shadow_len_after_address_max
876fa593
JK
1001 The range we were requested to resolve shadows for is:
1002 memaddr ... memaddr + len
1003 Thus the safe cutoff boundaries for performance optimization are
35df4500
TJB
1004 memaddr + len <= (bl->address
1005 - bp_location_placed_address_before_address_max)
876fa593 1006 and:
35df4500 1007 bl->address + bp_location_shadow_len_after_address_max <= memaddr */
c906108c 1008
8defab1a
DJ
1009void
1010breakpoint_restore_shadows (gdb_byte *buf, ULONGEST memaddr, LONGEST len)
c906108c 1011{
4a64f543
MS
1012 /* Left boundary, right boundary and median element of our binary
1013 search. */
876fa593
JK
1014 unsigned bc_l, bc_r, bc;
1015
4a64f543
MS
1016 /* Find BC_L which is a leftmost element which may affect BUF
1017 content. It is safe to report lower value but a failure to
1018 report higher one. */
876fa593
JK
1019
1020 bc_l = 0;
1021 bc_r = bp_location_count;
1022 while (bc_l + 1 < bc_r)
1023 {
35df4500 1024 struct bp_location *bl;
876fa593
JK
1025
1026 bc = (bc_l + bc_r) / 2;
35df4500 1027 bl = bp_location[bc];
876fa593 1028
4a64f543
MS
1029 /* Check first BL->ADDRESS will not overflow due to the added
1030 constant. Then advance the left boundary only if we are sure
1031 the BC element can in no way affect the BUF content (MEMADDR
1032 to MEMADDR + LEN range).
876fa593 1033
4a64f543
MS
1034 Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1035 offset so that we cannot miss a breakpoint with its shadow
1036 range tail still reaching MEMADDR. */
c5aa993b 1037
35df4500
TJB
1038 if ((bl->address + bp_location_shadow_len_after_address_max
1039 >= bl->address)
1040 && (bl->address + bp_location_shadow_len_after_address_max
1041 <= memaddr))
876fa593
JK
1042 bc_l = bc;
1043 else
1044 bc_r = bc;
1045 }
1046
128070bb
PA
1047 /* Due to the binary search above, we need to make sure we pick the
1048 first location that's at BC_L's address. E.g., if there are
1049 multiple locations at the same address, BC_L may end up pointing
1050 at a duplicate location, and miss the "master"/"inserted"
1051 location. Say, given locations L1, L2 and L3 at addresses A and
1052 B:
1053
1054 L1@A, L2@A, L3@B, ...
1055
1056 BC_L could end up pointing at location L2, while the "master"
1057 location could be L1. Since the `loc->inserted' flag is only set
1058 on "master" locations, we'd forget to restore the shadow of L1
1059 and L2. */
1060 while (bc_l > 0
1061 && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1062 bc_l--;
1063
876fa593
JK
1064 /* Now do full processing of the found relevant range of elements. */
1065
1066 for (bc = bc_l; bc < bp_location_count; bc++)
c5aa993b 1067 {
35df4500 1068 struct bp_location *bl = bp_location[bc];
876fa593
JK
1069 CORE_ADDR bp_addr = 0;
1070 int bp_size = 0;
1071 int bptoffset = 0;
1072
35df4500
TJB
1073 /* bp_location array has BL->OWNER always non-NULL. */
1074 if (bl->owner->type == bp_none)
8a3fe4f8 1075 warning (_("reading through apparently deleted breakpoint #%d?"),
35df4500 1076 bl->owner->number);
ffce0d52 1077
876fa593
JK
1078 /* Performance optimization: any futher element can no longer affect BUF
1079 content. */
1080
35df4500
TJB
1081 if (bl->address >= bp_location_placed_address_before_address_max
1082 && memaddr + len <= (bl->address
1083 - bp_location_placed_address_before_address_max))
876fa593
JK
1084 break;
1085
35df4500 1086 if (!bp_location_has_shadow (bl))
c5aa993b 1087 continue;
35df4500 1088 if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
6c95b8df
PA
1089 current_program_space->aspace, 0))
1090 continue;
1091
c5aa993b
JM
1092 /* Addresses and length of the part of the breakpoint that
1093 we need to copy. */
35df4500
TJB
1094 bp_addr = bl->target_info.placed_address;
1095 bp_size = bl->target_info.shadow_len;
8defab1a 1096
c5aa993b
JM
1097 if (bp_addr + bp_size <= memaddr)
1098 /* The breakpoint is entirely before the chunk of memory we
1099 are reading. */
1100 continue;
8defab1a 1101
c5aa993b
JM
1102 if (bp_addr >= memaddr + len)
1103 /* The breakpoint is entirely after the chunk of memory we are
4a64f543 1104 reading. */
c5aa993b 1105 continue;
c5aa993b 1106
8defab1a
DJ
1107 /* Offset within shadow_contents. */
1108 if (bp_addr < memaddr)
1109 {
1110 /* Only copy the second part of the breakpoint. */
1111 bp_size -= memaddr - bp_addr;
1112 bptoffset = memaddr - bp_addr;
1113 bp_addr = memaddr;
1114 }
c5aa993b 1115
8defab1a
DJ
1116 if (bp_addr + bp_size > memaddr + len)
1117 {
1118 /* Only copy the first part of the breakpoint. */
1119 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1120 }
c5aa993b 1121
8defab1a 1122 memcpy (buf + bp_addr - memaddr,
35df4500 1123 bl->target_info.shadow_contents + bptoffset, bp_size);
c5aa993b 1124 }
c906108c 1125}
c906108c 1126\f
c5aa993b 1127
60e1c644
PA
1128/* Return true if BPT is of any hardware watchpoint kind. */
1129
a5606eee 1130static int
d77f58be 1131is_hardware_watchpoint (const struct breakpoint *bpt)
a5606eee
VP
1132{
1133 return (bpt->type == bp_hardware_watchpoint
1134 || bpt->type == bp_read_watchpoint
1135 || bpt->type == bp_access_watchpoint);
1136}
7270d8f2 1137
60e1c644
PA
1138/* Return true if BPT is of any watchpoint kind, hardware or
1139 software. */
1140
1141static int
d77f58be 1142is_watchpoint (const struct breakpoint *bpt)
60e1c644
PA
1143{
1144 return (is_hardware_watchpoint (bpt)
1145 || bpt->type == bp_watchpoint);
1146}
1147
f6bc2008
PA
1148/* Assuming that B is a watchpoint: returns true if the current thread
1149 and its running state are safe to evaluate or update watchpoint B.
1150 Watchpoints on local expressions need to be evaluated in the
1151 context of the thread that was current when the watchpoint was
1152 created, and, that thread needs to be stopped to be able to select
1153 the correct frame context. Watchpoints on global expressions can
1154 be evaluated on any thread, and in any state. It is presently left
1155 to the target allowing memory accesses when threads are
1156 running. */
1157
1158static int
1159watchpoint_in_thread_scope (struct breakpoint *b)
1160{
1161 return (ptid_equal (b->watchpoint_thread, null_ptid)
1162 || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1163 && !is_executing (inferior_ptid)));
1164}
1165
d0fb5eae
JK
1166/* Set watchpoint B to disp_del_at_next_stop, even including its possible
1167 associated bp_watchpoint_scope breakpoint. */
1168
1169static void
1170watchpoint_del_at_next_stop (struct breakpoint *b)
1171{
1172 gdb_assert (is_watchpoint (b));
1173
1174 if (b->related_breakpoint != b)
1175 {
1176 gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1177 gdb_assert (b->related_breakpoint->related_breakpoint == b);
1178 b->related_breakpoint->disposition = disp_del_at_next_stop;
1179 b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1180 b->related_breakpoint = b;
1181 }
1182 b->disposition = disp_del_at_next_stop;
1183}
1184
567e1b4e
JB
1185/* Assuming that B is a watchpoint:
1186 - Reparse watchpoint expression, if REPARSE is non-zero
a5606eee 1187 - Evaluate expression and store the result in B->val
567e1b4e
JB
1188 - Evaluate the condition if there is one, and store the result
1189 in b->loc->cond.
a5606eee
VP
1190 - Update the list of values that must be watched in B->loc.
1191
4a64f543
MS
1192 If the watchpoint disposition is disp_del_at_next_stop, then do
1193 nothing. If this is local watchpoint that is out of scope, delete
1194 it.
1195
1196 Even with `set breakpoint always-inserted on' the watchpoints are
1197 removed + inserted on each stop here. Normal breakpoints must
1198 never be removed because they might be missed by a running thread
1199 when debugging in non-stop mode. On the other hand, hardware
1200 watchpoints (is_hardware_watchpoint; processed here) are specific
1201 to each LWP since they are stored in each LWP's hardware debug
1202 registers. Therefore, such LWP must be stopped first in order to
1203 be able to modify its hardware watchpoints.
1204
1205 Hardware watchpoints must be reset exactly once after being
1206 presented to the user. It cannot be done sooner, because it would
1207 reset the data used to present the watchpoint hit to the user. And
1208 it must not be done later because it could display the same single
1209 watchpoint hit during multiple GDB stops. Note that the latter is
1210 relevant only to the hardware watchpoint types bp_read_watchpoint
1211 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1212 not user-visible - its hit is suppressed if the memory content has
1213 not changed.
1214
1215 The following constraints influence the location where we can reset
1216 hardware watchpoints:
1217
1218 * target_stopped_by_watchpoint and target_stopped_data_address are
1219 called several times when GDB stops.
1220
1221 [linux]
1222 * Multiple hardware watchpoints can be hit at the same time,
1223 causing GDB to stop. GDB only presents one hardware watchpoint
1224 hit at a time as the reason for stopping, and all the other hits
1225 are presented later, one after the other, each time the user
1226 requests the execution to be resumed. Execution is not resumed
1227 for the threads still having pending hit event stored in
1228 LWP_INFO->STATUS. While the watchpoint is already removed from
1229 the inferior on the first stop the thread hit event is kept being
1230 reported from its cached value by linux_nat_stopped_data_address
1231 until the real thread resume happens after the watchpoint gets
1232 presented and thus its LWP_INFO->STATUS gets reset.
1233
1234 Therefore the hardware watchpoint hit can get safely reset on the
1235 watchpoint removal from inferior. */
a79d3c27 1236
b40ce68a 1237static void
a5606eee 1238update_watchpoint (struct breakpoint *b, int reparse)
7270d8f2 1239{
a5606eee 1240 int within_current_scope;
a5606eee 1241 struct frame_id saved_frame_id;
66076460 1242 int frame_saved;
a5606eee 1243
d0fb5eae
JK
1244 gdb_assert (is_watchpoint (b));
1245
f6bc2008
PA
1246 /* If this is a local watchpoint, we only want to check if the
1247 watchpoint frame is in scope if the current thread is the thread
1248 that was used to create the watchpoint. */
1249 if (!watchpoint_in_thread_scope (b))
1250 return;
1251
a5606eee
VP
1252 if (b->disposition == disp_del_at_next_stop)
1253 return;
1254
66076460 1255 frame_saved = 0;
a5606eee
VP
1256
1257 /* Determine if the watchpoint is within scope. */
1258 if (b->exp_valid_block == NULL)
1259 within_current_scope = 1;
1260 else
1261 {
b5db5dfc
UW
1262 struct frame_info *fi = get_current_frame ();
1263 struct gdbarch *frame_arch = get_frame_arch (fi);
1264 CORE_ADDR frame_pc = get_frame_pc (fi);
1265
1266 /* If we're in a function epilogue, unwinding may not work
1267 properly, so do not attempt to recreate locations at this
1268 point. See similar comments in watchpoint_check. */
1269 if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1270 return;
66076460
DJ
1271
1272 /* Save the current frame's ID so we can restore it after
1273 evaluating the watchpoint expression on its own frame. */
1274 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1275 took a frame parameter, so that we didn't have to change the
1276 selected frame. */
1277 frame_saved = 1;
1278 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1279
a5606eee
VP
1280 fi = frame_find_by_id (b->watchpoint_frame);
1281 within_current_scope = (fi != NULL);
1282 if (within_current_scope)
1283 select_frame (fi);
1284 }
1285
b5db5dfc
UW
1286 /* We don't free locations. They are stored in the bp_location array
1287 and update_global_location_list will eventually delete them and
1288 remove breakpoints if needed. */
1289 b->loc = NULL;
1290
a5606eee
VP
1291 if (within_current_scope && reparse)
1292 {
1293 char *s;
d63d0675 1294
a5606eee
VP
1295 if (b->exp)
1296 {
1297 xfree (b->exp);
1298 b->exp = NULL;
1299 }
d63d0675 1300 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
a5606eee
VP
1301 b->exp = parse_exp_1 (&s, b->exp_valid_block, 0);
1302 /* If the meaning of expression itself changed, the old value is
1303 no longer relevant. We don't want to report a watchpoint hit
1304 to the user when the old value and the new value may actually
1305 be completely different objects. */
1306 value_free (b->val);
fa4727a6
DJ
1307 b->val = NULL;
1308 b->val_valid = 0;
60e1c644
PA
1309
1310 /* Note that unlike with breakpoints, the watchpoint's condition
1311 expression is stored in the breakpoint object, not in the
1312 locations (re)created below. */
1313 if (b->cond_string != NULL)
1314 {
1315 if (b->cond_exp != NULL)
1316 {
1317 xfree (b->cond_exp);
1318 b->cond_exp = NULL;
1319 }
1320
1321 s = b->cond_string;
1322 b->cond_exp = parse_exp_1 (&s, b->cond_exp_valid_block, 0);
1323 }
a5606eee 1324 }
a5606eee
VP
1325
1326 /* If we failed to parse the expression, for example because
1327 it refers to a global variable in a not-yet-loaded shared library,
1328 don't try to insert watchpoint. We don't automatically delete
1329 such watchpoint, though, since failure to parse expression
1330 is different from out-of-scope watchpoint. */
2d134ed3
PA
1331 if ( !target_has_execution)
1332 {
1333 /* Without execution, memory can't change. No use to try and
1334 set watchpoint locations. The watchpoint will be reset when
1335 the target gains execution, through breakpoint_re_set. */
1336 }
1337 else if (within_current_scope && b->exp)
a5606eee 1338 {
0cf6dd15 1339 int pc = 0;
fa4727a6 1340 struct value *val_chain, *v, *result, *next;
2d134ed3 1341 struct program_space *frame_pspace;
a5606eee 1342
0cf6dd15 1343 fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
a5606eee 1344
a5606eee
VP
1345 /* Avoid setting b->val if it's already set. The meaning of
1346 b->val is 'the last value' user saw, and we should update
1347 it only if we reported that last value to user. As it
1348 happens, the code that reports it updates b->val directly. */
fa4727a6
DJ
1349 if (!b->val_valid)
1350 {
1351 b->val = v;
1352 b->val_valid = 1;
1353 }
a5606eee 1354
2d134ed3
PA
1355 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1356
a5606eee 1357 /* Look at each value on the value chain. */
9fa40276 1358 for (v = val_chain; v; v = value_next (v))
a5606eee
VP
1359 {
1360 /* If it's a memory location, and GDB actually needed
1361 its contents to evaluate the expression, then we
fa4727a6
DJ
1362 must watch it. If the first value returned is
1363 still lazy, that means an error occurred reading it;
1364 watch it anyway in case it becomes readable. */
a5606eee 1365 if (VALUE_LVAL (v) == lval_memory
fa4727a6 1366 && (v == val_chain || ! value_lazy (v)))
a5606eee
VP
1367 {
1368 struct type *vtype = check_typedef (value_type (v));
7270d8f2 1369
a5606eee
VP
1370 /* We only watch structs and arrays if user asked
1371 for it explicitly, never if they just happen to
1372 appear in the middle of some value chain. */
fa4727a6 1373 if (v == result
a5606eee
VP
1374 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1375 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1376 {
1377 CORE_ADDR addr;
1378 int len, type;
1379 struct bp_location *loc, **tmp;
1380
42ae5230 1381 addr = value_address (v);
a5606eee
VP
1382 len = TYPE_LENGTH (value_type (v));
1383 type = hw_write;
1384 if (b->type == bp_read_watchpoint)
1385 type = hw_read;
1386 else if (b->type == bp_access_watchpoint)
1387 type = hw_access;
1388
39d61571 1389 loc = allocate_bp_location (b);
a5606eee
VP
1390 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1391 ;
1392 *tmp = loc;
a6d9a66e 1393 loc->gdbarch = get_type_arch (value_type (v));
6c95b8df
PA
1394
1395 loc->pspace = frame_pspace;
a5606eee
VP
1396 loc->address = addr;
1397 loc->length = len;
1398 loc->watchpoint_type = type;
1399 }
1400 }
9fa40276
TJB
1401 }
1402
1403 /* Change the type of breakpoint between hardware assisted or
1404 an ordinary watchpoint depending on the hardware support
1405 and free hardware slots. REPARSE is set when the inferior
1406 is started. */
1407 if ((b->type == bp_watchpoint || b->type == bp_hardware_watchpoint)
1408 && reparse)
1409 {
e09342b5 1410 int reg_cnt;
9fa40276
TJB
1411 enum bp_loc_type loc_type;
1412 struct bp_location *bl;
a5606eee 1413
e09342b5
TJB
1414 reg_cnt = can_use_hardware_watchpoint (val_chain, b->exact);
1415
1416 if (reg_cnt)
9fa40276
TJB
1417 {
1418 int i, target_resources_ok, other_type_used;
e09342b5 1419 enum enable_state orig_enable_state;
9fa40276
TJB
1420
1421 /* We need to determine how many resources are already
e09342b5
TJB
1422 used for all other hardware watchpoints plus this one
1423 to see if we still have enough resources to also fit
1424 this watchpoint in as well. To guarantee the
1425 hw_watchpoint_used_count call below counts this
1426 watchpoint, make sure that it is marked as a hardware
1427 watchpoint. */
1428 b->type = bp_hardware_watchpoint;
1429
1430 /* hw_watchpoint_used_count ignores disabled watchpoints,
1431 and b might be disabled if we're being called from
1432 do_enable_breakpoint. */
1433 orig_enable_state = b->enable_state;
1434 b->enable_state = bp_enabled;
1435
9fa40276
TJB
1436 i = hw_watchpoint_used_count (bp_hardware_watchpoint,
1437 &other_type_used);
9fa40276 1438
e09342b5
TJB
1439 b->enable_state = orig_enable_state;
1440
1441 target_resources_ok = target_can_use_hardware_watchpoint
1442 (bp_hardware_watchpoint, i, other_type_used);
1443 if (target_resources_ok <= 0)
1444 b->type = bp_watchpoint;
9fa40276
TJB
1445 }
1446 else
1447 b->type = bp_watchpoint;
1448
1449 loc_type = (b->type == bp_watchpoint? bp_loc_other
1450 : bp_loc_hardware_watchpoint);
1451 for (bl = b->loc; bl; bl = bl->next)
1452 bl->loc_type = loc_type;
1453 }
1454
1455 for (v = val_chain; v; v = next)
1456 {
a5606eee
VP
1457 next = value_next (v);
1458 if (v != b->val)
1459 value_free (v);
1460 }
1461
c7437ca6
PA
1462 /* If a software watchpoint is not watching any memory, then the
1463 above left it without any location set up. But,
1464 bpstat_stop_status requires a location to be able to report
1465 stops, so make sure there's at least a dummy one. */
1466 if (b->type == bp_watchpoint && b->loc == NULL)
1467 {
1468 b->loc = allocate_bp_location (b);
1469 b->loc->pspace = frame_pspace;
1470 b->loc->address = -1;
1471 b->loc->length = -1;
1472 b->loc->watchpoint_type = -1;
1473 }
a5606eee
VP
1474 }
1475 else if (!within_current_scope)
7270d8f2 1476 {
ac74f770
MS
1477 printf_filtered (_("\
1478Watchpoint %d deleted because the program has left the block\n\
1479in which its expression is valid.\n"),
a5606eee 1480 b->number);
d0fb5eae 1481 watchpoint_del_at_next_stop (b);
7270d8f2 1482 }
a5606eee
VP
1483
1484 /* Restore the selected frame. */
66076460
DJ
1485 if (frame_saved)
1486 select_frame (frame_find_by_id (saved_frame_id));
7270d8f2
OF
1487}
1488
a5606eee 1489
74960c60
VP
1490/* Returns 1 iff breakpoint location should be
1491 inserted in the inferior. */
1492static int
35df4500 1493should_be_inserted (struct bp_location *bl)
74960c60 1494{
35df4500 1495 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
74960c60
VP
1496 return 0;
1497
35df4500 1498 if (bl->owner->disposition == disp_del_at_next_stop)
74960c60
VP
1499 return 0;
1500
35df4500 1501 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
74960c60
VP
1502 return 0;
1503
56710373
PA
1504 /* This is set for example, when we're attached to the parent of a
1505 vfork, and have detached from the child. The child is running
1506 free, and we expect it to do an exec or exit, at which point the
1507 OS makes the parent schedulable again (and the target reports
1508 that the vfork is done). Until the child is done with the shared
1509 memory region, do not insert breakpoints in the parent, otherwise
1510 the child could still trip on the parent's breakpoints. Since
1511 the parent is blocked anyway, it won't miss any breakpoint. */
35df4500 1512 if (bl->pspace->breakpoints_not_allowed)
56710373
PA
1513 return 0;
1514
1042e4c0
SS
1515 /* Tracepoints are inserted by the target at a time of its choosing,
1516 not by us. */
35df4500 1517 if (is_tracepoint (bl->owner))
1042e4c0
SS
1518 return 0;
1519
74960c60
VP
1520 return 1;
1521}
1522
35df4500
TJB
1523/* Insert a low-level "breakpoint" of some type. BL is the breakpoint
1524 location. Any error messages are printed to TMP_ERROR_STREAM; and
1525 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
879bfdc2 1526
4a64f543
MS
1527 NOTE drow/2003-09-09: This routine could be broken down to an
1528 object-style method for each breakpoint or catchpoint type. */
26bb91f3 1529static int
35df4500 1530insert_bp_location (struct bp_location *bl,
26bb91f3 1531 struct ui_file *tmp_error_stream,
fa3a767f 1532 int *disabled_breaks,
26bb91f3 1533 int *hw_breakpoint_error)
879bfdc2
DJ
1534{
1535 int val = 0;
1536
35df4500 1537 if (!should_be_inserted (bl) || bl->inserted)
879bfdc2
DJ
1538 return 0;
1539
8181d85f 1540 /* Initialize the target-specific information. */
35df4500
TJB
1541 memset (&bl->target_info, 0, sizeof (bl->target_info));
1542 bl->target_info.placed_address = bl->address;
1543 bl->target_info.placed_address_space = bl->pspace->aspace;
f1310107 1544 bl->target_info.length = bl->length;
8181d85f 1545
35df4500
TJB
1546 if (bl->loc_type == bp_loc_software_breakpoint
1547 || bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 1548 {
35df4500 1549 if (bl->owner->type != bp_hardware_breakpoint)
765dc015
VP
1550 {
1551 /* If the explicitly specified breakpoint type
1552 is not hardware breakpoint, check the memory map to see
1553 if the breakpoint address is in read only memory or not.
4a64f543 1554
765dc015
VP
1555 Two important cases are:
1556 - location type is not hardware breakpoint, memory
1557 is readonly. We change the type of the location to
1558 hardware breakpoint.
4a64f543
MS
1559 - location type is hardware breakpoint, memory is
1560 read-write. This means we've previously made the
1561 location hardware one, but then the memory map changed,
1562 so we undo.
765dc015 1563
4a64f543
MS
1564 When breakpoints are removed, remove_breakpoints will use
1565 location types we've just set here, the only possible
1566 problem is that memory map has changed during running
1567 program, but it's not going to work anyway with current
1568 gdb. */
765dc015 1569 struct mem_region *mr
35df4500 1570 = lookup_mem_region (bl->target_info.placed_address);
765dc015
VP
1571
1572 if (mr)
1573 {
1574 if (automatic_hardware_breakpoints)
1575 {
765dc015
VP
1576 enum bp_loc_type new_type;
1577
1578 if (mr->attrib.mode != MEM_RW)
1579 new_type = bp_loc_hardware_breakpoint;
1580 else
1581 new_type = bp_loc_software_breakpoint;
1582
35df4500 1583 if (new_type != bl->loc_type)
765dc015
VP
1584 {
1585 static int said = 0;
cc59ec59 1586
35df4500 1587 bl->loc_type = new_type;
765dc015
VP
1588 if (!said)
1589 {
3e43a32a
MS
1590 fprintf_filtered (gdb_stdout,
1591 _("Note: automatically using "
1592 "hardware breakpoints for "
1593 "read-only addresses.\n"));
765dc015
VP
1594 said = 1;
1595 }
1596 }
1597 }
35df4500 1598 else if (bl->loc_type == bp_loc_software_breakpoint
765dc015 1599 && mr->attrib.mode != MEM_RW)
3e43a32a
MS
1600 warning (_("cannot set software breakpoint "
1601 "at readonly address %s"),
35df4500 1602 paddress (bl->gdbarch, bl->address));
765dc015
VP
1603 }
1604 }
1605
879bfdc2
DJ
1606 /* First check to see if we have to handle an overlay. */
1607 if (overlay_debugging == ovly_off
35df4500
TJB
1608 || bl->section == NULL
1609 || !(section_is_overlay (bl->section)))
879bfdc2
DJ
1610 {
1611 /* No overlay handling: just set the breakpoint. */
1612
35df4500
TJB
1613 if (bl->loc_type == bp_loc_hardware_breakpoint)
1614 val = target_insert_hw_breakpoint (bl->gdbarch,
1615 &bl->target_info);
879bfdc2 1616 else
35df4500
TJB
1617 val = target_insert_breakpoint (bl->gdbarch,
1618 &bl->target_info);
879bfdc2
DJ
1619 }
1620 else
1621 {
4a64f543 1622 /* This breakpoint is in an overlay section.
879bfdc2
DJ
1623 Shall we set a breakpoint at the LMA? */
1624 if (!overlay_events_enabled)
1625 {
1626 /* Yes -- overlay event support is not active,
1627 so we must try to set a breakpoint at the LMA.
1628 This will not work for a hardware breakpoint. */
35df4500 1629 if (bl->loc_type == bp_loc_hardware_breakpoint)
8a3fe4f8 1630 warning (_("hardware breakpoint %d not supported in overlay!"),
35df4500 1631 bl->owner->number);
879bfdc2
DJ
1632 else
1633 {
35df4500
TJB
1634 CORE_ADDR addr = overlay_unmapped_address (bl->address,
1635 bl->section);
879bfdc2 1636 /* Set a software (trap) breakpoint at the LMA. */
35df4500
TJB
1637 bl->overlay_target_info = bl->target_info;
1638 bl->overlay_target_info.placed_address = addr;
1639 val = target_insert_breakpoint (bl->gdbarch,
1640 &bl->overlay_target_info);
879bfdc2 1641 if (val != 0)
99361f52 1642 fprintf_unfiltered (tmp_error_stream,
3e43a32a
MS
1643 "Overlay breakpoint %d "
1644 "failed: in ROM?\n",
35df4500 1645 bl->owner->number);
879bfdc2
DJ
1646 }
1647 }
1648 /* Shall we set a breakpoint at the VMA? */
35df4500 1649 if (section_is_mapped (bl->section))
879bfdc2
DJ
1650 {
1651 /* Yes. This overlay section is mapped into memory. */
35df4500
TJB
1652 if (bl->loc_type == bp_loc_hardware_breakpoint)
1653 val = target_insert_hw_breakpoint (bl->gdbarch,
1654 &bl->target_info);
879bfdc2 1655 else
35df4500
TJB
1656 val = target_insert_breakpoint (bl->gdbarch,
1657 &bl->target_info);
879bfdc2
DJ
1658 }
1659 else
1660 {
1661 /* No. This breakpoint will not be inserted.
1662 No error, but do not mark the bp as 'inserted'. */
1663 return 0;
1664 }
1665 }
1666
1667 if (val)
1668 {
1669 /* Can't set the breakpoint. */
35df4500 1670 if (solib_name_from_address (bl->pspace, bl->address))
879bfdc2 1671 {
4a64f543 1672 /* See also: disable_breakpoints_in_shlibs. */
879bfdc2 1673 val = 0;
35df4500 1674 bl->shlib_disabled = 1;
8d3788bd 1675 observer_notify_breakpoint_modified (bl->owner);
879bfdc2
DJ
1676 if (!*disabled_breaks)
1677 {
1678 fprintf_unfiltered (tmp_error_stream,
1679 "Cannot insert breakpoint %d.\n",
35df4500 1680 bl->owner->number);
879bfdc2 1681 fprintf_unfiltered (tmp_error_stream,
3e43a32a
MS
1682 "Temporarily disabling shared "
1683 "library breakpoints:\n");
879bfdc2
DJ
1684 }
1685 *disabled_breaks = 1;
1686 fprintf_unfiltered (tmp_error_stream,
35df4500 1687 "breakpoint #%d\n", bl->owner->number);
879bfdc2
DJ
1688 }
1689 else
879bfdc2 1690 {
35df4500 1691 if (bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2
DJ
1692 {
1693 *hw_breakpoint_error = 1;
3e43a32a
MS
1694 fprintf_unfiltered (tmp_error_stream,
1695 "Cannot insert hardware "
1696 "breakpoint %d.\n",
35df4500 1697 bl->owner->number);
879bfdc2
DJ
1698 }
1699 else
1700 {
1701 fprintf_unfiltered (tmp_error_stream,
1702 "Cannot insert breakpoint %d.\n",
35df4500 1703 bl->owner->number);
879bfdc2
DJ
1704 fprintf_filtered (tmp_error_stream,
1705 "Error accessing memory address ");
35df4500 1706 fputs_filtered (paddress (bl->gdbarch, bl->address),
5af949e3 1707 tmp_error_stream);
879bfdc2
DJ
1708 fprintf_filtered (tmp_error_stream, ": %s.\n",
1709 safe_strerror (val));
1710 }
1711
1712 }
1713 }
1714 else
35df4500 1715 bl->inserted = 1;
879bfdc2
DJ
1716
1717 return val;
1718 }
1719
35df4500 1720 else if (bl->loc_type == bp_loc_hardware_watchpoint
879bfdc2 1721 /* NOTE drow/2003-09-08: This state only exists for removing
4a64f543 1722 watchpoints. It's not clear that it's necessary... */
35df4500 1723 && bl->owner->disposition != disp_del_at_next_stop)
879bfdc2 1724 {
77b06cd7
TJB
1725 gdb_assert (bl->owner->ops != NULL
1726 && bl->owner->ops->insert_location != NULL);
1727
1728 val = bl->owner->ops->insert_location (bl);
85d721b8
PA
1729
1730 /* If trying to set a read-watchpoint, and it turns out it's not
1731 supported, try emulating one with an access watchpoint. */
35df4500 1732 if (val == 1 && bl->watchpoint_type == hw_read)
85d721b8
PA
1733 {
1734 struct bp_location *loc, **loc_temp;
1735
1736 /* But don't try to insert it, if there's already another
1737 hw_access location that would be considered a duplicate
1738 of this one. */
1739 ALL_BP_LOCATIONS (loc, loc_temp)
35df4500 1740 if (loc != bl
85d721b8 1741 && loc->watchpoint_type == hw_access
35df4500 1742 && watchpoint_locations_match (bl, loc))
85d721b8 1743 {
35df4500
TJB
1744 bl->duplicate = 1;
1745 bl->inserted = 1;
1746 bl->target_info = loc->target_info;
1747 bl->watchpoint_type = hw_access;
85d721b8
PA
1748 val = 0;
1749 break;
1750 }
1751
1752 if (val == 1)
1753 {
77b06cd7
TJB
1754 bl->watchpoint_type = hw_access;
1755 val = bl->owner->ops->insert_location (bl);
1756
1757 if (val)
1758 /* Back to the original value. */
1759 bl->watchpoint_type = hw_read;
85d721b8
PA
1760 }
1761 }
1762
35df4500 1763 bl->inserted = (val == 0);
879bfdc2
DJ
1764 }
1765
35df4500 1766 else if (bl->owner->type == bp_catchpoint)
879bfdc2 1767 {
77b06cd7
TJB
1768 gdb_assert (bl->owner->ops != NULL
1769 && bl->owner->ops->insert_location != NULL);
1770
1771 val = bl->owner->ops->insert_location (bl);
1772 if (val)
1773 {
1774 bl->owner->enable_state = bp_disabled;
1775
1776 if (val == 1)
1777 warning (_("\
1778Error inserting catchpoint %d: Your system does not support this type\n\
1779of catchpoint."), bl->owner->number);
1780 else
1781 warning (_("Error inserting catchpoint %d."), bl->owner->number);
1782 }
1783
1784 bl->inserted = (val == 0);
1640b821
DJ
1785
1786 /* We've already printed an error message if there was a problem
1787 inserting this catchpoint, and we've disabled the catchpoint,
1788 so just return success. */
1789 return 0;
879bfdc2
DJ
1790 }
1791
1792 return 0;
1793}
1794
6c95b8df
PA
1795/* This function is called when program space PSPACE is about to be
1796 deleted. It takes care of updating breakpoints to not reference
1797 PSPACE anymore. */
1798
1799void
1800breakpoint_program_space_exit (struct program_space *pspace)
1801{
1802 struct breakpoint *b, *b_temp;
876fa593 1803 struct bp_location *loc, **loc_temp;
6c95b8df
PA
1804
1805 /* Remove any breakpoint that was set through this program space. */
1806 ALL_BREAKPOINTS_SAFE (b, b_temp)
1807 {
1808 if (b->pspace == pspace)
1809 delete_breakpoint (b);
1810 }
1811
1812 /* Breakpoints set through other program spaces could have locations
1813 bound to PSPACE as well. Remove those. */
876fa593 1814 ALL_BP_LOCATIONS (loc, loc_temp)
6c95b8df
PA
1815 {
1816 struct bp_location *tmp;
1817
1818 if (loc->pspace == pspace)
1819 {
2bdf28a0 1820 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6c95b8df
PA
1821 if (loc->owner->loc == loc)
1822 loc->owner->loc = loc->next;
1823 else
1824 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
1825 if (tmp->next == loc)
1826 {
1827 tmp->next = loc->next;
1828 break;
1829 }
1830 }
1831 }
1832
1833 /* Now update the global location list to permanently delete the
1834 removed locations above. */
1835 update_global_location_list (0);
1836}
1837
74960c60
VP
1838/* Make sure all breakpoints are inserted in inferior.
1839 Throws exception on any error.
1840 A breakpoint that is already inserted won't be inserted
1841 again, so calling this function twice is safe. */
1842void
1843insert_breakpoints (void)
1844{
1845 struct breakpoint *bpt;
1846
1847 ALL_BREAKPOINTS (bpt)
1848 if (is_hardware_watchpoint (bpt))
4a64f543 1849 update_watchpoint (bpt, 0 /* don't reparse. */);
74960c60 1850
b60e7edf 1851 update_global_location_list (1);
74960c60 1852
c35b1492
PA
1853 /* update_global_location_list does not insert breakpoints when
1854 always_inserted_mode is not enabled. Explicitly insert them
1855 now. */
1856 if (!breakpoints_always_inserted_mode ())
74960c60
VP
1857 insert_breakpoint_locations ();
1858}
1859
c906108c
SS
1860/* insert_breakpoints is used when starting or continuing the program.
1861 remove_breakpoints is used when the program stops.
1862 Both return zero if successful,
1863 or an `errno' value if could not write the inferior. */
1864
74960c60
VP
1865static void
1866insert_breakpoint_locations (void)
c906108c 1867{
a5606eee 1868 struct breakpoint *bpt;
35df4500 1869 struct bp_location *bl, **blp_tmp;
e236ba44 1870 int error = 0;
c906108c
SS
1871 int val = 0;
1872 int disabled_breaks = 0;
81d0cc19 1873 int hw_breakpoint_error = 0;
c906108c 1874
81d0cc19 1875 struct ui_file *tmp_error_stream = mem_fileopen ();
f7545552 1876 struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
74960c60 1877
81d0cc19
GS
1878 /* Explicitly mark the warning -- this will only be printed if
1879 there was an error. */
1880 fprintf_unfiltered (tmp_error_stream, "Warning:\n");
6c95b8df
PA
1881
1882 save_current_space_and_thread ();
1883
35df4500 1884 ALL_BP_LOCATIONS (bl, blp_tmp)
879bfdc2 1885 {
35df4500 1886 if (!should_be_inserted (bl) || bl->inserted)
879bfdc2
DJ
1887 continue;
1888
4a64f543
MS
1889 /* There is no point inserting thread-specific breakpoints if
1890 the thread no longer exists. ALL_BP_LOCATIONS bp_location
1891 has BL->OWNER always non-NULL. */
35df4500
TJB
1892 if (bl->owner->thread != -1
1893 && !valid_thread_id (bl->owner->thread))
f365de73
AS
1894 continue;
1895
35df4500 1896 switch_to_program_space_and_thread (bl->pspace);
6c95b8df
PA
1897
1898 /* For targets that support global breakpoints, there's no need
1899 to select an inferior to insert breakpoint to. In fact, even
1900 if we aren't attached to any process yet, we should still
1901 insert breakpoints. */
1902 if (!gdbarch_has_global_breakpoints (target_gdbarch)
1903 && ptid_equal (inferior_ptid, null_ptid))
1904 continue;
1905
35df4500 1906 val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
879bfdc2
DJ
1907 &hw_breakpoint_error);
1908 if (val)
e236ba44 1909 error = val;
879bfdc2 1910 }
c906108c 1911
4a64f543
MS
1912 /* If we failed to insert all locations of a watchpoint, remove
1913 them, as half-inserted watchpoint is of limited use. */
a5606eee
VP
1914 ALL_BREAKPOINTS (bpt)
1915 {
1916 int some_failed = 0;
1917 struct bp_location *loc;
1918
1919 if (!is_hardware_watchpoint (bpt))
1920 continue;
1921
d6b74ac4 1922 if (!breakpoint_enabled (bpt))
a5606eee 1923 continue;
74960c60
VP
1924
1925 if (bpt->disposition == disp_del_at_next_stop)
1926 continue;
a5606eee
VP
1927
1928 for (loc = bpt->loc; loc; loc = loc->next)
56710373 1929 if (!loc->inserted && should_be_inserted (loc))
a5606eee
VP
1930 {
1931 some_failed = 1;
1932 break;
1933 }
1934 if (some_failed)
1935 {
1936 for (loc = bpt->loc; loc; loc = loc->next)
1937 if (loc->inserted)
1938 remove_breakpoint (loc, mark_uninserted);
1939
1940 hw_breakpoint_error = 1;
1941 fprintf_unfiltered (tmp_error_stream,
1942 "Could not insert hardware watchpoint %d.\n",
1943 bpt->number);
1944 error = -1;
1945 }
1946 }
1947
e236ba44 1948 if (error)
81d0cc19
GS
1949 {
1950 /* If a hardware breakpoint or watchpoint was inserted, add a
1951 message about possibly exhausted resources. */
879bfdc2 1952 if (hw_breakpoint_error)
81d0cc19 1953 {
c6510018
MS
1954 fprintf_unfiltered (tmp_error_stream,
1955 "Could not insert hardware breakpoints:\n\
1956You may have requested too many hardware breakpoints/watchpoints.\n");
81d0cc19 1957 }
81d0cc19
GS
1958 target_terminal_ours_for_output ();
1959 error_stream (tmp_error_stream);
1960 }
f7545552
TT
1961
1962 do_cleanups (cleanups);
c906108c
SS
1963}
1964
c906108c 1965int
fba45db2 1966remove_breakpoints (void)
c906108c 1967{
35df4500 1968 struct bp_location *bl, **blp_tmp;
3a1bae8e 1969 int val = 0;
c906108c 1970
35df4500 1971 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 1972 {
35df4500
TJB
1973 if (bl->inserted)
1974 val |= remove_breakpoint (bl, mark_uninserted);
c5aa993b 1975 }
3a1bae8e 1976 return val;
c906108c
SS
1977}
1978
6c95b8df
PA
1979/* Remove breakpoints of process PID. */
1980
1981int
1982remove_breakpoints_pid (int pid)
1983{
35df4500 1984 struct bp_location *bl, **blp_tmp;
6c95b8df
PA
1985 int val;
1986 struct inferior *inf = find_inferior_pid (pid);
1987
35df4500 1988 ALL_BP_LOCATIONS (bl, blp_tmp)
6c95b8df 1989 {
35df4500 1990 if (bl->pspace != inf->pspace)
6c95b8df
PA
1991 continue;
1992
35df4500 1993 if (bl->inserted)
6c95b8df 1994 {
35df4500 1995 val = remove_breakpoint (bl, mark_uninserted);
6c95b8df
PA
1996 if (val != 0)
1997 return val;
1998 }
1999 }
2000 return 0;
2001}
2002
692590c1 2003int
80ce1ecb 2004remove_hw_watchpoints (void)
692590c1 2005{
35df4500 2006 struct bp_location *bl, **blp_tmp;
3a1bae8e 2007 int val = 0;
692590c1 2008
35df4500 2009 ALL_BP_LOCATIONS (bl, blp_tmp)
692590c1 2010 {
35df4500
TJB
2011 if (bl->inserted && bl->loc_type == bp_loc_hardware_watchpoint)
2012 val |= remove_breakpoint (bl, mark_uninserted);
692590c1 2013 }
3a1bae8e 2014 return val;
692590c1
MS
2015}
2016
c906108c 2017int
fba45db2 2018reattach_breakpoints (int pid)
c906108c 2019{
6c95b8df 2020 struct cleanup *old_chain;
35df4500 2021 struct bp_location *bl, **blp_tmp;
c906108c 2022 int val;
86b887df 2023 struct ui_file *tmp_error_stream;
fa3a767f 2024 int dummy1 = 0, dummy2 = 0;
6c95b8df
PA
2025 struct inferior *inf;
2026 struct thread_info *tp;
2027
2028 tp = any_live_thread_of_process (pid);
2029 if (tp == NULL)
2030 return 1;
2031
2032 inf = find_inferior_pid (pid);
2033 old_chain = save_inferior_ptid ();
2034
2035 inferior_ptid = tp->ptid;
a4954f26 2036
86b887df 2037 tmp_error_stream = mem_fileopen ();
a4954f26 2038 make_cleanup_ui_file_delete (tmp_error_stream);
c906108c 2039
35df4500 2040 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 2041 {
35df4500 2042 if (bl->pspace != inf->pspace)
6c95b8df
PA
2043 continue;
2044
35df4500 2045 if (bl->inserted)
c5aa993b 2046 {
35df4500
TJB
2047 bl->inserted = 0;
2048 val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2);
c5aa993b
JM
2049 if (val != 0)
2050 {
ce696e05 2051 do_cleanups (old_chain);
c5aa993b
JM
2052 return val;
2053 }
2054 }
2055 }
ce696e05 2056 do_cleanups (old_chain);
c906108c
SS
2057 return 0;
2058}
2059
e58b0e63
PA
2060static int internal_breakpoint_number = -1;
2061
84f4c1fe
PM
2062/* Set the breakpoint number of B, depending on the value of INTERNAL.
2063 If INTERNAL is non-zero, the breakpoint number will be populated
2064 from internal_breakpoint_number and that variable decremented.
2065 Otherwis the breakpoint number will be populated from
2066 breakpoint_count and that value incremented. Internal breakpoints
2067 do not set the internal var bpnum. */
2068static void
2069set_breakpoint_number (int internal, struct breakpoint *b)
2070{
2071 if (internal)
2072 b->number = internal_breakpoint_number--;
2073 else
2074 {
2075 set_breakpoint_count (breakpoint_count + 1);
2076 b->number = breakpoint_count;
2077 }
2078}
2079
e62c965a 2080static struct breakpoint *
a6d9a66e
UW
2081create_internal_breakpoint (struct gdbarch *gdbarch,
2082 CORE_ADDR address, enum bptype type)
e62c965a 2083{
e62c965a
PP
2084 struct symtab_and_line sal;
2085 struct breakpoint *b;
2086
4a64f543 2087 init_sal (&sal); /* Initialize to zeroes. */
e62c965a
PP
2088
2089 sal.pc = address;
2090 sal.section = find_pc_overlay (sal.pc);
6c95b8df 2091 sal.pspace = current_program_space;
e62c965a 2092
a6d9a66e 2093 b = set_raw_breakpoint (gdbarch, sal, type);
e62c965a
PP
2094 b->number = internal_breakpoint_number--;
2095 b->disposition = disp_donttouch;
2096
2097 return b;
2098}
2099
17450429
PP
2100static const char *const longjmp_names[] =
2101 {
2102 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
2103 };
2104#define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
2105
2106/* Per-objfile data private to breakpoint.c. */
2107struct breakpoint_objfile_data
2108{
2109 /* Minimal symbol for "_ovly_debug_event" (if any). */
2110 struct minimal_symbol *overlay_msym;
2111
2112 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
2113 struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
2114
2115 /* Minimal symbol for "std::terminate()" (if any). */
2116 struct minimal_symbol *terminate_msym;
2117
2118 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
2119 struct minimal_symbol *exception_msym;
2120};
2121
2122static const struct objfile_data *breakpoint_objfile_key;
2123
2124/* Minimal symbol not found sentinel. */
2125static struct minimal_symbol msym_not_found;
2126
2127/* Returns TRUE if MSYM point to the "not found" sentinel. */
2128
2129static int
2130msym_not_found_p (const struct minimal_symbol *msym)
2131{
2132 return msym == &msym_not_found;
2133}
2134
2135/* Return per-objfile data needed by breakpoint.c.
2136 Allocate the data if necessary. */
2137
2138static struct breakpoint_objfile_data *
2139get_breakpoint_objfile_data (struct objfile *objfile)
2140{
2141 struct breakpoint_objfile_data *bp_objfile_data;
2142
2143 bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
2144 if (bp_objfile_data == NULL)
2145 {
2146 bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
2147 sizeof (*bp_objfile_data));
2148
2149 memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
2150 set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
2151 }
2152 return bp_objfile_data;
2153}
2154
e62c965a 2155static void
af02033e 2156create_overlay_event_breakpoint (void)
e62c965a 2157{
69de3c6a 2158 struct objfile *objfile;
af02033e 2159 const char *const func_name = "_ovly_debug_event";
e62c965a 2160
69de3c6a
PP
2161 ALL_OBJFILES (objfile)
2162 {
2163 struct breakpoint *b;
17450429
PP
2164 struct breakpoint_objfile_data *bp_objfile_data;
2165 CORE_ADDR addr;
69de3c6a 2166
17450429
PP
2167 bp_objfile_data = get_breakpoint_objfile_data (objfile);
2168
2169 if (msym_not_found_p (bp_objfile_data->overlay_msym))
2170 continue;
2171
2172 if (bp_objfile_data->overlay_msym == NULL)
2173 {
2174 struct minimal_symbol *m;
2175
2176 m = lookup_minimal_symbol_text (func_name, objfile);
2177 if (m == NULL)
2178 {
2179 /* Avoid future lookups in this objfile. */
2180 bp_objfile_data->overlay_msym = &msym_not_found;
2181 continue;
2182 }
2183 bp_objfile_data->overlay_msym = m;
2184 }
e62c965a 2185
17450429
PP
2186 addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
2187 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
69de3c6a
PP
2188 bp_overlay_event);
2189 b->addr_string = xstrdup (func_name);
e62c965a 2190
69de3c6a
PP
2191 if (overlay_debugging == ovly_auto)
2192 {
2193 b->enable_state = bp_enabled;
2194 overlay_events_enabled = 1;
2195 }
2196 else
2197 {
2198 b->enable_state = bp_disabled;
2199 overlay_events_enabled = 0;
2200 }
e62c965a
PP
2201 }
2202 update_global_location_list (1);
2203}
2204
0fd8e87f 2205static void
af02033e 2206create_longjmp_master_breakpoint (void)
0fd8e87f 2207{
6c95b8df 2208 struct program_space *pspace;
6c95b8df
PA
2209 struct cleanup *old_chain;
2210
2211 old_chain = save_current_program_space ();
0fd8e87f 2212
6c95b8df 2213 ALL_PSPACES (pspace)
af02033e
PP
2214 {
2215 struct objfile *objfile;
2216
2217 set_current_program_space (pspace);
2218
2219 ALL_OBJFILES (objfile)
0fd8e87f 2220 {
af02033e
PP
2221 int i;
2222 struct gdbarch *gdbarch;
17450429 2223 struct breakpoint_objfile_data *bp_objfile_data;
0fd8e87f 2224
af02033e
PP
2225 gdbarch = get_objfile_arch (objfile);
2226 if (!gdbarch_get_longjmp_target_p (gdbarch))
0fd8e87f
UW
2227 continue;
2228
17450429
PP
2229 bp_objfile_data = get_breakpoint_objfile_data (objfile);
2230
2231 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
af02033e
PP
2232 {
2233 struct breakpoint *b;
af02033e 2234 const char *func_name;
17450429 2235 CORE_ADDR addr;
6c95b8df 2236
17450429 2237 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
af02033e 2238 continue;
0fd8e87f 2239
17450429
PP
2240 func_name = longjmp_names[i];
2241 if (bp_objfile_data->longjmp_msym[i] == NULL)
2242 {
2243 struct minimal_symbol *m;
2244
2245 m = lookup_minimal_symbol_text (func_name, objfile);
2246 if (m == NULL)
2247 {
2248 /* Prevent future lookups in this objfile. */
2249 bp_objfile_data->longjmp_msym[i] = &msym_not_found;
2250 continue;
2251 }
2252 bp_objfile_data->longjmp_msym[i] = m;
2253 }
2254
2255 addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
2256 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master);
af02033e
PP
2257 b->addr_string = xstrdup (func_name);
2258 b->enable_state = bp_disabled;
2259 }
0fd8e87f 2260 }
af02033e 2261 }
0fd8e87f 2262 update_global_location_list (1);
6c95b8df
PA
2263
2264 do_cleanups (old_chain);
0fd8e87f
UW
2265}
2266
af02033e 2267/* Create a master std::terminate breakpoint. */
aa7d318d 2268static void
af02033e 2269create_std_terminate_master_breakpoint (void)
aa7d318d
TT
2270{
2271 struct program_space *pspace;
aa7d318d 2272 struct cleanup *old_chain;
af02033e 2273 const char *const func_name = "std::terminate()";
aa7d318d
TT
2274
2275 old_chain = save_current_program_space ();
2276
2277 ALL_PSPACES (pspace)
17450429
PP
2278 {
2279 struct objfile *objfile;
2280 CORE_ADDR addr;
2281
2282 set_current_program_space (pspace);
2283
aa7d318d
TT
2284 ALL_OBJFILES (objfile)
2285 {
2286 struct breakpoint *b;
17450429 2287 struct breakpoint_objfile_data *bp_objfile_data;
aa7d318d 2288
17450429 2289 bp_objfile_data = get_breakpoint_objfile_data (objfile);
aa7d318d 2290
17450429
PP
2291 if (msym_not_found_p (bp_objfile_data->terminate_msym))
2292 continue;
2293
2294 if (bp_objfile_data->terminate_msym == NULL)
2295 {
2296 struct minimal_symbol *m;
2297
2298 m = lookup_minimal_symbol (func_name, NULL, objfile);
2299 if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
2300 && MSYMBOL_TYPE (m) != mst_file_text))
2301 {
2302 /* Prevent future lookups in this objfile. */
2303 bp_objfile_data->terminate_msym = &msym_not_found;
2304 continue;
2305 }
2306 bp_objfile_data->terminate_msym = m;
2307 }
aa7d318d 2308
17450429
PP
2309 addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
2310 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
aa7d318d
TT
2311 bp_std_terminate_master);
2312 b->addr_string = xstrdup (func_name);
2313 b->enable_state = bp_disabled;
2314 }
17450429
PP
2315 }
2316
aa7d318d
TT
2317 update_global_location_list (1);
2318
2319 do_cleanups (old_chain);
2320}
2321
186c406b
TT
2322/* Install a master breakpoint on the unwinder's debug hook. */
2323
2324void
2325create_exception_master_breakpoint (void)
2326{
2327 struct objfile *objfile;
17450429 2328 const char *const func_name = "_Unwind_DebugHook";
186c406b
TT
2329
2330 ALL_OBJFILES (objfile)
2331 {
17450429
PP
2332 struct breakpoint *b;
2333 struct gdbarch *gdbarch;
2334 struct breakpoint_objfile_data *bp_objfile_data;
2335 CORE_ADDR addr;
2336
2337 bp_objfile_data = get_breakpoint_objfile_data (objfile);
2338
2339 if (msym_not_found_p (bp_objfile_data->exception_msym))
2340 continue;
2341
2342 gdbarch = get_objfile_arch (objfile);
186c406b 2343
17450429 2344 if (bp_objfile_data->exception_msym == NULL)
186c406b 2345 {
17450429 2346 struct minimal_symbol *debug_hook;
186c406b 2347
17450429
PP
2348 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
2349 if (debug_hook == NULL)
2350 {
2351 bp_objfile_data->exception_msym = &msym_not_found;
2352 continue;
2353 }
2354
2355 bp_objfile_data->exception_msym = debug_hook;
186c406b 2356 }
17450429
PP
2357
2358 addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
2359 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
2360 &current_target);
2361 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master);
2362 b->addr_string = xstrdup (func_name);
2363 b->enable_state = bp_disabled;
186c406b
TT
2364 }
2365
2366 update_global_location_list (1);
2367}
2368
c906108c 2369void
fba45db2 2370update_breakpoints_after_exec (void)
c906108c 2371{
35df4500 2372 struct breakpoint *b, *b_tmp;
876fa593 2373 struct bp_location *bploc, **bplocp_tmp;
c906108c 2374
25b22b0a
PA
2375 /* We're about to delete breakpoints from GDB's lists. If the
2376 INSERTED flag is true, GDB will try to lift the breakpoints by
2377 writing the breakpoints' "shadow contents" back into memory. The
2378 "shadow contents" are NOT valid after an exec, so GDB should not
2379 do that. Instead, the target is responsible from marking
2380 breakpoints out as soon as it detects an exec. We don't do that
2381 here instead, because there may be other attempts to delete
2382 breakpoints after detecting an exec and before reaching here. */
876fa593 2383 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
6c95b8df
PA
2384 if (bploc->pspace == current_program_space)
2385 gdb_assert (!bploc->inserted);
c906108c 2386
35df4500 2387 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 2388 {
6c95b8df
PA
2389 if (b->pspace != current_program_space)
2390 continue;
2391
4a64f543 2392 /* Solib breakpoints must be explicitly reset after an exec(). */
c5aa993b
JM
2393 if (b->type == bp_shlib_event)
2394 {
2395 delete_breakpoint (b);
2396 continue;
2397 }
c906108c 2398
4a64f543 2399 /* JIT breakpoints must be explicitly reset after an exec(). */
4efc6507
DE
2400 if (b->type == bp_jit_event)
2401 {
2402 delete_breakpoint (b);
2403 continue;
2404 }
2405
1900040c 2406 /* Thread event breakpoints must be set anew after an exec(),
0fd8e87f
UW
2407 as must overlay event and longjmp master breakpoints. */
2408 if (b->type == bp_thread_event || b->type == bp_overlay_event
186c406b
TT
2409 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
2410 || b->type == bp_exception_master)
c4093a6a
JM
2411 {
2412 delete_breakpoint (b);
2413 continue;
2414 }
2415
4a64f543 2416 /* Step-resume breakpoints are meaningless after an exec(). */
c5aa993b
JM
2417 if (b->type == bp_step_resume)
2418 {
2419 delete_breakpoint (b);
2420 continue;
2421 }
2422
611c83ae
PA
2423 /* Longjmp and longjmp-resume breakpoints are also meaningless
2424 after an exec. */
186c406b
TT
2425 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
2426 || b->type == bp_exception || b->type == bp_exception_resume)
611c83ae
PA
2427 {
2428 delete_breakpoint (b);
2429 continue;
2430 }
2431
ce78b96d
JB
2432 if (b->type == bp_catchpoint)
2433 {
2434 /* For now, none of the bp_catchpoint breakpoints need to
2435 do anything at this point. In the future, if some of
2436 the catchpoints need to something, we will need to add
2437 a new method, and call this method from here. */
2438 continue;
2439 }
2440
c5aa993b
JM
2441 /* bp_finish is a special case. The only way we ought to be able
2442 to see one of these when an exec() has happened, is if the user
2443 caught a vfork, and then said "finish". Ordinarily a finish just
2444 carries them to the call-site of the current callee, by setting
2445 a temporary bp there and resuming. But in this case, the finish
2446 will carry them entirely through the vfork & exec.
2447
2448 We don't want to allow a bp_finish to remain inserted now. But
2449 we can't safely delete it, 'cause finish_command has a handle to
2450 the bp on a bpstat, and will later want to delete it. There's a
2451 chance (and I've seen it happen) that if we delete the bp_finish
2452 here, that its storage will get reused by the time finish_command
2453 gets 'round to deleting the "use to be a bp_finish" breakpoint.
2454 We really must allow finish_command to delete a bp_finish.
2455
53a5351d
JM
2456 In the absense of a general solution for the "how do we know
2457 it's safe to delete something others may have handles to?"
2458 problem, what we'll do here is just uninsert the bp_finish, and
2459 let finish_command delete it.
2460
2461 (We know the bp_finish is "doomed" in the sense that it's
2462 momentary, and will be deleted as soon as finish_command sees
2463 the inferior stopped. So it doesn't matter that the bp's
2464 address is probably bogus in the new a.out, unlike e.g., the
2465 solib breakpoints.) */
c5aa993b 2466
c5aa993b
JM
2467 if (b->type == bp_finish)
2468 {
2469 continue;
2470 }
2471
2472 /* Without a symbolic address, we have little hope of the
2473 pre-exec() address meaning the same thing in the post-exec()
4a64f543 2474 a.out. */
c5aa993b
JM
2475 if (b->addr_string == NULL)
2476 {
2477 delete_breakpoint (b);
2478 continue;
2479 }
c5aa993b 2480 }
1900040c 2481 /* FIXME what about longjmp breakpoints? Re-create them here? */
af02033e
PP
2482 create_overlay_event_breakpoint ();
2483 create_longjmp_master_breakpoint ();
2484 create_std_terminate_master_breakpoint ();
186c406b 2485 create_exception_master_breakpoint ();
c906108c
SS
2486}
2487
2488int
fba45db2 2489detach_breakpoints (int pid)
c906108c 2490{
35df4500 2491 struct bp_location *bl, **blp_tmp;
3a1bae8e 2492 int val = 0;
ce696e05 2493 struct cleanup *old_chain = save_inferior_ptid ();
6c95b8df 2494 struct inferior *inf = current_inferior ();
c5aa993b 2495
39f77062 2496 if (pid == PIDGET (inferior_ptid))
8a3fe4f8 2497 error (_("Cannot detach breakpoints of inferior_ptid"));
c5aa993b 2498
6c95b8df 2499 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
ce696e05 2500 inferior_ptid = pid_to_ptid (pid);
35df4500 2501 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 2502 {
35df4500 2503 if (bl->pspace != inf->pspace)
6c95b8df
PA
2504 continue;
2505
35df4500
TJB
2506 if (bl->inserted)
2507 val |= remove_breakpoint_1 (bl, mark_inserted);
c5aa993b 2508 }
d03285ec
UW
2509
2510 /* Detach single-step breakpoints as well. */
2511 detach_single_step_breakpoints ();
2512
ce696e05 2513 do_cleanups (old_chain);
3a1bae8e 2514 return val;
c906108c
SS
2515}
2516
35df4500 2517/* Remove the breakpoint location BL from the current address space.
6c95b8df
PA
2518 Note that this is used to detach breakpoints from a child fork.
2519 When we get here, the child isn't in the inferior list, and neither
2520 do we have objects to represent its address space --- we should
35df4500 2521 *not* look at bl->pspace->aspace here. */
6c95b8df 2522
c906108c 2523static int
35df4500 2524remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
c906108c
SS
2525{
2526 int val;
c5aa993b 2527
35df4500
TJB
2528 /* BL is never in moribund_locations by our callers. */
2529 gdb_assert (bl->owner != NULL);
2bdf28a0 2530
35df4500 2531 if (bl->owner->enable_state == bp_permanent)
c2c6d25f
JM
2532 /* Permanent breakpoints cannot be inserted or removed. */
2533 return 0;
2534
74960c60
VP
2535 /* The type of none suggests that owner is actually deleted.
2536 This should not ever happen. */
35df4500 2537 gdb_assert (bl->owner->type != bp_none);
0bde7532 2538
35df4500
TJB
2539 if (bl->loc_type == bp_loc_software_breakpoint
2540 || bl->loc_type == bp_loc_hardware_breakpoint)
c906108c 2541 {
c02f5703
MS
2542 /* "Normal" instruction breakpoint: either the standard
2543 trap-instruction bp (bp_breakpoint), or a
2544 bp_hardware_breakpoint. */
2545
2546 /* First check to see if we have to handle an overlay. */
2547 if (overlay_debugging == ovly_off
35df4500
TJB
2548 || bl->section == NULL
2549 || !(section_is_overlay (bl->section)))
c02f5703
MS
2550 {
2551 /* No overlay handling: just remove the breakpoint. */
2552
35df4500
TJB
2553 if (bl->loc_type == bp_loc_hardware_breakpoint)
2554 val = target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
c02f5703 2555 else
35df4500 2556 val = target_remove_breakpoint (bl->gdbarch, &bl->target_info);
c02f5703 2557 }
c906108c
SS
2558 else
2559 {
4a64f543 2560 /* This breakpoint is in an overlay section.
c02f5703
MS
2561 Did we set a breakpoint at the LMA? */
2562 if (!overlay_events_enabled)
2563 {
2564 /* Yes -- overlay event support is not active, so we
2565 should have set a breakpoint at the LMA. Remove it.
2566 */
c02f5703
MS
2567 /* Ignore any failures: if the LMA is in ROM, we will
2568 have already warned when we failed to insert it. */
35df4500
TJB
2569 if (bl->loc_type == bp_loc_hardware_breakpoint)
2570 target_remove_hw_breakpoint (bl->gdbarch,
2571 &bl->overlay_target_info);
c02f5703 2572 else
35df4500
TJB
2573 target_remove_breakpoint (bl->gdbarch,
2574 &bl->overlay_target_info);
c02f5703
MS
2575 }
2576 /* Did we set a breakpoint at the VMA?
2577 If so, we will have marked the breakpoint 'inserted'. */
35df4500 2578 if (bl->inserted)
c906108c 2579 {
c02f5703
MS
2580 /* Yes -- remove it. Previously we did not bother to
2581 remove the breakpoint if the section had been
2582 unmapped, but let's not rely on that being safe. We
2583 don't know what the overlay manager might do. */
35df4500
TJB
2584 if (bl->loc_type == bp_loc_hardware_breakpoint)
2585 val = target_remove_hw_breakpoint (bl->gdbarch,
2586 &bl->target_info);
aa67235e
UW
2587
2588 /* However, we should remove *software* breakpoints only
2589 if the section is still mapped, or else we overwrite
2590 wrong code with the saved shadow contents. */
35df4500
TJB
2591 else if (section_is_mapped (bl->section))
2592 val = target_remove_breakpoint (bl->gdbarch,
2593 &bl->target_info);
aa67235e
UW
2594 else
2595 val = 0;
c906108c 2596 }
c02f5703
MS
2597 else
2598 {
2599 /* No -- not inserted, so no need to remove. No error. */
2600 val = 0;
2601 }
c906108c 2602 }
879d1e6b
UW
2603
2604 /* In some cases, we might not be able to remove a breakpoint
2605 in a shared library that has already been removed, but we
2606 have not yet processed the shlib unload event. */
35df4500 2607 if (val && solib_name_from_address (bl->pspace, bl->address))
879d1e6b
UW
2608 val = 0;
2609
c906108c
SS
2610 if (val)
2611 return val;
35df4500 2612 bl->inserted = (is == mark_inserted);
c906108c 2613 }
35df4500 2614 else if (bl->loc_type == bp_loc_hardware_watchpoint)
c906108c 2615 {
77b06cd7
TJB
2616 gdb_assert (bl->owner->ops != NULL
2617 && bl->owner->ops->remove_location != NULL);
2618
35df4500 2619 bl->inserted = (is == mark_inserted);
77b06cd7 2620 bl->owner->ops->remove_location (bl);
2e70b7b9 2621
c906108c 2622 /* Failure to remove any of the hardware watchpoints comes here. */
35df4500 2623 if ((is == mark_uninserted) && (bl->inserted))
8a3fe4f8 2624 warning (_("Could not remove hardware watchpoint %d."),
35df4500 2625 bl->owner->number);
c906108c 2626 }
35df4500
TJB
2627 else if (bl->owner->type == bp_catchpoint
2628 && breakpoint_enabled (bl->owner)
2629 && !bl->duplicate)
ce78b96d 2630 {
77b06cd7
TJB
2631 gdb_assert (bl->owner->ops != NULL
2632 && bl->owner->ops->remove_location != NULL);
ce78b96d 2633
77b06cd7 2634 val = bl->owner->ops->remove_location (bl);
ce78b96d
JB
2635 if (val)
2636 return val;
77b06cd7 2637
35df4500 2638 bl->inserted = (is == mark_inserted);
ce78b96d 2639 }
c906108c
SS
2640
2641 return 0;
2642}
2643
6c95b8df 2644static int
35df4500 2645remove_breakpoint (struct bp_location *bl, insertion_state_t is)
6c95b8df
PA
2646{
2647 int ret;
2648 struct cleanup *old_chain;
2649
35df4500
TJB
2650 /* BL is never in moribund_locations by our callers. */
2651 gdb_assert (bl->owner != NULL);
2bdf28a0 2652
35df4500 2653 if (bl->owner->enable_state == bp_permanent)
6c95b8df
PA
2654 /* Permanent breakpoints cannot be inserted or removed. */
2655 return 0;
2656
2657 /* The type of none suggests that owner is actually deleted.
2658 This should not ever happen. */
35df4500 2659 gdb_assert (bl->owner->type != bp_none);
6c95b8df
PA
2660
2661 old_chain = save_current_space_and_thread ();
2662
35df4500 2663 switch_to_program_space_and_thread (bl->pspace);
6c95b8df 2664
35df4500 2665 ret = remove_breakpoint_1 (bl, is);
6c95b8df
PA
2666
2667 do_cleanups (old_chain);
2668 return ret;
2669}
2670
c906108c
SS
2671/* Clear the "inserted" flag in all breakpoints. */
2672
25b22b0a 2673void
fba45db2 2674mark_breakpoints_out (void)
c906108c 2675{
35df4500 2676 struct bp_location *bl, **blp_tmp;
c906108c 2677
35df4500
TJB
2678 ALL_BP_LOCATIONS (bl, blp_tmp)
2679 if (bl->pspace == current_program_space)
2680 bl->inserted = 0;
c906108c
SS
2681}
2682
53a5351d
JM
2683/* Clear the "inserted" flag in all breakpoints and delete any
2684 breakpoints which should go away between runs of the program.
c906108c
SS
2685
2686 Plus other such housekeeping that has to be done for breakpoints
2687 between runs.
2688
53a5351d
JM
2689 Note: this function gets called at the end of a run (by
2690 generic_mourn_inferior) and when a run begins (by
4a64f543 2691 init_wait_for_inferior). */
c906108c
SS
2692
2693
2694
2695void
fba45db2 2696breakpoint_init_inferior (enum inf_context context)
c906108c 2697{
35df4500
TJB
2698 struct breakpoint *b, *b_tmp;
2699 struct bp_location *bl, **blp_tmp;
1c5cfe86 2700 int ix;
6c95b8df 2701 struct program_space *pspace = current_program_space;
c906108c 2702
50c71eaf
PA
2703 /* If breakpoint locations are shared across processes, then there's
2704 nothing to do. */
2567c7d9 2705 if (gdbarch_has_global_breakpoints (target_gdbarch))
50c71eaf
PA
2706 return;
2707
35df4500 2708 ALL_BP_LOCATIONS (bl, blp_tmp)
6c95b8df 2709 {
35df4500
TJB
2710 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
2711 if (bl->pspace == pspace
2712 && bl->owner->enable_state != bp_permanent)
2713 bl->inserted = 0;
6c95b8df 2714 }
075f6582 2715
35df4500 2716 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 2717 {
6c95b8df
PA
2718 if (b->loc && b->loc->pspace != pspace)
2719 continue;
2720
c5aa993b
JM
2721 switch (b->type)
2722 {
2723 case bp_call_dummy:
c906108c 2724
c5aa993b 2725 /* If the call dummy breakpoint is at the entry point it will
ab92d69b
PA
2726 cause problems when the inferior is rerun, so we better get
2727 rid of it. */
2728
2729 case bp_watchpoint_scope:
2730
2731 /* Also get rid of scope breakpoints. */
2732
2733 case bp_shlib_event:
2734
2735 /* Also remove solib event breakpoints. Their addresses may
2736 have changed since the last time we ran the program.
2737 Actually we may now be debugging against different target;
2738 and so the solib backend that installed this breakpoint may
2739 not be used in by the target. E.g.,
2740
2741 (gdb) file prog-linux
2742 (gdb) run # native linux target
2743 ...
2744 (gdb) kill
2745 (gdb) file prog-win.exe
2746 (gdb) tar rem :9999 # remote Windows gdbserver.
2747 */
c906108c 2748
c5aa993b
JM
2749 delete_breakpoint (b);
2750 break;
c906108c 2751
c5aa993b
JM
2752 case bp_watchpoint:
2753 case bp_hardware_watchpoint:
2754 case bp_read_watchpoint:
2755 case bp_access_watchpoint:
c906108c 2756
c5aa993b
JM
2757 /* Likewise for watchpoints on local expressions. */
2758 if (b->exp_valid_block != NULL)
2759 delete_breakpoint (b);
967af18d 2760 else if (context == inf_starting)
c860120c 2761 {
4a64f543
MS
2762 /* Reset val field to force reread of starting value in
2763 insert_breakpoints. */
c860120c
PM
2764 if (b->val)
2765 value_free (b->val);
2766 b->val = NULL;
fa4727a6 2767 b->val_valid = 0;
c860120c 2768 }
c5aa993b
JM
2769 break;
2770 default:
c5aa993b
JM
2771 break;
2772 }
2773 }
1c5cfe86
PA
2774
2775 /* Get rid of the moribund locations. */
35df4500
TJB
2776 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
2777 decref_bp_location (&bl);
1c5cfe86 2778 VEC_free (bp_location_p, moribund_locations);
c906108c
SS
2779}
2780
6c95b8df
PA
2781/* These functions concern about actual breakpoints inserted in the
2782 target --- to e.g. check if we need to do decr_pc adjustment or if
2783 we need to hop over the bkpt --- so we check for address space
2784 match, not program space. */
2785
c2c6d25f
JM
2786/* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
2787 exists at PC. It returns ordinary_breakpoint_here if it's an
2788 ordinary breakpoint, or permanent_breakpoint_here if it's a
2789 permanent breakpoint.
2790 - When continuing from a location with an ordinary breakpoint, we
2791 actually single step once before calling insert_breakpoints.
2792 - When continuing from a localion with a permanent breakpoint, we
2793 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
2794 the target, to advance the PC past the breakpoint. */
c906108c 2795
c2c6d25f 2796enum breakpoint_here
6c95b8df 2797breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
c906108c 2798{
35df4500 2799 struct bp_location *bl, **blp_tmp;
c2c6d25f 2800 int any_breakpoint_here = 0;
c906108c 2801
35df4500 2802 ALL_BP_LOCATIONS (bl, blp_tmp)
075f6582 2803 {
35df4500
TJB
2804 if (bl->loc_type != bp_loc_software_breakpoint
2805 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
2806 continue;
2807
f1310107 2808 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
35df4500
TJB
2809 if ((breakpoint_enabled (bl->owner)
2810 || bl->owner->enable_state == bp_permanent)
f1310107 2811 && breakpoint_location_address_match (bl, aspace, pc))
075f6582
DJ
2812 {
2813 if (overlay_debugging
35df4500
TJB
2814 && section_is_overlay (bl->section)
2815 && !section_is_mapped (bl->section))
075f6582 2816 continue; /* unmapped overlay -- can't be a match */
35df4500 2817 else if (bl->owner->enable_state == bp_permanent)
075f6582
DJ
2818 return permanent_breakpoint_here;
2819 else
2820 any_breakpoint_here = 1;
2821 }
2822 }
c906108c 2823
c2c6d25f 2824 return any_breakpoint_here ? ordinary_breakpoint_here : 0;
c906108c
SS
2825}
2826
1c5cfe86
PA
2827/* Return true if there's a moribund breakpoint at PC. */
2828
2829int
6c95b8df 2830moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
1c5cfe86
PA
2831{
2832 struct bp_location *loc;
2833 int ix;
2834
2835 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
f1310107 2836 if (breakpoint_location_address_match (loc, aspace, pc))
1c5cfe86
PA
2837 return 1;
2838
2839 return 0;
2840}
c2c6d25f 2841
c36b740a 2842/* Returns non-zero if there's a breakpoint inserted at PC, which is
4a64f543
MS
2843 inserted using regular breakpoint_chain / bp_location array
2844 mechanism. This does not check for single-step breakpoints, which
2845 are inserted and removed using direct target manipulation. */
c906108c
SS
2846
2847int
4a64f543
MS
2848regular_breakpoint_inserted_here_p (struct address_space *aspace,
2849 CORE_ADDR pc)
c906108c 2850{
35df4500 2851 struct bp_location *bl, **blp_tmp;
c906108c 2852
35df4500 2853 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 2854 {
35df4500
TJB
2855 if (bl->loc_type != bp_loc_software_breakpoint
2856 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
2857 continue;
2858
35df4500 2859 if (bl->inserted
f1310107 2860 && breakpoint_location_address_match (bl, aspace, pc))
075f6582
DJ
2861 {
2862 if (overlay_debugging
35df4500
TJB
2863 && section_is_overlay (bl->section)
2864 && !section_is_mapped (bl->section))
075f6582
DJ
2865 continue; /* unmapped overlay -- can't be a match */
2866 else
2867 return 1;
2868 }
c5aa993b 2869 }
c36b740a
VP
2870 return 0;
2871}
2872
2873/* Returns non-zero iff there's either regular breakpoint
2874 or a single step breakpoint inserted at PC. */
2875
2876int
6c95b8df 2877breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
c36b740a 2878{
6c95b8df 2879 if (regular_breakpoint_inserted_here_p (aspace, pc))
c36b740a 2880 return 1;
c906108c 2881
6c95b8df 2882 if (single_step_breakpoint_inserted_here_p (aspace, pc))
1aafd4da
UW
2883 return 1;
2884
c906108c
SS
2885 return 0;
2886}
2887
4fa8626c
DJ
2888/* This function returns non-zero iff there is a software breakpoint
2889 inserted at PC. */
2890
2891int
3e43a32a
MS
2892software_breakpoint_inserted_here_p (struct address_space *aspace,
2893 CORE_ADDR pc)
4fa8626c 2894{
35df4500 2895 struct bp_location *bl, **blp_tmp;
4fa8626c 2896
35df4500 2897 ALL_BP_LOCATIONS (bl, blp_tmp)
4fa8626c 2898 {
35df4500 2899 if (bl->loc_type != bp_loc_software_breakpoint)
4fa8626c
DJ
2900 continue;
2901
35df4500
TJB
2902 if (bl->inserted
2903 && breakpoint_address_match (bl->pspace->aspace, bl->address,
6c95b8df 2904 aspace, pc))
4fa8626c
DJ
2905 {
2906 if (overlay_debugging
35df4500
TJB
2907 && section_is_overlay (bl->section)
2908 && !section_is_mapped (bl->section))
4fa8626c
DJ
2909 continue; /* unmapped overlay -- can't be a match */
2910 else
2911 return 1;
2912 }
2913 }
2914
1aafd4da 2915 /* Also check for software single-step breakpoints. */
6c95b8df 2916 if (single_step_breakpoint_inserted_here_p (aspace, pc))
1aafd4da
UW
2917 return 1;
2918
4fa8626c
DJ
2919 return 0;
2920}
2921
9093389c
PA
2922int
2923hardware_watchpoint_inserted_in_range (struct address_space *aspace,
2924 CORE_ADDR addr, ULONGEST len)
2925{
2926 struct breakpoint *bpt;
2927
2928 ALL_BREAKPOINTS (bpt)
2929 {
2930 struct bp_location *loc;
2931
2932 if (bpt->type != bp_hardware_watchpoint
2933 && bpt->type != bp_access_watchpoint)
2934 continue;
2935
2936 if (!breakpoint_enabled (bpt))
2937 continue;
2938
2939 for (loc = bpt->loc; loc; loc = loc->next)
2940 if (loc->pspace->aspace == aspace && loc->inserted)
2941 {
2942 CORE_ADDR l, h;
2943
2944 /* Check for intersection. */
2945 l = max (loc->address, addr);
2946 h = min (loc->address + loc->length, addr + len);
2947 if (l < h)
2948 return 1;
2949 }
2950 }
2951 return 0;
2952}
2953
075f6582
DJ
2954/* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
2955 PC is valid for process/thread PTID. */
c906108c
SS
2956
2957int
6c95b8df
PA
2958breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
2959 ptid_t ptid)
c906108c 2960{
35df4500 2961 struct bp_location *bl, **blp_tmp;
4a306c9a 2962 /* The thread and task IDs associated to PTID, computed lazily. */
a6f1cd96 2963 int thread = -1;
4a306c9a 2964 int task = 0;
a6f1cd96 2965
35df4500 2966 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 2967 {
35df4500
TJB
2968 if (bl->loc_type != bp_loc_software_breakpoint
2969 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
2970 continue;
2971
35df4500
TJB
2972 /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL. */
2973 if (!breakpoint_enabled (bl->owner)
2974 && bl->owner->enable_state != bp_permanent)
a6f1cd96
JB
2975 continue;
2976
f1310107 2977 if (!breakpoint_location_address_match (bl, aspace, pc))
a6f1cd96
JB
2978 continue;
2979
35df4500 2980 if (bl->owner->thread != -1)
075f6582 2981 {
a6f1cd96
JB
2982 /* This is a thread-specific breakpoint. Check that ptid
2983 matches that thread. If thread hasn't been computed yet,
2984 it is now time to do so. */
2985 if (thread == -1)
2986 thread = pid_to_thread_id (ptid);
35df4500 2987 if (bl->owner->thread != thread)
a6f1cd96 2988 continue;
075f6582 2989 }
a6f1cd96 2990
35df4500 2991 if (bl->owner->task != 0)
4a306c9a
JB
2992 {
2993 /* This is a task-specific breakpoint. Check that ptid
2994 matches that task. If task hasn't been computed yet,
2995 it is now time to do so. */
2996 if (task == 0)
2997 task = ada_get_task_number (ptid);
35df4500 2998 if (bl->owner->task != task)
4a306c9a
JB
2999 continue;
3000 }
3001
a6f1cd96 3002 if (overlay_debugging
35df4500
TJB
3003 && section_is_overlay (bl->section)
3004 && !section_is_mapped (bl->section))
a6f1cd96
JB
3005 continue; /* unmapped overlay -- can't be a match */
3006
3007 return 1;
c5aa993b 3008 }
c906108c
SS
3009
3010 return 0;
3011}
c906108c 3012\f
c5aa993b 3013
c906108c
SS
3014/* bpstat stuff. External routines' interfaces are documented
3015 in breakpoint.h. */
3016
3017int
fba45db2 3018ep_is_catchpoint (struct breakpoint *ep)
c906108c 3019{
533be4dd 3020 return (ep->type == bp_catchpoint);
c906108c
SS
3021}
3022
f431efe5
PA
3023/* Frees any storage that is part of a bpstat. Does not walk the
3024 'next' chain. */
3025
3026static void
198757a8
VP
3027bpstat_free (bpstat bs)
3028{
3029 if (bs->old_val != NULL)
3030 value_free (bs->old_val);
9add0f1b 3031 decref_counted_command_line (&bs->commands);
f431efe5 3032 decref_bp_location (&bs->bp_location_at);
198757a8
VP
3033 xfree (bs);
3034}
3035
c906108c
SS
3036/* Clear a bpstat so that it says we are not at any breakpoint.
3037 Also free any storage that is part of a bpstat. */
3038
3039void
fba45db2 3040bpstat_clear (bpstat *bsp)
c906108c
SS
3041{
3042 bpstat p;
3043 bpstat q;
3044
3045 if (bsp == 0)
3046 return;
3047 p = *bsp;
3048 while (p != NULL)
3049 {
3050 q = p->next;
198757a8 3051 bpstat_free (p);
c906108c
SS
3052 p = q;
3053 }
3054 *bsp = NULL;
3055}
3056
3057/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
3058 is part of the bpstat is copied as well. */
3059
3060bpstat
fba45db2 3061bpstat_copy (bpstat bs)
c906108c
SS
3062{
3063 bpstat p = NULL;
3064 bpstat tmp;
3065 bpstat retval = NULL;
3066
3067 if (bs == NULL)
3068 return bs;
3069
3070 for (; bs != NULL; bs = bs->next)
3071 {
3072 tmp = (bpstat) xmalloc (sizeof (*tmp));
3073 memcpy (tmp, bs, sizeof (*tmp));
9add0f1b 3074 incref_counted_command_line (tmp->commands);
f431efe5 3075 incref_bp_location (tmp->bp_location_at);
31cc81e9 3076 if (bs->old_val != NULL)
3c3185ac
JK
3077 {
3078 tmp->old_val = value_copy (bs->old_val);
3079 release_value (tmp->old_val);
3080 }
31cc81e9 3081
c906108c
SS
3082 if (p == NULL)
3083 /* This is the first thing in the chain. */
3084 retval = tmp;
3085 else
3086 p->next = tmp;
3087 p = tmp;
3088 }
3089 p->next = NULL;
3090 return retval;
3091}
3092
4a64f543 3093/* Find the bpstat associated with this breakpoint. */
c906108c
SS
3094
3095bpstat
fba45db2 3096bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
c906108c 3097{
c5aa993b
JM
3098 if (bsp == NULL)
3099 return NULL;
c906108c 3100
c5aa993b
JM
3101 for (; bsp != NULL; bsp = bsp->next)
3102 {
f431efe5 3103 if (bsp->breakpoint_at == breakpoint)
c5aa993b
JM
3104 return bsp;
3105 }
c906108c
SS
3106 return NULL;
3107}
3108
4a64f543
MS
3109/* Put in *NUM the breakpoint number of the first breakpoint we are
3110 stopped at. *BSP upon return is a bpstat which points to the
3111 remaining breakpoints stopped at (but which is not guaranteed to be
3112 good for anything but further calls to bpstat_num).
3113
8671a17b
PA
3114 Return 0 if passed a bpstat which does not indicate any breakpoints.
3115 Return -1 if stopped at a breakpoint that has been deleted since
3116 we set it.
3117 Return 1 otherwise. */
c906108c
SS
3118
3119int
8671a17b 3120bpstat_num (bpstat *bsp, int *num)
c906108c
SS
3121{
3122 struct breakpoint *b;
3123
3124 if ((*bsp) == NULL)
3125 return 0; /* No more breakpoint values */
8671a17b 3126
4a64f543
MS
3127 /* We assume we'll never have several bpstats that correspond to a
3128 single breakpoint -- otherwise, this function might return the
3129 same number more than once and this will look ugly. */
f431efe5 3130 b = (*bsp)->breakpoint_at;
8671a17b
PA
3131 *bsp = (*bsp)->next;
3132 if (b == NULL)
3133 return -1; /* breakpoint that's been deleted since */
3134
3135 *num = b->number; /* We have its number */
3136 return 1;
c906108c
SS
3137}
3138
3139/* Modify BS so that the actions will not be performed. */
3140
3141void
fba45db2 3142bpstat_clear_actions (bpstat bs)
c906108c
SS
3143{
3144 for (; bs != NULL; bs = bs->next)
3145 {
9add0f1b 3146 decref_counted_command_line (&bs->commands);
dde2d684 3147 bs->commands_left = NULL;
c906108c
SS
3148 if (bs->old_val != NULL)
3149 {
3150 value_free (bs->old_val);
3151 bs->old_val = NULL;
3152 }
3153 }
3154}
3155
f3b1572e
PA
3156/* Called when a command is about to proceed the inferior. */
3157
3158static void
3159breakpoint_about_to_proceed (void)
3160{
3161 if (!ptid_equal (inferior_ptid, null_ptid))
3162 {
3163 struct thread_info *tp = inferior_thread ();
3164
3165 /* Allow inferior function calls in breakpoint commands to not
3166 interrupt the command list. When the call finishes
3167 successfully, the inferior will be standing at the same
3168 breakpoint as if nothing happened. */
16c381f0 3169 if (tp->control.in_infcall)
f3b1572e
PA
3170 return;
3171 }
3172
3173 breakpoint_proceeded = 1;
3174}
3175
4a64f543
MS
3176/* Stub for cleaning up our state if we error-out of a breakpoint
3177 command. */
c906108c 3178static void
4efb68b1 3179cleanup_executing_breakpoints (void *ignore)
c906108c
SS
3180{
3181 executing_breakpoint_commands = 0;
3182}
3183
4a64f543
MS
3184/* Execute all the commands associated with all the breakpoints at
3185 this location. Any of these commands could cause the process to
3186 proceed beyond this point, etc. We look out for such changes by
3187 checking the global "breakpoint_proceeded" after each command.
c906108c 3188
347bddb7
PA
3189 Returns true if a breakpoint command resumed the inferior. In that
3190 case, it is the caller's responsibility to recall it again with the
3191 bpstat of the current thread. */
3192
3193static int
3194bpstat_do_actions_1 (bpstat *bsp)
c906108c
SS
3195{
3196 bpstat bs;
3197 struct cleanup *old_chain;
347bddb7 3198 int again = 0;
c906108c
SS
3199
3200 /* Avoid endless recursion if a `source' command is contained
3201 in bs->commands. */
3202 if (executing_breakpoint_commands)
347bddb7 3203 return 0;
c906108c
SS
3204
3205 executing_breakpoint_commands = 1;
3206 old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
3207
4a64f543 3208 /* This pointer will iterate over the list of bpstat's. */
c906108c
SS
3209 bs = *bsp;
3210
3211 breakpoint_proceeded = 0;
3212 for (; bs != NULL; bs = bs->next)
3213 {
9add0f1b 3214 struct counted_command_line *ccmd;
6c50ab1c
JB
3215 struct command_line *cmd;
3216 struct cleanup *this_cmd_tree_chain;
3217
3218 /* Take ownership of the BSP's command tree, if it has one.
3219
3220 The command tree could legitimately contain commands like
3221 'step' and 'next', which call clear_proceed_status, which
3222 frees stop_bpstat's command tree. To make sure this doesn't
3223 free the tree we're executing out from under us, we need to
3224 take ownership of the tree ourselves. Since a given bpstat's
3225 commands are only executed once, we don't need to copy it; we
3226 can clear the pointer in the bpstat, and make sure we free
3227 the tree when we're done. */
9add0f1b
TT
3228 ccmd = bs->commands;
3229 bs->commands = NULL;
3230 this_cmd_tree_chain
3231 = make_cleanup_decref_counted_command_line (&ccmd);
3232 cmd = bs->commands_left;
3233 bs->commands_left = NULL;
6c50ab1c 3234
c906108c
SS
3235 while (cmd != NULL)
3236 {
3237 execute_control_command (cmd);
3238
3239 if (breakpoint_proceeded)
3240 break;
3241 else
3242 cmd = cmd->next;
3243 }
6c50ab1c
JB
3244
3245 /* We can free this command tree now. */
3246 do_cleanups (this_cmd_tree_chain);
3247
c906108c 3248 if (breakpoint_proceeded)
32c1e744
VP
3249 {
3250 if (target_can_async_p ())
347bddb7
PA
3251 /* If we are in async mode, then the target might be still
3252 running, not stopped at any breakpoint, so nothing for
3253 us to do here -- just return to the event loop. */
3254 ;
32c1e744
VP
3255 else
3256 /* In sync mode, when execute_control_command returns
3257 we're already standing on the next breakpoint.
347bddb7
PA
3258 Breakpoint commands for that stop were not run, since
3259 execute_command does not run breakpoint commands --
3260 only command_line_handler does, but that one is not
3261 involved in execution of breakpoint commands. So, we
3262 can now execute breakpoint commands. It should be
3263 noted that making execute_command do bpstat actions is
3264 not an option -- in this case we'll have recursive
3265 invocation of bpstat for each breakpoint with a
3266 command, and can easily blow up GDB stack. Instead, we
3267 return true, which will trigger the caller to recall us
3268 with the new stop_bpstat. */
3269 again = 1;
3270 break;
32c1e744 3271 }
c906108c 3272 }
c2b8ed2c 3273 do_cleanups (old_chain);
347bddb7
PA
3274 return again;
3275}
3276
3277void
3278bpstat_do_actions (void)
3279{
3280 /* Do any commands attached to breakpoint we are stopped at. */
3281 while (!ptid_equal (inferior_ptid, null_ptid)
3282 && target_has_execution
3283 && !is_exited (inferior_ptid)
3284 && !is_executing (inferior_ptid))
3285 /* Since in sync mode, bpstat_do_actions may resume the inferior,
3286 and only return when it is stopped at the next breakpoint, we
3287 keep doing breakpoint actions until it returns false to
3288 indicate the inferior was not resumed. */
16c381f0 3289 if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
347bddb7 3290 break;
c906108c
SS
3291}
3292
fa4727a6
DJ
3293/* Print out the (old or new) value associated with a watchpoint. */
3294
3295static void
3296watchpoint_value_print (struct value *val, struct ui_file *stream)
3297{
3298 if (val == NULL)
3299 fprintf_unfiltered (stream, _("<unreadable>"));
3300 else
79a45b7d
TT
3301 {
3302 struct value_print_options opts;
3303 get_user_print_options (&opts);
3304 value_print (val, stream, &opts);
3305 }
fa4727a6
DJ
3306}
3307
e514a9d6 3308/* This is the normal print function for a bpstat. In the future,
c906108c 3309 much of this logic could (should?) be moved to bpstat_stop_status,
e514a9d6
JM
3310 by having it set different print_it values.
3311
3312 Current scheme: When we stop, bpstat_print() is called. It loops
3313 through the bpstat list of things causing this stop, calling the
4a64f543 3314 print_bp_stop_message function on each one. The behavior of the
e514a9d6 3315 print_bp_stop_message function depends on the print_it field of
4a64f543 3316 bpstat. If such field so indicates, call this function here.
e514a9d6
JM
3317
3318 Return values from this routine (ultimately used by bpstat_print()
3319 and normal_stop() to decide what to do):
3320 PRINT_NOTHING: Means we already printed all we needed to print,
3321 don't print anything else.
3322 PRINT_SRC_ONLY: Means we printed something, and we do *not* desire
3323 that something to be followed by a location.
3324 PRINT_SCR_AND_LOC: Means we printed something, and we *do* desire
3325 that something to be followed by a location.
3326 PRINT_UNKNOWN: Means we printed nothing or we need to do some more
3327 analysis. */
c906108c 3328
917317f4 3329static enum print_stop_action
fba45db2 3330print_it_typical (bpstat bs)
c906108c 3331{
f7545552 3332 struct cleanup *old_chain;
4f8d1dc6 3333 struct breakpoint *b;
89f9893c 3334 const struct bp_location *bl;
8b93c638 3335 struct ui_stream *stb;
f7545552
TT
3336 int bp_temp = 0;
3337 enum print_stop_action result;
3338
f431efe5
PA
3339 gdb_assert (bs->bp_location_at != NULL);
3340
3341 bl = bs->bp_location_at;
3342 b = bs->breakpoint_at;
c906108c 3343
f7545552
TT
3344 stb = ui_out_stream_new (uiout);
3345 old_chain = make_cleanup_ui_out_stream_delete (stb);
3346
4f8d1dc6 3347 switch (b->type)
c906108c 3348 {
e514a9d6
JM
3349 case bp_breakpoint:
3350 case bp_hardware_breakpoint:
f431efe5 3351 bp_temp = b->disposition == disp_del;
0d381245
VP
3352 if (bl->address != bl->requested_address)
3353 breakpoint_adjustment_warning (bl->requested_address,
3354 bl->address,
4f8d1dc6
VP
3355 b->number, 1);
3356 annotate_breakpoint (b->number);
2cec12e5
AR
3357 if (bp_temp)
3358 ui_out_text (uiout, "\nTemporary breakpoint ");
3359 else
3360 ui_out_text (uiout, "\nBreakpoint ");
9dc5e2a9 3361 if (ui_out_is_mi_like_p (uiout))
2cec12e5
AR
3362 {
3363 ui_out_field_string (uiout, "reason",
3364 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
3365 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
3366 }
4f8d1dc6 3367 ui_out_field_int (uiout, "bkptno", b->number);
8b93c638 3368 ui_out_text (uiout, ", ");
f7545552 3369 result = PRINT_SRC_AND_LOC;
e514a9d6
JM
3370 break;
3371
3372 case bp_shlib_event:
917317f4
JM
3373 /* Did we stop because the user set the stop_on_solib_events
3374 variable? (If so, we report this as a generic, "Stopped due
3375 to shlib event" message.) */
a3f17187 3376 printf_filtered (_("Stopped due to shared library event\n"));
f7545552 3377 result = PRINT_NOTHING;
e514a9d6
JM
3378 break;
3379
c4093a6a 3380 case bp_thread_event:
4a64f543 3381 /* Not sure how we will get here.
c4093a6a 3382 GDB should not stop for these breakpoints. */
a3f17187 3383 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
f7545552 3384 result = PRINT_NOTHING;
c4093a6a
JM
3385 break;
3386
1900040c 3387 case bp_overlay_event:
4a64f543 3388 /* By analogy with the thread event, GDB should not stop for these. */
a3f17187 3389 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
f7545552 3390 result = PRINT_NOTHING;
1900040c
MS
3391 break;
3392
0fd8e87f
UW
3393 case bp_longjmp_master:
3394 /* These should never be enabled. */
3395 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
3396 result = PRINT_NOTHING;
3397 break;
3398
aa7d318d
TT
3399 case bp_std_terminate_master:
3400 /* These should never be enabled. */
3e43a32a
MS
3401 printf_filtered (_("std::terminate Master Breakpoint: "
3402 "gdb should not stop!\n"));
aa7d318d
TT
3403 result = PRINT_NOTHING;
3404 break;
3405
186c406b
TT
3406 case bp_exception_master:
3407 /* These should never be enabled. */
3e43a32a
MS
3408 printf_filtered (_("Exception Master Breakpoint: "
3409 "gdb should not stop!\n"));
186c406b
TT
3410 result = PRINT_NOTHING;
3411 break;
3412
e514a9d6
JM
3413 case bp_watchpoint:
3414 case bp_hardware_watchpoint:
fa4727a6
DJ
3415 annotate_watchpoint (b->number);
3416 if (ui_out_is_mi_like_p (uiout))
3417 ui_out_field_string
3418 (uiout, "reason",
3419 async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
3420 mention (b);
f7545552 3421 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
fa4727a6
DJ
3422 ui_out_text (uiout, "\nOld value = ");
3423 watchpoint_value_print (bs->old_val, stb->stream);
3424 ui_out_field_stream (uiout, "old", stb);
3425 ui_out_text (uiout, "\nNew value = ");
3426 watchpoint_value_print (b->val, stb->stream);
3427 ui_out_field_stream (uiout, "new", stb);
fa4727a6 3428 ui_out_text (uiout, "\n");
e514a9d6 3429 /* More than one watchpoint may have been triggered. */
f7545552 3430 result = PRINT_UNKNOWN;
e514a9d6
JM
3431 break;
3432
3433 case bp_read_watchpoint:
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_READ_WATCHPOINT_TRIGGER));
4f8d1dc6 3438 mention (b);
f7545552 3439 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
8b93c638 3440 ui_out_text (uiout, "\nValue = ");
fa4727a6 3441 watchpoint_value_print (b->val, stb->stream);
8b93c638 3442 ui_out_field_stream (uiout, "value", stb);
8b93c638 3443 ui_out_text (uiout, "\n");
f7545552 3444 result = PRINT_UNKNOWN;
e514a9d6
JM
3445 break;
3446
3447 case bp_access_watchpoint:
fa4727a6 3448 if (bs->old_val != NULL)
8b93c638 3449 {
4f8d1dc6 3450 annotate_watchpoint (b->number);
9dc5e2a9 3451 if (ui_out_is_mi_like_p (uiout))
034dad6f
BR
3452 ui_out_field_string
3453 (uiout, "reason",
3454 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
4f8d1dc6 3455 mention (b);
f7545552 3456 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
8b93c638 3457 ui_out_text (uiout, "\nOld value = ");
fa4727a6 3458 watchpoint_value_print (bs->old_val, stb->stream);
8b93c638 3459 ui_out_field_stream (uiout, "old", stb);
8b93c638
JM
3460 ui_out_text (uiout, "\nNew value = ");
3461 }
3462 else
3463 {
4f8d1dc6 3464 mention (b);
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_ACCESS_WATCHPOINT_TRIGGER));
f7545552 3469 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
8b93c638
JM
3470 ui_out_text (uiout, "\nValue = ");
3471 }
fa4727a6 3472 watchpoint_value_print (b->val, stb->stream);
8b93c638 3473 ui_out_field_stream (uiout, "new", stb);
8b93c638 3474 ui_out_text (uiout, "\n");
f7545552 3475 result = PRINT_UNKNOWN;
e514a9d6 3476 break;
4ce44c66 3477
e514a9d6 3478 /* Fall through, we don't deal with these types of breakpoints
4a64f543 3479 here. */
e514a9d6 3480
11cf8741 3481 case bp_finish:
9dc5e2a9 3482 if (ui_out_is_mi_like_p (uiout))
034dad6f
BR
3483 ui_out_field_string
3484 (uiout, "reason",
3485 async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
f7545552 3486 result = PRINT_UNKNOWN;
8b93c638
JM
3487 break;
3488
e514a9d6 3489 case bp_until:
9dc5e2a9 3490 if (ui_out_is_mi_like_p (uiout))
1fbc2a49
NR
3491 ui_out_field_string
3492 (uiout, "reason",
3493 async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
f7545552 3494 result = PRINT_UNKNOWN;
8b93c638
JM
3495 break;
3496
c2d11a7d 3497 case bp_none:
e514a9d6
JM
3498 case bp_longjmp:
3499 case bp_longjmp_resume:
186c406b
TT
3500 case bp_exception:
3501 case bp_exception_resume:
e514a9d6 3502 case bp_step_resume:
e514a9d6
JM
3503 case bp_watchpoint_scope:
3504 case bp_call_dummy:
aa7d318d 3505 case bp_std_terminate:
1042e4c0 3506 case bp_tracepoint:
7a697b8d 3507 case bp_fast_tracepoint:
4efc6507 3508 case bp_jit_event:
0e30163f
JK
3509 case bp_gnu_ifunc_resolver:
3510 case bp_gnu_ifunc_resolver_return:
e514a9d6 3511 default:
f7545552
TT
3512 result = PRINT_UNKNOWN;
3513 break;
e514a9d6 3514 }
f7545552
TT
3515
3516 do_cleanups (old_chain);
3517 return result;
e514a9d6
JM
3518}
3519
3520/* Generic routine for printing messages indicating why we
4a64f543 3521 stopped. The behavior of this function depends on the value
e514a9d6
JM
3522 'print_it' in the bpstat structure. Under some circumstances we
3523 may decide not to print anything here and delegate the task to
4a64f543 3524 normal_stop(). */
e514a9d6
JM
3525
3526static enum print_stop_action
3527print_bp_stop_message (bpstat bs)
3528{
3529 switch (bs->print_it)
3530 {
3531 case print_it_noop:
4a64f543 3532 /* Nothing should be printed for this bpstat entry. */
e514a9d6
JM
3533 return PRINT_UNKNOWN;
3534 break;
3535
3536 case print_it_done:
3537 /* We still want to print the frame, but we already printed the
4a64f543 3538 relevant messages. */
e514a9d6
JM
3539 return PRINT_SRC_AND_LOC;
3540 break;
3541
3542 case print_it_normal:
4f8d1dc6 3543 {
f431efe5
PA
3544 struct breakpoint *b = bs->breakpoint_at;
3545
1a6a67de
TJB
3546 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
3547 which has since been deleted. */
3548 if (b == NULL)
3549 return PRINT_UNKNOWN;
3550
4f8d1dc6
VP
3551 /* Normal case. Call the breakpoint's print_it method, or
3552 print_it_typical. */
1a6a67de 3553 if (b->ops != NULL && b->ops->print_it != NULL)
4f8d1dc6
VP
3554 return b->ops->print_it (b);
3555 else
3556 return print_it_typical (bs);
3557 }
3558 break;
3086aeae 3559
e514a9d6 3560 default:
8e65ff28 3561 internal_error (__FILE__, __LINE__,
e2e0b3e5 3562 _("print_bp_stop_message: unrecognized enum value"));
e514a9d6 3563 break;
c906108c 3564 }
c906108c
SS
3565}
3566
e514a9d6
JM
3567/* Print a message indicating what happened. This is called from
3568 normal_stop(). The input to this routine is the head of the bpstat
3569 list - a list of the eventpoints that caused this stop. This
3570 routine calls the generic print routine for printing a message
3571 about reasons for stopping. This will print (for example) the
3572 "Breakpoint n," part of the output. The return value of this
3573 routine is one of:
c906108c 3574
4a64f543 3575 PRINT_UNKNOWN: Means we printed nothing.
917317f4 3576 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4a64f543 3577 code to print the location. An example is
c5aa993b
JM
3578 "Breakpoint 1, " which should be followed by
3579 the location.
917317f4 3580 PRINT_SRC_ONLY: Means we printed something, but there is no need
c5aa993b
JM
3581 to also print the location part of the message.
3582 An example is the catch/throw messages, which
4a64f543 3583 don't require a location appended to the end.
917317f4 3584 PRINT_NOTHING: We have done some printing and we don't need any
4a64f543 3585 further info to be printed. */
c906108c 3586
917317f4 3587enum print_stop_action
fba45db2 3588bpstat_print (bpstat bs)
c906108c
SS
3589{
3590 int val;
c5aa993b 3591
c906108c 3592 /* Maybe another breakpoint in the chain caused us to stop.
53a5351d
JM
3593 (Currently all watchpoints go on the bpstat whether hit or not.
3594 That probably could (should) be changed, provided care is taken
c906108c 3595 with respect to bpstat_explains_signal). */
e514a9d6
JM
3596 for (; bs; bs = bs->next)
3597 {
3598 val = print_bp_stop_message (bs);
3599 if (val == PRINT_SRC_ONLY
3600 || val == PRINT_SRC_AND_LOC
3601 || val == PRINT_NOTHING)
3602 return val;
3603 }
c906108c 3604
e514a9d6 3605 /* We reached the end of the chain, or we got a null BS to start
4a64f543 3606 with and nothing was printed. */
917317f4 3607 return PRINT_UNKNOWN;
c906108c
SS
3608}
3609
4a64f543
MS
3610/* Evaluate the expression EXP and return 1 if value is zero. This is
3611 used inside a catch_errors to evaluate the breakpoint condition.
3612 The argument is a "struct expression *" that has been cast to a
3613 "char *" to make it pass through catch_errors. */
c906108c
SS
3614
3615static int
4efb68b1 3616breakpoint_cond_eval (void *exp)
c906108c 3617{
278cd55f 3618 struct value *mark = value_mark ();
c5aa993b 3619 int i = !value_true (evaluate_expression ((struct expression *) exp));
cc59ec59 3620
c906108c
SS
3621 value_free_to_mark (mark);
3622 return i;
3623}
3624
5760d0ab 3625/* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
c906108c
SS
3626
3627static bpstat
5760d0ab 3628bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
c906108c
SS
3629{
3630 bpstat bs;
3631
3632 bs = (bpstat) xmalloc (sizeof (*bs));
5760d0ab
JK
3633 bs->next = NULL;
3634 **bs_link_pointer = bs;
3635 *bs_link_pointer = &bs->next;
f431efe5
PA
3636 bs->breakpoint_at = bl->owner;
3637 bs->bp_location_at = bl;
3638 incref_bp_location (bl);
c906108c
SS
3639 /* If the condition is false, etc., don't do the commands. */
3640 bs->commands = NULL;
9add0f1b 3641 bs->commands_left = NULL;
c906108c
SS
3642 bs->old_val = NULL;
3643 bs->print_it = print_it_normal;
3644 return bs;
3645}
3646\f
d983da9c
DJ
3647/* The target has stopped with waitstatus WS. Check if any hardware
3648 watchpoints have triggered, according to the target. */
3649
3650int
3651watchpoints_triggered (struct target_waitstatus *ws)
3652{
d92524f1 3653 int stopped_by_watchpoint = target_stopped_by_watchpoint ();
d983da9c
DJ
3654 CORE_ADDR addr;
3655 struct breakpoint *b;
3656
3657 if (!stopped_by_watchpoint)
3658 {
3659 /* We were not stopped by a watchpoint. Mark all watchpoints
3660 as not triggered. */
3661 ALL_BREAKPOINTS (b)
cc60f2e3 3662 if (is_hardware_watchpoint (b))
d983da9c
DJ
3663 b->watchpoint_triggered = watch_triggered_no;
3664
3665 return 0;
3666 }
3667
3668 if (!target_stopped_data_address (&current_target, &addr))
3669 {
3670 /* We were stopped by a watchpoint, but we don't know where.
3671 Mark all watchpoints as unknown. */
3672 ALL_BREAKPOINTS (b)
cc60f2e3 3673 if (is_hardware_watchpoint (b))
d983da9c
DJ
3674 b->watchpoint_triggered = watch_triggered_unknown;
3675
3676 return stopped_by_watchpoint;
3677 }
3678
3679 /* The target could report the data address. Mark watchpoints
3680 affected by this data address as triggered, and all others as not
3681 triggered. */
3682
3683 ALL_BREAKPOINTS (b)
cc60f2e3 3684 if (is_hardware_watchpoint (b))
d983da9c 3685 {
a5606eee 3686 struct bp_location *loc;
d983da9c
DJ
3687
3688 b->watchpoint_triggered = watch_triggered_no;
a5606eee
VP
3689 for (loc = b->loc; loc; loc = loc->next)
3690 /* Exact match not required. Within range is
3691 sufficient. */
5009afc5
AS
3692 if (target_watchpoint_addr_within_range (&current_target,
3693 addr, loc->address,
3694 loc->length))
a5606eee
VP
3695 {
3696 b->watchpoint_triggered = watch_triggered_yes;
3697 break;
3698 }
d983da9c
DJ
3699 }
3700
3701 return 1;
3702}
3703
c906108c
SS
3704/* Possible return values for watchpoint_check (this can't be an enum
3705 because of check_errors). */
3706/* The watchpoint has been deleted. */
3707#define WP_DELETED 1
3708/* The value has changed. */
3709#define WP_VALUE_CHANGED 2
3710/* The value has not changed. */
3711#define WP_VALUE_NOT_CHANGED 3
60e1c644
PA
3712/* Ignore this watchpoint, no matter if the value changed or not. */
3713#define WP_IGNORE 4
c906108c
SS
3714
3715#define BP_TEMPFLAG 1
3716#define BP_HARDWAREFLAG 2
3717
4a64f543
MS
3718/* Evaluate watchpoint condition expression and check if its value
3719 changed.
553e4c11
JB
3720
3721 P should be a pointer to struct bpstat, but is defined as a void *
3722 in order for this function to be usable with catch_errors. */
c906108c
SS
3723
3724static int
4efb68b1 3725watchpoint_check (void *p)
c906108c
SS
3726{
3727 bpstat bs = (bpstat) p;
3728 struct breakpoint *b;
3729 struct frame_info *fr;
3730 int within_current_scope;
3731
f431efe5 3732 /* BS is built from an existing struct breakpoint. */
2bdf28a0 3733 gdb_assert (bs->breakpoint_at != NULL);
f431efe5 3734 b = bs->breakpoint_at;
c906108c 3735
d0fb5eae
JK
3736 gdb_assert (is_watchpoint (b));
3737
f6bc2008
PA
3738 /* If this is a local watchpoint, we only want to check if the
3739 watchpoint frame is in scope if the current thread is the thread
3740 that was used to create the watchpoint. */
3741 if (!watchpoint_in_thread_scope (b))
60e1c644 3742 return WP_IGNORE;
f6bc2008 3743
c906108c
SS
3744 if (b->exp_valid_block == NULL)
3745 within_current_scope = 1;
3746 else
3747 {
edb3359d
DJ
3748 struct frame_info *frame = get_current_frame ();
3749 struct gdbarch *frame_arch = get_frame_arch (frame);
3750 CORE_ADDR frame_pc = get_frame_pc (frame);
3751
4a64f543
MS
3752 /* in_function_epilogue_p() returns a non-zero value if we're
3753 still in the function but the stack frame has already been
3754 invalidated. Since we can't rely on the values of local
3755 variables after the stack has been destroyed, we are treating
3756 the watchpoint in that state as `not changed' without further
3757 checking. Don't mark watchpoints as changed if the current
3758 frame is in an epilogue - even if they are in some other
3759 frame, our view of the stack is likely to be wrong and
3760 frame_find_by_id could error out. */
a0f49112 3761 if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
60e1c644 3762 return WP_IGNORE;
a0f49112 3763
101dcfbe 3764 fr = frame_find_by_id (b->watchpoint_frame);
c906108c 3765 within_current_scope = (fr != NULL);
69fbadd5
DJ
3766
3767 /* If we've gotten confused in the unwinder, we might have
3768 returned a frame that can't describe this variable. */
edb3359d
DJ
3769 if (within_current_scope)
3770 {
3771 struct symbol *function;
3772
3773 function = get_frame_function (fr);
3774 if (function == NULL
3775 || !contained_in (b->exp_valid_block,
3776 SYMBOL_BLOCK_VALUE (function)))
3777 within_current_scope = 0;
3778 }
69fbadd5 3779
edb3359d 3780 if (within_current_scope)
c906108c
SS
3781 /* If we end up stopping, the current frame will get selected
3782 in normal_stop. So this call to select_frame won't affect
3783 the user. */
0f7d239c 3784 select_frame (fr);
c906108c 3785 }
c5aa993b 3786
c906108c
SS
3787 if (within_current_scope)
3788 {
4a64f543
MS
3789 /* We use value_{,free_to_}mark because it could be a *long*
3790 time before we return to the command level and call
3791 free_all_values. We can't call free_all_values because we
3792 might be in the middle of evaluating a function call. */
c906108c 3793
0cf6dd15 3794 int pc = 0;
278cd55f 3795 struct value *mark = value_mark ();
fa4727a6
DJ
3796 struct value *new_val;
3797
0cf6dd15 3798 fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
218d2fc6 3799
4a64f543
MS
3800 /* We use value_equal_contents instead of value_equal because
3801 the latter coerces an array to a pointer, thus comparing just
3802 the address of the array instead of its contents. This is
3803 not what we want. */
fa4727a6 3804 if ((b->val != NULL) != (new_val != NULL)
218d2fc6 3805 || (b->val != NULL && !value_equal_contents (b->val, new_val)))
c906108c 3806 {
fa4727a6
DJ
3807 if (new_val != NULL)
3808 {
3809 release_value (new_val);
3810 value_free_to_mark (mark);
3811 }
c906108c
SS
3812 bs->old_val = b->val;
3813 b->val = new_val;
fa4727a6 3814 b->val_valid = 1;
c906108c
SS
3815 return WP_VALUE_CHANGED;
3816 }
3817 else
3818 {
60e1c644 3819 /* Nothing changed. */
c906108c 3820 value_free_to_mark (mark);
c906108c
SS
3821 return WP_VALUE_NOT_CHANGED;
3822 }
3823 }
3824 else
3825 {
3826 /* This seems like the only logical thing to do because
c5aa993b
JM
3827 if we temporarily ignored the watchpoint, then when
3828 we reenter the block in which it is valid it contains
3829 garbage (in the case of a function, it may have two
3830 garbage values, one before and one after the prologue).
3831 So we can't even detect the first assignment to it and
3832 watch after that (since the garbage may or may not equal
3833 the first value assigned). */
4ce44c66
JM
3834 /* We print all the stop information in print_it_typical(), but
3835 in this case, by the time we call print_it_typical() this bp
4a64f543
MS
3836 will be deleted already. So we have no choice but print the
3837 information here. */
9dc5e2a9 3838 if (ui_out_is_mi_like_p (uiout))
034dad6f
BR
3839 ui_out_field_string
3840 (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
8b93c638 3841 ui_out_text (uiout, "\nWatchpoint ");
4f8d1dc6 3842 ui_out_field_int (uiout, "wpnum", b->number);
3e43a32a
MS
3843 ui_out_text (uiout,
3844 " deleted because the program has left the block in\n\
8b93c638 3845which its expression is valid.\n");
4ce44c66 3846
d0fb5eae 3847 watchpoint_del_at_next_stop (b);
c906108c
SS
3848
3849 return WP_DELETED;
3850 }
3851}
3852
18a18393
VP
3853/* Return true if it looks like target has stopped due to hitting
3854 breakpoint location BL. This function does not check if we
3855 should stop, only if BL explains the stop. */
3856static int
6c95b8df
PA
3857bpstat_check_location (const struct bp_location *bl,
3858 struct address_space *aspace, CORE_ADDR bp_addr)
18a18393
VP
3859{
3860 struct breakpoint *b = bl->owner;
3861
2bdf28a0
JK
3862 /* BL is from existing struct breakpoint. */
3863 gdb_assert (b != NULL);
3864
f1310107
TJB
3865 if (b->ops && b->ops->breakpoint_hit)
3866 return b->ops->breakpoint_hit (bl, aspace, bp_addr);
3867
e8595ef6
SS
3868 /* By definition, the inferior does not report stops at
3869 tracepoints. */
d77f58be 3870 if (is_tracepoint (b))
e8595ef6
SS
3871 return 0;
3872
cc60f2e3 3873 if (!is_watchpoint (b)
18a18393 3874 && b->type != bp_hardware_breakpoint
fe798b75 3875 && b->type != bp_catchpoint) /* a non-watchpoint bp */
18a18393 3876 {
6c95b8df
PA
3877 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
3878 aspace, bp_addr))
18a18393
VP
3879 return 0;
3880 if (overlay_debugging /* unmapped overlay section */
35df4500 3881 && section_is_overlay (bl->section)
18a18393
VP
3882 && !section_is_mapped (bl->section))
3883 return 0;
3884 }
cc60f2e3 3885
18a18393
VP
3886 /* Continuable hardware watchpoints are treated as non-existent if the
3887 reason we stopped wasn't a hardware watchpoint (we didn't stop on
3888 some data address). Otherwise gdb won't stop on a break instruction
3889 in the code (not from a breakpoint) when a hardware watchpoint has
3890 been defined. Also skip watchpoints which we know did not trigger
3891 (did not match the data address). */
cc60f2e3
PA
3892
3893 if (is_hardware_watchpoint (b)
18a18393
VP
3894 && b->watchpoint_triggered == watch_triggered_no)
3895 return 0;
f1310107 3896
18a18393
VP
3897 if (b->type == bp_hardware_breakpoint)
3898 {
3899 if (bl->address != bp_addr)
3900 return 0;
3901 if (overlay_debugging /* unmapped overlay section */
35df4500 3902 && section_is_overlay (bl->section)
18a18393
VP
3903 && !section_is_mapped (bl->section))
3904 return 0;
3905 }
ce78b96d 3906
18a18393
VP
3907 return 1;
3908}
3909
3910/* If BS refers to a watchpoint, determine if the watched values
3911 has actually changed, and we should stop. If not, set BS->stop
3912 to 0. */
3913static void
3914bpstat_check_watchpoint (bpstat bs)
3915{
2bdf28a0
JK
3916 const struct bp_location *bl;
3917 struct breakpoint *b;
3918
3919 /* BS is built for existing struct breakpoint. */
f431efe5 3920 bl = bs->bp_location_at;
2bdf28a0 3921 gdb_assert (bl != NULL);
f431efe5 3922 b = bs->breakpoint_at;
2bdf28a0 3923 gdb_assert (b != NULL);
18a18393 3924
cc60f2e3 3925 if (is_watchpoint (b))
18a18393 3926 {
18a18393
VP
3927 int must_check_value = 0;
3928
3929 if (b->type == bp_watchpoint)
3930 /* For a software watchpoint, we must always check the
3931 watched value. */
3932 must_check_value = 1;
3933 else if (b->watchpoint_triggered == watch_triggered_yes)
3934 /* We have a hardware watchpoint (read, write, or access)
3935 and the target earlier reported an address watched by
3936 this watchpoint. */
3937 must_check_value = 1;
3938 else if (b->watchpoint_triggered == watch_triggered_unknown
3939 && b->type == bp_hardware_watchpoint)
3940 /* We were stopped by a hardware watchpoint, but the target could
3941 not report the data address. We must check the watchpoint's
3942 value. Access and read watchpoints are out of luck; without
3943 a data address, we can't figure it out. */
3944 must_check_value = 1;
3945
3946 if (must_check_value)
3947 {
3e43a32a
MS
3948 char *message
3949 = xstrprintf ("Error evaluating expression for watchpoint %d\n",
3950 b->number);
18a18393
VP
3951 struct cleanup *cleanups = make_cleanup (xfree, message);
3952 int e = catch_errors (watchpoint_check, bs, message,
3953 RETURN_MASK_ALL);
3954 do_cleanups (cleanups);
3955 switch (e)
3956 {
3957 case WP_DELETED:
3958 /* We've already printed what needs to be printed. */
3959 bs->print_it = print_it_done;
3960 /* Stop. */
3961 break;
60e1c644
PA
3962 case WP_IGNORE:
3963 bs->print_it = print_it_noop;
3964 bs->stop = 0;
3965 break;
18a18393
VP
3966 case WP_VALUE_CHANGED:
3967 if (b->type == bp_read_watchpoint)
3968 {
85d721b8
PA
3969 /* There are two cases to consider here:
3970
4a64f543 3971 1. We're watching the triggered memory for reads.
85d721b8
PA
3972 In that case, trust the target, and always report
3973 the watchpoint hit to the user. Even though
3974 reads don't cause value changes, the value may
3975 have changed since the last time it was read, and
3976 since we're not trapping writes, we will not see
3977 those, and as such we should ignore our notion of
3978 old value.
3979
4a64f543 3980 2. We're watching the triggered memory for both
85d721b8
PA
3981 reads and writes. There are two ways this may
3982 happen:
3983
4a64f543 3984 2.1. This is a target that can't break on data
85d721b8
PA
3985 reads only, but can break on accesses (reads or
3986 writes), such as e.g., x86. We detect this case
3987 at the time we try to insert read watchpoints.
3988
4a64f543 3989 2.2. Otherwise, the target supports read
85d721b8
PA
3990 watchpoints, but, the user set an access or write
3991 watchpoint watching the same memory as this read
3992 watchpoint.
3993
3994 If we're watching memory writes as well as reads,
3995 ignore watchpoint hits when we find that the
3996 value hasn't changed, as reads don't cause
3997 changes. This still gives false positives when
3998 the program writes the same value to memory as
3999 what there was already in memory (we will confuse
4000 it for a read), but it's much better than
4001 nothing. */
4002
4003 int other_write_watchpoint = 0;
4004
4005 if (bl->watchpoint_type == hw_read)
4006 {
4007 struct breakpoint *other_b;
4008
4009 ALL_BREAKPOINTS (other_b)
4010 if ((other_b->type == bp_hardware_watchpoint
4011 || other_b->type == bp_access_watchpoint)
4012 && (other_b->watchpoint_triggered
4013 == watch_triggered_yes))
4014 {
4015 other_write_watchpoint = 1;
4016 break;
4017 }
4018 }
4019
4020 if (other_write_watchpoint
4021 || bl->watchpoint_type == hw_access)
4022 {
4023 /* We're watching the same memory for writes,
4024 and the value changed since the last time we
4025 updated it, so this trap must be for a write.
4026 Ignore it. */
4027 bs->print_it = print_it_noop;
4028 bs->stop = 0;
4029 }
18a18393
VP
4030 }
4031 break;
4032 case WP_VALUE_NOT_CHANGED:
4033 if (b->type == bp_hardware_watchpoint
4034 || b->type == bp_watchpoint)
4035 {
4036 /* Don't stop: write watchpoints shouldn't fire if
4037 the value hasn't changed. */
4038 bs->print_it = print_it_noop;
4039 bs->stop = 0;
4040 }
4041 /* Stop. */
4042 break;
4043 default:
4044 /* Can't happen. */
4045 case 0:
4046 /* Error from catch_errors. */
4047 printf_filtered (_("Watchpoint %d deleted.\n"), b->number);
d0fb5eae 4048 watchpoint_del_at_next_stop (b);
18a18393
VP
4049 /* We've already printed what needs to be printed. */
4050 bs->print_it = print_it_done;
4051 break;
4052 }
4053 }
4054 else /* must_check_value == 0 */
4055 {
4056 /* This is a case where some watchpoint(s) triggered, but
4057 not at the address of this watchpoint, or else no
4058 watchpoint triggered after all. So don't print
4059 anything for this watchpoint. */
4060 bs->print_it = print_it_noop;
4061 bs->stop = 0;
4062 }
4063 }
4064}
4065
4066
4067/* Check conditions (condition proper, frame, thread and ignore count)
4068 of breakpoint referred to by BS. If we should not stop for this
4069 breakpoint, set BS->stop to 0. */
f431efe5 4070
18a18393
VP
4071static void
4072bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
4073{
4074 int thread_id = pid_to_thread_id (ptid);
2bdf28a0
JK
4075 const struct bp_location *bl;
4076 struct breakpoint *b;
4077
4078 /* BS is built for existing struct breakpoint. */
f431efe5 4079 bl = bs->bp_location_at;
2bdf28a0 4080 gdb_assert (bl != NULL);
f431efe5 4081 b = bs->breakpoint_at;
2bdf28a0 4082 gdb_assert (b != NULL);
18a18393
VP
4083
4084 if (frame_id_p (b->frame_id)
edb3359d 4085 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
18a18393
VP
4086 bs->stop = 0;
4087 else if (bs->stop)
4088 {
4089 int value_is_zero = 0;
60e1c644
PA
4090 struct expression *cond;
4091
7371cf6d
PM
4092 /* Evaluate Python breakpoints that have a "stop"
4093 method implemented. */
4094 if (b->py_bp_object)
4095 bs->stop = gdbpy_should_stop (b->py_bp_object);
4096
60e1c644
PA
4097 if (is_watchpoint (b))
4098 cond = b->cond_exp;
4099 else
4100 cond = bl->cond;
4101
f431efe5 4102 if (cond && b->disposition != disp_del_at_next_stop)
18a18393 4103 {
60e1c644
PA
4104 int within_current_scope = 1;
4105
c5bc3a77
DJ
4106 /* We use value_mark and value_free_to_mark because it could
4107 be a long time before we return to the command level and
4108 call free_all_values. We can't call free_all_values
4109 because we might be in the middle of evaluating a
4110 function call. */
4111 struct value *mark = value_mark ();
4112
edb3359d
DJ
4113 /* Need to select the frame, with all that implies so that
4114 the conditions will have the right context. Because we
4115 use the frame, we will not see an inlined function's
4116 variables when we arrive at a breakpoint at the start
4117 of the inlined function; the current frame will be the
4118 call site. */
60e1c644
PA
4119 if (!is_watchpoint (b) || b->cond_exp_valid_block == NULL)
4120 select_frame (get_current_frame ());
4121 else
4122 {
4123 struct frame_info *frame;
4124
4125 /* For local watchpoint expressions, which particular
4126 instance of a local is being watched matters, so we
4127 keep track of the frame to evaluate the expression
4128 in. To evaluate the condition however, it doesn't
4129 really matter which instantiation of the function
4130 where the condition makes sense triggers the
4131 watchpoint. This allows an expression like "watch
4132 global if q > 10" set in `func', catch writes to
4133 global on all threads that call `func', or catch
4134 writes on all recursive calls of `func' by a single
4135 thread. We simply always evaluate the condition in
4136 the innermost frame that's executing where it makes
4137 sense to evaluate the condition. It seems
4138 intuitive. */
4139 frame = block_innermost_frame (b->cond_exp_valid_block);
4140 if (frame != NULL)
4141 select_frame (frame);
4142 else
4143 within_current_scope = 0;
4144 }
4145 if (within_current_scope)
4146 value_is_zero
4147 = catch_errors (breakpoint_cond_eval, cond,
4148 "Error in testing breakpoint condition:\n",
4149 RETURN_MASK_ALL);
4150 else
4151 {
4152 warning (_("Watchpoint condition cannot be tested "
4153 "in the current scope"));
4154 /* If we failed to set the right context for this
4155 watchpoint, unconditionally report it. */
4156 value_is_zero = 0;
4157 }
4a64f543 4158 /* FIXME-someday, should give breakpoint #. */
c5bc3a77 4159 value_free_to_mark (mark);
18a18393 4160 }
60e1c644
PA
4161
4162 if (cond && value_is_zero)
18a18393
VP
4163 {
4164 bs->stop = 0;
4165 }
4166 else if (b->thread != -1 && b->thread != thread_id)
4167 {
4168 bs->stop = 0;
4169 }
4170 else if (b->ignore_count > 0)
4171 {
4172 b->ignore_count--;
4173 annotate_ignore_count_change ();
4174 bs->stop = 0;
4a64f543 4175 /* Increase the hit count even though we don't stop. */
18a18393 4176 ++(b->hit_count);
8d3788bd 4177 observer_notify_breakpoint_modified (b);
18a18393
VP
4178 }
4179 }
4180}
4181
4182
9709f61c 4183/* Get a bpstat associated with having just stopped at address
d983da9c 4184 BP_ADDR in thread PTID.
c906108c 4185
d983da9c 4186 Determine whether we stopped at a breakpoint, etc, or whether we
4a64f543
MS
4187 don't understand this stop. Result is a chain of bpstat's such
4188 that:
c906108c 4189
c5aa993b 4190 if we don't understand the stop, the result is a null pointer.
c906108c 4191
c5aa993b 4192 if we understand why we stopped, the result is not null.
c906108c 4193
c5aa993b
JM
4194 Each element of the chain refers to a particular breakpoint or
4195 watchpoint at which we have stopped. (We may have stopped for
4196 several reasons concurrently.)
c906108c 4197
c5aa993b
JM
4198 Each element of the chain has valid next, breakpoint_at,
4199 commands, FIXME??? fields. */
c906108c
SS
4200
4201bpstat
6c95b8df
PA
4202bpstat_stop_status (struct address_space *aspace,
4203 CORE_ADDR bp_addr, ptid_t ptid)
c906108c 4204{
0d381245 4205 struct breakpoint *b = NULL;
afe38095 4206 struct bp_location *bl;
20874c92 4207 struct bp_location *loc;
5760d0ab
JK
4208 /* First item of allocated bpstat's. */
4209 bpstat bs_head = NULL, *bs_link = &bs_head;
c906108c 4210 /* Pointer to the last thing in the chain currently. */
5760d0ab 4211 bpstat bs;
20874c92 4212 int ix;
429374b8 4213 int need_remove_insert;
f431efe5 4214 int removed_any;
c906108c 4215
f431efe5
PA
4216 /* First, build the bpstat chain with locations that explain a
4217 target stop, while being careful to not set the target running,
4218 as that may invalidate locations (in particular watchpoint
4219 locations are recreated). Resuming will happen here with
4220 breakpoint conditions or watchpoint expressions that include
4221 inferior function calls. */
c5aa993b 4222
429374b8
JK
4223 ALL_BREAKPOINTS (b)
4224 {
4225 if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
4226 continue;
a5606eee 4227
429374b8
JK
4228 for (bl = b->loc; bl != NULL; bl = bl->next)
4229 {
4a64f543
MS
4230 /* For hardware watchpoints, we look only at the first
4231 location. The watchpoint_check function will work on the
4232 entire expression, not the individual locations. For
4233 read watchpoints, the watchpoints_triggered function has
4234 checked all locations already. */
429374b8
JK
4235 if (b->type == bp_hardware_watchpoint && bl != b->loc)
4236 break;
18a18393 4237
429374b8
JK
4238 if (bl->shlib_disabled)
4239 continue;
c5aa993b 4240
429374b8
JK
4241 if (!bpstat_check_location (bl, aspace, bp_addr))
4242 continue;
c5aa993b 4243
4a64f543
MS
4244 /* Come here if it's a watchpoint, or if the break address
4245 matches. */
c5aa993b 4246
4a64f543
MS
4247 bs = bpstat_alloc (bl, &bs_link); /* Alloc a bpstat to
4248 explain stop. */
c5aa993b 4249
f431efe5
PA
4250 /* Assume we stop. Should we find a watchpoint that is not
4251 actually triggered, or if the condition of the breakpoint
4252 evaluates as false, we'll reset 'stop' to 0. */
429374b8
JK
4253 bs->stop = 1;
4254 bs->print = 1;
d983da9c 4255
f431efe5
PA
4256 /* If this is a scope breakpoint, mark the associated
4257 watchpoint as triggered so that we will handle the
4258 out-of-scope event. We'll get to the watchpoint next
4259 iteration. */
d0fb5eae 4260 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
f431efe5
PA
4261 b->related_breakpoint->watchpoint_triggered = watch_triggered_yes;
4262 }
4263 }
4264
4265 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4266 {
f1310107 4267 if (breakpoint_location_address_match (loc, aspace, bp_addr))
f431efe5 4268 {
5760d0ab 4269 bs = bpstat_alloc (loc, &bs_link);
f431efe5
PA
4270 /* For hits of moribund locations, we should just proceed. */
4271 bs->stop = 0;
4272 bs->print = 0;
4273 bs->print_it = print_it_noop;
4274 }
4275 }
4276
f431efe5
PA
4277 /* Now go through the locations that caused the target to stop, and
4278 check whether we're interested in reporting this stop to higher
4279 layers, or whether we should resume the target transparently. */
4280
4281 removed_any = 0;
4282
5760d0ab 4283 for (bs = bs_head; bs != NULL; bs = bs->next)
f431efe5
PA
4284 {
4285 if (!bs->stop)
4286 continue;
4287
4288 bpstat_check_watchpoint (bs);
4289 if (!bs->stop)
4290 continue;
4291
4292 b = bs->breakpoint_at;
18a18393 4293
429374b8 4294 if (b->type == bp_thread_event || b->type == bp_overlay_event
aa7d318d 4295 || b->type == bp_longjmp_master
186c406b
TT
4296 || b->type == bp_std_terminate_master
4297 || b->type == bp_exception_master)
429374b8
JK
4298 /* We do not stop for these. */
4299 bs->stop = 0;
4300 else
4301 bpstat_check_breakpoint_conditions (bs, ptid);
f431efe5 4302
429374b8
JK
4303 if (bs->stop)
4304 {
4305 ++(b->hit_count);
8d3788bd 4306 observer_notify_breakpoint_modified (b);
c906108c 4307
4a64f543 4308 /* We will stop here. */
429374b8
JK
4309 if (b->disposition == disp_disable)
4310 {
4311 if (b->enable_state != bp_permanent)
4312 b->enable_state = bp_disabled;
f431efe5 4313 removed_any = 1;
429374b8
JK
4314 }
4315 if (b->silent)
4316 bs->print = 0;
4317 bs->commands = b->commands;
9add0f1b
TT
4318 incref_counted_command_line (bs->commands);
4319 bs->commands_left = bs->commands ? bs->commands->commands : NULL;
4320 if (bs->commands_left
4321 && (strcmp ("silent", bs->commands_left->line) == 0
4322 || (xdb_commands
4323 && strcmp ("Q",
4324 bs->commands_left->line) == 0)))
429374b8 4325 {
9add0f1b 4326 bs->commands_left = bs->commands_left->next;
429374b8
JK
4327 bs->print = 0;
4328 }
429374b8
JK
4329 }
4330
4331 /* Print nothing for this entry if we dont stop or dont print. */
4332 if (bs->stop == 0 || bs->print == 0)
4333 bs->print_it = print_it_noop;
429374b8 4334 }
876fa593 4335
d983da9c
DJ
4336 /* If we aren't stopping, the value of some hardware watchpoint may
4337 not have changed, but the intermediate memory locations we are
4338 watching may have. Don't bother if we're stopping; this will get
4339 done later. */
d832cb68 4340 need_remove_insert = 0;
5760d0ab
JK
4341 if (! bpstat_causes_stop (bs_head))
4342 for (bs = bs_head; bs != NULL; bs = bs->next)
d983da9c 4343 if (!bs->stop
f431efe5
PA
4344 && bs->breakpoint_at
4345 && is_hardware_watchpoint (bs->breakpoint_at))
d983da9c 4346 {
4a64f543 4347 update_watchpoint (bs->breakpoint_at, 0 /* don't reparse. */);
d832cb68 4348 need_remove_insert = 1;
d983da9c
DJ
4349 }
4350
d832cb68 4351 if (need_remove_insert)
2d134ed3 4352 update_global_location_list (1);
f431efe5
PA
4353 else if (removed_any)
4354 update_global_location_list (0);
d832cb68 4355
5760d0ab 4356 return bs_head;
c906108c 4357}
628fe4e4
JK
4358
4359static void
4360handle_jit_event (void)
4361{
4362 struct frame_info *frame;
4363 struct gdbarch *gdbarch;
4364
4365 /* Switch terminal for any messages produced by
4366 breakpoint_re_set. */
4367 target_terminal_ours_for_output ();
4368
4369 frame = get_current_frame ();
4370 gdbarch = get_frame_arch (frame);
4371
4372 jit_event_handler (gdbarch);
4373
4374 target_terminal_inferior ();
4375}
4376
4377/* Prepare WHAT final decision for infrun. */
4378
4379/* Decide what infrun needs to do with this bpstat. */
4380
c906108c 4381struct bpstat_what
0e30163f 4382bpstat_what (bpstat bs_head)
c906108c 4383{
c906108c 4384 struct bpstat_what retval;
628fe4e4
JK
4385 /* We need to defer calling `solib_add', as adding new symbols
4386 resets breakpoints, which in turn deletes breakpoint locations,
4387 and hence may clear unprocessed entries in the BS chain. */
4388 int shlib_event = 0;
4389 int jit_event = 0;
0e30163f 4390 bpstat bs;
c906108c 4391
628fe4e4 4392 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
aa7d318d 4393 retval.call_dummy = STOP_NONE;
186c406b 4394 retval.is_longjmp = 0;
628fe4e4 4395
0e30163f 4396 for (bs = bs_head; bs != NULL; bs = bs->next)
c906108c 4397 {
628fe4e4
JK
4398 /* Extract this BS's action. After processing each BS, we check
4399 if its action overrides all we've seem so far. */
4400 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
4401 enum bptype bptype;
4402
c906108c 4403 if (bs->breakpoint_at == NULL)
628fe4e4
JK
4404 {
4405 /* I suspect this can happen if it was a momentary
4406 breakpoint which has since been deleted. */
4407 bptype = bp_none;
4408 }
f431efe5 4409 else if (bs->breakpoint_at == NULL)
628fe4e4 4410 bptype = bp_none;
20874c92 4411 else
f431efe5 4412 bptype = bs->breakpoint_at->type;
628fe4e4
JK
4413
4414 switch (bptype)
c906108c
SS
4415 {
4416 case bp_none:
628fe4e4 4417 break;
c906108c
SS
4418 case bp_breakpoint:
4419 case bp_hardware_breakpoint:
4420 case bp_until:
4421 case bp_finish:
4422 if (bs->stop)
4423 {
4424 if (bs->print)
628fe4e4 4425 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 4426 else
628fe4e4 4427 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
4428 }
4429 else
628fe4e4 4430 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
4431 break;
4432 case bp_watchpoint:
4433 case bp_hardware_watchpoint:
4434 case bp_read_watchpoint:
4435 case bp_access_watchpoint:
4436 if (bs->stop)
4437 {
4438 if (bs->print)
628fe4e4 4439 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 4440 else
628fe4e4 4441 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
4442 }
4443 else
628fe4e4
JK
4444 {
4445 /* There was a watchpoint, but we're not stopping.
4446 This requires no further action. */
4447 }
c906108c
SS
4448 break;
4449 case bp_longjmp:
186c406b 4450 case bp_exception:
628fe4e4 4451 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
186c406b 4452 retval.is_longjmp = bptype == bp_longjmp;
c906108c
SS
4453 break;
4454 case bp_longjmp_resume:
186c406b 4455 case bp_exception_resume:
628fe4e4 4456 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
186c406b 4457 retval.is_longjmp = bptype == bp_longjmp_resume;
c906108c
SS
4458 break;
4459 case bp_step_resume:
4460 if (bs->stop)
628fe4e4
JK
4461 this_action = BPSTAT_WHAT_STEP_RESUME;
4462 else
c906108c 4463 {
628fe4e4
JK
4464 /* It is for the wrong frame. */
4465 this_action = BPSTAT_WHAT_SINGLE;
c906108c 4466 }
c906108c 4467 break;
c906108c 4468 case bp_watchpoint_scope:
c4093a6a 4469 case bp_thread_event:
1900040c 4470 case bp_overlay_event:
0fd8e87f 4471 case bp_longjmp_master:
aa7d318d 4472 case bp_std_terminate_master:
186c406b 4473 case bp_exception_master:
628fe4e4 4474 this_action = BPSTAT_WHAT_SINGLE;
c4093a6a 4475 break;
ce78b96d 4476 case bp_catchpoint:
c5aa993b
JM
4477 if (bs->stop)
4478 {
4479 if (bs->print)
628fe4e4 4480 this_action = BPSTAT_WHAT_STOP_NOISY;
c5aa993b 4481 else
628fe4e4 4482 this_action = BPSTAT_WHAT_STOP_SILENT;
c5aa993b
JM
4483 }
4484 else
628fe4e4
JK
4485 {
4486 /* There was a catchpoint, but we're not stopping.
4487 This requires no further action. */
4488 }
4489 break;
4490 case bp_shlib_event:
4491 shlib_event = 1;
4492
4493 /* If requested, stop when the dynamic linker notifies GDB
4494 of events. This allows the user to get control and place
4495 breakpoints in initializer routines for dynamically
4496 loaded objects (among other things). */
4497 if (stop_on_solib_events)
4498 this_action = BPSTAT_WHAT_STOP_NOISY;
4499 else
4500 this_action = BPSTAT_WHAT_SINGLE;
4501 break;
4502 case bp_jit_event:
4503 jit_event = 1;
4504 this_action = BPSTAT_WHAT_SINGLE;
c5aa993b 4505 break;
c906108c 4506 case bp_call_dummy:
53a5351d
JM
4507 /* Make sure the action is stop (silent or noisy),
4508 so infrun.c pops the dummy frame. */
aa7d318d 4509 retval.call_dummy = STOP_STACK_DUMMY;
628fe4e4 4510 this_action = BPSTAT_WHAT_STOP_SILENT;
aa7d318d
TT
4511 break;
4512 case bp_std_terminate:
4513 /* Make sure the action is stop (silent or noisy),
4514 so infrun.c pops the dummy frame. */
aa7d318d 4515 retval.call_dummy = STOP_STD_TERMINATE;
628fe4e4 4516 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c 4517 break;
1042e4c0 4518 case bp_tracepoint:
7a697b8d 4519 case bp_fast_tracepoint:
0fb4aa4b 4520 case bp_static_tracepoint:
1042e4c0
SS
4521 /* Tracepoint hits should not be reported back to GDB, and
4522 if one got through somehow, it should have been filtered
4523 out already. */
4524 internal_error (__FILE__, __LINE__,
7a697b8d 4525 _("bpstat_what: tracepoint encountered"));
0e30163f
JK
4526 break;
4527 case bp_gnu_ifunc_resolver:
4528 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
4529 this_action = BPSTAT_WHAT_SINGLE;
4530 break;
4531 case bp_gnu_ifunc_resolver_return:
4532 /* The breakpoint will be removed, execution will restart from the
4533 PC of the former breakpoint. */
4534 this_action = BPSTAT_WHAT_KEEP_CHECKING;
4535 break;
628fe4e4
JK
4536 default:
4537 internal_error (__FILE__, __LINE__,
4538 _("bpstat_what: unhandled bptype %d"), (int) bptype);
c906108c 4539 }
628fe4e4
JK
4540
4541 retval.main_action = max (retval.main_action, this_action);
c906108c 4542 }
628fe4e4 4543
0e30163f
JK
4544 /* These operations may affect the bs->breakpoint_at state so they are
4545 delayed after MAIN_ACTION is decided above. */
4546
628fe4e4
JK
4547 if (shlib_event)
4548 {
4549 if (debug_infrun)
4550 fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_shlib_event\n");
4551
4552 /* Check for any newly added shared libraries if we're supposed
4553 to be adding them automatically. */
4554
4555 /* Switch terminal for any messages produced by
4556 breakpoint_re_set. */
4557 target_terminal_ours_for_output ();
4558
4559#ifdef SOLIB_ADD
4560 SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
4561#else
4562 solib_add (NULL, 0, &current_target, auto_solib_add);
4563#endif
4564
4565 target_terminal_inferior ();
4566 }
4567
4568 if (jit_event)
4569 {
4570 if (debug_infrun)
4571 fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
4572
4573 handle_jit_event ();
4574 }
4575
0e30163f
JK
4576 for (bs = bs_head; bs != NULL; bs = bs->next)
4577 {
4578 struct breakpoint *b = bs->breakpoint_at;
4579
4580 if (b == NULL)
4581 continue;
4582 switch (b->type)
4583 {
4584 case bp_gnu_ifunc_resolver:
4585 gnu_ifunc_resolver_stop (b);
4586 break;
4587 case bp_gnu_ifunc_resolver_return:
4588 gnu_ifunc_resolver_return_stop (b);
4589 break;
4590 }
4591 }
4592
c906108c
SS
4593 return retval;
4594}
4595
4596/* Nonzero if we should step constantly (e.g. watchpoints on machines
4597 without hardware support). This isn't related to a specific bpstat,
4598 just to things like whether watchpoints are set. */
4599
c5aa993b 4600int
fba45db2 4601bpstat_should_step (void)
c906108c
SS
4602{
4603 struct breakpoint *b;
cc59ec59 4604
c906108c 4605 ALL_BREAKPOINTS (b)
717a8278 4606 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
3172dc30 4607 return 1;
c906108c
SS
4608 return 0;
4609}
4610
67822962
PA
4611int
4612bpstat_causes_stop (bpstat bs)
4613{
4614 for (; bs != NULL; bs = bs->next)
4615 if (bs->stop)
4616 return 1;
4617
4618 return 0;
4619}
4620
c906108c 4621\f
c5aa993b 4622
170b53b2
UW
4623/* Compute a string of spaces suitable to indent the next line
4624 so it starts at the position corresponding to the table column
4625 named COL_NAME in the currently active table of UIOUT. */
4626
4627static char *
4628wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
4629{
4630 static char wrap_indent[80];
4631 int i, total_width, width, align;
4632 char *text;
4633
4634 total_width = 0;
4635 for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
4636 {
4637 if (strcmp (text, col_name) == 0)
4638 {
4639 gdb_assert (total_width < sizeof wrap_indent);
4640 memset (wrap_indent, ' ', total_width);
4641 wrap_indent[total_width] = 0;
4642
4643 return wrap_indent;
4644 }
4645
4646 total_width += width + 1;
4647 }
4648
4649 return NULL;
4650}
4651
859825b8
JK
4652/* Print the LOC location out of the list of B->LOC locations. */
4653
170b53b2
UW
4654static void
4655print_breakpoint_location (struct breakpoint *b,
4656 struct bp_location *loc)
0d381245 4657{
6c95b8df
PA
4658 struct cleanup *old_chain = save_current_program_space ();
4659
859825b8
JK
4660 if (loc != NULL && loc->shlib_disabled)
4661 loc = NULL;
4662
6c95b8df
PA
4663 if (loc != NULL)
4664 set_current_program_space (loc->pspace);
4665
56435ebe
TT
4666 if (b->display_canonical)
4667 ui_out_field_string (uiout, "what", b->addr_string);
4668 else if (b->source_file && loc)
0d381245
VP
4669 {
4670 struct symbol *sym
4671 = find_pc_sect_function (loc->address, loc->section);
4672 if (sym)
4673 {
4674 ui_out_text (uiout, "in ");
4675 ui_out_field_string (uiout, "func",
4676 SYMBOL_PRINT_NAME (sym));
170b53b2
UW
4677 ui_out_text (uiout, " ");
4678 ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
4679 ui_out_text (uiout, "at ");
0d381245
VP
4680 }
4681 ui_out_field_string (uiout, "file", b->source_file);
4682 ui_out_text (uiout, ":");
4683
4684 if (ui_out_is_mi_like_p (uiout))
4685 {
4686 struct symtab_and_line sal = find_pc_line (loc->address, 0);
4687 char *fullname = symtab_to_fullname (sal.symtab);
4688
4689 if (fullname)
4690 ui_out_field_string (uiout, "fullname", fullname);
4691 }
4692
4693 ui_out_field_int (uiout, "line", b->line_number);
4694 }
859825b8 4695 else if (loc)
0d381245 4696 {
170b53b2
UW
4697 struct ui_stream *stb = ui_out_stream_new (uiout);
4698 struct cleanup *stb_chain = make_cleanup_ui_out_stream_delete (stb);
4699
22e722e1
DJ
4700 print_address_symbolic (loc->gdbarch, loc->address, stb->stream,
4701 demangle, "");
0d381245 4702 ui_out_field_stream (uiout, "at", stb);
170b53b2
UW
4703
4704 do_cleanups (stb_chain);
0d381245 4705 }
859825b8
JK
4706 else
4707 ui_out_field_string (uiout, "pending", b->addr_string);
6c95b8df
PA
4708
4709 do_cleanups (old_chain);
0d381245
VP
4710}
4711
269b11a2
PA
4712static const char *
4713bptype_string (enum bptype type)
c906108c 4714{
c4093a6a
JM
4715 struct ep_type_description
4716 {
4717 enum bptype type;
4718 char *description;
4719 };
4720 static struct ep_type_description bptypes[] =
c906108c 4721 {
c5aa993b
JM
4722 {bp_none, "?deleted?"},
4723 {bp_breakpoint, "breakpoint"},
c906108c 4724 {bp_hardware_breakpoint, "hw breakpoint"},
c5aa993b
JM
4725 {bp_until, "until"},
4726 {bp_finish, "finish"},
4727 {bp_watchpoint, "watchpoint"},
c906108c 4728 {bp_hardware_watchpoint, "hw watchpoint"},
c5aa993b
JM
4729 {bp_read_watchpoint, "read watchpoint"},
4730 {bp_access_watchpoint, "acc watchpoint"},
4731 {bp_longjmp, "longjmp"},
4732 {bp_longjmp_resume, "longjmp resume"},
186c406b
TT
4733 {bp_exception, "exception"},
4734 {bp_exception_resume, "exception resume"},
c5aa993b 4735 {bp_step_resume, "step resume"},
c5aa993b
JM
4736 {bp_watchpoint_scope, "watchpoint scope"},
4737 {bp_call_dummy, "call dummy"},
aa7d318d 4738 {bp_std_terminate, "std::terminate"},
c5aa993b 4739 {bp_shlib_event, "shlib events"},
c4093a6a 4740 {bp_thread_event, "thread events"},
1900040c 4741 {bp_overlay_event, "overlay events"},
0fd8e87f 4742 {bp_longjmp_master, "longjmp master"},
aa7d318d 4743 {bp_std_terminate_master, "std::terminate master"},
186c406b 4744 {bp_exception_master, "exception master"},
ce78b96d 4745 {bp_catchpoint, "catchpoint"},
1042e4c0 4746 {bp_tracepoint, "tracepoint"},
7a697b8d 4747 {bp_fast_tracepoint, "fast tracepoint"},
0fb4aa4b 4748 {bp_static_tracepoint, "static tracepoint"},
4efc6507 4749 {bp_jit_event, "jit events"},
0e30163f
JK
4750 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
4751 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
c5aa993b 4752 };
269b11a2
PA
4753
4754 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
4755 || ((int) type != bptypes[(int) type].type))
4756 internal_error (__FILE__, __LINE__,
4757 _("bptypes table does not describe type #%d."),
4758 (int) type);
4759
4760 return bptypes[(int) type].description;
4761}
4762
4763/* Print B to gdb_stdout. */
4764
4765static void
4766print_one_breakpoint_location (struct breakpoint *b,
4767 struct bp_location *loc,
4768 int loc_number,
4769 struct bp_location **last_loc,
269b11a2
PA
4770 int allflag)
4771{
4772 struct command_line *l;
c2c6d25f 4773 static char bpenables[] = "nynny";
c906108c 4774
0d381245
VP
4775 int header_of_multiple = 0;
4776 int part_of_multiple = (loc != NULL);
79a45b7d
TT
4777 struct value_print_options opts;
4778
4779 get_user_print_options (&opts);
0d381245
VP
4780
4781 gdb_assert (!loc || loc_number != 0);
4a64f543
MS
4782 /* See comment in print_one_breakpoint concerning treatment of
4783 breakpoints with single disabled location. */
0d381245
VP
4784 if (loc == NULL
4785 && (b->loc != NULL
4786 && (b->loc->next != NULL || !b->loc->enabled)))
4787 header_of_multiple = 1;
4788 if (loc == NULL)
4789 loc = b->loc;
4790
c4093a6a
JM
4791 annotate_record ();
4792
4793 /* 1 */
4794 annotate_field (0);
0d381245
VP
4795 if (part_of_multiple)
4796 {
4797 char *formatted;
0c6773c1 4798 formatted = xstrprintf ("%d.%d", b->number, loc_number);
0d381245
VP
4799 ui_out_field_string (uiout, "number", formatted);
4800 xfree (formatted);
4801 }
4802 else
4803 {
4804 ui_out_field_int (uiout, "number", b->number);
4805 }
c4093a6a
JM
4806
4807 /* 2 */
4808 annotate_field (1);
0d381245
VP
4809 if (part_of_multiple)
4810 ui_out_field_skip (uiout, "type");
269b11a2
PA
4811 else
4812 ui_out_field_string (uiout, "type", bptype_string (b->type));
c4093a6a
JM
4813
4814 /* 3 */
4815 annotate_field (2);
0d381245
VP
4816 if (part_of_multiple)
4817 ui_out_field_skip (uiout, "disp");
4818 else
2cec12e5 4819 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
0d381245 4820
c4093a6a
JM
4821
4822 /* 4 */
4823 annotate_field (3);
0d381245 4824 if (part_of_multiple)
54e52265 4825 ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
0d381245 4826 else
4a64f543
MS
4827 ui_out_field_fmt (uiout, "enabled", "%c",
4828 bpenables[(int) b->enable_state]);
54e52265 4829 ui_out_spaces (uiout, 2);
0d381245 4830
c4093a6a
JM
4831
4832 /* 5 and 6 */
3086aeae 4833 if (b->ops != NULL && b->ops->print_one != NULL)
0d381245 4834 {
4a64f543
MS
4835 /* Although the print_one can possibly print all locations,
4836 calling it here is not likely to get any nice result. So,
4837 make sure there's just one location. */
0d381245 4838 gdb_assert (b->loc == NULL || b->loc->next == NULL);
a6d9a66e 4839 b->ops->print_one (b, last_loc);
0d381245 4840 }
3086aeae
DJ
4841 else
4842 switch (b->type)
4843 {
4844 case bp_none:
4845 internal_error (__FILE__, __LINE__,
e2e0b3e5 4846 _("print_one_breakpoint: bp_none encountered\n"));
3086aeae 4847 break;
c906108c 4848
3086aeae
DJ
4849 case bp_watchpoint:
4850 case bp_hardware_watchpoint:
4851 case bp_read_watchpoint:
4852 case bp_access_watchpoint:
4853 /* Field 4, the address, is omitted (which makes the columns
4854 not line up too nicely with the headers, but the effect
4855 is relatively readable). */
79a45b7d 4856 if (opts.addressprint)
3086aeae
DJ
4857 ui_out_field_skip (uiout, "addr");
4858 annotate_field (5);
fa8a61dc 4859 ui_out_field_string (uiout, "what", b->exp_string);
3086aeae
DJ
4860 break;
4861
3086aeae
DJ
4862 case bp_breakpoint:
4863 case bp_hardware_breakpoint:
4864 case bp_until:
4865 case bp_finish:
4866 case bp_longjmp:
4867 case bp_longjmp_resume:
186c406b
TT
4868 case bp_exception:
4869 case bp_exception_resume:
3086aeae 4870 case bp_step_resume:
3086aeae
DJ
4871 case bp_watchpoint_scope:
4872 case bp_call_dummy:
aa7d318d 4873 case bp_std_terminate:
3086aeae
DJ
4874 case bp_shlib_event:
4875 case bp_thread_event:
4876 case bp_overlay_event:
0fd8e87f 4877 case bp_longjmp_master:
aa7d318d 4878 case bp_std_terminate_master:
186c406b 4879 case bp_exception_master:
1042e4c0 4880 case bp_tracepoint:
7a697b8d 4881 case bp_fast_tracepoint:
0fb4aa4b 4882 case bp_static_tracepoint:
4efc6507 4883 case bp_jit_event:
0e30163f
JK
4884 case bp_gnu_ifunc_resolver:
4885 case bp_gnu_ifunc_resolver_return:
79a45b7d 4886 if (opts.addressprint)
3086aeae
DJ
4887 {
4888 annotate_field (4);
54e52265 4889 if (header_of_multiple)
0d381245 4890 ui_out_field_string (uiout, "addr", "<MULTIPLE>");
e9bbd7c5 4891 else if (b->loc == NULL || loc->shlib_disabled)
54e52265 4892 ui_out_field_string (uiout, "addr", "<PENDING>");
0101ce28 4893 else
5af949e3
UW
4894 ui_out_field_core_addr (uiout, "addr",
4895 loc->gdbarch, loc->address);
3086aeae
DJ
4896 }
4897 annotate_field (5);
0d381245 4898 if (!header_of_multiple)
170b53b2 4899 print_breakpoint_location (b, loc);
0d381245 4900 if (b->loc)
a6d9a66e 4901 *last_loc = b->loc;
3086aeae
DJ
4902 break;
4903 }
c906108c 4904
6c95b8df
PA
4905
4906 /* For backward compatibility, don't display inferiors unless there
4907 are several. */
4908 if (loc != NULL
4909 && !header_of_multiple
4910 && (allflag
4911 || (!gdbarch_has_global_breakpoints (target_gdbarch)
4912 && (number_of_program_spaces () > 1
4913 || number_of_inferiors () > 1)
4a64f543
MS
4914 /* LOC is for existing B, it cannot be in
4915 moribund_locations and thus having NULL OWNER. */
6c95b8df
PA
4916 && loc->owner->type != bp_catchpoint)))
4917 {
4918 struct inferior *inf;
4919 int first = 1;
4920
4921 for (inf = inferior_list; inf != NULL; inf = inf->next)
4922 {
4923 if (inf->pspace == loc->pspace)
4924 {
4925 if (first)
4926 {
4927 first = 0;
4928 ui_out_text (uiout, " inf ");
4929 }
4930 else
4931 ui_out_text (uiout, ", ");
4932 ui_out_text (uiout, plongest (inf->num));
4933 }
4934 }
4935 }
4936
4a306c9a 4937 if (!part_of_multiple)
c4093a6a 4938 {
4a306c9a
JB
4939 if (b->thread != -1)
4940 {
4941 /* FIXME: This seems to be redundant and lost here; see the
4a64f543 4942 "stop only in" line a little further down. */
4a306c9a
JB
4943 ui_out_text (uiout, " thread ");
4944 ui_out_field_int (uiout, "thread", b->thread);
4945 }
4946 else if (b->task != 0)
4947 {
4948 ui_out_text (uiout, " task ");
4949 ui_out_field_int (uiout, "task", b->task);
4950 }
c4093a6a 4951 }
f1310107 4952
8b93c638 4953 ui_out_text (uiout, "\n");
f1310107
TJB
4954
4955 if (!part_of_multiple && b->ops && b->ops->print_one_detail)
4956 b->ops->print_one_detail (b, uiout);
4957
0fb4aa4b
PA
4958 if (!part_of_multiple && b->static_trace_marker_id)
4959 {
4960 gdb_assert (b->type == bp_static_tracepoint);
4961
4962 ui_out_text (uiout, "\tmarker id is ");
4963 ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
4964 b->static_trace_marker_id);
4965 ui_out_text (uiout, "\n");
4966 }
4967
0d381245 4968 if (part_of_multiple && frame_id_p (b->frame_id))
c4093a6a
JM
4969 {
4970 annotate_field (6);
8b93c638 4971 ui_out_text (uiout, "\tstop only in stack frame at ");
818dd999
AC
4972 /* FIXME: cagney/2002-12-01: Shouldn't be poeking around inside
4973 the frame ID. */
5af949e3
UW
4974 ui_out_field_core_addr (uiout, "frame",
4975 b->gdbarch, b->frame_id.stack_addr);
8b93c638 4976 ui_out_text (uiout, "\n");
c4093a6a
JM
4977 }
4978
0d381245 4979 if (!part_of_multiple && b->cond_string && !ada_exception_catchpoint_p (b))
c4093a6a 4980 {
f7f9143b
JB
4981 /* We do not print the condition for Ada exception catchpoints
4982 because the condition is an internal implementation detail
4983 that we do not want to expose to the user. */
c4093a6a 4984 annotate_field (7);
d77f58be 4985 if (is_tracepoint (b))
1042e4c0
SS
4986 ui_out_text (uiout, "\ttrace only if ");
4987 else
4988 ui_out_text (uiout, "\tstop only if ");
0101ce28
JJ
4989 ui_out_field_string (uiout, "cond", b->cond_string);
4990 ui_out_text (uiout, "\n");
4991 }
4992
0d381245 4993 if (!part_of_multiple && b->thread != -1)
c4093a6a 4994 {
4a64f543 4995 /* FIXME should make an annotation for this. */
8b93c638
JM
4996 ui_out_text (uiout, "\tstop only in thread ");
4997 ui_out_field_int (uiout, "thread", b->thread);
4998 ui_out_text (uiout, "\n");
c4093a6a
JM
4999 }
5000
63c715c6 5001 if (!part_of_multiple && b->hit_count)
c4093a6a 5002 {
4a64f543 5003 /* FIXME should make an annotation for this. */
8b93c638
JM
5004 if (ep_is_catchpoint (b))
5005 ui_out_text (uiout, "\tcatchpoint");
5006 else
5007 ui_out_text (uiout, "\tbreakpoint");
5008 ui_out_text (uiout, " already hit ");
5009 ui_out_field_int (uiout, "times", b->hit_count);
5010 if (b->hit_count == 1)
5011 ui_out_text (uiout, " time\n");
5012 else
5013 ui_out_text (uiout, " times\n");
c4093a6a
JM
5014 }
5015
4a64f543
MS
5016 /* Output the count also if it is zero, but only if this is mi.
5017 FIXME: Should have a better test for this. */
9dc5e2a9 5018 if (ui_out_is_mi_like_p (uiout))
63c715c6 5019 if (!part_of_multiple && b->hit_count == 0)
fb40c209 5020 ui_out_field_int (uiout, "times", b->hit_count);
8b93c638 5021
0d381245 5022 if (!part_of_multiple && b->ignore_count)
c4093a6a
JM
5023 {
5024 annotate_field (8);
8b93c638
JM
5025 ui_out_text (uiout, "\tignore next ");
5026 ui_out_field_int (uiout, "ignore", b->ignore_count);
5027 ui_out_text (uiout, " hits\n");
c4093a6a 5028 }
059fb39f 5029
9add0f1b 5030 l = b->commands ? b->commands->commands : NULL;
059fb39f 5031 if (!part_of_multiple && l)
c4093a6a 5032 {
3b31d625
EZ
5033 struct cleanup *script_chain;
5034
c4093a6a 5035 annotate_field (9);
3b31d625 5036 script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
8b93c638 5037 print_command_lines (uiout, l, 4);
3b31d625 5038 do_cleanups (script_chain);
c4093a6a 5039 }
d24317b4 5040
1042e4c0
SS
5041 if (!part_of_multiple && b->pass_count)
5042 {
5043 annotate_field (10);
5044 ui_out_text (uiout, "\tpass count ");
5045 ui_out_field_int (uiout, "pass", b->pass_count);
5046 ui_out_text (uiout, " \n");
5047 }
5048
d24317b4
VP
5049 if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
5050 {
5051 if (b->addr_string)
5052 ui_out_field_string (uiout, "original-location", b->addr_string);
5053 else if (b->exp_string)
5054 ui_out_field_string (uiout, "original-location", b->exp_string);
5055 }
c4093a6a 5056}
c5aa993b 5057
0d381245
VP
5058static void
5059print_one_breakpoint (struct breakpoint *b,
4a64f543 5060 struct bp_location **last_loc,
6c95b8df 5061 int allflag)
0d381245 5062{
8d3788bd
VP
5063 struct cleanup *bkpt_chain;
5064
5065 bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
5066
12c5a436 5067 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
8d3788bd 5068 do_cleanups (bkpt_chain);
0d381245
VP
5069
5070 /* If this breakpoint has custom print function,
5071 it's already printed. Otherwise, print individual
5072 locations, if any. */
5073 if (b->ops == NULL || b->ops->print_one == NULL)
5074 {
4a64f543
MS
5075 /* If breakpoint has a single location that is disabled, we
5076 print it as if it had several locations, since otherwise it's
5077 hard to represent "breakpoint enabled, location disabled"
5078 situation.
5079
5080 Note that while hardware watchpoints have several locations
a3be7890 5081 internally, that's not a property exposed to user. */
0d381245 5082 if (b->loc
a5606eee 5083 && !is_hardware_watchpoint (b)
8d3788bd 5084 && (b->loc->next || !b->loc->enabled))
0d381245
VP
5085 {
5086 struct bp_location *loc;
5087 int n = 1;
8d3788bd 5088
0d381245 5089 for (loc = b->loc; loc; loc = loc->next, ++n)
8d3788bd
VP
5090 {
5091 struct cleanup *inner2 =
5092 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
5093 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
5094 do_cleanups (inner2);
5095 }
0d381245
VP
5096 }
5097 }
5098}
5099
a6d9a66e
UW
5100static int
5101breakpoint_address_bits (struct breakpoint *b)
5102{
5103 int print_address_bits = 0;
5104 struct bp_location *loc;
5105
5106 for (loc = b->loc; loc; loc = loc->next)
5107 {
c7437ca6
PA
5108 int addr_bit;
5109
5110 /* Software watchpoints that aren't watching memory don't have
5111 an address to print. */
5112 if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
5113 continue;
5114
5115 addr_bit = gdbarch_addr_bit (loc->gdbarch);
a6d9a66e
UW
5116 if (addr_bit > print_address_bits)
5117 print_address_bits = addr_bit;
5118 }
5119
5120 return print_address_bits;
5121}
0d381245 5122
c4093a6a
JM
5123struct captured_breakpoint_query_args
5124 {
5125 int bnum;
5126 };
c5aa993b 5127
c4093a6a 5128static int
2b65245e 5129do_captured_breakpoint_query (struct ui_out *uiout, void *data)
c4093a6a
JM
5130{
5131 struct captured_breakpoint_query_args *args = data;
52f0bd74 5132 struct breakpoint *b;
a6d9a66e 5133 struct bp_location *dummy_loc = NULL;
cc59ec59 5134
c4093a6a
JM
5135 ALL_BREAKPOINTS (b)
5136 {
5137 if (args->bnum == b->number)
c5aa993b 5138 {
12c5a436 5139 print_one_breakpoint (b, &dummy_loc, 0);
c4093a6a 5140 return GDB_RC_OK;
c5aa993b 5141 }
c4093a6a
JM
5142 }
5143 return GDB_RC_NONE;
5144}
c5aa993b 5145
c4093a6a 5146enum gdb_rc
4a64f543
MS
5147gdb_breakpoint_query (struct ui_out *uiout, int bnum,
5148 char **error_message)
c4093a6a
JM
5149{
5150 struct captured_breakpoint_query_args args;
cc59ec59 5151
c4093a6a
JM
5152 args.bnum = bnum;
5153 /* For the moment we don't trust print_one_breakpoint() to not throw
4a64f543 5154 an error. */
b0b13bb4
DJ
5155 if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
5156 error_message, RETURN_MASK_ALL) < 0)
5157 return GDB_RC_FAIL;
5158 else
5159 return GDB_RC_OK;
c4093a6a 5160}
c5aa993b 5161
09d682a4
TT
5162/* Return true if this breakpoint was set by the user, false if it is
5163 internal or momentary. */
5164
5165int
5166user_breakpoint_p (struct breakpoint *b)
5167{
46c6471b 5168 return b->number > 0;
09d682a4
TT
5169}
5170
7f3b0473 5171/* Print information on user settable breakpoint (watchpoint, etc)
d77f58be
SS
5172 number BNUM. If BNUM is -1 print all user-settable breakpoints.
5173 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
5174 FILTER is non-NULL, call it on each breakpoint and only include the
5175 ones for which it returns non-zero. Return the total number of
5176 breakpoints listed. */
c906108c 5177
d77f58be 5178static int
e5a67952 5179breakpoint_1 (char *args, int allflag,
4a64f543 5180 int (*filter) (const struct breakpoint *))
c4093a6a 5181{
52f0bd74 5182 struct breakpoint *b;
a6d9a66e 5183 struct bp_location *last_loc = NULL;
7f3b0473 5184 int nr_printable_breakpoints;
3b31d625 5185 struct cleanup *bkpttbl_chain;
79a45b7d 5186 struct value_print_options opts;
a6d9a66e 5187 int print_address_bits = 0;
269b11a2
PA
5188 int print_type_col_width = 14;
5189
79a45b7d
TT
5190 get_user_print_options (&opts);
5191
4a64f543
MS
5192 /* Compute the number of rows in the table, as well as the size
5193 required for address fields. */
7f3b0473
AC
5194 nr_printable_breakpoints = 0;
5195 ALL_BREAKPOINTS (b)
e5a67952
MS
5196 {
5197 /* If we have a filter, only list the breakpoints it accepts. */
5198 if (filter && !filter (b))
5199 continue;
5200
5201 /* If we have an "args" string, it is a list of breakpoints to
5202 accept. Skip the others. */
5203 if (args != NULL && *args != '\0')
5204 {
5205 if (allflag && parse_and_eval_long (args) != b->number)
5206 continue;
5207 if (!allflag && !number_is_in_list (args, b->number))
5208 continue;
5209 }
269b11a2 5210
e5a67952
MS
5211 if (allflag || user_breakpoint_p (b))
5212 {
5213 int addr_bit, type_len;
a6d9a66e 5214
e5a67952
MS
5215 addr_bit = breakpoint_address_bits (b);
5216 if (addr_bit > print_address_bits)
5217 print_address_bits = addr_bit;
269b11a2 5218
e5a67952
MS
5219 type_len = strlen (bptype_string (b->type));
5220 if (type_len > print_type_col_width)
5221 print_type_col_width = type_len;
5222
5223 nr_printable_breakpoints++;
5224 }
5225 }
7f3b0473 5226
79a45b7d 5227 if (opts.addressprint)
3b31d625 5228 bkpttbl_chain
3e43a32a
MS
5229 = make_cleanup_ui_out_table_begin_end (uiout, 6,
5230 nr_printable_breakpoints,
3b31d625 5231 "BreakpointTable");
8b93c638 5232 else
3b31d625 5233 bkpttbl_chain
3e43a32a
MS
5234 = make_cleanup_ui_out_table_begin_end (uiout, 5,
5235 nr_printable_breakpoints,
3b31d625 5236 "BreakpointTable");
8b93c638 5237
7f3b0473 5238 if (nr_printable_breakpoints > 0)
d7faa9e7
AC
5239 annotate_breakpoints_headers ();
5240 if (nr_printable_breakpoints > 0)
5241 annotate_field (0);
4a64f543 5242 ui_out_table_header (uiout, 7, ui_left, "number", "Num"); /* 1 */
d7faa9e7
AC
5243 if (nr_printable_breakpoints > 0)
5244 annotate_field (1);
269b11a2 5245 ui_out_table_header (uiout, print_type_col_width, ui_left,
4a64f543 5246 "type", "Type"); /* 2 */
d7faa9e7
AC
5247 if (nr_printable_breakpoints > 0)
5248 annotate_field (2);
4a64f543 5249 ui_out_table_header (uiout, 4, ui_left, "disp", "Disp"); /* 3 */
d7faa9e7
AC
5250 if (nr_printable_breakpoints > 0)
5251 annotate_field (3);
54e52265 5252 ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb"); /* 4 */
79a45b7d 5253 if (opts.addressprint)
e5a67952
MS
5254 {
5255 if (nr_printable_breakpoints > 0)
5256 annotate_field (4);
5257 if (print_address_bits <= 32)
5258 ui_out_table_header (uiout, 10, ui_left,
5259 "addr", "Address"); /* 5 */
5260 else
5261 ui_out_table_header (uiout, 18, ui_left,
5262 "addr", "Address"); /* 5 */
5263 }
d7faa9e7
AC
5264 if (nr_printable_breakpoints > 0)
5265 annotate_field (5);
5266 ui_out_table_header (uiout, 40, ui_noalign, "what", "What"); /* 6 */
5267 ui_out_table_body (uiout);
5268 if (nr_printable_breakpoints > 0)
5269 annotate_breakpoints_table ();
7f3b0473 5270
c4093a6a 5271 ALL_BREAKPOINTS (b)
e5a67952
MS
5272 {
5273 QUIT;
5274 /* If we have a filter, only list the breakpoints it accepts. */
5275 if (filter && !filter (b))
5276 continue;
5277
5278 /* If we have an "args" string, it is a list of breakpoints to
5279 accept. Skip the others. */
5280
5281 if (args != NULL && *args != '\0')
5282 {
5283 if (allflag) /* maintenance info breakpoint */
5284 {
5285 if (parse_and_eval_long (args) != b->number)
5286 continue;
5287 }
5288 else /* all others */
5289 {
5290 if (!number_is_in_list (args, b->number))
5291 continue;
5292 }
5293 }
5294 /* We only print out user settable breakpoints unless the
5295 allflag is set. */
5296 if (allflag || user_breakpoint_p (b))
12c5a436 5297 print_one_breakpoint (b, &last_loc, allflag);
e5a67952
MS
5298 }
5299
3b31d625 5300 do_cleanups (bkpttbl_chain);
698384cd 5301
7f3b0473 5302 if (nr_printable_breakpoints == 0)
c906108c 5303 {
4a64f543
MS
5304 /* If there's a filter, let the caller decide how to report
5305 empty list. */
d77f58be
SS
5306 if (!filter)
5307 {
e5a67952 5308 if (args == NULL || *args == '\0')
d77f58be
SS
5309 ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
5310 else
4a64f543 5311 ui_out_message (uiout, 0,
e5a67952
MS
5312 "No breakpoint or watchpoint matching '%s'.\n",
5313 args);
d77f58be 5314 }
c906108c
SS
5315 }
5316 else
c4093a6a 5317 {
a6d9a66e
UW
5318 if (last_loc && !server_command)
5319 set_next_address (last_loc->gdbarch, last_loc->address);
c4093a6a 5320 }
c906108c 5321
4a64f543 5322 /* FIXME? Should this be moved up so that it is only called when
c4093a6a 5323 there have been breakpoints? */
c906108c 5324 annotate_breakpoints_table_end ();
d77f58be
SS
5325
5326 return nr_printable_breakpoints;
c906108c
SS
5327}
5328
ad443146
SS
5329/* Display the value of default-collect in a way that is generally
5330 compatible with the breakpoint list. */
5331
5332static void
5333default_collect_info (void)
5334{
5335 /* If it has no value (which is frequently the case), say nothing; a
5336 message like "No default-collect." gets in user's face when it's
5337 not wanted. */
5338 if (!*default_collect)
5339 return;
5340
5341 /* The following phrase lines up nicely with per-tracepoint collect
5342 actions. */
5343 ui_out_text (uiout, "default collect ");
5344 ui_out_field_string (uiout, "default-collect", default_collect);
5345 ui_out_text (uiout, " \n");
5346}
5347
c906108c 5348static void
e5a67952 5349breakpoints_info (char *args, int from_tty)
c906108c 5350{
e5a67952 5351 breakpoint_1 (args, 0, NULL);
ad443146
SS
5352
5353 default_collect_info ();
d77f58be
SS
5354}
5355
5356static void
e5a67952 5357watchpoints_info (char *args, int from_tty)
d77f58be 5358{
e5a67952 5359 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
d77f58be
SS
5360
5361 if (num_printed == 0)
5362 {
e5a67952 5363 if (args == NULL || *args == '\0')
d77f58be
SS
5364 ui_out_message (uiout, 0, "No watchpoints.\n");
5365 else
e5a67952 5366 ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
d77f58be 5367 }
c906108c
SS
5368}
5369
7a292a7a 5370static void
e5a67952 5371maintenance_info_breakpoints (char *args, int from_tty)
c906108c 5372{
e5a67952 5373 breakpoint_1 (args, 1, NULL);
ad443146
SS
5374
5375 default_collect_info ();
c906108c
SS
5376}
5377
0d381245 5378static int
714835d5 5379breakpoint_has_pc (struct breakpoint *b,
6c95b8df 5380 struct program_space *pspace,
714835d5 5381 CORE_ADDR pc, struct obj_section *section)
0d381245
VP
5382{
5383 struct bp_location *bl = b->loc;
cc59ec59 5384
0d381245
VP
5385 for (; bl; bl = bl->next)
5386 {
6c95b8df
PA
5387 if (bl->pspace == pspace
5388 && bl->address == pc
0d381245
VP
5389 && (!overlay_debugging || bl->section == section))
5390 return 1;
5391 }
5392 return 0;
5393}
5394
6c95b8df
PA
5395/* Print a message describing any breakpoints set at PC. This
5396 concerns with logical breakpoints, so we match program spaces, not
5397 address spaces. */
c906108c
SS
5398
5399static void
6c95b8df
PA
5400describe_other_breakpoints (struct gdbarch *gdbarch,
5401 struct program_space *pspace, CORE_ADDR pc,
5af949e3 5402 struct obj_section *section, int thread)
c906108c 5403{
52f0bd74
AC
5404 int others = 0;
5405 struct breakpoint *b;
c906108c
SS
5406
5407 ALL_BREAKPOINTS (b)
6c95b8df 5408 others += breakpoint_has_pc (b, pspace, pc, section);
c906108c
SS
5409 if (others > 0)
5410 {
a3f17187
AC
5411 if (others == 1)
5412 printf_filtered (_("Note: breakpoint "));
5413 else /* if (others == ???) */
5414 printf_filtered (_("Note: breakpoints "));
c906108c 5415 ALL_BREAKPOINTS (b)
6c95b8df 5416 if (breakpoint_has_pc (b, pspace, pc, section))
0d381245
VP
5417 {
5418 others--;
5419 printf_filtered ("%d", b->number);
5420 if (b->thread == -1 && thread != -1)
5421 printf_filtered (" (all threads)");
5422 else if (b->thread != -1)
5423 printf_filtered (" (thread %d)", b->thread);
5424 printf_filtered ("%s%s ",
059fb39f 5425 ((b->enable_state == bp_disabled
8bea4e01
UW
5426 || b->enable_state == bp_call_disabled
5427 || b->enable_state == bp_startup_disabled)
0d381245
VP
5428 ? " (disabled)"
5429 : b->enable_state == bp_permanent
5430 ? " (permanent)"
5431 : ""),
5432 (others > 1) ? ","
5433 : ((others == 1) ? " and" : ""));
5434 }
a3f17187 5435 printf_filtered (_("also set at pc "));
5af949e3 5436 fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
c906108c
SS
5437 printf_filtered (".\n");
5438 }
5439}
5440\f
5441/* Set the default place to put a breakpoint
5442 for the `break' command with no arguments. */
5443
5444void
6c95b8df
PA
5445set_default_breakpoint (int valid, struct program_space *pspace,
5446 CORE_ADDR addr, struct symtab *symtab,
fba45db2 5447 int line)
c906108c
SS
5448{
5449 default_breakpoint_valid = valid;
6c95b8df 5450 default_breakpoint_pspace = pspace;
c906108c
SS
5451 default_breakpoint_address = addr;
5452 default_breakpoint_symtab = symtab;
5453 default_breakpoint_line = line;
5454}
5455
e4f237da
KB
5456/* Return true iff it is meaningful to use the address member of
5457 BPT. For some breakpoint types, the address member is irrelevant
5458 and it makes no sense to attempt to compare it to other addresses
5459 (or use it for any other purpose either).
5460
4a64f543
MS
5461 More specifically, each of the following breakpoint types will
5462 always have a zero valued address and we don't want to mark
5463 breakpoints of any of these types to be a duplicate of an actual
5464 breakpoint at address zero:
e4f237da
KB
5465
5466 bp_watchpoint
2d134ed3
PA
5467 bp_catchpoint
5468
5469*/
e4f237da
KB
5470
5471static int
5472breakpoint_address_is_meaningful (struct breakpoint *bpt)
5473{
5474 enum bptype type = bpt->type;
5475
2d134ed3
PA
5476 return (type != bp_watchpoint && type != bp_catchpoint);
5477}
5478
5479/* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
5480 true if LOC1 and LOC2 represent the same watchpoint location. */
5481
5482static int
4a64f543
MS
5483watchpoint_locations_match (struct bp_location *loc1,
5484 struct bp_location *loc2)
2d134ed3 5485{
2bdf28a0
JK
5486 /* Both of them must not be in moribund_locations. */
5487 gdb_assert (loc1->owner != NULL);
5488 gdb_assert (loc2->owner != NULL);
5489
4a64f543
MS
5490 /* If the target can evaluate the condition expression in hardware,
5491 then we we need to insert both watchpoints even if they are at
5492 the same place. Otherwise the watchpoint will only trigger when
5493 the condition of whichever watchpoint was inserted evaluates to
5494 true, not giving a chance for GDB to check the condition of the
5495 other watchpoint. */
0cf6dd15 5496 if ((loc1->owner->cond_exp
4a64f543
MS
5497 && target_can_accel_watchpoint_condition (loc1->address,
5498 loc1->length,
0cf6dd15
TJB
5499 loc1->watchpoint_type,
5500 loc1->owner->cond_exp))
5501 || (loc2->owner->cond_exp
4a64f543
MS
5502 && target_can_accel_watchpoint_condition (loc2->address,
5503 loc2->length,
0cf6dd15
TJB
5504 loc2->watchpoint_type,
5505 loc2->owner->cond_exp)))
5506 return 0;
5507
85d721b8
PA
5508 /* Note that this checks the owner's type, not the location's. In
5509 case the target does not support read watchpoints, but does
5510 support access watchpoints, we'll have bp_read_watchpoint
5511 watchpoints with hw_access locations. Those should be considered
5512 duplicates of hw_read locations. The hw_read locations will
5513 become hw_access locations later. */
2d134ed3
PA
5514 return (loc1->owner->type == loc2->owner->type
5515 && loc1->pspace->aspace == loc2->pspace->aspace
5516 && loc1->address == loc2->address
5517 && loc1->length == loc2->length);
e4f237da
KB
5518}
5519
6c95b8df
PA
5520/* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
5521 same breakpoint location. In most targets, this can only be true
5522 if ASPACE1 matches ASPACE2. On targets that have global
5523 breakpoints, the address space doesn't really matter. */
5524
5525static int
5526breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
5527 struct address_space *aspace2, CORE_ADDR addr2)
5528{
5529 return ((gdbarch_has_global_breakpoints (target_gdbarch)
5530 || aspace1 == aspace2)
5531 && addr1 == addr2);
5532}
5533
f1310107
TJB
5534/* Returns true if {ASPACE2,ADDR2} falls within the range determined by
5535 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
5536 matches ASPACE2. On targets that have global breakpoints, the address
5537 space doesn't really matter. */
5538
5539static int
5540breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
5541 int len1, struct address_space *aspace2,
5542 CORE_ADDR addr2)
5543{
5544 return ((gdbarch_has_global_breakpoints (target_gdbarch)
5545 || aspace1 == aspace2)
5546 && addr2 >= addr1 && addr2 < addr1 + len1);
5547}
5548
5549/* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
5550 a ranged breakpoint. In most targets, a match happens only if ASPACE
5551 matches the breakpoint's address space. On targets that have global
5552 breakpoints, the address space doesn't really matter. */
5553
5554static int
5555breakpoint_location_address_match (struct bp_location *bl,
5556 struct address_space *aspace,
5557 CORE_ADDR addr)
5558{
5559 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
5560 aspace, addr)
5561 || (bl->length
5562 && breakpoint_address_match_range (bl->pspace->aspace,
5563 bl->address, bl->length,
5564 aspace, addr)));
5565}
5566
2d134ed3
PA
5567/* Assuming LOC1 and LOC2's types' have meaningful target addresses
5568 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
5569 represent the same location. */
5570
5571static int
4a64f543
MS
5572breakpoint_locations_match (struct bp_location *loc1,
5573 struct bp_location *loc2)
2d134ed3 5574{
2bdf28a0
JK
5575 int hw_point1, hw_point2;
5576
5577 /* Both of them must not be in moribund_locations. */
5578 gdb_assert (loc1->owner != NULL);
5579 gdb_assert (loc2->owner != NULL);
5580
5581 hw_point1 = is_hardware_watchpoint (loc1->owner);
5582 hw_point2 = is_hardware_watchpoint (loc2->owner);
2d134ed3
PA
5583
5584 if (hw_point1 != hw_point2)
5585 return 0;
5586 else if (hw_point1)
5587 return watchpoint_locations_match (loc1, loc2);
5588 else
f1310107
TJB
5589 /* We compare bp_location.length in order to cover ranged breakpoints. */
5590 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
5591 loc2->pspace->aspace, loc2->address)
5592 && loc1->length == loc2->length);
2d134ed3
PA
5593}
5594
76897487
KB
5595static void
5596breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
5597 int bnum, int have_bnum)
5598{
f63fbe86
MS
5599 /* The longest string possibly returned by hex_string_custom
5600 is 50 chars. These must be at least that big for safety. */
5601 char astr1[64];
5602 char astr2[64];
76897487 5603
bb599908
PH
5604 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
5605 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
76897487 5606 if (have_bnum)
8a3fe4f8 5607 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
76897487
KB
5608 bnum, astr1, astr2);
5609 else
8a3fe4f8 5610 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
76897487
KB
5611}
5612
4a64f543
MS
5613/* Adjust a breakpoint's address to account for architectural
5614 constraints on breakpoint placement. Return the adjusted address.
5615 Note: Very few targets require this kind of adjustment. For most
5616 targets, this function is simply the identity function. */
76897487
KB
5617
5618static CORE_ADDR
a6d9a66e
UW
5619adjust_breakpoint_address (struct gdbarch *gdbarch,
5620 CORE_ADDR bpaddr, enum bptype bptype)
76897487 5621{
a6d9a66e 5622 if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
76897487
KB
5623 {
5624 /* Very few targets need any kind of breakpoint adjustment. */
5625 return bpaddr;
5626 }
88f7da05
KB
5627 else if (bptype == bp_watchpoint
5628 || bptype == bp_hardware_watchpoint
5629 || bptype == bp_read_watchpoint
5630 || bptype == bp_access_watchpoint
fe798b75 5631 || bptype == bp_catchpoint)
88f7da05
KB
5632 {
5633 /* Watchpoints and the various bp_catch_* eventpoints should not
5634 have their addresses modified. */
5635 return bpaddr;
5636 }
76897487
KB
5637 else
5638 {
5639 CORE_ADDR adjusted_bpaddr;
5640
5641 /* Some targets have architectural constraints on the placement
5642 of breakpoint instructions. Obtain the adjusted address. */
a6d9a66e 5643 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
76897487
KB
5644
5645 /* An adjusted breakpoint address can significantly alter
5646 a user's expectations. Print a warning if an adjustment
5647 is required. */
5648 if (adjusted_bpaddr != bpaddr)
5649 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
5650
5651 return adjusted_bpaddr;
5652 }
5653}
5654
7cc221ef
DJ
5655/* Allocate a struct bp_location. */
5656
26bb91f3 5657static struct bp_location *
39d61571 5658allocate_bp_location (struct breakpoint *bpt)
7cc221ef 5659{
afe38095 5660 struct bp_location *loc;
7cc221ef
DJ
5661
5662 loc = xmalloc (sizeof (struct bp_location));
5663 memset (loc, 0, sizeof (*loc));
5664
e049a4b5 5665 loc->owner = bpt;
511a6cd4 5666 loc->cond = NULL;
0d381245
VP
5667 loc->shlib_disabled = 0;
5668 loc->enabled = 1;
e049a4b5 5669
39d61571 5670 switch (bpt->type)
e049a4b5
DJ
5671 {
5672 case bp_breakpoint:
5673 case bp_until:
5674 case bp_finish:
5675 case bp_longjmp:
5676 case bp_longjmp_resume:
186c406b
TT
5677 case bp_exception:
5678 case bp_exception_resume:
e049a4b5 5679 case bp_step_resume:
e049a4b5
DJ
5680 case bp_watchpoint_scope:
5681 case bp_call_dummy:
aa7d318d 5682 case bp_std_terminate:
e049a4b5
DJ
5683 case bp_shlib_event:
5684 case bp_thread_event:
5685 case bp_overlay_event:
4efc6507 5686 case bp_jit_event:
0fd8e87f 5687 case bp_longjmp_master:
aa7d318d 5688 case bp_std_terminate_master:
186c406b 5689 case bp_exception_master:
0e30163f
JK
5690 case bp_gnu_ifunc_resolver:
5691 case bp_gnu_ifunc_resolver_return:
e049a4b5
DJ
5692 loc->loc_type = bp_loc_software_breakpoint;
5693 break;
5694 case bp_hardware_breakpoint:
5695 loc->loc_type = bp_loc_hardware_breakpoint;
5696 break;
5697 case bp_hardware_watchpoint:
5698 case bp_read_watchpoint:
5699 case bp_access_watchpoint:
5700 loc->loc_type = bp_loc_hardware_watchpoint;
5701 break;
5702 case bp_watchpoint:
ce78b96d 5703 case bp_catchpoint:
15c3d785
PA
5704 case bp_tracepoint:
5705 case bp_fast_tracepoint:
0fb4aa4b 5706 case bp_static_tracepoint:
e049a4b5
DJ
5707 loc->loc_type = bp_loc_other;
5708 break;
5709 default:
e2e0b3e5 5710 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
e049a4b5
DJ
5711 }
5712
f431efe5 5713 loc->refc = 1;
7cc221ef
DJ
5714 return loc;
5715}
5716
f431efe5
PA
5717static void
5718free_bp_location (struct bp_location *loc)
fe3f5fa8
VP
5719{
5720 if (loc->cond)
5721 xfree (loc->cond);
74960c60
VP
5722
5723 if (loc->function_name)
5724 xfree (loc->function_name);
f431efe5 5725
fe3f5fa8
VP
5726 xfree (loc);
5727}
5728
f431efe5
PA
5729/* Increment reference count. */
5730
5731static void
5732incref_bp_location (struct bp_location *bl)
5733{
5734 ++bl->refc;
5735}
5736
5737/* Decrement reference count. If the reference count reaches 0,
5738 destroy the bp_location. Sets *BLP to NULL. */
5739
5740static void
5741decref_bp_location (struct bp_location **blp)
5742{
0807b50c
PA
5743 gdb_assert ((*blp)->refc > 0);
5744
f431efe5
PA
5745 if (--(*blp)->refc == 0)
5746 free_bp_location (*blp);
5747 *blp = NULL;
5748}
5749
4a64f543
MS
5750/* Helper to set_raw_breakpoint below. Creates a breakpoint that has
5751 type BPTYPE and has no locations as yet. */
5752/* This function is used in gdbtk sources and thus can not be made
5753 static. */
c906108c 5754
c40e75cd 5755static struct breakpoint *
a6d9a66e
UW
5756set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
5757 enum bptype bptype)
c906108c 5758{
52f0bd74 5759 struct breakpoint *b, *b1;
c906108c
SS
5760
5761 b = (struct breakpoint *) xmalloc (sizeof (struct breakpoint));
5762 memset (b, 0, sizeof (*b));
2219d63c 5763
4d28f7a8 5764 b->type = bptype;
a6d9a66e 5765 b->gdbarch = gdbarch;
c906108c
SS
5766 b->language = current_language->la_language;
5767 b->input_radix = input_radix;
5768 b->thread = -1;
b5de0fa7 5769 b->enable_state = bp_enabled;
c906108c
SS
5770 b->next = 0;
5771 b->silent = 0;
5772 b->ignore_count = 0;
5773 b->commands = NULL;
818dd999 5774 b->frame_id = null_frame_id;
3a3e9ee3 5775 b->forked_inferior_pid = null_ptid;
c906108c 5776 b->exec_pathname = NULL;
a96d9b2e 5777 b->syscalls_to_be_caught = NULL;
3086aeae 5778 b->ops = NULL;
0d381245 5779 b->condition_not_parsed = 0;
84f4c1fe 5780 b->py_bp_object = NULL;
d0fb5eae 5781 b->related_breakpoint = b;
c906108c 5782
4a64f543
MS
5783 /* Add this breakpoint to the end of the chain so that a list of
5784 breakpoints will come out in order of increasing numbers. */
c906108c
SS
5785
5786 b1 = breakpoint_chain;
5787 if (b1 == 0)
5788 breakpoint_chain = b;
5789 else
5790 {
5791 while (b1->next)
5792 b1 = b1->next;
5793 b1->next = b;
5794 }
0d381245
VP
5795 return b;
5796}
5797
0e30163f
JK
5798/* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
5799 resolutions should be made as the user specified the location explicitly
5800 enough. */
5801
0d381245 5802static void
0e30163f 5803set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
0d381245 5804{
2bdf28a0
JK
5805 gdb_assert (loc->owner != NULL);
5806
0d381245 5807 if (loc->owner->type == bp_breakpoint
1042e4c0 5808 || loc->owner->type == bp_hardware_breakpoint
d77f58be 5809 || is_tracepoint (loc->owner))
0d381245 5810 {
0e30163f
JK
5811 int is_gnu_ifunc;
5812
5813 find_pc_partial_function_gnu_ifunc (loc->address, &loc->function_name,
5814 NULL, NULL, &is_gnu_ifunc);
5815
5816 if (is_gnu_ifunc && !explicit_loc)
5817 {
5818 struct breakpoint *b = loc->owner;
5819
5820 gdb_assert (loc->pspace == current_program_space);
5821 if (gnu_ifunc_resolve_name (loc->function_name,
5822 &loc->requested_address))
5823 {
5824 /* Recalculate ADDRESS based on new REQUESTED_ADDRESS. */
5825 loc->address = adjust_breakpoint_address (loc->gdbarch,
5826 loc->requested_address,
5827 b->type);
5828 }
5829 else if (b->type == bp_breakpoint && b->loc == loc
5830 && loc->next == NULL && b->related_breakpoint == b)
5831 {
5832 /* Create only the whole new breakpoint of this type but do not
5833 mess more complicated breakpoints with multiple locations. */
5834 b->type = bp_gnu_ifunc_resolver;
5835 }
5836 }
5837
0d381245
VP
5838 if (loc->function_name)
5839 loc->function_name = xstrdup (loc->function_name);
5840 }
5841}
5842
a6d9a66e
UW
5843/* Attempt to determine architecture of location identified by SAL. */
5844static struct gdbarch *
5845get_sal_arch (struct symtab_and_line sal)
5846{
5847 if (sal.section)
5848 return get_objfile_arch (sal.section->objfile);
5849 if (sal.symtab)
5850 return get_objfile_arch (sal.symtab->objfile);
5851
5852 return NULL;
5853}
5854
0d381245
VP
5855/* set_raw_breakpoint is a low level routine for allocating and
5856 partially initializing a breakpoint of type BPTYPE. The newly
5857 created breakpoint's address, section, source file name, and line
5858 number are provided by SAL. The newly created and partially
5859 initialized breakpoint is added to the breakpoint chain and
5860 is also returned as the value of this function.
5861
5862 It is expected that the caller will complete the initialization of
5863 the newly created breakpoint struct as well as output any status
5864 information regarding the creation of a new breakpoint. In
5865 particular, set_raw_breakpoint does NOT set the breakpoint
5866 number! Care should be taken to not allow an error to occur
5867 prior to completing the initialization of the breakpoint. If this
5868 should happen, a bogus breakpoint will be left on the chain. */
5869
63c252f8 5870struct breakpoint *
a6d9a66e
UW
5871set_raw_breakpoint (struct gdbarch *gdbarch,
5872 struct symtab_and_line sal, enum bptype bptype)
0d381245 5873{
4a64f543
MS
5874 struct breakpoint *b = set_raw_breakpoint_without_location (gdbarch,
5875 bptype);
0d381245 5876 CORE_ADDR adjusted_address;
a6d9a66e
UW
5877 struct gdbarch *loc_gdbarch;
5878
5879 loc_gdbarch = get_sal_arch (sal);
5880 if (!loc_gdbarch)
5881 loc_gdbarch = b->gdbarch;
0d381245 5882
6c95b8df
PA
5883 if (bptype != bp_catchpoint)
5884 gdb_assert (sal.pspace != NULL);
5885
0d381245
VP
5886 /* Adjust the breakpoint's address prior to allocating a location.
5887 Once we call allocate_bp_location(), that mostly uninitialized
5888 location will be placed on the location chain. Adjustment of the
8defab1a 5889 breakpoint may cause target_read_memory() to be called and we do
0d381245
VP
5890 not want its scan of the location chain to find a breakpoint and
5891 location that's only been partially initialized. */
4a64f543
MS
5892 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
5893 sal.pc, b->type);
0d381245 5894
39d61571 5895 b->loc = allocate_bp_location (b);
a6d9a66e 5896 b->loc->gdbarch = loc_gdbarch;
0d381245
VP
5897 b->loc->requested_address = sal.pc;
5898 b->loc->address = adjusted_address;
6c95b8df
PA
5899 b->loc->pspace = sal.pspace;
5900
5901 /* Store the program space that was used to set the breakpoint, for
5902 breakpoint resetting. */
5903 b->pspace = sal.pspace;
0d381245
VP
5904
5905 if (sal.symtab == NULL)
5906 b->source_file = NULL;
5907 else
1b36a34b 5908 b->source_file = xstrdup (sal.symtab->filename);
0d381245
VP
5909 b->loc->section = sal.section;
5910 b->line_number = sal.line;
5911
0e30163f
JK
5912 set_breakpoint_location_function (b->loc,
5913 sal.explicit_pc || sal.explicit_line);
c906108c 5914
c906108c
SS
5915 breakpoints_changed ();
5916
5917 return b;
5918}
5919
c2c6d25f
JM
5920
5921/* Note that the breakpoint object B describes a permanent breakpoint
5922 instruction, hard-wired into the inferior's code. */
5923void
5924make_breakpoint_permanent (struct breakpoint *b)
5925{
0d381245 5926 struct bp_location *bl;
cc59ec59 5927
b5de0fa7 5928 b->enable_state = bp_permanent;
c2c6d25f 5929
4a64f543
MS
5930 /* By definition, permanent breakpoints are already present in the
5931 code. Mark all locations as inserted. For now,
5932 make_breakpoint_permanent is called in just one place, so it's
5933 hard to say if it's reasonable to have permanent breakpoint with
5934 multiple locations or not, but it's easy to implmement. */
0d381245
VP
5935 for (bl = b->loc; bl; bl = bl->next)
5936 bl->inserted = 1;
c2c6d25f
JM
5937}
5938
53a5351d 5939/* Call this routine when stepping and nexting to enable a breakpoint
186c406b
TT
5940 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
5941 initiated the operation. */
c906108c
SS
5942
5943void
186c406b 5944set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
c906108c 5945{
35df4500 5946 struct breakpoint *b, *b_tmp;
186c406b 5947 int thread = tp->num;
0fd8e87f
UW
5948
5949 /* To avoid having to rescan all objfile symbols at every step,
5950 we maintain a list of continually-inserted but always disabled
5951 longjmp "master" breakpoints. Here, we simply create momentary
5952 clones of those and enable them for the requested thread. */
35df4500 5953 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df 5954 if (b->pspace == current_program_space
186c406b
TT
5955 && (b->type == bp_longjmp_master
5956 || b->type == bp_exception_master))
0fd8e87f
UW
5957 {
5958 struct breakpoint *clone = clone_momentary_breakpoint (b);
cc59ec59 5959
186c406b 5960 clone->type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
0fd8e87f
UW
5961 clone->thread = thread;
5962 }
186c406b
TT
5963
5964 tp->initiating_frame = frame;
c906108c
SS
5965}
5966
611c83ae 5967/* Delete all longjmp breakpoints from THREAD. */
c906108c 5968void
611c83ae 5969delete_longjmp_breakpoint (int thread)
c906108c 5970{
35df4500 5971 struct breakpoint *b, *b_tmp;
c906108c 5972
35df4500 5973 ALL_BREAKPOINTS_SAFE (b, b_tmp)
186c406b 5974 if (b->type == bp_longjmp || b->type == bp_exception)
611c83ae
PA
5975 {
5976 if (b->thread == thread)
5977 delete_breakpoint (b);
5978 }
c906108c
SS
5979}
5980
1900040c
MS
5981void
5982enable_overlay_breakpoints (void)
5983{
52f0bd74 5984 struct breakpoint *b;
1900040c
MS
5985
5986 ALL_BREAKPOINTS (b)
5987 if (b->type == bp_overlay_event)
5988 {
5989 b->enable_state = bp_enabled;
b60e7edf 5990 update_global_location_list (1);
c02f5703 5991 overlay_events_enabled = 1;
1900040c
MS
5992 }
5993}
5994
5995void
5996disable_overlay_breakpoints (void)
5997{
52f0bd74 5998 struct breakpoint *b;
1900040c
MS
5999
6000 ALL_BREAKPOINTS (b)
6001 if (b->type == bp_overlay_event)
6002 {
6003 b->enable_state = bp_disabled;
b60e7edf 6004 update_global_location_list (0);
c02f5703 6005 overlay_events_enabled = 0;
1900040c
MS
6006 }
6007}
6008
aa7d318d
TT
6009/* Set an active std::terminate breakpoint for each std::terminate
6010 master breakpoint. */
6011void
6012set_std_terminate_breakpoint (void)
6013{
35df4500 6014 struct breakpoint *b, *b_tmp;
aa7d318d 6015
35df4500 6016 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
6017 if (b->pspace == current_program_space
6018 && b->type == bp_std_terminate_master)
6019 {
6020 struct breakpoint *clone = clone_momentary_breakpoint (b);
6021 clone->type = bp_std_terminate;
6022 }
6023}
6024
6025/* Delete all the std::terminate breakpoints. */
6026void
6027delete_std_terminate_breakpoint (void)
6028{
35df4500 6029 struct breakpoint *b, *b_tmp;
aa7d318d 6030
35df4500 6031 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
6032 if (b->type == bp_std_terminate)
6033 delete_breakpoint (b);
6034}
6035
c4093a6a 6036struct breakpoint *
a6d9a66e 6037create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
c4093a6a
JM
6038{
6039 struct breakpoint *b;
c4093a6a 6040
a6d9a66e 6041 b = create_internal_breakpoint (gdbarch, address, bp_thread_event);
c4093a6a 6042
b5de0fa7 6043 b->enable_state = bp_enabled;
c4093a6a 6044 /* addr_string has to be used or breakpoint_re_set will delete me. */
5af949e3
UW
6045 b->addr_string
6046 = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
c4093a6a 6047
b60e7edf 6048 update_global_location_list_nothrow (1);
74960c60 6049
c4093a6a
JM
6050 return b;
6051}
6052
6053void
6054remove_thread_event_breakpoints (void)
6055{
35df4500 6056 struct breakpoint *b, *b_tmp;
c4093a6a 6057
35df4500 6058 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df
PA
6059 if (b->type == bp_thread_event
6060 && b->loc->pspace == current_program_space)
c4093a6a
JM
6061 delete_breakpoint (b);
6062}
6063
0101ce28
JJ
6064struct lang_and_radix
6065 {
6066 enum language lang;
6067 int radix;
6068 };
6069
4efc6507
DE
6070/* Create a breakpoint for JIT code registration and unregistration. */
6071
6072struct breakpoint *
6073create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6074{
6075 struct breakpoint *b;
6076
6077 b = create_internal_breakpoint (gdbarch, address, bp_jit_event);
6078 update_global_location_list_nothrow (1);
6079 return b;
6080}
0101ce28 6081
03673fc7
PP
6082/* Remove JIT code registration and unregistration breakpoint(s). */
6083
6084void
6085remove_jit_event_breakpoints (void)
6086{
6087 struct breakpoint *b, *b_tmp;
6088
6089 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6090 if (b->type == bp_jit_event
6091 && b->loc->pspace == current_program_space)
6092 delete_breakpoint (b);
6093}
6094
cae688ec
JJ
6095void
6096remove_solib_event_breakpoints (void)
6097{
35df4500 6098 struct breakpoint *b, *b_tmp;
cae688ec 6099
35df4500 6100 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df
PA
6101 if (b->type == bp_shlib_event
6102 && b->loc->pspace == current_program_space)
cae688ec
JJ
6103 delete_breakpoint (b);
6104}
6105
6106struct breakpoint *
a6d9a66e 6107create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
cae688ec
JJ
6108{
6109 struct breakpoint *b;
6110
a6d9a66e 6111 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event);
b60e7edf 6112 update_global_location_list_nothrow (1);
cae688ec
JJ
6113 return b;
6114}
6115
6116/* Disable any breakpoints that are on code in shared libraries. Only
6117 apply to enabled breakpoints, disabled ones can just stay disabled. */
6118
6119void
cb851954 6120disable_breakpoints_in_shlibs (void)
cae688ec 6121{
876fa593 6122 struct bp_location *loc, **locp_tmp;
cae688ec 6123
876fa593 6124 ALL_BP_LOCATIONS (loc, locp_tmp)
cae688ec 6125 {
2bdf28a0 6126 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 6127 struct breakpoint *b = loc->owner;
2bdf28a0 6128
4a64f543
MS
6129 /* We apply the check to all breakpoints, including disabled for
6130 those with loc->duplicate set. This is so that when breakpoint
6131 becomes enabled, or the duplicate is removed, gdb will try to
6132 insert all breakpoints. If we don't set shlib_disabled here,
6133 we'll try to insert those breakpoints and fail. */
1042e4c0 6134 if (((b->type == bp_breakpoint)
508ccb1f 6135 || (b->type == bp_jit_event)
1042e4c0 6136 || (b->type == bp_hardware_breakpoint)
d77f58be 6137 || (is_tracepoint (b)))
6c95b8df 6138 && loc->pspace == current_program_space
0d381245 6139 && !loc->shlib_disabled
a77053c2 6140#ifdef PC_SOLIB
0d381245 6141 && PC_SOLIB (loc->address)
a77053c2 6142#else
6c95b8df 6143 && solib_name_from_address (loc->pspace, loc->address)
a77053c2
MK
6144#endif
6145 )
0d381245
VP
6146 {
6147 loc->shlib_disabled = 1;
6148 }
cae688ec
JJ
6149 }
6150}
6151
7a9dd1b2 6152/* Disable any breakpoints that are in an unloaded shared library.
4a64f543
MS
6153 Only apply to enabled breakpoints, disabled ones can just stay
6154 disabled. */
84acb35a 6155
75149521 6156static void
84acb35a
JJ
6157disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
6158{
876fa593 6159 struct bp_location *loc, **locp_tmp;
84acb35a
JJ
6160 int disabled_shlib_breaks = 0;
6161
c86cf029
VP
6162 /* SunOS a.out shared libraries are always mapped, so do not
6163 disable breakpoints; they will only be reported as unloaded
6164 through clear_solib when GDB discards its shared library
6165 list. See clear_solib for more information. */
6166 if (exec_bfd != NULL
6167 && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
6168 return;
6169
876fa593 6170 ALL_BP_LOCATIONS (loc, locp_tmp)
84acb35a 6171 {
2bdf28a0 6172 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 6173 struct breakpoint *b = loc->owner;
cc59ec59 6174
0d381245
VP
6175 if ((loc->loc_type == bp_loc_hardware_breakpoint
6176 || loc->loc_type == bp_loc_software_breakpoint)
6c95b8df 6177 && solib->pspace == loc->pspace
e2dd7057 6178 && !loc->shlib_disabled
508ccb1f
TT
6179 && (b->type == bp_breakpoint
6180 || b->type == bp_jit_event
6181 || b->type == bp_hardware_breakpoint)
e2dd7057 6182 && solib_contains_address_p (solib, loc->address))
84acb35a 6183 {
e2dd7057
PP
6184 loc->shlib_disabled = 1;
6185 /* At this point, we cannot rely on remove_breakpoint
6186 succeeding so we must mark the breakpoint as not inserted
6187 to prevent future errors occurring in remove_breakpoints. */
6188 loc->inserted = 0;
8d3788bd
VP
6189
6190 /* This may cause duplicate notifications for the same breakpoint. */
6191 observer_notify_breakpoint_modified (b);
6192
e2dd7057
PP
6193 if (!disabled_shlib_breaks)
6194 {
6195 target_terminal_ours_for_output ();
3e43a32a
MS
6196 warning (_("Temporarily disabling breakpoints "
6197 "for unloaded shared library \"%s\""),
e2dd7057 6198 solib->so_name);
84acb35a 6199 }
e2dd7057 6200 disabled_shlib_breaks = 1;
84acb35a
JJ
6201 }
6202 }
84acb35a
JJ
6203}
6204
ce78b96d
JB
6205/* FORK & VFORK catchpoints. */
6206
4a64f543
MS
6207/* Implement the "insert" breakpoint_ops method for fork
6208 catchpoints. */
ce78b96d 6209
77b06cd7
TJB
6210static int
6211insert_catch_fork (struct bp_location *bl)
ce78b96d 6212{
77b06cd7 6213 return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
ce78b96d
JB
6214}
6215
4a64f543
MS
6216/* Implement the "remove" breakpoint_ops method for fork
6217 catchpoints. */
ce78b96d
JB
6218
6219static int
77b06cd7 6220remove_catch_fork (struct bp_location *bl)
ce78b96d
JB
6221{
6222 return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
6223}
6224
6225/* Implement the "breakpoint_hit" breakpoint_ops method for fork
6226 catchpoints. */
6227
6228static int
f1310107
TJB
6229breakpoint_hit_catch_fork (const struct bp_location *bl,
6230 struct address_space *aspace, CORE_ADDR bp_addr)
ce78b96d 6231{
f1310107 6232 return inferior_has_forked (inferior_ptid, &bl->owner->forked_inferior_pid);
ce78b96d
JB
6233}
6234
4a64f543
MS
6235/* Implement the "print_it" breakpoint_ops method for fork
6236 catchpoints. */
ce78b96d
JB
6237
6238static enum print_stop_action
6239print_it_catch_fork (struct breakpoint *b)
6240{
6241 annotate_catchpoint (b->number);
6242 printf_filtered (_("\nCatchpoint %d (forked process %d), "),
6243 b->number, ptid_get_pid (b->forked_inferior_pid));
6244 return PRINT_SRC_AND_LOC;
6245}
6246
4a64f543
MS
6247/* Implement the "print_one" breakpoint_ops method for fork
6248 catchpoints. */
ce78b96d
JB
6249
6250static void
a6d9a66e 6251print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 6252{
79a45b7d
TT
6253 struct value_print_options opts;
6254
6255 get_user_print_options (&opts);
6256
4a64f543
MS
6257 /* Field 4, the address, is omitted (which makes the columns not
6258 line up too nicely with the headers, but the effect is relatively
6259 readable). */
79a45b7d 6260 if (opts.addressprint)
ce78b96d
JB
6261 ui_out_field_skip (uiout, "addr");
6262 annotate_field (5);
6263 ui_out_text (uiout, "fork");
6264 if (!ptid_equal (b->forked_inferior_pid, null_ptid))
6265 {
6266 ui_out_text (uiout, ", process ");
6267 ui_out_field_int (uiout, "what",
6268 ptid_get_pid (b->forked_inferior_pid));
6269 ui_out_spaces (uiout, 1);
6270 }
6271}
6272
6273/* Implement the "print_mention" breakpoint_ops method for fork
6274 catchpoints. */
6275
6276static void
6277print_mention_catch_fork (struct breakpoint *b)
6278{
6279 printf_filtered (_("Catchpoint %d (fork)"), b->number);
6280}
6281
6149aea9
PA
6282/* Implement the "print_recreate" breakpoint_ops method for fork
6283 catchpoints. */
6284
6285static void
6286print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
6287{
6288 fprintf_unfiltered (fp, "catch fork");
6289}
6290
ce78b96d
JB
6291/* The breakpoint_ops structure to be used in fork catchpoints. */
6292
6293static struct breakpoint_ops catch_fork_breakpoint_ops =
6294{
6295 insert_catch_fork,
6296 remove_catch_fork,
6297 breakpoint_hit_catch_fork,
e09342b5 6298 NULL, /* resources_needed */
ce78b96d
JB
6299 print_it_catch_fork,
6300 print_one_catch_fork,
f1310107 6301 NULL, /* print_one_detail */
6149aea9
PA
6302 print_mention_catch_fork,
6303 print_recreate_catch_fork
ce78b96d
JB
6304};
6305
4a64f543
MS
6306/* Implement the "insert" breakpoint_ops method for vfork
6307 catchpoints. */
ce78b96d 6308
77b06cd7
TJB
6309static int
6310insert_catch_vfork (struct bp_location *bl)
ce78b96d 6311{
77b06cd7 6312 return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
ce78b96d
JB
6313}
6314
4a64f543
MS
6315/* Implement the "remove" breakpoint_ops method for vfork
6316 catchpoints. */
ce78b96d
JB
6317
6318static int
77b06cd7 6319remove_catch_vfork (struct bp_location *bl)
ce78b96d
JB
6320{
6321 return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
6322}
6323
6324/* Implement the "breakpoint_hit" breakpoint_ops method for vfork
6325 catchpoints. */
6326
6327static int
f1310107
TJB
6328breakpoint_hit_catch_vfork (const struct bp_location *bl,
6329 struct address_space *aspace, CORE_ADDR bp_addr)
ce78b96d 6330{
f1310107 6331 return inferior_has_vforked (inferior_ptid, &bl->owner->forked_inferior_pid);
ce78b96d
JB
6332}
6333
4a64f543
MS
6334/* Implement the "print_it" breakpoint_ops method for vfork
6335 catchpoints. */
ce78b96d
JB
6336
6337static enum print_stop_action
6338print_it_catch_vfork (struct breakpoint *b)
6339{
6340 annotate_catchpoint (b->number);
6341 printf_filtered (_("\nCatchpoint %d (vforked process %d), "),
6342 b->number, ptid_get_pid (b->forked_inferior_pid));
6343 return PRINT_SRC_AND_LOC;
6344}
6345
4a64f543
MS
6346/* Implement the "print_one" breakpoint_ops method for vfork
6347 catchpoints. */
ce78b96d
JB
6348
6349static void
a6d9a66e 6350print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 6351{
79a45b7d
TT
6352 struct value_print_options opts;
6353
6354 get_user_print_options (&opts);
4a64f543
MS
6355 /* Field 4, the address, is omitted (which makes the columns not
6356 line up too nicely with the headers, but the effect is relatively
6357 readable). */
79a45b7d 6358 if (opts.addressprint)
ce78b96d
JB
6359 ui_out_field_skip (uiout, "addr");
6360 annotate_field (5);
6361 ui_out_text (uiout, "vfork");
6362 if (!ptid_equal (b->forked_inferior_pid, null_ptid))
6363 {
6364 ui_out_text (uiout, ", process ");
6365 ui_out_field_int (uiout, "what",
6366 ptid_get_pid (b->forked_inferior_pid));
6367 ui_out_spaces (uiout, 1);
6368 }
6369}
6370
6371/* Implement the "print_mention" breakpoint_ops method for vfork
6372 catchpoints. */
6373
6374static void
6375print_mention_catch_vfork (struct breakpoint *b)
6376{
6377 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
6378}
6379
6149aea9
PA
6380/* Implement the "print_recreate" breakpoint_ops method for vfork
6381 catchpoints. */
6382
6383static void
6384print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
6385{
6386 fprintf_unfiltered (fp, "catch vfork");
6387}
6388
ce78b96d
JB
6389/* The breakpoint_ops structure to be used in vfork catchpoints. */
6390
6391static struct breakpoint_ops catch_vfork_breakpoint_ops =
6392{
6393 insert_catch_vfork,
6394 remove_catch_vfork,
6395 breakpoint_hit_catch_vfork,
e09342b5 6396 NULL, /* resources_needed */
ce78b96d
JB
6397 print_it_catch_vfork,
6398 print_one_catch_vfork,
f1310107 6399 NULL, /* print_one_detail */
6149aea9
PA
6400 print_mention_catch_vfork,
6401 print_recreate_catch_vfork
ce78b96d
JB
6402};
6403
a96d9b2e
SDJ
6404/* Implement the "insert" breakpoint_ops method for syscall
6405 catchpoints. */
6406
77b06cd7
TJB
6407static int
6408insert_catch_syscall (struct bp_location *bl)
a96d9b2e
SDJ
6409{
6410 struct inferior *inf = current_inferior ();
6411
6412 ++inf->total_syscalls_count;
77b06cd7 6413 if (!bl->owner->syscalls_to_be_caught)
a96d9b2e
SDJ
6414 ++inf->any_syscall_count;
6415 else
6416 {
6417 int i, iter;
cc59ec59 6418
a96d9b2e 6419 for (i = 0;
77b06cd7 6420 VEC_iterate (int, bl->owner->syscalls_to_be_caught, i, iter);
a96d9b2e
SDJ
6421 i++)
6422 {
6423 int elem;
cc59ec59 6424
a96d9b2e
SDJ
6425 if (iter >= VEC_length (int, inf->syscalls_counts))
6426 {
6427 int old_size = VEC_length (int, inf->syscalls_counts);
3e43a32a
MS
6428 uintptr_t vec_addr_offset
6429 = old_size * ((uintptr_t) sizeof (int));
a96d9b2e
SDJ
6430 uintptr_t vec_addr;
6431 VEC_safe_grow (int, inf->syscalls_counts, iter + 1);
6432 vec_addr = (uintptr_t) VEC_address (int, inf->syscalls_counts) +
6433 vec_addr_offset;
6434 memset ((void *) vec_addr, 0,
6435 (iter + 1 - old_size) * sizeof (int));
6436 }
6437 elem = VEC_index (int, inf->syscalls_counts, iter);
6438 VEC_replace (int, inf->syscalls_counts, iter, ++elem);
6439 }
6440 }
6441
77b06cd7
TJB
6442 return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
6443 inf->total_syscalls_count != 0,
6444 inf->any_syscall_count,
6445 VEC_length (int, inf->syscalls_counts),
6446 VEC_address (int, inf->syscalls_counts));
a96d9b2e
SDJ
6447}
6448
6449/* Implement the "remove" breakpoint_ops method for syscall
6450 catchpoints. */
6451
6452static int
77b06cd7 6453remove_catch_syscall (struct bp_location *bl)
a96d9b2e
SDJ
6454{
6455 struct inferior *inf = current_inferior ();
6456
6457 --inf->total_syscalls_count;
77b06cd7 6458 if (!bl->owner->syscalls_to_be_caught)
a96d9b2e
SDJ
6459 --inf->any_syscall_count;
6460 else
6461 {
6462 int i, iter;
cc59ec59 6463
a96d9b2e 6464 for (i = 0;
77b06cd7 6465 VEC_iterate (int, bl->owner->syscalls_to_be_caught, i, iter);
a96d9b2e
SDJ
6466 i++)
6467 {
6468 int elem;
6469 if (iter >= VEC_length (int, inf->syscalls_counts))
6470 /* Shouldn't happen. */
6471 continue;
6472 elem = VEC_index (int, inf->syscalls_counts, iter);
6473 VEC_replace (int, inf->syscalls_counts, iter, --elem);
6474 }
6475 }
6476
6477 return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
6478 inf->total_syscalls_count != 0,
6479 inf->any_syscall_count,
6480 VEC_length (int, inf->syscalls_counts),
3e43a32a
MS
6481 VEC_address (int,
6482 inf->syscalls_counts));
a96d9b2e
SDJ
6483}
6484
6485/* Implement the "breakpoint_hit" breakpoint_ops method for syscall
6486 catchpoints. */
6487
6488static int
f1310107
TJB
6489breakpoint_hit_catch_syscall (const struct bp_location *bl,
6490 struct address_space *aspace, CORE_ADDR bp_addr)
a96d9b2e 6491{
4a64f543
MS
6492 /* We must check if we are catching specific syscalls in this
6493 breakpoint. If we are, then we must guarantee that the called
6494 syscall is the same syscall we are catching. */
a96d9b2e 6495 int syscall_number = 0;
f1310107 6496 const struct breakpoint *b = bl->owner;
a96d9b2e
SDJ
6497
6498 if (!inferior_has_called_syscall (inferior_ptid, &syscall_number))
6499 return 0;
6500
6501 /* Now, checking if the syscall is the same. */
6502 if (b->syscalls_to_be_caught)
6503 {
6504 int i, iter;
cc59ec59 6505
a96d9b2e
SDJ
6506 for (i = 0;
6507 VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
6508 i++)
6509 if (syscall_number == iter)
6510 break;
6511 /* Not the same. */
6512 if (!iter)
6513 return 0;
6514 }
6515
6516 return 1;
6517}
6518
6519/* Implement the "print_it" breakpoint_ops method for syscall
6520 catchpoints. */
6521
6522static enum print_stop_action
6523print_it_catch_syscall (struct breakpoint *b)
6524{
6525 /* These are needed because we want to know in which state a
6526 syscall is. It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
6527 or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
6528 must print "called syscall" or "returned from syscall". */
6529 ptid_t ptid;
6530 struct target_waitstatus last;
6531 struct syscall s;
6532 struct cleanup *old_chain;
6533 char *syscall_id;
6534
6535 get_last_target_status (&ptid, &last);
6536
6537 get_syscall_by_number (last.value.syscall_number, &s);
6538
6539 annotate_catchpoint (b->number);
6540
6541 if (s.name == NULL)
6542 syscall_id = xstrprintf ("%d", last.value.syscall_number);
6543 else
6544 syscall_id = xstrprintf ("'%s'", s.name);
6545
6546 old_chain = make_cleanup (xfree, syscall_id);
6547
6548 if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
6549 printf_filtered (_("\nCatchpoint %d (call to syscall %s), "),
6550 b->number, syscall_id);
6551 else if (last.kind == TARGET_WAITKIND_SYSCALL_RETURN)
6552 printf_filtered (_("\nCatchpoint %d (returned from syscall %s), "),
6553 b->number, syscall_id);
6554
6555 do_cleanups (old_chain);
6556
6557 return PRINT_SRC_AND_LOC;
6558}
6559
6560/* Implement the "print_one" breakpoint_ops method for syscall
6561 catchpoints. */
6562
6563static void
6564print_one_catch_syscall (struct breakpoint *b,
f1310107 6565 struct bp_location **last_loc)
a96d9b2e
SDJ
6566{
6567 struct value_print_options opts;
6568
6569 get_user_print_options (&opts);
4a64f543
MS
6570 /* Field 4, the address, is omitted (which makes the columns not
6571 line up too nicely with the headers, but the effect is relatively
6572 readable). */
a96d9b2e
SDJ
6573 if (opts.addressprint)
6574 ui_out_field_skip (uiout, "addr");
6575 annotate_field (5);
6576
6577 if (b->syscalls_to_be_caught
6578 && VEC_length (int, b->syscalls_to_be_caught) > 1)
6579 ui_out_text (uiout, "syscalls \"");
6580 else
6581 ui_out_text (uiout, "syscall \"");
6582
6583 if (b->syscalls_to_be_caught)
6584 {
6585 int i, iter;
6586 char *text = xstrprintf ("%s", "");
cc59ec59 6587
a96d9b2e
SDJ
6588 for (i = 0;
6589 VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
6590 i++)
6591 {
6592 char *x = text;
6593 struct syscall s;
6594 get_syscall_by_number (iter, &s);
6595
6596 if (s.name != NULL)
6597 text = xstrprintf ("%s%s, ", text, s.name);
6598 else
6599 text = xstrprintf ("%s%d, ", text, iter);
6600
6601 /* We have to xfree the last 'text' (now stored at 'x')
6602 because xstrprintf dinamically allocates new space for it
6603 on every call. */
6604 xfree (x);
6605 }
6606 /* Remove the last comma. */
6607 text[strlen (text) - 2] = '\0';
6608 ui_out_field_string (uiout, "what", text);
6609 }
6610 else
6611 ui_out_field_string (uiout, "what", "<any syscall>");
6612 ui_out_text (uiout, "\" ");
6613}
6614
6615/* Implement the "print_mention" breakpoint_ops method for syscall
6616 catchpoints. */
6617
6618static void
6619print_mention_catch_syscall (struct breakpoint *b)
6620{
6621 if (b->syscalls_to_be_caught)
6622 {
6623 int i, iter;
6624
6625 if (VEC_length (int, b->syscalls_to_be_caught) > 1)
6626 printf_filtered (_("Catchpoint %d (syscalls"), b->number);
6627 else
6628 printf_filtered (_("Catchpoint %d (syscall"), b->number);
6629
6630 for (i = 0;
6631 VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
6632 i++)
6633 {
6634 struct syscall s;
6635 get_syscall_by_number (iter, &s);
6636
6637 if (s.name)
6638 printf_filtered (" '%s' [%d]", s.name, s.number);
6639 else
6640 printf_filtered (" %d", s.number);
6641 }
6642 printf_filtered (")");
6643 }
6644 else
6645 printf_filtered (_("Catchpoint %d (any syscall)"),
6646 b->number);
6647}
6648
6149aea9
PA
6649/* Implement the "print_recreate" breakpoint_ops method for syscall
6650 catchpoints. */
6651
6652static void
6653print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
6654{
6655 fprintf_unfiltered (fp, "catch syscall");
6656
6657 if (b->syscalls_to_be_caught)
6658 {
6659 int i, iter;
6660
6661 for (i = 0;
6662 VEC_iterate (int, b->syscalls_to_be_caught, i, iter);
6663 i++)
6664 {
6665 struct syscall s;
6666
6667 get_syscall_by_number (iter, &s);
6668 if (s.name)
6669 fprintf_unfiltered (fp, " %s", s.name);
6670 else
6671 fprintf_unfiltered (fp, " %d", s.number);
6672 }
6673 }
6674}
6675
a96d9b2e
SDJ
6676/* The breakpoint_ops structure to be used in syscall catchpoints. */
6677
6678static struct breakpoint_ops catch_syscall_breakpoint_ops =
6679{
6680 insert_catch_syscall,
6681 remove_catch_syscall,
6682 breakpoint_hit_catch_syscall,
e09342b5 6683 NULL, /* resources_needed */
a96d9b2e
SDJ
6684 print_it_catch_syscall,
6685 print_one_catch_syscall,
f1310107 6686 NULL, /* print_one_detail */
6149aea9
PA
6687 print_mention_catch_syscall,
6688 print_recreate_catch_syscall
a96d9b2e
SDJ
6689};
6690
6691/* Returns non-zero if 'b' is a syscall catchpoint. */
6692
6693static int
6694syscall_catchpoint_p (struct breakpoint *b)
6695{
6696 return (b->ops == &catch_syscall_breakpoint_ops);
6697}
6698
6699/* Create a new breakpoint of the bp_catchpoint kind and return it,
6700 but does NOT mention it nor update the global location list.
6701 This is useful if you need to fill more fields in the
6702 struct breakpoint before calling mention.
ce78b96d
JB
6703
6704 If TEMPFLAG is non-zero, then make the breakpoint temporary.
6705 If COND_STRING is not NULL, then store it in the breakpoint.
6706 OPS, if not NULL, is the breakpoint_ops structure associated
6707 to the catchpoint. */
6708
6709static struct breakpoint *
a96d9b2e
SDJ
6710create_catchpoint_without_mention (struct gdbarch *gdbarch, int tempflag,
6711 char *cond_string,
6712 struct breakpoint_ops *ops)
c906108c 6713{
c5aa993b
JM
6714 struct symtab_and_line sal;
6715 struct breakpoint *b;
c5aa993b 6716
fe39c653 6717 init_sal (&sal);
6c95b8df 6718 sal.pspace = current_program_space;
c5aa993b 6719
a6d9a66e 6720 b = set_raw_breakpoint (gdbarch, sal, bp_catchpoint);
c906108c
SS
6721 set_breakpoint_count (breakpoint_count + 1);
6722 b->number = breakpoint_count;
ce78b96d 6723
1b36a34b 6724 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
ce78b96d 6725 b->thread = -1;
c906108c 6726 b->addr_string = NULL;
b5de0fa7
EZ
6727 b->enable_state = bp_enabled;
6728 b->disposition = tempflag ? disp_del : disp_donttouch;
ce78b96d 6729 b->ops = ops;
c5aa993b 6730
a96d9b2e
SDJ
6731 return b;
6732}
6733
6734/* Create a new breakpoint of the bp_catchpoint kind and return it.
6735
6736 If TEMPFLAG is non-zero, then make the breakpoint temporary.
6737 If COND_STRING is not NULL, then store it in the breakpoint.
6738 OPS, if not NULL, is the breakpoint_ops structure associated
6739 to the catchpoint. */
6740
6741static struct breakpoint *
6742create_catchpoint (struct gdbarch *gdbarch, int tempflag,
6743 char *cond_string, struct breakpoint_ops *ops)
6744{
6745 struct breakpoint *b =
6746 create_catchpoint_without_mention (gdbarch, tempflag, cond_string, ops);
6747
c906108c 6748 mention (b);
8d3788bd 6749 observer_notify_breakpoint_created (b);
ce78b96d 6750 update_global_location_list (1);
c906108c 6751
ce78b96d 6752 return b;
c906108c 6753}
c5aa993b 6754
9b70b993 6755static void
a6d9a66e
UW
6756create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
6757 int tempflag, char *cond_string,
ce78b96d 6758 struct breakpoint_ops *ops)
c906108c 6759{
a6d9a66e
UW
6760 struct breakpoint *b
6761 = create_catchpoint (gdbarch, tempflag, cond_string, ops);
ce78b96d
JB
6762
6763 /* FIXME: We should put this information in a breakpoint private data
6764 area. */
6765 b->forked_inferior_pid = null_ptid;
c906108c
SS
6766}
6767
fe798b75
JB
6768/* Exec catchpoints. */
6769
77b06cd7
TJB
6770static int
6771insert_catch_exec (struct bp_location *bl)
c906108c 6772{
77b06cd7 6773 return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
fe798b75 6774}
c906108c 6775
fe798b75 6776static int
77b06cd7 6777remove_catch_exec (struct bp_location *bl)
fe798b75
JB
6778{
6779 return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
6780}
c906108c 6781
fe798b75 6782static int
f1310107
TJB
6783breakpoint_hit_catch_exec (const struct bp_location *bl,
6784 struct address_space *aspace, CORE_ADDR bp_addr)
fe798b75 6785{
f1310107 6786 return inferior_has_execd (inferior_ptid, &bl->owner->exec_pathname);
fe798b75 6787}
c906108c 6788
fe798b75
JB
6789static enum print_stop_action
6790print_it_catch_exec (struct breakpoint *b)
6791{
6792 annotate_catchpoint (b->number);
6793 printf_filtered (_("\nCatchpoint %d (exec'd %s), "), b->number,
6794 b->exec_pathname);
6795 return PRINT_SRC_AND_LOC;
c906108c
SS
6796}
6797
fe798b75 6798static void
a6d9a66e 6799print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
fe798b75
JB
6800{
6801 struct value_print_options opts;
6802
6803 get_user_print_options (&opts);
6804
6805 /* Field 4, the address, is omitted (which makes the columns
6806 not line up too nicely with the headers, but the effect
6807 is relatively readable). */
6808 if (opts.addressprint)
6809 ui_out_field_skip (uiout, "addr");
6810 annotate_field (5);
6811 ui_out_text (uiout, "exec");
6812 if (b->exec_pathname != NULL)
6813 {
6814 ui_out_text (uiout, ", program \"");
6815 ui_out_field_string (uiout, "what", b->exec_pathname);
6816 ui_out_text (uiout, "\" ");
6817 }
6818}
6819
6820static void
6821print_mention_catch_exec (struct breakpoint *b)
6822{
6823 printf_filtered (_("Catchpoint %d (exec)"), b->number);
6824}
6825
6149aea9
PA
6826/* Implement the "print_recreate" breakpoint_ops method for exec
6827 catchpoints. */
6828
6829static void
6830print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
6831{
6832 fprintf_unfiltered (fp, "catch exec");
6833}
6834
fe798b75
JB
6835static struct breakpoint_ops catch_exec_breakpoint_ops =
6836{
6837 insert_catch_exec,
6838 remove_catch_exec,
6839 breakpoint_hit_catch_exec,
e09342b5 6840 NULL, /* resources_needed */
fe798b75
JB
6841 print_it_catch_exec,
6842 print_one_catch_exec,
f1310107 6843 NULL, /* print_one_detail */
6149aea9
PA
6844 print_mention_catch_exec,
6845 print_recreate_catch_exec
fe798b75
JB
6846};
6847
a96d9b2e
SDJ
6848static void
6849create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
6850 struct breakpoint_ops *ops)
6851{
6852 struct gdbarch *gdbarch = get_current_arch ();
6853 struct breakpoint *b =
6854 create_catchpoint_without_mention (gdbarch, tempflag, NULL, ops);
6855
6856 b->syscalls_to_be_caught = filter;
6857
6858 /* Now, we have to mention the breakpoint and update the global
6859 location list. */
6860 mention (b);
8d3788bd 6861 observer_notify_breakpoint_created (b);
a96d9b2e
SDJ
6862 update_global_location_list (1);
6863}
6864
c906108c 6865static int
fba45db2 6866hw_breakpoint_used_count (void)
c906108c 6867{
c906108c 6868 int i = 0;
f1310107
TJB
6869 struct breakpoint *b;
6870 struct bp_location *bl;
c906108c
SS
6871
6872 ALL_BREAKPOINTS (b)
c5aa993b 6873 {
d6b74ac4 6874 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
f1310107
TJB
6875 for (bl = b->loc; bl; bl = bl->next)
6876 {
6877 /* Special types of hardware breakpoints may use more than
6878 one register. */
6879 if (b->ops && b->ops->resources_needed)
6880 i += b->ops->resources_needed (bl);
6881 else
6882 i++;
6883 }
c5aa993b 6884 }
c906108c
SS
6885
6886 return i;
6887}
6888
6889static int
fba45db2 6890hw_watchpoint_used_count (enum bptype type, int *other_type_used)
c906108c 6891{
c906108c 6892 int i = 0;
e09342b5
TJB
6893 struct breakpoint *b;
6894 struct bp_location *bl;
c906108c
SS
6895
6896 *other_type_used = 0;
6897 ALL_BREAKPOINTS (b)
e09342b5
TJB
6898 {
6899 if (!breakpoint_enabled (b))
6900 continue;
6901
c5aa993b 6902 if (b->type == type)
e09342b5
TJB
6903 for (bl = b->loc; bl; bl = bl->next)
6904 {
6905 /* Special types of hardware watchpoints may use more than
6906 one register. */
6907 if (b->ops && b->ops->resources_needed)
6908 i += b->ops->resources_needed (bl);
6909 else
6910 i++;
6911 }
cc60f2e3 6912 else if (is_hardware_watchpoint (b))
c5aa993b 6913 *other_type_used = 1;
e09342b5
TJB
6914 }
6915
c906108c
SS
6916 return i;
6917}
6918
c906108c 6919void
fba45db2 6920disable_watchpoints_before_interactive_call_start (void)
c906108c 6921{
c5aa993b 6922 struct breakpoint *b;
c906108c
SS
6923
6924 ALL_BREAKPOINTS (b)
c5aa993b 6925 {
cc60f2e3 6926 if (is_watchpoint (b) && breakpoint_enabled (b))
c5aa993b 6927 {
b5de0fa7 6928 b->enable_state = bp_call_disabled;
b60e7edf 6929 update_global_location_list (0);
c5aa993b
JM
6930 }
6931 }
c906108c
SS
6932}
6933
6934void
fba45db2 6935enable_watchpoints_after_interactive_call_stop (void)
c906108c 6936{
c5aa993b 6937 struct breakpoint *b;
c906108c
SS
6938
6939 ALL_BREAKPOINTS (b)
c5aa993b 6940 {
cc60f2e3 6941 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
c5aa993b 6942 {
b5de0fa7 6943 b->enable_state = bp_enabled;
b60e7edf 6944 update_global_location_list (1);
c5aa993b
JM
6945 }
6946 }
c906108c
SS
6947}
6948
8bea4e01
UW
6949void
6950disable_breakpoints_before_startup (void)
6951{
6952 struct breakpoint *b;
6953 int found = 0;
6954
6955 ALL_BREAKPOINTS (b)
6956 {
6c95b8df
PA
6957 if (b->pspace != current_program_space)
6958 continue;
6959
8bea4e01
UW
6960 if ((b->type == bp_breakpoint
6961 || b->type == bp_hardware_breakpoint)
6962 && breakpoint_enabled (b))
6963 {
6964 b->enable_state = bp_startup_disabled;
6965 found = 1;
6966 }
6967 }
6968
6969 if (found)
6970 update_global_location_list (0);
6971
6c95b8df 6972 current_program_space->executing_startup = 1;
8bea4e01
UW
6973}
6974
6975void
6976enable_breakpoints_after_startup (void)
6977{
6978 struct breakpoint *b;
6979 int found = 0;
6980
6c95b8df 6981 current_program_space->executing_startup = 0;
8bea4e01
UW
6982
6983 ALL_BREAKPOINTS (b)
6984 {
6c95b8df
PA
6985 if (b->pspace != current_program_space)
6986 continue;
6987
8bea4e01
UW
6988 if ((b->type == bp_breakpoint
6989 || b->type == bp_hardware_breakpoint)
6990 && b->enable_state == bp_startup_disabled)
6991 {
6992 b->enable_state = bp_enabled;
6993 found = 1;
6994 }
6995 }
6996
6997 if (found)
6998 breakpoint_re_set ();
6999}
7000
c906108c
SS
7001
7002/* Set a breakpoint that will evaporate an end of command
7003 at address specified by SAL.
7004 Restrict it to frame FRAME if FRAME is nonzero. */
7005
7006struct breakpoint *
a6d9a66e
UW
7007set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
7008 struct frame_id frame_id, enum bptype type)
c906108c 7009{
52f0bd74 7010 struct breakpoint *b;
edb3359d
DJ
7011
7012 /* If FRAME_ID is valid, it should be a real frame, not an inlined
7013 one. */
7014 gdb_assert (!frame_id_inlined_p (frame_id));
7015
a6d9a66e 7016 b = set_raw_breakpoint (gdbarch, sal, type);
b5de0fa7
EZ
7017 b->enable_state = bp_enabled;
7018 b->disposition = disp_donttouch;
818dd999 7019 b->frame_id = frame_id;
c906108c 7020
4a64f543
MS
7021 /* If we're debugging a multi-threaded program, then we want
7022 momentary breakpoints to be active in only a single thread of
7023 control. */
39f77062
KB
7024 if (in_thread_list (inferior_ptid))
7025 b->thread = pid_to_thread_id (inferior_ptid);
c906108c 7026
b60e7edf 7027 update_global_location_list_nothrow (1);
74960c60 7028
c906108c
SS
7029 return b;
7030}
611c83ae 7031
e58b0e63
PA
7032/* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
7033 ORIG is NULL. */
7034
7035struct breakpoint *
7036clone_momentary_breakpoint (struct breakpoint *orig)
7037{
7038 struct breakpoint *copy;
7039
7040 /* If there's nothing to clone, then return nothing. */
7041 if (orig == NULL)
7042 return NULL;
7043
a6d9a66e 7044 copy = set_raw_breakpoint_without_location (orig->gdbarch, orig->type);
e58b0e63 7045 copy->loc = allocate_bp_location (copy);
0e30163f 7046 set_breakpoint_location_function (copy->loc, 1);
e58b0e63 7047
a6d9a66e 7048 copy->loc->gdbarch = orig->loc->gdbarch;
e58b0e63
PA
7049 copy->loc->requested_address = orig->loc->requested_address;
7050 copy->loc->address = orig->loc->address;
7051 copy->loc->section = orig->loc->section;
6c95b8df 7052 copy->loc->pspace = orig->loc->pspace;
e58b0e63
PA
7053
7054 if (orig->source_file == NULL)
7055 copy->source_file = NULL;
7056 else
7057 copy->source_file = xstrdup (orig->source_file);
7058
7059 copy->line_number = orig->line_number;
7060 copy->frame_id = orig->frame_id;
7061 copy->thread = orig->thread;
6c95b8df 7062 copy->pspace = orig->pspace;
e58b0e63
PA
7063
7064 copy->enable_state = bp_enabled;
7065 copy->disposition = disp_donttouch;
7066 copy->number = internal_breakpoint_number--;
7067
7068 update_global_location_list_nothrow (0);
7069 return copy;
7070}
7071
611c83ae 7072struct breakpoint *
a6d9a66e
UW
7073set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
7074 enum bptype type)
611c83ae
PA
7075{
7076 struct symtab_and_line sal;
7077
7078 sal = find_pc_line (pc, 0);
7079 sal.pc = pc;
7080 sal.section = find_pc_overlay (pc);
7081 sal.explicit_pc = 1;
7082
a6d9a66e 7083 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
611c83ae 7084}
c906108c 7085\f
c5aa993b 7086
c906108c
SS
7087/* Tell the user we have just set a breakpoint B. */
7088
7089static void
fba45db2 7090mention (struct breakpoint *b)
c906108c
SS
7091{
7092 int say_where = 0;
fa8a61dc 7093 struct cleanup *ui_out_chain;
79a45b7d
TT
7094 struct value_print_options opts;
7095
7096 get_user_print_options (&opts);
8b93c638 7097
3086aeae
DJ
7098 if (b->ops != NULL && b->ops->print_mention != NULL)
7099 b->ops->print_mention (b);
7100 else
7101 switch (b->type)
7102 {
7103 case bp_none:
3e43a32a
MS
7104 printf_filtered (_("(apparently deleted?) Eventpoint %d: "),
7105 b->number);
3086aeae
DJ
7106 break;
7107 case bp_watchpoint:
7108 ui_out_text (uiout, "Watchpoint ");
7109 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
7110 ui_out_field_int (uiout, "number", b->number);
7111 ui_out_text (uiout, ": ");
fa8a61dc 7112 ui_out_field_string (uiout, "exp", b->exp_string);
3086aeae
DJ
7113 do_cleanups (ui_out_chain);
7114 break;
7115 case bp_hardware_watchpoint:
7116 ui_out_text (uiout, "Hardware watchpoint ");
7117 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
7118 ui_out_field_int (uiout, "number", b->number);
7119 ui_out_text (uiout, ": ");
fa8a61dc 7120 ui_out_field_string (uiout, "exp", b->exp_string);
3086aeae
DJ
7121 do_cleanups (ui_out_chain);
7122 break;
7123 case bp_read_watchpoint:
7124 ui_out_text (uiout, "Hardware read watchpoint ");
7125 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
7126 ui_out_field_int (uiout, "number", b->number);
7127 ui_out_text (uiout, ": ");
fa8a61dc 7128 ui_out_field_string (uiout, "exp", b->exp_string);
3086aeae
DJ
7129 do_cleanups (ui_out_chain);
7130 break;
7131 case bp_access_watchpoint:
7132 ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
7133 ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
7134 ui_out_field_int (uiout, "number", b->number);
7135 ui_out_text (uiout, ": ");
fa8a61dc 7136 ui_out_field_string (uiout, "exp", b->exp_string);
3086aeae
DJ
7137 do_cleanups (ui_out_chain);
7138 break;
7139 case bp_breakpoint:
0e30163f 7140 case bp_gnu_ifunc_resolver:
3086aeae
DJ
7141 if (ui_out_is_mi_like_p (uiout))
7142 {
7143 say_where = 0;
7144 break;
7145 }
2cec12e5
AR
7146 if (b->disposition == disp_del)
7147 printf_filtered (_("Temporary breakpoint"));
7148 else
7149 printf_filtered (_("Breakpoint"));
7150 printf_filtered (_(" %d"), b->number);
0e30163f
JK
7151 if (b->type == bp_gnu_ifunc_resolver)
7152 printf_filtered (_(" at gnu-indirect-function resolver"));
3086aeae
DJ
7153 say_where = 1;
7154 break;
7155 case bp_hardware_breakpoint:
7156 if (ui_out_is_mi_like_p (uiout))
7157 {
7158 say_where = 0;
7159 break;
7160 }
a3f17187 7161 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
3086aeae
DJ
7162 say_where = 1;
7163 break;
1042e4c0
SS
7164 case bp_tracepoint:
7165 if (ui_out_is_mi_like_p (uiout))
7166 {
7167 say_where = 0;
7168 break;
7169 }
7170 printf_filtered (_("Tracepoint"));
7171 printf_filtered (_(" %d"), b->number);
7172 say_where = 1;
7173 break;
7a697b8d
SS
7174 case bp_fast_tracepoint:
7175 if (ui_out_is_mi_like_p (uiout))
7176 {
7177 say_where = 0;
7178 break;
7179 }
7180 printf_filtered (_("Fast tracepoint"));
7181 printf_filtered (_(" %d"), b->number);
7182 say_where = 1;
7183 break;
0fb4aa4b
PA
7184 case bp_static_tracepoint:
7185 if (ui_out_is_mi_like_p (uiout))
7186 {
7187 say_where = 0;
7188 break;
7189 }
7190 printf_filtered (_("Static tracepoint"));
7191 printf_filtered (_(" %d"), b->number);
7192 say_where = 1;
7193 break;
3086aeae
DJ
7194
7195 case bp_until:
7196 case bp_finish:
7197 case bp_longjmp:
7198 case bp_longjmp_resume:
186c406b
TT
7199 case bp_exception:
7200 case bp_exception_resume:
3086aeae 7201 case bp_step_resume:
3086aeae 7202 case bp_call_dummy:
aa7d318d 7203 case bp_std_terminate:
3086aeae
DJ
7204 case bp_watchpoint_scope:
7205 case bp_shlib_event:
7206 case bp_thread_event:
7207 case bp_overlay_event:
4efc6507 7208 case bp_jit_event:
0fd8e87f 7209 case bp_longjmp_master:
aa7d318d 7210 case bp_std_terminate_master:
186c406b 7211 case bp_exception_master:
0e30163f 7212 case bp_gnu_ifunc_resolver_return:
3086aeae
DJ
7213 break;
7214 }
c906108c 7215
c906108c
SS
7216 if (say_where)
7217 {
a3f17187
AC
7218 /* i18n: cagney/2005-02-11: Below needs to be merged into a
7219 single string. */
0d381245 7220 if (b->loc == NULL)
c906108c 7221 {
a3f17187 7222 printf_filtered (_(" (%s) pending."), b->addr_string);
0101ce28
JJ
7223 }
7224 else
7225 {
79a45b7d 7226 if (opts.addressprint || b->source_file == NULL)
0101ce28
JJ
7227 {
7228 printf_filtered (" at ");
5af949e3
UW
7229 fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
7230 gdb_stdout);
0101ce28
JJ
7231 }
7232 if (b->source_file)
7233 printf_filtered (": file %s, line %d.",
7234 b->source_file, b->line_number);
0d381245
VP
7235
7236 if (b->loc->next)
7237 {
7238 struct bp_location *loc = b->loc;
7239 int n = 0;
7240 for (; loc; loc = loc->next)
7241 ++n;
7242 printf_filtered (" (%d locations)", n);
7243 }
7244
c906108c 7245 }
c906108c 7246 }
9dc5e2a9 7247 if (ui_out_is_mi_like_p (uiout))
fb40c209 7248 return;
c906108c
SS
7249 printf_filtered ("\n");
7250}
c906108c 7251\f
c5aa993b 7252
0d381245 7253static struct bp_location *
39d61571 7254add_location_to_breakpoint (struct breakpoint *b,
0d381245
VP
7255 const struct symtab_and_line *sal)
7256{
7257 struct bp_location *loc, **tmp;
7258
39d61571 7259 loc = allocate_bp_location (b);
0d381245
VP
7260 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
7261 ;
7262 *tmp = loc;
a6d9a66e
UW
7263 loc->gdbarch = get_sal_arch (*sal);
7264 if (!loc->gdbarch)
7265 loc->gdbarch = b->gdbarch;
0d381245 7266 loc->requested_address = sal->pc;
a6d9a66e
UW
7267 loc->address = adjust_breakpoint_address (loc->gdbarch,
7268 loc->requested_address, b->type);
6c95b8df
PA
7269 loc->pspace = sal->pspace;
7270 gdb_assert (loc->pspace != NULL);
0d381245
VP
7271 loc->section = sal->section;
7272
0e30163f
JK
7273 set_breakpoint_location_function (loc,
7274 sal->explicit_pc || sal->explicit_line);
0d381245
VP
7275 return loc;
7276}
514f746b
AR
7277\f
7278
7279/* Return 1 if LOC is pointing to a permanent breakpoint,
7280 return 0 otherwise. */
7281
7282static int
7283bp_loc_is_permanent (struct bp_location *loc)
7284{
7285 int len;
7286 CORE_ADDR addr;
7287 const gdb_byte *brk;
7288 gdb_byte *target_mem;
939c61fa
JK
7289 struct cleanup *cleanup;
7290 int retval = 0;
514f746b
AR
7291
7292 gdb_assert (loc != NULL);
7293
7294 addr = loc->address;
a6d9a66e 7295 brk = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
514f746b 7296
939c61fa
JK
7297 /* Software breakpoints unsupported? */
7298 if (brk == NULL)
7299 return 0;
7300
514f746b
AR
7301 target_mem = alloca (len);
7302
939c61fa
JK
7303 /* Enable the automatic memory restoration from breakpoints while
7304 we read the memory. Otherwise we could say about our temporary
7305 breakpoints they are permanent. */
6c95b8df
PA
7306 cleanup = save_current_space_and_thread ();
7307
7308 switch_to_program_space_and_thread (loc->pspace);
7309 make_show_memory_breakpoints_cleanup (0);
939c61fa 7310
514f746b
AR
7311 if (target_read_memory (loc->address, target_mem, len) == 0
7312 && memcmp (target_mem, brk, len) == 0)
939c61fa 7313 retval = 1;
514f746b 7314
939c61fa
JK
7315 do_cleanups (cleanup);
7316
7317 return retval;
514f746b
AR
7318}
7319
7320
c3f6f71d 7321
018d34a4
VP
7322/* Create a breakpoint with SAL as location. Use ADDR_STRING
7323 as textual description of the location, and COND_STRING
db107f19 7324 as condition expression. */
018d34a4
VP
7325
7326static void
8cdf0e15
VP
7327create_breakpoint_sal (struct gdbarch *gdbarch,
7328 struct symtabs_and_lines sals, char *addr_string,
7329 char *cond_string,
7330 enum bptype type, enum bpdisp disposition,
7331 int thread, int task, int ignore_count,
84f4c1fe 7332 struct breakpoint_ops *ops, int from_tty,
56435ebe 7333 int enabled, int internal, int display_canonical)
018d34a4 7334{
0d381245
VP
7335 struct breakpoint *b = NULL;
7336 int i;
018d34a4
VP
7337
7338 if (type == bp_hardware_breakpoint)
7339 {
7340 int i = hw_breakpoint_used_count ();
7341 int target_resources_ok =
d92524f1 7342 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
018d34a4
VP
7343 i + 1, 0);
7344 if (target_resources_ok == 0)
7345 error (_("No hardware breakpoint support in the target."));
7346 else if (target_resources_ok < 0)
7347 error (_("Hardware breakpoints used exceeds limit."));
7348 }
7349
6c95b8df
PA
7350 gdb_assert (sals.nelts > 0);
7351
0d381245
VP
7352 for (i = 0; i < sals.nelts; ++i)
7353 {
7354 struct symtab_and_line sal = sals.sals[i];
7355 struct bp_location *loc;
7356
7357 if (from_tty)
5af949e3
UW
7358 {
7359 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
7360 if (!loc_gdbarch)
7361 loc_gdbarch = gdbarch;
7362
7363 describe_other_breakpoints (loc_gdbarch,
6c95b8df 7364 sal.pspace, sal.pc, sal.section, thread);
5af949e3 7365 }
0d381245
VP
7366
7367 if (i == 0)
7368 {
a6d9a66e 7369 b = set_raw_breakpoint (gdbarch, sal, type);
84f4c1fe 7370 set_breakpoint_number (internal, b);
0d381245 7371 b->thread = thread;
4a306c9a 7372 b->task = task;
018d34a4 7373
0d381245
VP
7374 b->cond_string = cond_string;
7375 b->ignore_count = ignore_count;
41447f92 7376 b->enable_state = enabled ? bp_enabled : bp_disabled;
0d381245 7377 b->disposition = disposition;
6c95b8df
PA
7378 b->pspace = sals.sals[0].pspace;
7379
0fb4aa4b
PA
7380 if (type == bp_static_tracepoint)
7381 {
7382 struct static_tracepoint_marker marker;
7383
7384 if (is_marker_spec (addr_string))
7385 {
7386 /* We already know the marker exists, otherwise, we
7387 wouldn't see a sal for it. */
7388 char *p = &addr_string[3];
7389 char *endp;
7390 char *marker_str;
7391 int i;
7392
e9cafbcc 7393 p = skip_spaces (p);
0fb4aa4b 7394
e9cafbcc 7395 endp = skip_to_space (p);
0fb4aa4b
PA
7396
7397 marker_str = savestring (p, endp - p);
7398 b->static_trace_marker_id = marker_str;
7399
3e43a32a
MS
7400 printf_filtered (_("Probed static tracepoint "
7401 "marker \"%s\"\n"),
0fb4aa4b
PA
7402 b->static_trace_marker_id);
7403 }
7404 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
7405 {
7406 b->static_trace_marker_id = xstrdup (marker.str_id);
7407 release_static_tracepoint_marker (&marker);
7408
3e43a32a
MS
7409 printf_filtered (_("Probed static tracepoint "
7410 "marker \"%s\"\n"),
0fb4aa4b
PA
7411 b->static_trace_marker_id);
7412 }
7413 else
3e43a32a
MS
7414 warning (_("Couldn't determine the static "
7415 "tracepoint marker to probe"));
0fb4aa4b
PA
7416 }
7417
6c95b8df 7418 if (enabled && b->pspace->executing_startup
8bea4e01
UW
7419 && (b->type == bp_breakpoint
7420 || b->type == bp_hardware_breakpoint))
7421 b->enable_state = bp_startup_disabled;
7422
0d381245
VP
7423 loc = b->loc;
7424 }
7425 else
018d34a4 7426 {
39d61571 7427 loc = add_location_to_breakpoint (b, &sal);
0d381245
VP
7428 }
7429
514f746b
AR
7430 if (bp_loc_is_permanent (loc))
7431 make_breakpoint_permanent (b);
7432
0d381245
VP
7433 if (b->cond_string)
7434 {
7435 char *arg = b->cond_string;
d32a6982 7436 loc->cond = parse_exp_1 (&arg, block_for_pc (loc->address), 0);
0d381245 7437 if (*arg)
db107f19 7438 error (_("Garbage %s follows condition"), arg);
018d34a4 7439 }
0d381245 7440 }
018d34a4 7441
56435ebe 7442 b->display_canonical = display_canonical;
018d34a4
VP
7443 if (addr_string)
7444 b->addr_string = addr_string;
7445 else
7446 /* addr_string has to be used or breakpoint_re_set will delete
7447 me. */
5af949e3
UW
7448 b->addr_string
7449 = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
018d34a4 7450
604133b5 7451 b->ops = ops;
8d3788bd
VP
7452 /* Do not mention breakpoints with a negative number, but do
7453 notify observers. */
7454 if (!internal)
84f4c1fe 7455 mention (b);
8d3788bd 7456 observer_notify_breakpoint_created (b);
018d34a4
VP
7457}
7458
ed0616c6
VP
7459/* Remove element at INDEX_TO_REMOVE from SAL, shifting other
7460 elements to fill the void space. */
2c0b251b
PA
7461static void
7462remove_sal (struct symtabs_and_lines *sal, int index_to_remove)
ed0616c6
VP
7463{
7464 int i = index_to_remove+1;
7465 int last_index = sal->nelts-1;
7466
7467 for (;i <= last_index; ++i)
7468 sal->sals[i-1] = sal->sals[i];
7469
7470 --(sal->nelts);
7471}
7472
6c95b8df
PA
7473/* If appropriate, obtains all sals that correspond to the same file
7474 and line as SAL, in all program spaces. Users debugging with IDEs,
7475 will want to set a breakpoint at foo.c:line, and not really care
7476 about program spaces. This is done only if SAL does not have
7477 explicit PC and has line and file information. If we got just a
7478 single expanded sal, return the original.
ed0616c6 7479
6c95b8df
PA
7480 Otherwise, if SAL.explicit_line is not set, filter out all sals for
7481 which the name of enclosing function is different from SAL. This
7482 makes sure that if we have breakpoint originally set in template
7483 instantiation, say foo<int>(), we won't expand SAL to locations at
7484 the same line in all existing instantiations of 'foo'. */
ed0616c6 7485
2c0b251b 7486static struct symtabs_and_lines
ed0616c6
VP
7487expand_line_sal_maybe (struct symtab_and_line sal)
7488{
7489 struct symtabs_and_lines expanded;
7490 CORE_ADDR original_pc = sal.pc;
7491 char *original_function = NULL;
7492 int found;
7493 int i;
6c95b8df 7494 struct cleanup *old_chain;
ed0616c6
VP
7495
7496 /* If we have explicit pc, don't expand.
7497 If we have no line number, we can't expand. */
7498 if (sal.explicit_pc || sal.line == 0 || sal.symtab == NULL)
7499 {
7500 expanded.nelts = 1;
7501 expanded.sals = xmalloc (sizeof (struct symtab_and_line));
7502 expanded.sals[0] = sal;
7503 return expanded;
7504 }
7505
7506 sal.pc = 0;
6c95b8df
PA
7507
7508 old_chain = save_current_space_and_thread ();
7509
7510 switch_to_program_space_and_thread (sal.pspace);
7511
ed0616c6 7512 find_pc_partial_function (original_pc, &original_function, NULL, NULL);
6c95b8df
PA
7513
7514 /* Note that expand_line_sal visits *all* program spaces. */
ed0616c6 7515 expanded = expand_line_sal (sal);
6c95b8df 7516
ed0616c6
VP
7517 if (expanded.nelts == 1)
7518 {
3dba1c98
JB
7519 /* We had one sal, we got one sal. Return that sal, adjusting it
7520 past the function prologue if necessary. */
ed0616c6
VP
7521 xfree (expanded.sals);
7522 expanded.nelts = 1;
7523 expanded.sals = xmalloc (sizeof (struct symtab_and_line));
7524 sal.pc = original_pc;
7525 expanded.sals[0] = sal;
3dba1c98 7526 skip_prologue_sal (&expanded.sals[0]);
6c95b8df 7527 do_cleanups (old_chain);
ed0616c6
VP
7528 return expanded;
7529 }
7530
7531 if (!sal.explicit_line)
7532 {
7533 CORE_ADDR func_addr, func_end;
7534 for (i = 0; i < expanded.nelts; ++i)
7535 {
7536 CORE_ADDR pc = expanded.sals[i].pc;
7537 char *this_function;
6c95b8df
PA
7538
7539 /* We need to switch threads as well since we're about to
7540 read memory. */
7541 switch_to_program_space_and_thread (expanded.sals[i].pspace);
7542
ed0616c6
VP
7543 if (find_pc_partial_function (pc, &this_function,
7544 &func_addr, &func_end))
7545 {
059fb39f
PM
7546 if (this_function
7547 && strcmp (this_function, original_function) != 0)
ed0616c6
VP
7548 {
7549 remove_sal (&expanded, i);
7550 --i;
7551 }
ed0616c6
VP
7552 }
7553 }
7554 }
059acae7
UW
7555
7556 /* Skip the function prologue if necessary. */
7557 for (i = 0; i < expanded.nelts; ++i)
7558 skip_prologue_sal (&expanded.sals[i]);
ed0616c6 7559
6c95b8df
PA
7560 do_cleanups (old_chain);
7561
ed0616c6
VP
7562 if (expanded.nelts <= 1)
7563 {
4a64f543
MS
7564 /* This is un ugly workaround. If we get zero expanded sals
7565 then something is really wrong. Fix that by returning the
7566 original sal. */
7567
ed0616c6
VP
7568 xfree (expanded.sals);
7569 expanded.nelts = 1;
7570 expanded.sals = xmalloc (sizeof (struct symtab_and_line));
7571 sal.pc = original_pc;
7572 expanded.sals[0] = sal;
7573 return expanded;
7574 }
7575
7576 if (original_pc)
7577 {
7578 found = 0;
7579 for (i = 0; i < expanded.nelts; ++i)
7580 if (expanded.sals[i].pc == original_pc)
7581 {
7582 found = 1;
7583 break;
7584 }
7585 gdb_assert (found);
7586 }
7587
7588 return expanded;
7589}
7590
018d34a4
VP
7591/* Add SALS.nelts breakpoints to the breakpoint table. For each
7592 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
7593 value. COND_STRING, if not NULL, specified the condition to be
7594 used for all breakpoints. Essentially the only case where
7595 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
7596 function. In that case, it's still not possible to specify
7597 separate conditions for different overloaded functions, so
7598 we take just a single condition string.
7599
c3f6f71d 7600 NOTE: If the function succeeds, the caller is expected to cleanup
018d34a4 7601 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
c3f6f71d
JM
7602 array contents). If the function fails (error() is called), the
7603 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
4a64f543 7604 COND and SALS arrays and each of those arrays contents. */
c906108c
SS
7605
7606static void
8cdf0e15 7607create_breakpoints_sal (struct gdbarch *gdbarch,
7efd8fc2
TT
7608 struct symtabs_and_lines sals,
7609 struct linespec_result *canonical,
8cdf0e15
VP
7610 char *cond_string,
7611 enum bptype type, enum bpdisp disposition,
7612 int thread, int task, int ignore_count,
7613 struct breakpoint_ops *ops, int from_tty,
84f4c1fe 7614 int enabled, int internal)
c906108c 7615{
018d34a4 7616 int i;
cc59ec59 7617
018d34a4 7618 for (i = 0; i < sals.nelts; ++i)
c3f6f71d 7619 {
ed0616c6
VP
7620 struct symtabs_and_lines expanded =
7621 expand_line_sal_maybe (sals.sals[i]);
0d381245 7622
7efd8fc2 7623 create_breakpoint_sal (gdbarch, expanded, canonical->canonical[i],
8cdf0e15 7624 cond_string, type, disposition,
84f4c1fe 7625 thread, task, ignore_count, ops,
56435ebe
TT
7626 from_tty, enabled, internal,
7627 canonical->special_display);
c3f6f71d 7628 }
c3f6f71d 7629}
c906108c 7630
9998af43 7631/* Parse ADDRESS which is assumed to be a SAL specification possibly
c3f6f71d 7632 followed by conditionals. On return, SALS contains an array of SAL
4a64f543 7633 addresses found. ADDR_STRING contains a vector of (canonical)
9998af43
TJB
7634 address strings. ADDRESS points to the end of the SAL.
7635
7636 The array and the line spec strings are allocated on the heap, it is
7637 the caller's responsibility to free them. */
c906108c 7638
b9362cc7 7639static void
c3f6f71d
JM
7640parse_breakpoint_sals (char **address,
7641 struct symtabs_and_lines *sals,
58438ac1 7642 struct linespec_result *canonical)
c3f6f71d
JM
7643{
7644 char *addr_start = *address;
cc59ec59 7645
c3f6f71d 7646 /* If no arg given, or if first arg is 'if ', use the default
4a64f543 7647 breakpoint. */
c3f6f71d
JM
7648 if ((*address) == NULL
7649 || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
c906108c
SS
7650 {
7651 if (default_breakpoint_valid)
7652 {
c3f6f71d 7653 struct symtab_and_line sal;
cc59ec59 7654
4a64f543 7655 init_sal (&sal); /* Initialize to zeroes. */
c3f6f71d 7656 sals->sals = (struct symtab_and_line *)
c906108c
SS
7657 xmalloc (sizeof (struct symtab_and_line));
7658 sal.pc = default_breakpoint_address;
7659 sal.line = default_breakpoint_line;
7660 sal.symtab = default_breakpoint_symtab;
6c95b8df 7661 sal.pspace = default_breakpoint_pspace;
c5aa993b 7662 sal.section = find_pc_overlay (sal.pc);
00903456 7663
4a64f543
MS
7664 /* "break" without arguments is equivalent to "break *PC"
7665 where PC is the default_breakpoint_address. So make sure
7666 to set sal.explicit_pc to prevent GDB from trying to
7667 expand the list of sals to include all other instances
7668 with the same symtab and line. */
00903456
JK
7669 sal.explicit_pc = 1;
7670
c3f6f71d
JM
7671 sals->sals[0] = sal;
7672 sals->nelts = 1;
c906108c
SS
7673 }
7674 else
8a3fe4f8 7675 error (_("No default breakpoint address now."));
c906108c
SS
7676 }
7677 else
7678 {
c906108c 7679 /* Force almost all breakpoints to be in terms of the
4a64f543
MS
7680 current_source_symtab (which is decode_line_1's default).
7681 This should produce the results we want almost all of the
7682 time while leaving default_breakpoint_* alone.
7683
1aeae86e
AF
7684 ObjC: However, don't match an Objective-C method name which
7685 may have a '+' or '-' succeeded by a '[' */
0378c332 7686
c214a6fd 7687 struct symtab_and_line cursal = get_current_source_symtab_and_line ();
0378c332 7688
c906108c 7689 if (default_breakpoint_valid
0378c332 7690 && (!cursal.symtab
1aeae86e
AF
7691 || ((strchr ("+-", (*address)[0]) != NULL)
7692 && ((*address)[1] != '['))))
c3f6f71d 7693 *sals = decode_line_1 (address, 1, default_breakpoint_symtab,
58438ac1 7694 default_breakpoint_line, canonical);
c906108c 7695 else
0101ce28 7696 *sals = decode_line_1 (address, 1, (struct symtab *) NULL, 0,
58438ac1 7697 canonical);
c906108c 7698 }
4a64f543 7699 /* For any SAL that didn't have a canonical string, fill one in. */
7efd8fc2 7700 if (sals->nelts > 0 && canonical->canonical == NULL)
38a714bb 7701 canonical->canonical = xcalloc (sals->nelts, sizeof (char *));
c3f6f71d 7702 if (addr_start != (*address))
c906108c 7703 {
c3f6f71d 7704 int i;
cc59ec59 7705
c3f6f71d 7706 for (i = 0; i < sals->nelts; i++)
c906108c 7707 {
4a64f543 7708 /* Add the string if not present. */
7efd8fc2
TT
7709 if (canonical->canonical[i] == NULL)
7710 canonical->canonical[i] = savestring (addr_start,
7711 (*address) - addr_start);
c906108c
SS
7712 }
7713 }
c3f6f71d 7714}
c906108c 7715
c906108c 7716
c3f6f71d 7717/* Convert each SAL into a real PC. Verify that the PC can be
4a64f543 7718 inserted as a breakpoint. If it can't throw an error. */
c906108c 7719
b9362cc7 7720static void
23e7acfb 7721breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
c3f6f71d
JM
7722{
7723 int i;
cc59ec59 7724
c3f6f71d 7725 for (i = 0; i < sals->nelts; i++)
ee53e872 7726 resolve_sal_pc (&sals->sals[i]);
c3f6f71d
JM
7727}
7728
7a697b8d
SS
7729/* Fast tracepoints may have restrictions on valid locations. For
7730 instance, a fast tracepoint using a jump instead of a trap will
7731 likely have to overwrite more bytes than a trap would, and so can
7732 only be placed where the instruction is longer than the jump, or a
7733 multi-instruction sequence does not have a jump into the middle of
7734 it, etc. */
7735
7736static void
7737check_fast_tracepoint_sals (struct gdbarch *gdbarch,
7738 struct symtabs_and_lines *sals)
7739{
7740 int i, rslt;
7741 struct symtab_and_line *sal;
7742 char *msg;
7743 struct cleanup *old_chain;
7744
7745 for (i = 0; i < sals->nelts; i++)
7746 {
7747 sal = &sals->sals[i];
7748
7749 rslt = gdbarch_fast_tracepoint_valid_at (gdbarch, sal->pc,
7750 NULL, &msg);
7751 old_chain = make_cleanup (xfree, msg);
7752
7753 if (!rslt)
7754 error (_("May not have a fast tracepoint at 0x%s%s"),
7755 paddress (gdbarch, sal->pc), (msg ? msg : ""));
7756
7757 do_cleanups (old_chain);
7758 }
7759}
7760
018d34a4
VP
7761/* Given TOK, a string specification of condition and thread, as
7762 accepted by the 'break' command, extract the condition
7763 string and thread number and set *COND_STRING and *THREAD.
4a64f543 7764 PC identifies the context at which the condition should be parsed.
018d34a4
VP
7765 If no condition is found, *COND_STRING is set to NULL.
7766 If no thread is found, *THREAD is set to -1. */
7767static void
7768find_condition_and_thread (char *tok, CORE_ADDR pc,
4a306c9a 7769 char **cond_string, int *thread, int *task)
018d34a4
VP
7770{
7771 *cond_string = NULL;
7772 *thread = -1;
7773 while (tok && *tok)
7774 {
7775 char *end_tok;
7776 int toklen;
7777 char *cond_start = NULL;
7778 char *cond_end = NULL;
cc59ec59 7779
e9cafbcc 7780 tok = skip_spaces (tok);
018d34a4 7781
e9cafbcc 7782 end_tok = skip_to_space (tok);
018d34a4
VP
7783
7784 toklen = end_tok - tok;
7785
7786 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
7787 {
f7545552
TT
7788 struct expression *expr;
7789
018d34a4 7790 tok = cond_start = end_tok + 1;
f7545552
TT
7791 expr = parse_exp_1 (&tok, block_for_pc (pc), 0);
7792 xfree (expr);
018d34a4
VP
7793 cond_end = tok;
7794 *cond_string = savestring (cond_start,
7795 cond_end - cond_start);
7796 }
7797 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
7798 {
7799 char *tmptok;
7800
7801 tok = end_tok + 1;
7802 tmptok = tok;
7803 *thread = strtol (tok, &tok, 0);
7804 if (tok == tmptok)
7805 error (_("Junk after thread keyword."));
7806 if (!valid_thread_id (*thread))
7807 error (_("Unknown thread %d."), *thread);
7808 }
4a306c9a
JB
7809 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
7810 {
7811 char *tmptok;
7812
7813 tok = end_tok + 1;
7814 tmptok = tok;
7815 *task = strtol (tok, &tok, 0);
7816 if (tok == tmptok)
7817 error (_("Junk after task keyword."));
7818 if (!valid_task_id (*task))
b6199126 7819 error (_("Unknown task %d."), *task);
4a306c9a 7820 }
018d34a4
VP
7821 else
7822 error (_("Junk at end of arguments."));
7823 }
7824}
7825
0fb4aa4b
PA
7826/* Decode a static tracepoint marker spec. */
7827
7828static struct symtabs_and_lines
7829decode_static_tracepoint_spec (char **arg_p)
7830{
7831 VEC(static_tracepoint_marker_p) *markers = NULL;
7832 struct symtabs_and_lines sals;
7833 struct symtab_and_line sal;
7834 struct symbol *sym;
7835 struct cleanup *old_chain;
7836 char *p = &(*arg_p)[3];
7837 char *endp;
7838 char *marker_str;
7839 int i;
7840
e9cafbcc 7841 p = skip_spaces (p);
0fb4aa4b 7842
e9cafbcc 7843 endp = skip_to_space (p);
0fb4aa4b
PA
7844
7845 marker_str = savestring (p, endp - p);
7846 old_chain = make_cleanup (xfree, marker_str);
7847
7848 markers = target_static_tracepoint_markers_by_strid (marker_str);
7849 if (VEC_empty(static_tracepoint_marker_p, markers))
7850 error (_("No known static tracepoint marker named %s"), marker_str);
7851
7852 sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
7853 sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
7854
7855 for (i = 0; i < sals.nelts; i++)
7856 {
7857 struct static_tracepoint_marker *marker;
7858
7859 marker = VEC_index (static_tracepoint_marker_p, markers, i);
7860
7861 init_sal (&sals.sals[i]);
7862
7863 sals.sals[i] = find_pc_line (marker->address, 0);
7864 sals.sals[i].pc = marker->address;
7865
7866 release_static_tracepoint_marker (marker);
7867 }
7868
7869 do_cleanups (old_chain);
7870
7871 *arg_p = endp;
7872 return sals;
7873}
7874
fd9b8c24
PA
7875/* Set a breakpoint. This function is shared between CLI and MI
7876 functions for setting a breakpoint. This function has two major
7877 modes of operations, selected by the PARSE_CONDITION_AND_THREAD
7878 parameter. If non-zero, the function will parse arg, extracting
4a64f543
MS
7879 breakpoint location, address and thread. Otherwise, ARG is just
7880 the location of breakpoint, with condition and thread specified by
7881 the COND_STRING and THREAD parameters. If INTERNAL is non-zero,
7882 the breakpoint number will be allocated from the internal
7883 breakpoint count. Returns true if any breakpoint was created;
7884 false otherwise. */
0101ce28 7885
8cdf0e15
VP
7886int
7887create_breakpoint (struct gdbarch *gdbarch,
7888 char *arg, char *cond_string, int thread,
7889 int parse_condition_and_thread,
0fb4aa4b 7890 int tempflag, enum bptype type_wanted,
8cdf0e15
VP
7891 int ignore_count,
7892 enum auto_boolean pending_break_support,
7893 struct breakpoint_ops *ops,
84f4c1fe 7894 int from_tty, int enabled, int internal)
c3f6f71d 7895{
b78a6381 7896 volatile struct gdb_exception e;
c3f6f71d 7897 struct symtabs_and_lines sals;
0101ce28 7898 struct symtab_and_line pending_sal;
0101ce28 7899 char *copy_arg;
c3f6f71d 7900 char *addr_start = arg;
7efd8fc2 7901 struct linespec_result canonical;
c3f6f71d 7902 struct cleanup *old_chain;
80c99de1 7903 struct cleanup *bkpt_chain = NULL;
05ff989b 7904 int i;
0101ce28 7905 int pending = 0;
4a306c9a 7906 int task = 0;
86b17b60 7907 int prev_bkpt_count = breakpoint_count;
c3f6f71d 7908
c3f6f71d
JM
7909 sals.sals = NULL;
7910 sals.nelts = 0;
7efd8fc2 7911 init_linespec_result (&canonical);
c3f6f71d 7912
0fb4aa4b
PA
7913 if (type_wanted == bp_static_tracepoint && is_marker_spec (arg))
7914 {
7915 int i;
7916
7917 sals = decode_static_tracepoint_spec (&arg);
7918
7919 copy_arg = savestring (addr_start, arg - addr_start);
38a714bb 7920 canonical.canonical = xcalloc (sals.nelts, sizeof (char *));
0fb4aa4b 7921 for (i = 0; i < sals.nelts; i++)
7efd8fc2 7922 canonical.canonical[i] = xstrdup (copy_arg);
0fb4aa4b
PA
7923 goto done;
7924 }
7925
b78a6381
TT
7926 TRY_CATCH (e, RETURN_MASK_ALL)
7927 {
58438ac1 7928 parse_breakpoint_sals (&arg, &sals, &canonical);
b78a6381 7929 }
0101ce28
JJ
7930
7931 /* If caller is interested in rc value from parse, set value. */
05ff989b 7932 switch (e.reason)
0101ce28 7933 {
05ff989b 7934 case RETURN_QUIT:
98deb0da 7935 throw_exception (e);
05ff989b
AC
7936 case RETURN_ERROR:
7937 switch (e.error)
0101ce28 7938 {
05ff989b 7939 case NOT_FOUND_ERROR:
0101ce28 7940
05ff989b
AC
7941 /* If pending breakpoint support is turned off, throw
7942 error. */
fa8d40ab
JJ
7943
7944 if (pending_break_support == AUTO_BOOLEAN_FALSE)
723a2275
VP
7945 throw_exception (e);
7946
7947 exception_print (gdb_stderr, e);
fa8d40ab 7948
05ff989b
AC
7949 /* If pending breakpoint support is auto query and the user
7950 selects no, then simply return the error code. */
059fb39f 7951 if (pending_break_support == AUTO_BOOLEAN_AUTO
3e43a32a
MS
7952 && !nquery (_("Make breakpoint pending on "
7953 "future shared library load? ")))
fd9b8c24 7954 return 0;
fa8d40ab 7955
05ff989b
AC
7956 /* At this point, either the user was queried about setting
7957 a pending breakpoint and selected yes, or pending
7958 breakpoint behavior is on and thus a pending breakpoint
7959 is defaulted on behalf of the user. */
0101ce28 7960 copy_arg = xstrdup (addr_start);
7efd8fc2 7961 canonical.canonical = &copy_arg;
0101ce28
JJ
7962 sals.nelts = 1;
7963 sals.sals = &pending_sal;
7964 pending_sal.pc = 0;
7965 pending = 1;
05ff989b
AC
7966 break;
7967 default:
98deb0da 7968 throw_exception (e);
0101ce28 7969 }
2abae994 7970 break;
05ff989b
AC
7971 default:
7972 if (!sals.nelts)
fd9b8c24 7973 return 0;
0101ce28 7974 }
c3f6f71d 7975
0fb4aa4b
PA
7976 done:
7977
4a64f543 7978 /* Create a chain of things that always need to be cleaned up. */
c3f6f71d
JM
7979 old_chain = make_cleanup (null_cleanup, 0);
7980
0101ce28
JJ
7981 if (!pending)
7982 {
7983 /* Make sure that all storage allocated to SALS gets freed. */
7984 make_cleanup (xfree, sals.sals);
7985
7efd8fc2
TT
7986 /* Cleanup the canonical array but not its contents. */
7987 make_cleanup (xfree, canonical.canonical);
0101ce28 7988 }
c3f6f71d 7989
c3f6f71d
JM
7990 /* ----------------------------- SNIP -----------------------------
7991 Anything added to the cleanup chain beyond this point is assumed
7992 to be part of a breakpoint. If the breakpoint create succeeds
80c99de1
PA
7993 then the memory is not reclaimed. */
7994 bkpt_chain = make_cleanup (null_cleanup, 0);
c3f6f71d 7995
7efd8fc2 7996 /* Mark the contents of the canonical for cleanup. These go on
80c99de1 7997 the bkpt_chain and only occur if the breakpoint create fails. */
c3f6f71d
JM
7998 for (i = 0; i < sals.nelts; i++)
7999 {
7efd8fc2
TT
8000 if (canonical.canonical[i] != NULL)
8001 make_cleanup (xfree, canonical.canonical[i]);
c3f6f71d
JM
8002 }
8003
8004 /* Resolve all line numbers to PC's and verify that the addresses
8005 are ok for the target. */
0101ce28 8006 if (!pending)
23e7acfb 8007 breakpoint_sals_to_pc (&sals);
c3f6f71d 8008
7a697b8d
SS
8009 /* Fast tracepoints may have additional restrictions on location. */
8010 if (type_wanted == bp_fast_tracepoint)
8011 check_fast_tracepoint_sals (gdbarch, &sals);
8012
c3f6f71d
JM
8013 /* Verify that condition can be parsed, before setting any
8014 breakpoints. Allocate a separate condition expression for each
4a64f543 8015 breakpoint. */
0101ce28 8016 if (!pending)
c3f6f71d 8017 {
2f069f6f 8018 if (parse_condition_and_thread)
72b2ff0e
VP
8019 {
8020 /* Here we only parse 'arg' to separate condition
8021 from thread number, so parsing in context of first
8022 sal is OK. When setting the breakpoint we'll
8023 re-parse it in context of each sal. */
8024 cond_string = NULL;
8025 thread = -1;
4a306c9a
JB
8026 find_condition_and_thread (arg, sals.sals[0].pc, &cond_string,
8027 &thread, &task);
72b2ff0e
VP
8028 if (cond_string)
8029 make_cleanup (xfree, cond_string);
8030 }
2f069f6f 8031 else
72b2ff0e
VP
8032 {
8033 /* Create a private copy of condition string. */
8034 if (cond_string)
8035 {
8036 cond_string = xstrdup (cond_string);
8037 make_cleanup (xfree, cond_string);
8038 }
8039 }
0fb4aa4b
PA
8040
8041 /* If the user is creating a static tracepoint by marker id
8042 (strace -m MARKER_ID), then store the sals index, so that
8043 breakpoint_re_set can try to match up which of the newly
8044 found markers corresponds to this one, and, don't try to
8045 expand multiple locations for each sal, given than SALS
8046 already should contain all sals for MARKER_ID. */
8047 if (type_wanted == bp_static_tracepoint
7efd8fc2 8048 && is_marker_spec (canonical.canonical[0]))
0fb4aa4b
PA
8049 {
8050 int i;
8051
8052 for (i = 0; i < sals.nelts; ++i)
8053 {
8054 struct symtabs_and_lines expanded;
8055 struct breakpoint *tp;
8056 struct cleanup *old_chain;
8057
8058 expanded.nelts = 1;
8059 expanded.sals = xmalloc (sizeof (struct symtab_and_line));
8060 expanded.sals[0] = sals.sals[i];
8061 old_chain = make_cleanup (xfree, expanded.sals);
8062
7efd8fc2 8063 create_breakpoint_sal (gdbarch, expanded, canonical.canonical[i],
0fb4aa4b
PA
8064 cond_string, type_wanted,
8065 tempflag ? disp_del : disp_donttouch,
8066 thread, task, ignore_count, ops,
56435ebe
TT
8067 from_tty, enabled, internal,
8068 canonical.special_display);
0fb4aa4b
PA
8069
8070 do_cleanups (old_chain);
8071
8072 /* Get the tracepoint we just created. */
84f4c1fe
PM
8073 if (internal)
8074 tp = get_breakpoint (internal_breakpoint_number);
8075 else
8076 tp = get_breakpoint (breakpoint_count);
0fb4aa4b
PA
8077 gdb_assert (tp != NULL);
8078
8079 /* Given that its possible to have multiple markers with
8080 the same string id, if the user is creating a static
8081 tracepoint by marker id ("strace -m MARKER_ID"), then
8082 store the sals index, so that breakpoint_re_set can
8083 try to match up which of the newly found markers
8084 corresponds to this one */
8085 tp->static_trace_marker_id_idx = i;
8086 }
8087 }
8088 else
7efd8fc2 8089 create_breakpoints_sal (gdbarch, sals, &canonical, cond_string,
3e43a32a
MS
8090 type_wanted,
8091 tempflag ? disp_del : disp_donttouch,
0fb4aa4b 8092 thread, task, ignore_count, ops, from_tty,
84f4c1fe 8093 enabled, internal);
c906108c 8094 }
0101ce28
JJ
8095 else
8096 {
0101ce28
JJ
8097 struct breakpoint *b;
8098
0101ce28
JJ
8099 make_cleanup (xfree, copy_arg);
8100
a6d9a66e 8101 b = set_raw_breakpoint_without_location (gdbarch, type_wanted);
84f4c1fe 8102 set_breakpoint_number (internal, b);
72b2ff0e 8103 b->thread = -1;
7efd8fc2 8104 b->addr_string = canonical.canonical[0];
72b2ff0e 8105 b->cond_string = NULL;
0101ce28 8106 b->ignore_count = ignore_count;
0101ce28 8107 b->disposition = tempflag ? disp_del : disp_donttouch;
0d381245 8108 b->condition_not_parsed = 1;
604133b5 8109 b->ops = ops;
41447f92 8110 b->enable_state = enabled ? bp_enabled : bp_disabled;
6c95b8df 8111 b->pspace = current_program_space;
84f4c1fe 8112 b->py_bp_object = NULL;
74960c60 8113
6c95b8df 8114 if (enabled && b->pspace->executing_startup
8bea4e01
UW
8115 && (b->type == bp_breakpoint
8116 || b->type == bp_hardware_breakpoint))
8117 b->enable_state = bp_startup_disabled;
8118
8d3788bd 8119 if (!internal)
84f4c1fe
PM
8120 /* Do not mention breakpoints with a negative number,
8121 but do notify observers. */
8d3788bd
VP
8122 mention (b);
8123 observer_notify_breakpoint_created (b);
0101ce28
JJ
8124 }
8125
c3f6f71d 8126 if (sals.nelts > 1)
95a42b64 8127 {
3e43a32a
MS
8128 warning (_("Multiple breakpoints were set.\nUse the "
8129 "\"delete\" command to delete unwanted breakpoints."));
86b17b60 8130 prev_breakpoint_count = prev_bkpt_count;
95a42b64
TT
8131 }
8132
80c99de1
PA
8133 /* That's it. Discard the cleanups for data inserted into the
8134 breakpoint. */
8135 discard_cleanups (bkpt_chain);
8136 /* But cleanup everything else. */
c3f6f71d 8137 do_cleanups (old_chain);
217dc9e2 8138
80c99de1 8139 /* error call may happen here - have BKPT_CHAIN already discarded. */
217dc9e2 8140 update_global_location_list (1);
fd9b8c24
PA
8141
8142 return 1;
c3f6f71d 8143}
c906108c 8144
72b2ff0e
VP
8145/* Set a breakpoint.
8146 ARG is a string describing breakpoint address,
8147 condition, and thread.
8148 FLAG specifies if a breakpoint is hardware on,
8149 and if breakpoint is temporary, using BP_HARDWARE_FLAG
8150 and BP_TEMPFLAG. */
8151
98deb0da 8152static void
72b2ff0e 8153break_command_1 (char *arg, int flag, int from_tty)
c3f6f71d 8154{
72b2ff0e 8155 int tempflag = flag & BP_TEMPFLAG;
0fb4aa4b
PA
8156 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
8157 ? bp_hardware_breakpoint
8158 : bp_breakpoint);
c3f6f71d 8159
8cdf0e15
VP
8160 create_breakpoint (get_current_arch (),
8161 arg,
8162 NULL, 0, 1 /* parse arg */,
0fb4aa4b 8163 tempflag, type_wanted,
8cdf0e15
VP
8164 0 /* Ignore count */,
8165 pending_break_support,
8166 NULL /* breakpoint_ops */,
8167 from_tty,
84f4c1fe
PM
8168 1 /* enabled */,
8169 0 /* internal */);
c906108c
SS
8170}
8171
72b2ff0e 8172
c906108c
SS
8173/* Helper function for break_command_1 and disassemble_command. */
8174
8175void
fba45db2 8176resolve_sal_pc (struct symtab_and_line *sal)
c906108c
SS
8177{
8178 CORE_ADDR pc;
8179
8180 if (sal->pc == 0 && sal->symtab != NULL)
8181 {
8182 if (!find_line_pc (sal->symtab, sal->line, &pc))
8a3fe4f8 8183 error (_("No line %d in file \"%s\"."),
c906108c
SS
8184 sal->line, sal->symtab->filename);
8185 sal->pc = pc;
6a048695 8186
4a64f543
MS
8187 /* If this SAL corresponds to a breakpoint inserted using a line
8188 number, then skip the function prologue if necessary. */
6a048695 8189 if (sal->explicit_line)
059acae7 8190 skip_prologue_sal (sal);
c906108c
SS
8191 }
8192
8193 if (sal->section == 0 && sal->symtab != NULL)
8194 {
8195 struct blockvector *bv;
c5aa993b
JM
8196 struct block *b;
8197 struct symbol *sym;
c906108c 8198
801e3a5b 8199 bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
c906108c
SS
8200 if (bv != NULL)
8201 {
7f0df278 8202 sym = block_linkage_function (b);
c906108c
SS
8203 if (sym != NULL)
8204 {
8205 fixup_symbol_section (sym, sal->symtab->objfile);
714835d5 8206 sal->section = SYMBOL_OBJ_SECTION (sym);
c906108c
SS
8207 }
8208 else
8209 {
4a64f543
MS
8210 /* It really is worthwhile to have the section, so we'll
8211 just have to look harder. This case can be executed
8212 if we have line numbers but no functions (as can
8213 happen in assembly source). */
c906108c 8214
c5aa993b 8215 struct minimal_symbol *msym;
6c95b8df
PA
8216 struct cleanup *old_chain = save_current_space_and_thread ();
8217
8218 switch_to_program_space_and_thread (sal->pspace);
c906108c
SS
8219
8220 msym = lookup_minimal_symbol_by_pc (sal->pc);
8221 if (msym)
714835d5 8222 sal->section = SYMBOL_OBJ_SECTION (msym);
6c95b8df
PA
8223
8224 do_cleanups (old_chain);
c906108c
SS
8225 }
8226 }
8227 }
8228}
8229
8230void
fba45db2 8231break_command (char *arg, int from_tty)
c906108c 8232{
db107f19 8233 break_command_1 (arg, 0, from_tty);
c906108c
SS
8234}
8235
c906108c 8236void
fba45db2 8237tbreak_command (char *arg, int from_tty)
c906108c 8238{
db107f19 8239 break_command_1 (arg, BP_TEMPFLAG, from_tty);
c906108c
SS
8240}
8241
c906108c 8242static void
fba45db2 8243hbreak_command (char *arg, int from_tty)
c906108c 8244{
db107f19 8245 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
c906108c
SS
8246}
8247
8248static void
fba45db2 8249thbreak_command (char *arg, int from_tty)
c906108c 8250{
db107f19 8251 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
c906108c
SS
8252}
8253
8254static void
fba45db2 8255stop_command (char *arg, int from_tty)
c906108c 8256{
a3f17187 8257 printf_filtered (_("Specify the type of breakpoint to set.\n\
c906108c 8258Usage: stop in <function | address>\n\
a3f17187 8259 stop at <line>\n"));
c906108c
SS
8260}
8261
8262static void
fba45db2 8263stopin_command (char *arg, int from_tty)
c906108c
SS
8264{
8265 int badInput = 0;
8266
c5aa993b 8267 if (arg == (char *) NULL)
c906108c
SS
8268 badInput = 1;
8269 else if (*arg != '*')
8270 {
8271 char *argptr = arg;
8272 int hasColon = 0;
8273
4a64f543 8274 /* Look for a ':'. If this is a line number specification, then
53a5351d 8275 say it is bad, otherwise, it should be an address or
4a64f543 8276 function/method name. */
c906108c 8277 while (*argptr && !hasColon)
c5aa993b
JM
8278 {
8279 hasColon = (*argptr == ':');
8280 argptr++;
8281 }
c906108c
SS
8282
8283 if (hasColon)
c5aa993b 8284 badInput = (*argptr != ':'); /* Not a class::method */
c906108c 8285 else
c5aa993b 8286 badInput = isdigit (*arg); /* a simple line number */
c906108c
SS
8287 }
8288
8289 if (badInput)
a3f17187 8290 printf_filtered (_("Usage: stop in <function | address>\n"));
c906108c 8291 else
db107f19 8292 break_command_1 (arg, 0, from_tty);
c906108c
SS
8293}
8294
8295static void
fba45db2 8296stopat_command (char *arg, int from_tty)
c906108c
SS
8297{
8298 int badInput = 0;
8299
c5aa993b 8300 if (arg == (char *) NULL || *arg == '*') /* no line number */
c906108c
SS
8301 badInput = 1;
8302 else
8303 {
8304 char *argptr = arg;
8305 int hasColon = 0;
8306
4a64f543
MS
8307 /* Look for a ':'. If there is a '::' then get out, otherwise
8308 it is probably a line number. */
c906108c 8309 while (*argptr && !hasColon)
c5aa993b
JM
8310 {
8311 hasColon = (*argptr == ':');
8312 argptr++;
8313 }
c906108c
SS
8314
8315 if (hasColon)
c5aa993b 8316 badInput = (*argptr == ':'); /* we have class::method */
c906108c 8317 else
c5aa993b 8318 badInput = !isdigit (*arg); /* not a line number */
c906108c
SS
8319 }
8320
8321 if (badInput)
a3f17187 8322 printf_filtered (_("Usage: stop at <line>\n"));
c906108c 8323 else
db107f19 8324 break_command_1 (arg, 0, from_tty);
c906108c
SS
8325}
8326
f1310107
TJB
8327/* Implement the "breakpoint_hit" breakpoint_ops method for
8328 ranged breakpoints. */
8329
8330static int
8331breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
8332 struct address_space *aspace,
8333 CORE_ADDR bp_addr)
8334{
8335 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
8336 bl->length, aspace, bp_addr);
8337}
8338
8339/* Implement the "resources_needed" breakpoint_ops method for
8340 ranged breakpoints. */
8341
8342static int
8343resources_needed_ranged_breakpoint (const struct bp_location *bl)
8344{
8345 return target_ranged_break_num_registers ();
8346}
8347
8348/* Implement the "print_it" breakpoint_ops method for
8349 ranged breakpoints. */
8350
8351static enum print_stop_action
8352print_it_ranged_breakpoint (struct breakpoint *b)
8353{
8354 struct bp_location *bl = b->loc;
8355
8356 gdb_assert (b->type == bp_hardware_breakpoint);
8357
8358 /* Ranged breakpoints have only one location. */
8359 gdb_assert (bl && bl->next == NULL);
8360
8361 annotate_breakpoint (b->number);
8362 if (b->disposition == disp_del)
8363 ui_out_text (uiout, "\nTemporary ranged breakpoint ");
8364 else
8365 ui_out_text (uiout, "\nRanged breakpoint ");
8366 if (ui_out_is_mi_like_p (uiout))
8367 {
8368 ui_out_field_string (uiout, "reason",
8369 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
8370 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8371 }
8372 ui_out_field_int (uiout, "bkptno", b->number);
8373 ui_out_text (uiout, ", ");
8374
8375 return PRINT_SRC_AND_LOC;
8376}
8377
8378/* Implement the "print_one" breakpoint_ops method for
8379 ranged breakpoints. */
8380
8381static void
8382print_one_ranged_breakpoint (struct breakpoint *b,
8383 struct bp_location **last_loc)
8384{
8385 struct bp_location *bl = b->loc;
8386 struct value_print_options opts;
8387
8388 /* Ranged breakpoints have only one location. */
8389 gdb_assert (bl && bl->next == NULL);
8390
8391 get_user_print_options (&opts);
8392
8393 if (opts.addressprint)
8394 /* We don't print the address range here, it will be printed later
8395 by print_one_detail_ranged_breakpoint. */
8396 ui_out_field_skip (uiout, "addr");
8397 annotate_field (5);
8398 print_breakpoint_location (b, bl);
8399 *last_loc = bl;
8400}
8401
8402/* Implement the "print_one_detail" breakpoint_ops method for
8403 ranged breakpoints. */
8404
8405static void
8406print_one_detail_ranged_breakpoint (const struct breakpoint *b,
8407 struct ui_out *uiout)
8408{
8409 CORE_ADDR address_start, address_end;
8410 struct bp_location *bl = b->loc;
8411 struct ui_stream *stb = ui_out_stream_new (uiout);
8412 struct cleanup *cleanup = make_cleanup_ui_out_stream_delete (stb);
8413
8414 gdb_assert (bl);
8415
8416 address_start = bl->address;
8417 address_end = address_start + bl->length - 1;
8418
8419 ui_out_text (uiout, "\taddress range: ");
8420 fprintf_unfiltered (stb->stream, "[%s, %s]",
8421 print_core_address (bl->gdbarch, address_start),
8422 print_core_address (bl->gdbarch, address_end));
8423 ui_out_field_stream (uiout, "addr", stb);
8424 ui_out_text (uiout, "\n");
8425
8426 do_cleanups (cleanup);
8427}
8428
8429/* Implement the "print_mention" breakpoint_ops method for
8430 ranged breakpoints. */
8431
8432static void
8433print_mention_ranged_breakpoint (struct breakpoint *b)
8434{
8435 struct bp_location *bl = b->loc;
8436
8437 gdb_assert (bl);
8438 gdb_assert (b->type == bp_hardware_breakpoint);
8439
8440 if (ui_out_is_mi_like_p (uiout))
8441 return;
8442
8443 printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
8444 b->number, paddress (bl->gdbarch, bl->address),
8445 paddress (bl->gdbarch, bl->address + bl->length - 1));
8446}
8447
8448/* Implement the "print_recreate" breakpoint_ops method for
8449 ranged breakpoints. */
8450
8451static void
8452print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
8453{
8454 fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
8455 b->addr_string_range_end);
8456}
8457
8458/* The breakpoint_ops structure to be used in ranged breakpoints. */
8459
8460static struct breakpoint_ops ranged_breakpoint_ops =
8461{
8462 NULL, /* insert */
8463 NULL, /* remove */
8464 breakpoint_hit_ranged_breakpoint,
8465 resources_needed_ranged_breakpoint,
8466 print_it_ranged_breakpoint,
8467 print_one_ranged_breakpoint,
8468 print_one_detail_ranged_breakpoint,
8469 print_mention_ranged_breakpoint,
8470 print_recreate_ranged_breakpoint
8471};
8472
8473/* Find the address where the end of the breakpoint range should be
8474 placed, given the SAL of the end of the range. This is so that if
8475 the user provides a line number, the end of the range is set to the
8476 last instruction of the given line. */
8477
8478static CORE_ADDR
8479find_breakpoint_range_end (struct symtab_and_line sal)
8480{
8481 CORE_ADDR end;
8482
8483 /* If the user provided a PC value, use it. Otherwise,
8484 find the address of the end of the given location. */
8485 if (sal.explicit_pc)
8486 end = sal.pc;
8487 else
8488 {
8489 int ret;
8490 CORE_ADDR start;
8491
8492 ret = find_line_pc_range (sal, &start, &end);
8493 if (!ret)
8494 error (_("Could not find location of the end of the range."));
8495
8496 /* find_line_pc_range returns the start of the next line. */
8497 end--;
8498 }
8499
8500 return end;
8501}
8502
8503/* Implement the "break-range" CLI command. */
8504
8505static void
8506break_range_command (char *arg, int from_tty)
8507{
8508 char *arg_start, *addr_string_start, *addr_string_end;
8509 struct linespec_result canonical_start, canonical_end;
8510 int bp_count, can_use_bp, length;
8511 CORE_ADDR end;
8512 struct breakpoint *b;
8513 struct symtab_and_line sal_start, sal_end;
8514 struct symtabs_and_lines sals_start, sals_end;
8515 struct cleanup *cleanup_bkpt;
8516
8517 /* We don't support software ranged breakpoints. */
8518 if (target_ranged_break_num_registers () < 0)
8519 error (_("This target does not support hardware ranged breakpoints."));
8520
8521 bp_count = hw_breakpoint_used_count ();
8522 bp_count += target_ranged_break_num_registers ();
8523 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8524 bp_count, 0);
8525 if (can_use_bp < 0)
8526 error (_("Hardware breakpoints used exceeds limit."));
8527
8528 if (arg == NULL || arg[0] == '\0')
8529 error(_("No address range specified."));
8530
8531 sals_start.sals = NULL;
8532 sals_start.nelts = 0;
8533 init_linespec_result (&canonical_start);
8534
8535 while (*arg == ' ' || *arg == '\t')
8536 arg++;
8537
58438ac1 8538 parse_breakpoint_sals (&arg, &sals_start, &canonical_start);
f1310107
TJB
8539
8540 sal_start = sals_start.sals[0];
8541 addr_string_start = canonical_start.canonical[0];
8542 cleanup_bkpt = make_cleanup (xfree, addr_string_start);
8543 xfree (sals_start.sals);
8544 xfree (canonical_start.canonical);
8545
8546 if (arg[0] != ',')
8547 error (_("Too few arguments."));
8548 else if (sals_start.nelts == 0)
8549 error (_("Could not find location of the beginning of the range."));
8550 else if (sals_start.nelts != 1)
8551 error (_("Cannot create a ranged breakpoint with multiple locations."));
8552
8553 resolve_sal_pc (&sal_start);
8554
8555 arg++; /* Skip the comma. */
8556 while (*arg == ' ' || *arg == '\t')
8557 arg++;
8558
8559 /* Parse the end location. */
8560
8561 sals_end.sals = NULL;
8562 sals_end.nelts = 0;
8563 init_linespec_result (&canonical_end);
8564 arg_start = arg;
8565
423f41a5 8566 /* We call decode_line_1 directly here instead of using
f1310107
TJB
8567 parse_breakpoint_sals because we need to specify the start location's
8568 symtab and line as the default symtab and line for the end of the
8569 range. This makes it possible to have ranges like "foo.c:27, +14",
8570 where +14 means 14 lines from the start location. */
8571 sals_end = decode_line_1 (&arg, 1, sal_start.symtab, sal_start.line,
58438ac1 8572 &canonical_end);
f1310107
TJB
8573
8574 /* canonical_end can be NULL if it was of the form "*0xdeadbeef". */
8575 if (canonical_end.canonical == NULL)
38a714bb 8576 canonical_end.canonical = xcalloc (1, sizeof (char *));
f1310107
TJB
8577 /* Add the string if not present. */
8578 if (arg_start != arg && canonical_end.canonical[0] == NULL)
8579 canonical_end.canonical[0] = savestring (arg_start, arg - arg_start);
8580
8581 sal_end = sals_end.sals[0];
8582 addr_string_end = canonical_end.canonical[0];
8583 make_cleanup (xfree, addr_string_end);
8584 xfree (sals_end.sals);
8585 xfree (canonical_end.canonical);
8586
8587 if (sals_end.nelts == 0)
8588 error (_("Could not find location of the end of the range."));
8589 else if (sals_end.nelts != 1)
8590 error (_("Cannot create a ranged breakpoint with multiple locations."));
8591
8592 resolve_sal_pc (&sal_end);
8593
8594 end = find_breakpoint_range_end (sal_end);
8595 if (sal_start.pc > end)
8596 error (_("Invalid address range, end preceeds start."));
8597
8598 length = end - sal_start.pc + 1;
8599 if (length < 0)
8600 /* Length overflowed. */
8601 error (_("Address range too large."));
8602 else if (length == 1)
8603 {
8604 /* This range is simple enough to be handled by
8605 the `hbreak' command. */
8606 hbreak_command (addr_string_start, 1);
8607
8608 do_cleanups (cleanup_bkpt);
8609
8610 return;
8611 }
8612
8613 /* Now set up the breakpoint. */
8614 b = set_raw_breakpoint (get_current_arch (), sal_start,
8615 bp_hardware_breakpoint);
8616 set_breakpoint_count (breakpoint_count + 1);
8617 b->number = breakpoint_count;
8618 b->disposition = disp_donttouch;
8619 b->addr_string = addr_string_start;
8620 b->addr_string_range_end = addr_string_end;
8621 b->ops = &ranged_breakpoint_ops;
8622 b->loc->length = length;
8623
8624 discard_cleanups (cleanup_bkpt);
8625
8626 mention (b);
8d3788bd 8627 observer_notify_breakpoint_created (b);
f1310107
TJB
8628 update_global_location_list (1);
8629}
8630
4a64f543
MS
8631/* Return non-zero if EXP is verified as constant. Returned zero
8632 means EXP is variable. Also the constant detection may fail for
8633 some constant expressions and in such case still falsely return
8634 zero. */
65d79d4b
SDJ
8635static int
8636watchpoint_exp_is_const (const struct expression *exp)
8637{
8638 int i = exp->nelts;
8639
8640 while (i > 0)
8641 {
8642 int oplenp, argsp;
8643
8644 /* We are only interested in the descriptor of each element. */
8645 operator_length (exp, i, &oplenp, &argsp);
8646 i -= oplenp;
8647
8648 switch (exp->elts[i].opcode)
8649 {
8650 case BINOP_ADD:
8651 case BINOP_SUB:
8652 case BINOP_MUL:
8653 case BINOP_DIV:
8654 case BINOP_REM:
8655 case BINOP_MOD:
8656 case BINOP_LSH:
8657 case BINOP_RSH:
8658 case BINOP_LOGICAL_AND:
8659 case BINOP_LOGICAL_OR:
8660 case BINOP_BITWISE_AND:
8661 case BINOP_BITWISE_IOR:
8662 case BINOP_BITWISE_XOR:
8663 case BINOP_EQUAL:
8664 case BINOP_NOTEQUAL:
8665 case BINOP_LESS:
8666 case BINOP_GTR:
8667 case BINOP_LEQ:
8668 case BINOP_GEQ:
8669 case BINOP_REPEAT:
8670 case BINOP_COMMA:
8671 case BINOP_EXP:
8672 case BINOP_MIN:
8673 case BINOP_MAX:
8674 case BINOP_INTDIV:
8675 case BINOP_CONCAT:
8676 case BINOP_IN:
8677 case BINOP_RANGE:
8678 case TERNOP_COND:
8679 case TERNOP_SLICE:
8680 case TERNOP_SLICE_COUNT:
8681
8682 case OP_LONG:
8683 case OP_DOUBLE:
8684 case OP_DECFLOAT:
8685 case OP_LAST:
8686 case OP_COMPLEX:
8687 case OP_STRING:
8688 case OP_BITSTRING:
8689 case OP_ARRAY:
8690 case OP_TYPE:
8691 case OP_NAME:
8692 case OP_OBJC_NSSTRING:
8693
8694 case UNOP_NEG:
8695 case UNOP_LOGICAL_NOT:
8696 case UNOP_COMPLEMENT:
8697 case UNOP_ADDR:
8698 case UNOP_HIGH:
4a64f543
MS
8699 /* Unary, binary and ternary operators: We have to check
8700 their operands. If they are constant, then so is the
8701 result of that operation. For instance, if A and B are
8702 determined to be constants, then so is "A + B".
8703
8704 UNOP_IND is one exception to the rule above, because the
8705 value of *ADDR is not necessarily a constant, even when
8706 ADDR is. */
65d79d4b
SDJ
8707 break;
8708
8709 case OP_VAR_VALUE:
8710 /* Check whether the associated symbol is a constant.
4a64f543 8711
65d79d4b 8712 We use SYMBOL_CLASS rather than TYPE_CONST because it's
4a64f543
MS
8713 possible that a buggy compiler could mark a variable as
8714 constant even when it is not, and TYPE_CONST would return
8715 true in this case, while SYMBOL_CLASS wouldn't.
8716
8717 We also have to check for function symbols because they
8718 are always constant. */
65d79d4b
SDJ
8719 {
8720 struct symbol *s = exp->elts[i + 2].symbol;
8721
8722 if (SYMBOL_CLASS (s) != LOC_BLOCK
8723 && SYMBOL_CLASS (s) != LOC_CONST
8724 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
8725 return 0;
8726 break;
8727 }
8728
8729 /* The default action is to return 0 because we are using
8730 the optimistic approach here: If we don't know something,
8731 then it is not a constant. */
8732 default:
8733 return 0;
8734 }
8735 }
8736
8737 return 1;
8738}
8739
77b06cd7
TJB
8740/* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
8741
8742static int
8743insert_watchpoint (struct bp_location *bl)
8744{
e09342b5
TJB
8745 int length = bl->owner->exact? 1 : bl->length;
8746
8747 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
8748 bl->owner->cond_exp);
77b06cd7
TJB
8749}
8750
8751/* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
8752
8753static int
8754remove_watchpoint (struct bp_location *bl)
8755{
e09342b5
TJB
8756 int length = bl->owner->exact? 1 : bl->length;
8757
8758 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
8759 bl->owner->cond_exp);
8760}
8761
8762/* Implement the "resources_needed" breakpoint_ops method for
8763 hardware watchpoints. */
8764
8765static int
8766resources_needed_watchpoint (const struct bp_location *bl)
8767{
90e4670f 8768 int length = bl->owner->exact? 1 : bl->length;
e09342b5 8769
90e4670f 8770 return target_region_ok_for_hw_watchpoint (bl->address, length);
77b06cd7
TJB
8771}
8772
8773/* The breakpoint_ops structure to be used in hardware watchpoints. */
8774
8775static struct breakpoint_ops watchpoint_breakpoint_ops =
8776{
8777 insert_watchpoint,
8778 remove_watchpoint,
8779 NULL, /* breakpoint_hit */
e09342b5 8780 resources_needed_watchpoint,
77b06cd7
TJB
8781 NULL, /* print_it */
8782 NULL, /* print_one */
f1310107 8783 NULL, /* print_one_detail */
77b06cd7
TJB
8784 NULL, /* print_mention */
8785 NULL /* print_recreate */
8786};
8787
53a5351d
JM
8788/* accessflag: hw_write: watch write,
8789 hw_read: watch read,
8790 hw_access: watch access (read or write) */
c906108c 8791static void
84f4c1fe
PM
8792watch_command_1 (char *arg, int accessflag, int from_tty,
8793 int just_location, int internal)
c906108c 8794{
d983da9c 8795 struct breakpoint *b, *scope_breakpoint = NULL;
c906108c 8796 struct expression *exp;
60e1c644 8797 struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
a1442452 8798 struct value *val, *mark, *result;
c906108c 8799 struct frame_info *frame;
c906108c
SS
8800 char *exp_start = NULL;
8801 char *exp_end = NULL;
37e4754d 8802 char *tok, *id_tok_start, *end_tok;
c906108c
SS
8803 int toklen;
8804 char *cond_start = NULL;
8805 char *cond_end = NULL;
c906108c
SS
8806 int i, other_type_used, target_resources_ok = 0;
8807 enum bptype bp_type;
e09342b5 8808 int reg_cnt = 0;
37e4754d 8809 int thread = -1;
0cf6dd15 8810 int pc = 0;
c906108c 8811
37e4754d
LM
8812 /* Make sure that we actually have parameters to parse. */
8813 if (arg != NULL && arg[0] != '\0')
8814 {
8815 toklen = strlen (arg); /* Size of argument list. */
8816
8817 /* Points tok to the end of the argument list. */
8818 tok = arg + toklen - 1;
8819
4a64f543
MS
8820 /* Go backwards in the parameters list. Skip the last
8821 parameter. If we're expecting a 'thread <thread_num>'
8822 parameter, this should be the thread identifier. */
37e4754d
LM
8823 while (tok > arg && (*tok == ' ' || *tok == '\t'))
8824 tok--;
8825 while (tok > arg && (*tok != ' ' && *tok != '\t'))
8826 tok--;
8827
8828 /* Points end_tok to the beginning of the last token. */
8829 id_tok_start = tok + 1;
8830
4a64f543
MS
8831 /* Go backwards in the parameters list. Skip one more
8832 parameter. If we're expecting a 'thread <thread_num>'
8833 parameter, we should reach a "thread" token. */
37e4754d
LM
8834 while (tok > arg && (*tok == ' ' || *tok == '\t'))
8835 tok--;
8836
8837 end_tok = tok;
8838
8839 while (tok > arg && (*tok != ' ' && *tok != '\t'))
8840 tok--;
8841
8842 /* Move the pointer forward to skip the whitespace and
8843 calculate the length of the token. */
8844 tok++;
8845 toklen = end_tok - tok;
8846
8847 if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
8848 {
8849 /* At this point we've found a "thread" token, which means
8850 the user is trying to set a watchpoint that triggers
8851 only in a specific thread. */
8852 char *endp;
8853
8854 /* Extract the thread ID from the next token. */
8855 thread = strtol (id_tok_start, &endp, 0);
8856
8857 /* Check if the user provided a valid numeric value for the
8858 thread ID. */
8859 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
8860 error (_("Invalid thread ID specification %s."), id_tok_start);
8861
8862 /* Check if the thread actually exists. */
8863 if (!valid_thread_id (thread))
8864 error (_("Unknown thread %d."), thread);
8865
8866 /* Truncate the string and get rid of the thread <thread_num>
8867 parameter before the parameter list is parsed by the
8868 evaluate_expression() function. */
8869 *tok = '\0';
8870 }
8871 }
8872
8873 /* Parse the rest of the arguments. */
c906108c
SS
8874 innermost_block = NULL;
8875 exp_start = arg;
8876 exp = parse_exp_1 (&arg, 0, 0);
8877 exp_end = arg;
fa8a61dc
TT
8878 /* Remove trailing whitespace from the expression before saving it.
8879 This makes the eventual display of the expression string a bit
8880 prettier. */
8881 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
8882 --exp_end;
8883
65d79d4b
SDJ
8884 /* Checking if the expression is not constant. */
8885 if (watchpoint_exp_is_const (exp))
8886 {
8887 int len;
8888
8889 len = exp_end - exp_start;
8890 while (len > 0 && isspace (exp_start[len - 1]))
8891 len--;
8892 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
8893 }
8894
c906108c
SS
8895 exp_valid_block = innermost_block;
8896 mark = value_mark ();
a1442452 8897 fetch_subexp_value (exp, &pc, &val, &result, NULL);
06a64a0b
TT
8898
8899 if (just_location)
8900 {
8901 exp_valid_block = NULL;
a1442452 8902 val = value_addr (result);
06a64a0b
TT
8903 release_value (val);
8904 value_free_to_mark (mark);
8905 }
8906 else if (val != NULL)
fa4727a6 8907 release_value (val);
c906108c 8908
e9cafbcc
TT
8909 tok = skip_spaces (arg);
8910 end_tok = skip_to_space (tok);
c906108c
SS
8911
8912 toklen = end_tok - tok;
8913 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
8914 {
2d134ed3
PA
8915 struct expression *cond;
8916
60e1c644 8917 innermost_block = NULL;
c906108c
SS
8918 tok = cond_start = end_tok + 1;
8919 cond = parse_exp_1 (&tok, 0, 0);
60e1c644
PA
8920
8921 /* The watchpoint expression may not be local, but the condition
8922 may still be. E.g.: `watch global if local > 0'. */
8923 cond_exp_valid_block = innermost_block;
8924
2d134ed3 8925 xfree (cond);
c906108c
SS
8926 cond_end = tok;
8927 }
8928 if (*tok)
8a3fe4f8 8929 error (_("Junk at end of command."));
c906108c 8930
53a5351d 8931 if (accessflag == hw_read)
c5aa993b 8932 bp_type = bp_read_watchpoint;
53a5351d 8933 else if (accessflag == hw_access)
c5aa993b
JM
8934 bp_type = bp_access_watchpoint;
8935 else
8936 bp_type = bp_hardware_watchpoint;
c906108c 8937
e09342b5
TJB
8938 reg_cnt = can_use_hardware_watchpoint (val, target_exact_watchpoints);
8939 if (reg_cnt == 0 && bp_type != bp_hardware_watchpoint)
8a3fe4f8 8940 error (_("Expression cannot be implemented with read/access watchpoint."));
e09342b5 8941 if (reg_cnt != 0)
c5aa993b
JM
8942 {
8943 i = hw_watchpoint_used_count (bp_type, &other_type_used);
53a5351d 8944 target_resources_ok =
e09342b5 8945 target_can_use_hardware_watchpoint (bp_type, i + reg_cnt,
53a5351d 8946 other_type_used);
c5aa993b 8947 if (target_resources_ok == 0 && bp_type != bp_hardware_watchpoint)
8a3fe4f8 8948 error (_("Target does not support this type of hardware watchpoint."));
53a5351d 8949
c5aa993b 8950 if (target_resources_ok < 0 && bp_type != bp_hardware_watchpoint)
3e43a32a
MS
8951 error (_("Target can only support one kind "
8952 "of HW watchpoint at a time."));
c5aa993b 8953 }
c906108c 8954
4a64f543
MS
8955 /* Change the type of breakpoint to an ordinary watchpoint if a
8956 hardware watchpoint could not be set. */
e09342b5 8957 if (!reg_cnt || target_resources_ok <= 0)
4d28f7a8
KB
8958 bp_type = bp_watchpoint;
8959
d983da9c 8960 frame = block_innermost_frame (exp_valid_block);
d983da9c
DJ
8961
8962 /* If the expression is "local", then set up a "watchpoint scope"
8963 breakpoint at the point where we've left the scope of the watchpoint
8964 expression. Create the scope breakpoint before the watchpoint, so
8965 that we will encounter it first in bpstat_stop_status. */
60e1c644 8966 if (exp_valid_block && frame)
d983da9c 8967 {
edb3359d
DJ
8968 if (frame_id_p (frame_unwind_caller_id (frame)))
8969 {
8970 scope_breakpoint
a6d9a66e
UW
8971 = create_internal_breakpoint (frame_unwind_caller_arch (frame),
8972 frame_unwind_caller_pc (frame),
edb3359d 8973 bp_watchpoint_scope);
d983da9c 8974
edb3359d 8975 scope_breakpoint->enable_state = bp_enabled;
d983da9c 8976
edb3359d
DJ
8977 /* Automatically delete the breakpoint when it hits. */
8978 scope_breakpoint->disposition = disp_del;
d983da9c 8979
edb3359d
DJ
8980 /* Only break in the proper frame (help with recursion). */
8981 scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
d983da9c 8982
edb3359d 8983 /* Set the address at which we will stop. */
a6d9a66e
UW
8984 scope_breakpoint->loc->gdbarch
8985 = frame_unwind_caller_arch (frame);
edb3359d
DJ
8986 scope_breakpoint->loc->requested_address
8987 = frame_unwind_caller_pc (frame);
8988 scope_breakpoint->loc->address
a6d9a66e
UW
8989 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
8990 scope_breakpoint->loc->requested_address,
edb3359d
DJ
8991 scope_breakpoint->type);
8992 }
d983da9c
DJ
8993 }
8994
c906108c 8995 /* Now set up the breakpoint. */
2d134ed3 8996 b = set_raw_breakpoint_without_location (NULL, bp_type);
84f4c1fe 8997 set_breakpoint_number (internal, b);
37e4754d 8998 b->thread = thread;
b5de0fa7 8999 b->disposition = disp_donttouch;
c906108c
SS
9000 b->exp = exp;
9001 b->exp_valid_block = exp_valid_block;
60e1c644 9002 b->cond_exp_valid_block = cond_exp_valid_block;
06a64a0b
TT
9003 if (just_location)
9004 {
9005 struct type *t = value_type (val);
9006 CORE_ADDR addr = value_as_address (val);
9007 char *name;
9008
9009 t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
9010 name = type_to_string (t);
9011
d63d0675
JK
9012 b->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
9013 core_addr_to_string (addr));
06a64a0b
TT
9014 xfree (name);
9015
4a4106ca 9016 b->exp_string = xstrprintf ("-location %.*s",
d63d0675
JK
9017 (int) (exp_end - exp_start), exp_start);
9018
06a64a0b
TT
9019 /* The above expression is in C. */
9020 b->language = language_c;
9021 }
9022 else
9023 b->exp_string = savestring (exp_start, exp_end - exp_start);
c906108c 9024 b->val = val;
fa4727a6 9025 b->val_valid = 1;
77b06cd7
TJB
9026 b->ops = &watchpoint_breakpoint_ops;
9027
e09342b5
TJB
9028 /* Use an exact watchpoint when there's only one memory region to be
9029 watched, and only one debug register is needed to watch it. */
9030 b->exact = target_exact_watchpoints && reg_cnt == 1;
9031
c906108c
SS
9032 if (cond_start)
9033 b->cond_string = savestring (cond_start, cond_end - cond_start);
9034 else
9035 b->cond_string = 0;
c5aa993b 9036
c906108c 9037 if (frame)
f6bc2008
PA
9038 {
9039 b->watchpoint_frame = get_frame_id (frame);
9040 b->watchpoint_thread = inferior_ptid;
9041 }
c906108c 9042 else
f6bc2008
PA
9043 {
9044 b->watchpoint_frame = null_frame_id;
9045 b->watchpoint_thread = null_ptid;
9046 }
c906108c 9047
d983da9c 9048 if (scope_breakpoint != NULL)
c906108c 9049 {
d983da9c
DJ
9050 /* The scope breakpoint is related to the watchpoint. We will
9051 need to act on them together. */
9052 b->related_breakpoint = scope_breakpoint;
9053 scope_breakpoint->related_breakpoint = b;
c906108c 9054 }
d983da9c 9055
06a64a0b
TT
9056 if (!just_location)
9057 value_free_to_mark (mark);
2d134ed3
PA
9058
9059 /* Finally update the new watchpoint. This creates the locations
9060 that should be inserted. */
9061 update_watchpoint (b, 1);
8d3788bd
VP
9062
9063 /* Do not mention breakpoints with a negative number, but do
84f4c1fe 9064 notify observers. */
8d3788bd 9065 if (!internal)
84f4c1fe 9066 mention (b);
8d3788bd
VP
9067 observer_notify_breakpoint_created (b);
9068
b60e7edf 9069 update_global_location_list (1);
c906108c
SS
9070}
9071
e09342b5
TJB
9072/* Return count of debug registers needed to watch the given expression.
9073 If EXACT_WATCHPOINTS is 1, then consider that only the address of
9074 the start of the watched region will be monitored (i.e., all accesses
9075 will be aligned). This uses less debug registers on some targets.
9076
9077 If the watchpoint cannot be handled in hardware return zero. */
c906108c 9078
c906108c 9079static int
e09342b5 9080can_use_hardware_watchpoint (struct value *v, int exact_watchpoints)
c906108c
SS
9081{
9082 int found_memory_cnt = 0;
2e70b7b9 9083 struct value *head = v;
c906108c
SS
9084
9085 /* Did the user specifically forbid us to use hardware watchpoints? */
c5aa993b 9086 if (!can_use_hw_watchpoints)
c906108c 9087 return 0;
c5aa993b 9088
5c44784c
JM
9089 /* Make sure that the value of the expression depends only upon
9090 memory contents, and values computed from them within GDB. If we
9091 find any register references or function calls, we can't use a
9092 hardware watchpoint.
9093
9094 The idea here is that evaluating an expression generates a series
9095 of values, one holding the value of every subexpression. (The
9096 expression a*b+c has five subexpressions: a, b, a*b, c, and
9097 a*b+c.) GDB's values hold almost enough information to establish
9098 the criteria given above --- they identify memory lvalues,
9099 register lvalues, computed values, etcetera. So we can evaluate
9100 the expression, and then scan the chain of values that leaves
9101 behind to decide whether we can detect any possible change to the
9102 expression's final value using only hardware watchpoints.
9103
9104 However, I don't think that the values returned by inferior
9105 function calls are special in any way. So this function may not
9106 notice that an expression involving an inferior function call
9107 can't be watched with hardware watchpoints. FIXME. */
17cf0ecd 9108 for (; v; v = value_next (v))
c906108c 9109 {
5c44784c 9110 if (VALUE_LVAL (v) == lval_memory)
c906108c 9111 {
8464be76
DJ
9112 if (v != head && value_lazy (v))
9113 /* A lazy memory lvalue in the chain is one that GDB never
9114 needed to fetch; we either just used its address (e.g.,
9115 `a' in `a.b') or we never needed it at all (e.g., `a'
9116 in `a,b'). This doesn't apply to HEAD; if that is
9117 lazy then it was not readable, but watch it anyway. */
5c44784c 9118 ;
53a5351d 9119 else
5c44784c
JM
9120 {
9121 /* Ahh, memory we actually used! Check if we can cover
9122 it with hardware watchpoints. */
df407dfe 9123 struct type *vtype = check_typedef (value_type (v));
2e70b7b9
MS
9124
9125 /* We only watch structs and arrays if user asked for it
9126 explicitly, never if they just happen to appear in a
9127 middle of some value chain. */
9128 if (v == head
9129 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
9130 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
9131 {
42ae5230 9132 CORE_ADDR vaddr = value_address (v);
e09342b5
TJB
9133 int len;
9134 int num_regs;
9135
9136 len = (exact_watchpoints
9137 && is_scalar_type_recursive (vtype))?
9138 1 : TYPE_LENGTH (value_type (v));
2e70b7b9 9139
e09342b5
TJB
9140 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
9141 if (!num_regs)
2e70b7b9
MS
9142 return 0;
9143 else
e09342b5 9144 found_memory_cnt += num_regs;
2e70b7b9 9145 }
5c44784c 9146 }
c5aa993b 9147 }
5086187c
AC
9148 else if (VALUE_LVAL (v) != not_lval
9149 && deprecated_value_modifiable (v) == 0)
38b6c3b3 9150 return 0; /* These are values from the history (e.g., $1). */
5086187c 9151 else if (VALUE_LVAL (v) == lval_register)
38b6c3b3 9152 return 0; /* Cannot watch a register with a HW watchpoint. */
c906108c
SS
9153 }
9154
9155 /* The expression itself looks suitable for using a hardware
9156 watchpoint, but give the target machine a chance to reject it. */
9157 return found_memory_cnt;
9158}
9159
8b93c638 9160void
84f4c1fe 9161watch_command_wrapper (char *arg, int from_tty, int internal)
8b93c638 9162{
84f4c1fe 9163 watch_command_1 (arg, hw_write, from_tty, 0, internal);
06a64a0b
TT
9164}
9165
9166/* A helper function that looks for an argument at the start of a
9167 string. The argument must also either be at the end of the string,
9168 or be followed by whitespace. Returns 1 if it finds the argument,
9169 0 otherwise. If the argument is found, it updates *STR. */
9170
9171static int
9172check_for_argument (char **str, char *arg, int arg_len)
9173{
9174 if (strncmp (*str, arg, arg_len) == 0
9175 && ((*str)[arg_len] == '\0' || isspace ((*str)[arg_len])))
9176 {
9177 *str += arg_len;
9178 return 1;
9179 }
9180 return 0;
9181}
9182
9183/* A helper function that looks for the "-location" argument and then
9184 calls watch_command_1. */
9185
9186static void
9187watch_maybe_just_location (char *arg, int accessflag, int from_tty)
9188{
9189 int just_location = 0;
9190
9191 if (arg
9192 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
9193 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
9194 {
e9cafbcc 9195 arg = skip_spaces (arg);
06a64a0b
TT
9196 just_location = 1;
9197 }
9198
84f4c1fe 9199 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
8b93c638 9200}
8926118c 9201
c5aa993b 9202static void
fba45db2 9203watch_command (char *arg, int from_tty)
c906108c 9204{
06a64a0b 9205 watch_maybe_just_location (arg, hw_write, from_tty);
c906108c
SS
9206}
9207
8b93c638 9208void
84f4c1fe 9209rwatch_command_wrapper (char *arg, int from_tty, int internal)
8b93c638 9210{
84f4c1fe 9211 watch_command_1 (arg, hw_read, from_tty, 0, internal);
8b93c638 9212}
8926118c 9213
c5aa993b 9214static void
fba45db2 9215rwatch_command (char *arg, int from_tty)
c906108c 9216{
06a64a0b 9217 watch_maybe_just_location (arg, hw_read, from_tty);
c906108c
SS
9218}
9219
8b93c638 9220void
84f4c1fe 9221awatch_command_wrapper (char *arg, int from_tty, int internal)
8b93c638 9222{
84f4c1fe 9223 watch_command_1 (arg, hw_access, from_tty, 0, internal);
8b93c638 9224}
8926118c 9225
c5aa993b 9226static void
fba45db2 9227awatch_command (char *arg, int from_tty)
c906108c 9228{
06a64a0b 9229 watch_maybe_just_location (arg, hw_access, from_tty);
c906108c 9230}
c906108c 9231\f
c5aa993b 9232
43ff13b4 9233/* Helper routines for the until_command routine in infcmd.c. Here
c906108c
SS
9234 because it uses the mechanisms of breakpoints. */
9235
bfec99b2
PA
9236struct until_break_command_continuation_args
9237{
9238 struct breakpoint *breakpoint;
9239 struct breakpoint *breakpoint2;
186c406b 9240 int thread_num;
bfec99b2
PA
9241};
9242
43ff13b4 9243/* This function is called by fetch_inferior_event via the
4a64f543 9244 cmd_continuation pointer, to complete the until command. It takes
43ff13b4 9245 care of cleaning up the temporary breakpoints set up by the until
4a64f543 9246 command. */
c2c6d25f 9247static void
604ead4a 9248until_break_command_continuation (void *arg)
43ff13b4 9249{
bfec99b2
PA
9250 struct until_break_command_continuation_args *a = arg;
9251
9252 delete_breakpoint (a->breakpoint);
9253 if (a->breakpoint2)
9254 delete_breakpoint (a->breakpoint2);
186c406b 9255 delete_longjmp_breakpoint (a->thread_num);
43ff13b4
JM
9256}
9257
c906108c 9258void
ae66c1fc 9259until_break_command (char *arg, int from_tty, int anywhere)
c906108c
SS
9260{
9261 struct symtabs_and_lines sals;
9262 struct symtab_and_line sal;
206415a3 9263 struct frame_info *frame = get_selected_frame (NULL);
c906108c 9264 struct breakpoint *breakpoint;
f107f563 9265 struct breakpoint *breakpoint2 = NULL;
c906108c 9266 struct cleanup *old_chain;
186c406b
TT
9267 int thread;
9268 struct thread_info *tp;
c906108c
SS
9269
9270 clear_proceed_status ();
9271
9272 /* Set a breakpoint where the user wants it and at return from
4a64f543 9273 this function. */
c5aa993b 9274
c906108c
SS
9275 if (default_breakpoint_valid)
9276 sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
58438ac1 9277 default_breakpoint_line, NULL);
c906108c 9278 else
58438ac1 9279 sals = decode_line_1 (&arg, 1, (struct symtab *) NULL, 0, NULL);
c5aa993b 9280
c906108c 9281 if (sals.nelts != 1)
8a3fe4f8 9282 error (_("Couldn't get information on specified line."));
c5aa993b 9283
c906108c 9284 sal = sals.sals[0];
4a64f543 9285 xfree (sals.sals); /* malloc'd, so freed. */
c5aa993b 9286
c906108c 9287 if (*arg)
8a3fe4f8 9288 error (_("Junk at end of arguments."));
c5aa993b 9289
c906108c 9290 resolve_sal_pc (&sal);
c5aa993b 9291
ae66c1fc
EZ
9292 if (anywhere)
9293 /* If the user told us to continue until a specified location,
9294 we don't specify a frame at which we need to stop. */
a6d9a66e
UW
9295 breakpoint = set_momentary_breakpoint (get_frame_arch (frame), sal,
9296 null_frame_id, bp_until);
ae66c1fc 9297 else
4a64f543
MS
9298 /* Otherwise, specify the selected frame, because we want to stop
9299 only at the very same frame. */
a6d9a66e
UW
9300 breakpoint = set_momentary_breakpoint (get_frame_arch (frame), sal,
9301 get_stack_frame_id (frame),
ae66c1fc 9302 bp_until);
c5aa993b 9303
f107f563 9304 old_chain = make_cleanup_delete_breakpoint (breakpoint);
c906108c 9305
186c406b
TT
9306 tp = inferior_thread ();
9307 thread = tp->num;
9308
ae66c1fc
EZ
9309 /* Keep within the current frame, or in frames called by the current
9310 one. */
edb3359d
DJ
9311
9312 if (frame_id_p (frame_unwind_caller_id (frame)))
c906108c 9313 {
edb3359d
DJ
9314 sal = find_pc_line (frame_unwind_caller_pc (frame), 0);
9315 sal.pc = frame_unwind_caller_pc (frame);
a6d9a66e
UW
9316 breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
9317 sal,
edb3359d 9318 frame_unwind_caller_id (frame),
f107f563
VP
9319 bp_until);
9320 make_cleanup_delete_breakpoint (breakpoint2);
186c406b
TT
9321
9322 set_longjmp_breakpoint (tp, frame_unwind_caller_id (frame));
9323 make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
c906108c 9324 }
c5aa993b 9325
c906108c 9326 proceed (-1, TARGET_SIGNAL_DEFAULT, 0);
f107f563 9327
4a64f543
MS
9328 /* If we are running asynchronously, and proceed call above has
9329 actually managed to start the target, arrange for breakpoints to
9330 be deleted when the target stops. Otherwise, we're already
9331 stopped and delete breakpoints via cleanup chain. */
f107f563 9332
8ea051c5 9333 if (target_can_async_p () && is_running (inferior_ptid))
f107f563 9334 {
bfec99b2
PA
9335 struct until_break_command_continuation_args *args;
9336 args = xmalloc (sizeof (*args));
f107f563 9337
bfec99b2
PA
9338 args->breakpoint = breakpoint;
9339 args->breakpoint2 = breakpoint2;
186c406b 9340 args->thread_num = thread;
f107f563
VP
9341
9342 discard_cleanups (old_chain);
95e54da7
PA
9343 add_continuation (inferior_thread (),
9344 until_break_command_continuation, args,
604ead4a 9345 xfree);
f107f563
VP
9346 }
9347 else
c5aa993b 9348 do_cleanups (old_chain);
c906108c 9349}
ae66c1fc 9350
c906108c
SS
9351/* This function attempts to parse an optional "if <cond>" clause
9352 from the arg string. If one is not found, it returns NULL.
c5aa993b 9353
c906108c
SS
9354 Else, it returns a pointer to the condition string. (It does not
9355 attempt to evaluate the string against a particular block.) And,
9356 it updates arg to point to the first character following the parsed
4a64f543 9357 if clause in the arg string. */
53a5351d 9358
c906108c 9359static char *
fba45db2 9360ep_parse_optional_if_clause (char **arg)
c906108c 9361{
c5aa993b
JM
9362 char *cond_string;
9363
9364 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
c906108c 9365 return NULL;
c5aa993b 9366
4a64f543 9367 /* Skip the "if" keyword. */
c906108c 9368 (*arg) += 2;
c5aa993b 9369
c906108c 9370 /* Skip any extra leading whitespace, and record the start of the
4a64f543 9371 condition string. */
e9cafbcc 9372 *arg = skip_spaces (*arg);
c906108c 9373 cond_string = *arg;
c5aa993b 9374
4a64f543
MS
9375 /* Assume that the condition occupies the remainder of the arg
9376 string. */
c906108c 9377 (*arg) += strlen (cond_string);
c5aa993b 9378
c906108c
SS
9379 return cond_string;
9380}
c5aa993b 9381
c906108c
SS
9382/* Commands to deal with catching events, such as signals, exceptions,
9383 process start/exit, etc. */
c5aa993b
JM
9384
9385typedef enum
9386{
44feb3ce
TT
9387 catch_fork_temporary, catch_vfork_temporary,
9388 catch_fork_permanent, catch_vfork_permanent
c5aa993b
JM
9389}
9390catch_fork_kind;
9391
c906108c 9392static void
cc59ec59
MS
9393catch_fork_command_1 (char *arg, int from_tty,
9394 struct cmd_list_element *command)
c906108c 9395{
a6d9a66e 9396 struct gdbarch *gdbarch = get_current_arch ();
c5aa993b 9397 char *cond_string = NULL;
44feb3ce
TT
9398 catch_fork_kind fork_kind;
9399 int tempflag;
9400
9401 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
9402 tempflag = (fork_kind == catch_fork_temporary
9403 || fork_kind == catch_vfork_temporary);
c5aa993b 9404
44feb3ce
TT
9405 if (!arg)
9406 arg = "";
e9cafbcc 9407 arg = skip_spaces (arg);
c5aa993b 9408
c906108c 9409 /* The allowed syntax is:
c5aa993b
JM
9410 catch [v]fork
9411 catch [v]fork if <cond>
9412
4a64f543 9413 First, check if there's an if clause. */
c906108c 9414 cond_string = ep_parse_optional_if_clause (&arg);
c5aa993b 9415
c906108c 9416 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 9417 error (_("Junk at end of arguments."));
c5aa993b 9418
c906108c 9419 /* If this target supports it, create a fork or vfork catchpoint
4a64f543 9420 and enable reporting of such events. */
c5aa993b
JM
9421 switch (fork_kind)
9422 {
44feb3ce
TT
9423 case catch_fork_temporary:
9424 case catch_fork_permanent:
a6d9a66e 9425 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 9426 &catch_fork_breakpoint_ops);
c906108c 9427 break;
44feb3ce
TT
9428 case catch_vfork_temporary:
9429 case catch_vfork_permanent:
a6d9a66e 9430 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 9431 &catch_vfork_breakpoint_ops);
c906108c 9432 break;
c5aa993b 9433 default:
8a3fe4f8 9434 error (_("unsupported or unknown fork kind; cannot catch it"));
c906108c 9435 break;
c5aa993b 9436 }
c906108c
SS
9437}
9438
9439static void
cc59ec59
MS
9440catch_exec_command_1 (char *arg, int from_tty,
9441 struct cmd_list_element *command)
c906108c 9442{
a6d9a66e 9443 struct gdbarch *gdbarch = get_current_arch ();
44feb3ce 9444 int tempflag;
c5aa993b 9445 char *cond_string = NULL;
c906108c 9446
44feb3ce
TT
9447 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
9448
9449 if (!arg)
9450 arg = "";
e9cafbcc 9451 arg = skip_spaces (arg);
c906108c
SS
9452
9453 /* The allowed syntax is:
c5aa993b
JM
9454 catch exec
9455 catch exec if <cond>
c906108c 9456
4a64f543 9457 First, check if there's an if clause. */
c906108c
SS
9458 cond_string = ep_parse_optional_if_clause (&arg);
9459
9460 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 9461 error (_("Junk at end of arguments."));
c906108c
SS
9462
9463 /* If this target supports it, create an exec catchpoint
4a64f543 9464 and enable reporting of such events. */
a6d9a66e
UW
9465 create_catchpoint (gdbarch, tempflag, cond_string,
9466 &catch_exec_breakpoint_ops);
c906108c 9467}
c5aa993b 9468
3086aeae 9469static enum print_stop_action
ba770c9c 9470print_it_exception_catchpoint (struct breakpoint *b)
3086aeae 9471{
ade92717 9472 int bp_temp, bp_throw;
3086aeae 9473
ade92717 9474 annotate_catchpoint (b->number);
3086aeae 9475
ade92717
AR
9476 bp_throw = strstr (b->addr_string, "throw") != NULL;
9477 if (b->loc->address != b->loc->requested_address)
9478 breakpoint_adjustment_warning (b->loc->requested_address,
9479 b->loc->address,
9480 b->number, 1);
df2b6d2d 9481 bp_temp = b->disposition == disp_del;
ade92717
AR
9482 ui_out_text (uiout,
9483 bp_temp ? "Temporary catchpoint "
9484 : "Catchpoint ");
9485 if (!ui_out_is_mi_like_p (uiout))
9486 ui_out_field_int (uiout, "bkptno", b->number);
9487 ui_out_text (uiout,
c0b37c48
AR
9488 bp_throw ? " (exception thrown), "
9489 : " (exception caught), ");
ade92717
AR
9490 if (ui_out_is_mi_like_p (uiout))
9491 {
9492 ui_out_field_string (uiout, "reason",
9493 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9494 ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9495 ui_out_field_int (uiout, "bkptno", b->number);
9496 }
3086aeae
DJ
9497 return PRINT_SRC_AND_LOC;
9498}
9499
9500static void
cc59ec59
MS
9501print_one_exception_catchpoint (struct breakpoint *b,
9502 struct bp_location **last_loc)
3086aeae 9503{
79a45b7d 9504 struct value_print_options opts;
cc59ec59 9505
79a45b7d
TT
9506 get_user_print_options (&opts);
9507 if (opts.addressprint)
3086aeae
DJ
9508 {
9509 annotate_field (4);
604133b5
AR
9510 if (b->loc == NULL || b->loc->shlib_disabled)
9511 ui_out_field_string (uiout, "addr", "<PENDING>");
9512 else
5af949e3
UW
9513 ui_out_field_core_addr (uiout, "addr",
9514 b->loc->gdbarch, b->loc->address);
3086aeae
DJ
9515 }
9516 annotate_field (5);
604133b5 9517 if (b->loc)
a6d9a66e 9518 *last_loc = b->loc;
3086aeae
DJ
9519 if (strstr (b->addr_string, "throw") != NULL)
9520 ui_out_field_string (uiout, "what", "exception throw");
9521 else
9522 ui_out_field_string (uiout, "what", "exception catch");
9523}
9524
9525static void
9526print_mention_exception_catchpoint (struct breakpoint *b)
9527{
ade92717
AR
9528 int bp_temp;
9529 int bp_throw;
9530
df2b6d2d 9531 bp_temp = b->disposition == disp_del;
ade92717
AR
9532 bp_throw = strstr (b->addr_string, "throw") != NULL;
9533 ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
9534 : _("Catchpoint "));
9535 ui_out_field_int (uiout, "bkptno", b->number);
9536 ui_out_text (uiout, bp_throw ? _(" (throw)")
9537 : _(" (catch)"));
3086aeae
DJ
9538}
9539
6149aea9
PA
9540/* Implement the "print_recreate" breakpoint_ops method for throw and
9541 catch catchpoints. */
9542
9543static void
4a64f543
MS
9544print_recreate_exception_catchpoint (struct breakpoint *b,
9545 struct ui_file *fp)
6149aea9
PA
9546{
9547 int bp_temp;
9548 int bp_throw;
9549
9550 bp_temp = b->disposition == disp_del;
9551 bp_throw = strstr (b->addr_string, "throw") != NULL;
9552 fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
9553 fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
9554}
9555
3086aeae 9556static struct breakpoint_ops gnu_v3_exception_catchpoint_ops = {
ce78b96d
JB
9557 NULL, /* insert */
9558 NULL, /* remove */
9559 NULL, /* breakpoint_hit */
e09342b5 9560 NULL, /* resources_needed */
ba770c9c 9561 print_it_exception_catchpoint,
3086aeae 9562 print_one_exception_catchpoint,
f1310107 9563 NULL, /* print_one_detail */
6149aea9
PA
9564 print_mention_exception_catchpoint,
9565 print_recreate_exception_catchpoint
3086aeae
DJ
9566};
9567
9568static int
9569handle_gnu_v3_exceptions (int tempflag, char *cond_string,
9570 enum exception_event_kind ex_event, int from_tty)
9571{
604133b5
AR
9572 char *trigger_func_name;
9573
3086aeae 9574 if (ex_event == EX_EVENT_CATCH)
604133b5 9575 trigger_func_name = "__cxa_begin_catch";
3086aeae 9576 else
604133b5 9577 trigger_func_name = "__cxa_throw";
3086aeae 9578
8cdf0e15
VP
9579 create_breakpoint (get_current_arch (),
9580 trigger_func_name, cond_string, -1,
9581 0 /* condition and thread are valid. */,
0fb4aa4b 9582 tempflag, bp_breakpoint,
8cdf0e15
VP
9583 0,
9584 AUTO_BOOLEAN_TRUE /* pending */,
9585 &gnu_v3_exception_catchpoint_ops, from_tty,
84f4c1fe
PM
9586 1 /* enabled */,
9587 0 /* internal */);
3086aeae 9588
3086aeae
DJ
9589 return 1;
9590}
9591
4a64f543 9592/* Deal with "catch catch" and "catch throw" commands. */
c906108c
SS
9593
9594static void
fba45db2
KB
9595catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
9596 int tempflag, int from_tty)
c906108c 9597{
c5aa993b 9598 char *cond_string = NULL;
c5aa993b 9599
44feb3ce
TT
9600 if (!arg)
9601 arg = "";
e9cafbcc 9602 arg = skip_spaces (arg);
c5aa993b 9603
c906108c
SS
9604 cond_string = ep_parse_optional_if_clause (&arg);
9605
9606 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 9607 error (_("Junk at end of arguments."));
c906108c 9608
059fb39f
PM
9609 if (ex_event != EX_EVENT_THROW
9610 && ex_event != EX_EVENT_CATCH)
8a3fe4f8 9611 error (_("Unsupported or unknown exception event; cannot catch it"));
c906108c 9612
3086aeae
DJ
9613 if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
9614 return;
9615
8a3fe4f8 9616 warning (_("Unsupported with this platform/compiler combination."));
c906108c
SS
9617}
9618
44feb3ce
TT
9619/* Implementation of "catch catch" command. */
9620
9621static void
9622catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
9623{
9624 int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
cc59ec59 9625
44feb3ce
TT
9626 catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
9627}
9628
9629/* Implementation of "catch throw" command. */
9630
9631static void
9632catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
9633{
9634 int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
cc59ec59 9635
44feb3ce
TT
9636 catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
9637}
9638
f7f9143b
JB
9639/* Create a breakpoint struct for Ada exception catchpoints. */
9640
9641static void
a6d9a66e
UW
9642create_ada_exception_breakpoint (struct gdbarch *gdbarch,
9643 struct symtab_and_line sal,
f7f9143b
JB
9644 char *addr_string,
9645 char *exp_string,
9646 char *cond_string,
9647 struct expression *cond,
9648 struct breakpoint_ops *ops,
9649 int tempflag,
9650 int from_tty)
9651{
9652 struct breakpoint *b;
9653
9654 if (from_tty)
9655 {
5af949e3
UW
9656 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9657 if (!loc_gdbarch)
9658 loc_gdbarch = gdbarch;
9659
6c95b8df
PA
9660 describe_other_breakpoints (loc_gdbarch,
9661 sal.pspace, sal.pc, sal.section, -1);
f7f9143b
JB
9662 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
9663 version for exception catchpoints, because two catchpoints
9664 used for different exception names will use the same address.
9665 In this case, a "breakpoint ... also set at..." warning is
4a64f543 9666 unproductive. Besides, the warning phrasing is also a bit
f7f9143b
JB
9667 inapropriate, we should use the word catchpoint, and tell
9668 the user what type of catchpoint it is. The above is good
9669 enough for now, though. */
9670 }
9671
a6d9a66e 9672 b = set_raw_breakpoint (gdbarch, sal, bp_breakpoint);
f7f9143b
JB
9673 set_breakpoint_count (breakpoint_count + 1);
9674
9675 b->enable_state = bp_enabled;
9676 b->disposition = tempflag ? disp_del : disp_donttouch;
9677 b->number = breakpoint_count;
9678 b->ignore_count = 0;
511a6cd4 9679 b->loc->cond = cond;
f7f9143b
JB
9680 b->addr_string = addr_string;
9681 b->language = language_ada;
9682 b->cond_string = cond_string;
9683 b->exp_string = exp_string;
9684 b->thread = -1;
9685 b->ops = ops;
f7f9143b
JB
9686
9687 mention (b);
8d3788bd 9688 observer_notify_breakpoint_created (b);
b60e7edf 9689 update_global_location_list (1);
f7f9143b
JB
9690}
9691
9692/* Implement the "catch exception" command. */
9693
9694static void
44feb3ce
TT
9695catch_ada_exception_command (char *arg, int from_tty,
9696 struct cmd_list_element *command)
f7f9143b 9697{
a6d9a66e 9698 struct gdbarch *gdbarch = get_current_arch ();
44feb3ce 9699 int tempflag;
f7f9143b 9700 struct symtab_and_line sal;
f7f9143b
JB
9701 char *addr_string = NULL;
9702 char *exp_string = NULL;
9703 char *cond_string = NULL;
9704 struct expression *cond = NULL;
9705 struct breakpoint_ops *ops = NULL;
9706
44feb3ce
TT
9707 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
9708
9709 if (!arg)
9710 arg = "";
f7f9143b
JB
9711 sal = ada_decode_exception_location (arg, &addr_string, &exp_string,
9712 &cond_string, &cond, &ops);
a6d9a66e 9713 create_ada_exception_breakpoint (gdbarch, sal, addr_string, exp_string,
f7f9143b
JB
9714 cond_string, cond, ops, tempflag,
9715 from_tty);
9716}
9717
a96d9b2e
SDJ
9718/* Cleanup function for a syscall filter list. */
9719static void
9720clean_up_filters (void *arg)
9721{
9722 VEC(int) *iter = *(VEC(int) **) arg;
9723 VEC_free (int, iter);
9724}
9725
9726/* Splits the argument using space as delimiter. Returns an xmalloc'd
9727 filter list, or NULL if no filtering is required. */
9728static VEC(int) *
9729catch_syscall_split_args (char *arg)
9730{
9731 VEC(int) *result = NULL;
9732 struct cleanup *cleanup = make_cleanup (clean_up_filters, &result);
9733
9734 while (*arg != '\0')
9735 {
9736 int i, syscall_number;
9737 char *endptr;
9738 char cur_name[128];
9739 struct syscall s;
9740
9741 /* Skip whitespace. */
9742 while (isspace (*arg))
9743 arg++;
9744
9745 for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
9746 cur_name[i] = arg[i];
9747 cur_name[i] = '\0';
9748 arg += i;
9749
9750 /* Check if the user provided a syscall name or a number. */
9751 syscall_number = (int) strtol (cur_name, &endptr, 0);
9752 if (*endptr == '\0')
bccd0dd2 9753 get_syscall_by_number (syscall_number, &s);
a96d9b2e
SDJ
9754 else
9755 {
9756 /* We have a name. Let's check if it's valid and convert it
9757 to a number. */
9758 get_syscall_by_name (cur_name, &s);
9759
9760 if (s.number == UNKNOWN_SYSCALL)
4a64f543
MS
9761 /* Here we have to issue an error instead of a warning,
9762 because GDB cannot do anything useful if there's no
9763 syscall number to be caught. */
a96d9b2e
SDJ
9764 error (_("Unknown syscall name '%s'."), cur_name);
9765 }
9766
9767 /* Ok, it's valid. */
9768 VEC_safe_push (int, result, s.number);
9769 }
9770
9771 discard_cleanups (cleanup);
9772 return result;
9773}
9774
9775/* Implement the "catch syscall" command. */
9776
9777static void
cc59ec59
MS
9778catch_syscall_command_1 (char *arg, int from_tty,
9779 struct cmd_list_element *command)
a96d9b2e
SDJ
9780{
9781 int tempflag;
9782 VEC(int) *filter;
9783 struct syscall s;
9784 struct gdbarch *gdbarch = get_current_arch ();
9785
9786 /* Checking if the feature if supported. */
9787 if (gdbarch_get_syscall_number_p (gdbarch) == 0)
9788 error (_("The feature 'catch syscall' is not supported on \
ea666128 9789this architecture yet."));
a96d9b2e
SDJ
9790
9791 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
9792
e9cafbcc 9793 arg = skip_spaces (arg);
a96d9b2e
SDJ
9794
9795 /* We need to do this first "dummy" translation in order
9796 to get the syscall XML file loaded or, most important,
9797 to display a warning to the user if there's no XML file
9798 for his/her architecture. */
9799 get_syscall_by_number (0, &s);
9800
9801 /* The allowed syntax is:
9802 catch syscall
9803 catch syscall <name | number> [<name | number> ... <name | number>]
9804
9805 Let's check if there's a syscall name. */
9806
9807 if (arg != NULL)
9808 filter = catch_syscall_split_args (arg);
9809 else
9810 filter = NULL;
9811
9812 create_syscall_event_catchpoint (tempflag, filter,
9813 &catch_syscall_breakpoint_ops);
9814}
9815
f7f9143b
JB
9816/* Implement the "catch assert" command. */
9817
9818static void
3e43a32a
MS
9819catch_assert_command (char *arg, int from_tty,
9820 struct cmd_list_element *command)
f7f9143b 9821{
a6d9a66e 9822 struct gdbarch *gdbarch = get_current_arch ();
44feb3ce 9823 int tempflag;
f7f9143b
JB
9824 struct symtab_and_line sal;
9825 char *addr_string = NULL;
9826 struct breakpoint_ops *ops = NULL;
9827
44feb3ce
TT
9828 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
9829
9830 if (!arg)
9831 arg = "";
f7f9143b 9832 sal = ada_decode_assert_location (arg, &addr_string, &ops);
a6d9a66e
UW
9833 create_ada_exception_breakpoint (gdbarch, sal, addr_string, NULL, NULL, NULL,
9834 ops, tempflag, from_tty);
f7f9143b
JB
9835}
9836
c906108c 9837static void
fba45db2 9838catch_command (char *arg, int from_tty)
c906108c 9839{
44feb3ce 9840 error (_("Catch requires an event name."));
c906108c
SS
9841}
9842\f
9843
9844static void
fba45db2 9845tcatch_command (char *arg, int from_tty)
c906108c 9846{
44feb3ce 9847 error (_("Catch requires an event name."));
c906108c
SS
9848}
9849
80f8a6eb 9850/* Delete breakpoints by address or line. */
c906108c
SS
9851
9852static void
fba45db2 9853clear_command (char *arg, int from_tty)
c906108c 9854{
d6e956e5
VP
9855 struct breakpoint *b;
9856 VEC(breakpoint_p) *found = 0;
9857 int ix;
c906108c
SS
9858 int default_match;
9859 struct symtabs_and_lines sals;
9860 struct symtab_and_line sal;
c906108c
SS
9861 int i;
9862
9863 if (arg)
9864 {
9865 sals = decode_line_spec (arg, 1);
9866 default_match = 0;
9867 }
9868 else
9869 {
c5aa993b 9870 sals.sals = (struct symtab_and_line *)
c906108c 9871 xmalloc (sizeof (struct symtab_and_line));
80f8a6eb 9872 make_cleanup (xfree, sals.sals);
4a64f543 9873 init_sal (&sal); /* Initialize to zeroes. */
c906108c
SS
9874 sal.line = default_breakpoint_line;
9875 sal.symtab = default_breakpoint_symtab;
9876 sal.pc = default_breakpoint_address;
6c95b8df 9877 sal.pspace = default_breakpoint_pspace;
c906108c 9878 if (sal.symtab == 0)
8a3fe4f8 9879 error (_("No source file specified."));
c906108c
SS
9880
9881 sals.sals[0] = sal;
9882 sals.nelts = 1;
9883
9884 default_match = 1;
9885 }
9886
4a64f543
MS
9887 /* We don't call resolve_sal_pc here. That's not as bad as it
9888 seems, because all existing breakpoints typically have both
9889 file/line and pc set. So, if clear is given file/line, we can
9890 match this to existing breakpoint without obtaining pc at all.
ed0616c6
VP
9891
9892 We only support clearing given the address explicitly
9893 present in breakpoint table. Say, we've set breakpoint
4a64f543 9894 at file:line. There were several PC values for that file:line,
ed0616c6 9895 due to optimization, all in one block.
4a64f543
MS
9896
9897 We've picked one PC value. If "clear" is issued with another
ed0616c6
VP
9898 PC corresponding to the same file:line, the breakpoint won't
9899 be cleared. We probably can still clear the breakpoint, but
9900 since the other PC value is never presented to user, user
9901 can only find it by guessing, and it does not seem important
9902 to support that. */
9903
4a64f543
MS
9904 /* For each line spec given, delete bps which correspond to it. Do
9905 it in two passes, solely to preserve the current behavior that
9906 from_tty is forced true if we delete more than one
9907 breakpoint. */
c906108c 9908
80f8a6eb 9909 found = NULL;
c906108c
SS
9910 for (i = 0; i < sals.nelts; i++)
9911 {
9912 /* If exact pc given, clear bpts at that pc.
c5aa993b
JM
9913 If line given (pc == 0), clear all bpts on specified line.
9914 If defaulting, clear all bpts on default line
c906108c 9915 or at default pc.
c5aa993b
JM
9916
9917 defaulting sal.pc != 0 tests to do
9918
9919 0 1 pc
9920 1 1 pc _and_ line
9921 0 0 line
9922 1 0 <can't happen> */
c906108c
SS
9923
9924 sal = sals.sals[i];
c906108c 9925
4a64f543 9926 /* Find all matching breakpoints and add them to 'found'. */
d6e956e5 9927 ALL_BREAKPOINTS (b)
c5aa993b 9928 {
0d381245 9929 int match = 0;
4a64f543 9930 /* Are we going to delete b? */
cc60f2e3 9931 if (b->type != bp_none && !is_watchpoint (b))
0d381245
VP
9932 {
9933 struct bp_location *loc = b->loc;
9934 for (; loc; loc = loc->next)
9935 {
6c95b8df
PA
9936 int pc_match = sal.pc
9937 && (loc->pspace == sal.pspace)
0d381245
VP
9938 && (loc->address == sal.pc)
9939 && (!section_is_overlay (loc->section)
9940 || loc->section == sal.section);
9941 int line_match = ((default_match || (0 == sal.pc))
9942 && b->source_file != NULL
9943 && sal.symtab != NULL
6c95b8df 9944 && sal.pspace == loc->pspace
0ba1096a
KT
9945 && filename_cmp (b->source_file,
9946 sal.symtab->filename) == 0
0d381245
VP
9947 && b->line_number == sal.line);
9948 if (pc_match || line_match)
9949 {
9950 match = 1;
9951 break;
9952 }
9953 }
9954 }
9955
9956 if (match)
d6e956e5 9957 VEC_safe_push(breakpoint_p, found, b);
c906108c 9958 }
80f8a6eb
MS
9959 }
9960 /* Now go thru the 'found' chain and delete them. */
d6e956e5 9961 if (VEC_empty(breakpoint_p, found))
80f8a6eb
MS
9962 {
9963 if (arg)
8a3fe4f8 9964 error (_("No breakpoint at %s."), arg);
80f8a6eb 9965 else
8a3fe4f8 9966 error (_("No breakpoint at this line."));
80f8a6eb 9967 }
c906108c 9968
d6e956e5 9969 if (VEC_length(breakpoint_p, found) > 1)
4a64f543 9970 from_tty = 1; /* Always report if deleted more than one. */
80f8a6eb 9971 if (from_tty)
a3f17187 9972 {
d6e956e5 9973 if (VEC_length(breakpoint_p, found) == 1)
a3f17187
AC
9974 printf_unfiltered (_("Deleted breakpoint "));
9975 else
9976 printf_unfiltered (_("Deleted breakpoints "));
9977 }
80f8a6eb 9978 breakpoints_changed ();
d6e956e5
VP
9979
9980 for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
80f8a6eb 9981 {
c5aa993b 9982 if (from_tty)
d6e956e5
VP
9983 printf_unfiltered ("%d ", b->number);
9984 delete_breakpoint (b);
c906108c 9985 }
80f8a6eb
MS
9986 if (from_tty)
9987 putchar_unfiltered ('\n');
c906108c
SS
9988}
9989\f
9990/* Delete breakpoint in BS if they are `delete' breakpoints and
9991 all breakpoints that are marked for deletion, whether hit or not.
9992 This is called after any breakpoint is hit, or after errors. */
9993
9994void
fba45db2 9995breakpoint_auto_delete (bpstat bs)
c906108c 9996{
35df4500 9997 struct breakpoint *b, *b_tmp;
c906108c
SS
9998
9999 for (; bs; bs = bs->next)
f431efe5
PA
10000 if (bs->breakpoint_at
10001 && bs->breakpoint_at->disposition == disp_del
c906108c 10002 && bs->stop)
f431efe5 10003 delete_breakpoint (bs->breakpoint_at);
c906108c 10004
35df4500 10005 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 10006 {
b5de0fa7 10007 if (b->disposition == disp_del_at_next_stop)
c5aa993b
JM
10008 delete_breakpoint (b);
10009 }
c906108c
SS
10010}
10011
4a64f543
MS
10012/* A comparison function for bp_location AP and BP being interfaced to
10013 qsort. Sort elements primarily by their ADDRESS (no matter what
10014 does breakpoint_address_is_meaningful say for its OWNER),
10015 secondarily by ordering first bp_permanent OWNERed elements and
10016 terciarily just ensuring the array is sorted stable way despite
10017 qsort being an instable algorithm. */
876fa593
JK
10018
10019static int
494cfb0f 10020bp_location_compare (const void *ap, const void *bp)
876fa593 10021{
494cfb0f
JK
10022 struct bp_location *a = *(void **) ap;
10023 struct bp_location *b = *(void **) bp;
2bdf28a0 10024 /* A and B come from existing breakpoints having non-NULL OWNER. */
876fa593
JK
10025 int a_perm = a->owner->enable_state == bp_permanent;
10026 int b_perm = b->owner->enable_state == bp_permanent;
10027
10028 if (a->address != b->address)
10029 return (a->address > b->address) - (a->address < b->address);
10030
10031 /* Sort permanent breakpoints first. */
10032 if (a_perm != b_perm)
10033 return (a_perm < b_perm) - (a_perm > b_perm);
10034
4a64f543
MS
10035 /* Make the user-visible order stable across GDB runs. Locations of
10036 the same breakpoint can be sorted in arbitrary order. */
876fa593
JK
10037
10038 if (a->owner->number != b->owner->number)
10039 return (a->owner->number > b->owner->number)
10040 - (a->owner->number < b->owner->number);
10041
10042 return (a > b) - (a < b);
10043}
10044
876fa593 10045/* Set bp_location_placed_address_before_address_max and
4a64f543
MS
10046 bp_location_shadow_len_after_address_max according to the current
10047 content of the bp_location array. */
f7545552
TT
10048
10049static void
876fa593 10050bp_location_target_extensions_update (void)
f7545552 10051{
876fa593
JK
10052 struct bp_location *bl, **blp_tmp;
10053
10054 bp_location_placed_address_before_address_max = 0;
10055 bp_location_shadow_len_after_address_max = 0;
10056
10057 ALL_BP_LOCATIONS (bl, blp_tmp)
10058 {
10059 CORE_ADDR start, end, addr;
10060
10061 if (!bp_location_has_shadow (bl))
10062 continue;
10063
10064 start = bl->target_info.placed_address;
10065 end = start + bl->target_info.shadow_len;
10066
10067 gdb_assert (bl->address >= start);
10068 addr = bl->address - start;
10069 if (addr > bp_location_placed_address_before_address_max)
10070 bp_location_placed_address_before_address_max = addr;
10071
10072 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
10073
10074 gdb_assert (bl->address < end);
10075 addr = end - bl->address;
10076 if (addr > bp_location_shadow_len_after_address_max)
10077 bp_location_shadow_len_after_address_max = addr;
10078 }
f7545552
TT
10079}
10080
4cd9bd08 10081/* If SHOULD_INSERT is false, do not insert any breakpoint locations
b60e7edf
PA
10082 into the inferior, only remove already-inserted locations that no
10083 longer should be inserted. Functions that delete a breakpoint or
10084 breakpoints should pass false, so that deleting a breakpoint
10085 doesn't have the side effect of inserting the locations of other
10086 breakpoints that are marked not-inserted, but should_be_inserted
10087 returns true on them.
10088
10089 This behaviour is useful is situations close to tear-down -- e.g.,
10090 after an exec, while the target still has execution, but breakpoint
10091 shadows of the previous executable image should *NOT* be restored
10092 to the new image; or before detaching, where the target still has
10093 execution and wants to delete breakpoints from GDB's lists, and all
10094 breakpoints had already been removed from the inferior. */
10095
0d381245 10096static void
b60e7edf 10097update_global_location_list (int should_insert)
0d381245 10098{
74960c60 10099 struct breakpoint *b;
876fa593 10100 struct bp_location **locp, *loc;
f7545552
TT
10101 struct cleanup *cleanups;
10102
2d134ed3
PA
10103 /* Used in the duplicates detection below. When iterating over all
10104 bp_locations, points to the first bp_location of a given address.
10105 Breakpoints and watchpoints of different types are never
10106 duplicates of each other. Keep one pointer for each type of
10107 breakpoint/watchpoint, so we only need to loop over all locations
10108 once. */
10109 struct bp_location *bp_loc_first; /* breakpoint */
10110 struct bp_location *wp_loc_first; /* hardware watchpoint */
10111 struct bp_location *awp_loc_first; /* access watchpoint */
10112 struct bp_location *rwp_loc_first; /* read watchpoint */
876fa593 10113
4a64f543
MS
10114 /* Saved former bp_location array which we compare against the newly
10115 built bp_location from the current state of ALL_BREAKPOINTS. */
876fa593
JK
10116 struct bp_location **old_location, **old_locp;
10117 unsigned old_location_count;
10118
10119 old_location = bp_location;
10120 old_location_count = bp_location_count;
10121 bp_location = NULL;
10122 bp_location_count = 0;
10123 cleanups = make_cleanup (xfree, old_location);
0d381245 10124
74960c60 10125 ALL_BREAKPOINTS (b)
876fa593
JK
10126 for (loc = b->loc; loc; loc = loc->next)
10127 bp_location_count++;
10128
10129 bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
10130 locp = bp_location;
10131 ALL_BREAKPOINTS (b)
10132 for (loc = b->loc; loc; loc = loc->next)
10133 *locp++ = loc;
10134 qsort (bp_location, bp_location_count, sizeof (*bp_location),
494cfb0f 10135 bp_location_compare);
876fa593
JK
10136
10137 bp_location_target_extensions_update ();
74960c60 10138
4a64f543
MS
10139 /* Identify bp_location instances that are no longer present in the
10140 new list, and therefore should be freed. Note that it's not
10141 necessary that those locations should be removed from inferior --
10142 if there's another location at the same address (previously
10143 marked as duplicate), we don't need to remove/insert the
10144 location.
876fa593 10145
4a64f543
MS
10146 LOCP is kept in sync with OLD_LOCP, each pointing to the current
10147 and former bp_location array state respectively. */
876fa593
JK
10148
10149 locp = bp_location;
10150 for (old_locp = old_location; old_locp < old_location + old_location_count;
10151 old_locp++)
74960c60 10152 {
876fa593 10153 struct bp_location *old_loc = *old_locp;
c7d46a38 10154 struct bp_location **loc2p;
876fa593 10155
4a64f543
MS
10156 /* Tells if 'old_loc' is found amoung the new locations. If
10157 not, we have to free it. */
c7d46a38 10158 int found_object = 0;
20874c92
VP
10159 /* Tells if the location should remain inserted in the target. */
10160 int keep_in_target = 0;
10161 int removed = 0;
876fa593 10162
4a64f543
MS
10163 /* Skip LOCP entries which will definitely never be needed.
10164 Stop either at or being the one matching OLD_LOC. */
876fa593 10165 while (locp < bp_location + bp_location_count
c7d46a38 10166 && (*locp)->address < old_loc->address)
876fa593 10167 locp++;
c7d46a38
PA
10168
10169 for (loc2p = locp;
10170 (loc2p < bp_location + bp_location_count
10171 && (*loc2p)->address == old_loc->address);
10172 loc2p++)
10173 {
10174 if (*loc2p == old_loc)
10175 {
10176 found_object = 1;
10177 break;
10178 }
10179 }
74960c60 10180
4a64f543
MS
10181 /* If this location is no longer present, and inserted, look if
10182 there's maybe a new location at the same address. If so,
10183 mark that one inserted, and don't remove this one. This is
10184 needed so that we don't have a time window where a breakpoint
10185 at certain location is not inserted. */
74960c60 10186
876fa593 10187 if (old_loc->inserted)
0d381245 10188 {
4a64f543
MS
10189 /* If the location is inserted now, we might have to remove
10190 it. */
74960c60 10191
876fa593 10192 if (found_object && should_be_inserted (old_loc))
74960c60 10193 {
4a64f543
MS
10194 /* The location is still present in the location list,
10195 and still should be inserted. Don't do anything. */
20874c92 10196 keep_in_target = 1;
74960c60
VP
10197 }
10198 else
10199 {
4a64f543
MS
10200 /* The location is either no longer present, or got
10201 disabled. See if there's another location at the
10202 same address, in which case we don't need to remove
10203 this one from the target. */
876fa593 10204
2bdf28a0 10205 /* OLD_LOC comes from existing struct breakpoint. */
876fa593
JK
10206 if (breakpoint_address_is_meaningful (old_loc->owner))
10207 {
876fa593 10208 for (loc2p = locp;
c7d46a38
PA
10209 (loc2p < bp_location + bp_location_count
10210 && (*loc2p)->address == old_loc->address);
876fa593
JK
10211 loc2p++)
10212 {
10213 struct bp_location *loc2 = *loc2p;
10214
2d134ed3 10215 if (breakpoint_locations_match (loc2, old_loc))
c7d46a38
PA
10216 {
10217 /* For the sake of should_be_inserted.
4a64f543
MS
10218 Duplicates check below will fix up this
10219 later. */
c7d46a38 10220 loc2->duplicate = 0;
85d721b8
PA
10221
10222 /* Read watchpoint locations are switched to
10223 access watchpoints, if the former are not
10224 supported, but the latter are. */
10225 if (is_hardware_watchpoint (old_loc->owner))
10226 {
10227 gdb_assert (is_hardware_watchpoint (loc2->owner));
10228 loc2->watchpoint_type = old_loc->watchpoint_type;
10229 }
10230
c7d46a38
PA
10231 if (loc2 != old_loc && should_be_inserted (loc2))
10232 {
10233 loc2->inserted = 1;
10234 loc2->target_info = old_loc->target_info;
10235 keep_in_target = 1;
10236 break;
10237 }
876fa593
JK
10238 }
10239 }
10240 }
74960c60
VP
10241 }
10242
20874c92
VP
10243 if (!keep_in_target)
10244 {
876fa593 10245 if (remove_breakpoint (old_loc, mark_uninserted))
20874c92 10246 {
4a64f543
MS
10247 /* This is just about all we can do. We could keep
10248 this location on the global list, and try to
10249 remove it next time, but there's no particular
10250 reason why we will succeed next time.
20874c92 10251
4a64f543
MS
10252 Note that at this point, old_loc->owner is still
10253 valid, as delete_breakpoint frees the breakpoint
10254 only after calling us. */
3e43a32a
MS
10255 printf_filtered (_("warning: Error removing "
10256 "breakpoint %d\n"),
876fa593 10257 old_loc->owner->number);
20874c92
VP
10258 }
10259 removed = 1;
10260 }
0d381245 10261 }
74960c60
VP
10262
10263 if (!found_object)
1c5cfe86 10264 {
db82e815
PA
10265 if (removed && non_stop
10266 && breakpoint_address_is_meaningful (old_loc->owner)
10267 && !is_hardware_watchpoint (old_loc->owner))
20874c92 10268 {
db82e815
PA
10269 /* This location was removed from the target. In
10270 non-stop mode, a race condition is possible where
10271 we've removed a breakpoint, but stop events for that
10272 breakpoint are already queued and will arrive later.
10273 We apply an heuristic to be able to distinguish such
10274 SIGTRAPs from other random SIGTRAPs: we keep this
10275 breakpoint location for a bit, and will retire it
10276 after we see some number of events. The theory here
10277 is that reporting of events should, "on the average",
10278 be fair, so after a while we'll see events from all
10279 threads that have anything of interest, and no longer
10280 need to keep this breakpoint location around. We
10281 don't hold locations forever so to reduce chances of
10282 mistaking a non-breakpoint SIGTRAP for a breakpoint
10283 SIGTRAP.
10284
10285 The heuristic failing can be disastrous on
10286 decr_pc_after_break targets.
10287
10288 On decr_pc_after_break targets, like e.g., x86-linux,
10289 if we fail to recognize a late breakpoint SIGTRAP,
10290 because events_till_retirement has reached 0 too
10291 soon, we'll fail to do the PC adjustment, and report
10292 a random SIGTRAP to the user. When the user resumes
10293 the inferior, it will most likely immediately crash
2dec564e 10294 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
db82e815
PA
10295 corrupted, because of being resumed e.g., in the
10296 middle of a multi-byte instruction, or skipped a
10297 one-byte instruction. This was actually seen happen
10298 on native x86-linux, and should be less rare on
10299 targets that do not support new thread events, like
10300 remote, due to the heuristic depending on
10301 thread_count.
10302
10303 Mistaking a random SIGTRAP for a breakpoint trap
10304 causes similar symptoms (PC adjustment applied when
10305 it shouldn't), but then again, playing with SIGTRAPs
10306 behind the debugger's back is asking for trouble.
10307
10308 Since hardware watchpoint traps are always
10309 distinguishable from other traps, so we don't need to
10310 apply keep hardware watchpoint moribund locations
10311 around. We simply always ignore hardware watchpoint
10312 traps we can no longer explain. */
10313
876fa593
JK
10314 old_loc->events_till_retirement = 3 * (thread_count () + 1);
10315 old_loc->owner = NULL;
20874c92 10316
876fa593 10317 VEC_safe_push (bp_location_p, moribund_locations, old_loc);
1c5cfe86
PA
10318 }
10319 else
f431efe5
PA
10320 {
10321 old_loc->owner = NULL;
10322 decref_bp_location (&old_loc);
10323 }
20874c92 10324 }
74960c60 10325 }
1c5cfe86 10326
2d134ed3
PA
10327 /* Rescan breakpoints at the same address and section, marking the
10328 first one as "first" and any others as "duplicates". This is so
10329 that the bpt instruction is only inserted once. If we have a
10330 permanent breakpoint at the same place as BPT, make that one the
10331 official one, and the rest as duplicates. Permanent breakpoints
10332 are sorted first for the same address.
10333
10334 Do the same for hardware watchpoints, but also considering the
10335 watchpoint's type (regular/access/read) and length. */
876fa593 10336
2d134ed3
PA
10337 bp_loc_first = NULL;
10338 wp_loc_first = NULL;
10339 awp_loc_first = NULL;
10340 rwp_loc_first = NULL;
876fa593 10341 ALL_BP_LOCATIONS (loc, locp)
74960c60 10342 {
4a64f543
MS
10343 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
10344 non-NULL. */
876fa593 10345 struct breakpoint *b = loc->owner;
2d134ed3 10346 struct bp_location **loc_first_p;
876fa593
JK
10347
10348 if (b->enable_state == bp_disabled
10349 || b->enable_state == bp_call_disabled
10350 || b->enable_state == bp_startup_disabled
10351 || !loc->enabled
10352 || loc->shlib_disabled
15c3d785 10353 || !breakpoint_address_is_meaningful (b)
d77f58be 10354 || is_tracepoint (b))
876fa593
JK
10355 continue;
10356
10357 /* Permanent breakpoint should always be inserted. */
10358 if (b->enable_state == bp_permanent && ! loc->inserted)
10359 internal_error (__FILE__, __LINE__,
10360 _("allegedly permanent breakpoint is not "
10361 "actually inserted"));
10362
2d134ed3
PA
10363 if (b->type == bp_hardware_watchpoint)
10364 loc_first_p = &wp_loc_first;
10365 else if (b->type == bp_read_watchpoint)
10366 loc_first_p = &rwp_loc_first;
10367 else if (b->type == bp_access_watchpoint)
10368 loc_first_p = &awp_loc_first;
10369 else
10370 loc_first_p = &bp_loc_first;
10371
10372 if (*loc_first_p == NULL
10373 || (overlay_debugging && loc->section != (*loc_first_p)->section)
10374 || !breakpoint_locations_match (loc, *loc_first_p))
876fa593 10375 {
2d134ed3 10376 *loc_first_p = loc;
876fa593
JK
10377 loc->duplicate = 0;
10378 continue;
10379 }
10380
10381 loc->duplicate = 1;
10382
2d134ed3
PA
10383 if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
10384 && b->enable_state != bp_permanent)
876fa593
JK
10385 internal_error (__FILE__, __LINE__,
10386 _("another breakpoint was inserted on top of "
10387 "a permanent breakpoint"));
0d381245 10388 }
74960c60 10389
50c71eaf 10390 if (breakpoints_always_inserted_mode () && should_insert
c35b1492 10391 && (have_live_inferiors ()
2567c7d9 10392 || (gdbarch_has_global_breakpoints (target_gdbarch))))
74960c60 10393 insert_breakpoint_locations ();
f7545552
TT
10394
10395 do_cleanups (cleanups);
74960c60
VP
10396}
10397
20874c92
VP
10398void
10399breakpoint_retire_moribund (void)
10400{
10401 struct bp_location *loc;
10402 int ix;
10403
10404 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
10405 if (--(loc->events_till_retirement) == 0)
10406 {
f431efe5 10407 decref_bp_location (&loc);
20874c92
VP
10408 VEC_unordered_remove (bp_location_p, moribund_locations, ix);
10409 --ix;
10410 }
10411}
10412
74960c60 10413static void
b60e7edf 10414update_global_location_list_nothrow (int inserting)
74960c60
VP
10415{
10416 struct gdb_exception e;
cc59ec59 10417
74960c60 10418 TRY_CATCH (e, RETURN_MASK_ERROR)
b60e7edf 10419 update_global_location_list (inserting);
0d381245
VP
10420}
10421
f431efe5
PA
10422/* Clear BKP from a BPS. */
10423
a474d7c2 10424static void
f431efe5 10425bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
a474d7c2
PA
10426{
10427 bpstat bs;
cc59ec59 10428
a474d7c2 10429 for (bs = bps; bs; bs = bs->next)
f431efe5 10430 if (bs->breakpoint_at == bpt)
a474d7c2
PA
10431 {
10432 bs->breakpoint_at = NULL;
10433 bs->old_val = NULL;
10434 /* bs->commands will be freed later. */
10435 }
10436}
10437
10438/* Callback for iterate_over_threads. */
10439static int
f431efe5 10440bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
a474d7c2 10441{
f431efe5 10442 struct breakpoint *bpt = data;
cc59ec59 10443
16c381f0 10444 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
a474d7c2
PA
10445 return 0;
10446}
10447
53a5351d 10448/* Delete a breakpoint and clean up all traces of it in the data
f431efe5 10449 structures. */
c906108c
SS
10450
10451void
fba45db2 10452delete_breakpoint (struct breakpoint *bpt)
c906108c 10453{
52f0bd74 10454 struct breakpoint *b;
c906108c 10455
8a3fe4f8 10456 gdb_assert (bpt != NULL);
c906108c 10457
4a64f543
MS
10458 /* Has this bp already been deleted? This can happen because
10459 multiple lists can hold pointers to bp's. bpstat lists are
10460 especial culprits.
10461
10462 One example of this happening is a watchpoint's scope bp. When
10463 the scope bp triggers, we notice that the watchpoint is out of
10464 scope, and delete it. We also delete its scope bp. But the
10465 scope bp is marked "auto-deleting", and is already on a bpstat.
10466 That bpstat is then checked for auto-deleting bp's, which are
10467 deleted.
10468
10469 A real solution to this problem might involve reference counts in
10470 bp's, and/or giving them pointers back to their referencing
10471 bpstat's, and teaching delete_breakpoint to only free a bp's
10472 storage when no more references were extent. A cheaper bandaid
10473 was chosen. */
c906108c
SS
10474 if (bpt->type == bp_none)
10475 return;
10476
4a64f543
MS
10477 /* At least avoid this stale reference until the reference counting
10478 of breakpoints gets resolved. */
d0fb5eae 10479 if (bpt->related_breakpoint != bpt)
e5a0a904 10480 {
d0fb5eae
JK
10481 struct breakpoint *related;
10482
10483 if (bpt->type == bp_watchpoint_scope)
10484 watchpoint_del_at_next_stop (bpt->related_breakpoint);
10485 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
10486 watchpoint_del_at_next_stop (bpt);
10487
10488 /* Unlink bpt from the bpt->related_breakpoint ring. */
10489 for (related = bpt; related->related_breakpoint != bpt;
10490 related = related->related_breakpoint);
10491 related->related_breakpoint = bpt->related_breakpoint;
10492 bpt->related_breakpoint = bpt;
e5a0a904
JK
10493 }
10494
8d3788bd 10495 observer_notify_breakpoint_deleted (bpt);
c906108c 10496
c906108c
SS
10497 if (breakpoint_chain == bpt)
10498 breakpoint_chain = bpt->next;
10499
c906108c
SS
10500 ALL_BREAKPOINTS (b)
10501 if (b->next == bpt)
c5aa993b
JM
10502 {
10503 b->next = bpt->next;
10504 break;
10505 }
c906108c 10506
9add0f1b 10507 decref_counted_command_line (&bpt->commands);
60e1c644
PA
10508 xfree (bpt->cond_string);
10509 xfree (bpt->cond_exp);
10510 xfree (bpt->addr_string);
f1310107 10511 xfree (bpt->addr_string_range_end);
60e1c644
PA
10512 xfree (bpt->exp);
10513 xfree (bpt->exp_string);
d63d0675 10514 xfree (bpt->exp_string_reparse);
60e1c644
PA
10515 value_free (bpt->val);
10516 xfree (bpt->source_file);
10517 xfree (bpt->exec_pathname);
a96d9b2e 10518 clean_up_filters (&bpt->syscalls_to_be_caught);
c906108c 10519
f431efe5
PA
10520
10521 /* Be sure no bpstat's are pointing at the breakpoint after it's
10522 been freed. */
10523 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
10524 in all threeds for now. Note that we cannot just remove bpstats
10525 pointing at bpt from the stop_bpstat list entirely, as breakpoint
10526 commands are associated with the bpstat; if we remove it here,
10527 then the later call to bpstat_do_actions (&stop_bpstat); in
10528 event-top.c won't do anything, and temporary breakpoints with
10529 commands won't work. */
10530
10531 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
10532
4a64f543
MS
10533 /* Now that breakpoint is removed from breakpoint list, update the
10534 global location list. This will remove locations that used to
10535 belong to this breakpoint. Do this before freeing the breakpoint
10536 itself, since remove_breakpoint looks at location's owner. It
10537 might be better design to have location completely
10538 self-contained, but it's not the case now. */
b60e7edf 10539 update_global_location_list (0);
74960c60
VP
10540
10541
4a64f543
MS
10542 /* On the chance that someone will soon try again to delete this
10543 same bp, we mark it as deleted before freeing its storage. */
c906108c
SS
10544 bpt->type = bp_none;
10545
b8c9b27d 10546 xfree (bpt);
c906108c
SS
10547}
10548
4d6140d9
AC
10549static void
10550do_delete_breakpoint_cleanup (void *b)
10551{
10552 delete_breakpoint (b);
10553}
10554
10555struct cleanup *
10556make_cleanup_delete_breakpoint (struct breakpoint *b)
10557{
10558 return make_cleanup (do_delete_breakpoint_cleanup, b);
10559}
10560
95a42b64
TT
10561/* A callback for map_breakpoint_numbers that calls
10562 delete_breakpoint. */
10563
10564static void
10565do_delete_breakpoint (struct breakpoint *b, void *ignore)
10566{
10567 delete_breakpoint (b);
10568}
10569
c906108c 10570void
fba45db2 10571delete_command (char *arg, int from_tty)
c906108c 10572{
35df4500 10573 struct breakpoint *b, *b_tmp;
c906108c 10574
ea9365bb
TT
10575 dont_repeat ();
10576
c906108c
SS
10577 if (arg == 0)
10578 {
10579 int breaks_to_delete = 0;
10580
46c6471b
PA
10581 /* Delete all breakpoints if no argument. Do not delete
10582 internal breakpoints, these have to be deleted with an
10583 explicit breakpoint number argument. */
c5aa993b 10584 ALL_BREAKPOINTS (b)
46c6471b 10585 if (user_breakpoint_p (b))
973d738b
DJ
10586 {
10587 breaks_to_delete = 1;
10588 break;
10589 }
c906108c
SS
10590
10591 /* Ask user only if there are some breakpoints to delete. */
10592 if (!from_tty
e2e0b3e5 10593 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
c906108c 10594 {
35df4500 10595 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 10596 if (user_breakpoint_p (b))
c5aa993b 10597 delete_breakpoint (b);
c906108c
SS
10598 }
10599 }
10600 else
95a42b64 10601 map_breakpoint_numbers (arg, do_delete_breakpoint, NULL);
c906108c
SS
10602}
10603
0d381245
VP
10604static int
10605all_locations_are_pending (struct bp_location *loc)
fe3f5fa8 10606{
0d381245
VP
10607 for (; loc; loc = loc->next)
10608 if (!loc->shlib_disabled)
10609 return 0;
10610 return 1;
fe3f5fa8
VP
10611}
10612
776592bf
DE
10613/* Subroutine of update_breakpoint_locations to simplify it.
10614 Return non-zero if multiple fns in list LOC have the same name.
10615 Null names are ignored. */
10616
10617static int
10618ambiguous_names_p (struct bp_location *loc)
10619{
10620 struct bp_location *l;
10621 htab_t htab = htab_create_alloc (13, htab_hash_string,
cc59ec59
MS
10622 (int (*) (const void *,
10623 const void *)) streq,
776592bf
DE
10624 NULL, xcalloc, xfree);
10625
10626 for (l = loc; l != NULL; l = l->next)
10627 {
10628 const char **slot;
10629 const char *name = l->function_name;
10630
10631 /* Allow for some names to be NULL, ignore them. */
10632 if (name == NULL)
10633 continue;
10634
10635 slot = (const char **) htab_find_slot (htab, (const void *) name,
10636 INSERT);
4a64f543
MS
10637 /* NOTE: We can assume slot != NULL here because xcalloc never
10638 returns NULL. */
776592bf
DE
10639 if (*slot != NULL)
10640 {
10641 htab_delete (htab);
10642 return 1;
10643 }
10644 *slot = name;
10645 }
10646
10647 htab_delete (htab);
10648 return 0;
10649}
10650
0fb4aa4b
PA
10651/* When symbols change, it probably means the sources changed as well,
10652 and it might mean the static tracepoint markers are no longer at
10653 the same address or line numbers they used to be at last we
10654 checked. Losing your static tracepoints whenever you rebuild is
10655 undesirable. This function tries to resync/rematch gdb static
10656 tracepoints with the markers on the target, for static tracepoints
10657 that have not been set by marker id. Static tracepoint that have
10658 been set by marker id are reset by marker id in breakpoint_re_set.
10659 The heuristic is:
10660
10661 1) For a tracepoint set at a specific address, look for a marker at
10662 the old PC. If one is found there, assume to be the same marker.
10663 If the name / string id of the marker found is different from the
10664 previous known name, assume that means the user renamed the marker
10665 in the sources, and output a warning.
10666
10667 2) For a tracepoint set at a given line number, look for a marker
10668 at the new address of the old line number. If one is found there,
10669 assume to be the same marker. If the name / string id of the
10670 marker found is different from the previous known name, assume that
10671 means the user renamed the marker in the sources, and output a
10672 warning.
10673
10674 3) If a marker is no longer found at the same address or line, it
10675 may mean the marker no longer exists. But it may also just mean
10676 the code changed a bit. Maybe the user added a few lines of code
10677 that made the marker move up or down (in line number terms). Ask
10678 the target for info about the marker with the string id as we knew
10679 it. If found, update line number and address in the matching
10680 static tracepoint. This will get confused if there's more than one
10681 marker with the same ID (possible in UST, although unadvised
10682 precisely because it confuses tools). */
10683
10684static struct symtab_and_line
10685update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
10686{
10687 struct static_tracepoint_marker marker;
10688 CORE_ADDR pc;
10689 int i;
10690
10691 pc = sal.pc;
10692 if (sal.line)
10693 find_line_pc (sal.symtab, sal.line, &pc);
10694
10695 if (target_static_tracepoint_marker_at (pc, &marker))
10696 {
10697 if (strcmp (b->static_trace_marker_id, marker.str_id) != 0)
10698 warning (_("static tracepoint %d changed probed marker from %s to %s"),
10699 b->number,
10700 b->static_trace_marker_id, marker.str_id);
10701
10702 xfree (b->static_trace_marker_id);
10703 b->static_trace_marker_id = xstrdup (marker.str_id);
10704 release_static_tracepoint_marker (&marker);
10705
10706 return sal;
10707 }
10708
10709 /* Old marker wasn't found on target at lineno. Try looking it up
10710 by string ID. */
10711 if (!sal.explicit_pc
10712 && sal.line != 0
10713 && sal.symtab != NULL
10714 && b->static_trace_marker_id != NULL)
10715 {
10716 VEC(static_tracepoint_marker_p) *markers;
10717
10718 markers
10719 = target_static_tracepoint_markers_by_strid (b->static_trace_marker_id);
10720
10721 if (!VEC_empty(static_tracepoint_marker_p, markers))
10722 {
10723 struct symtab_and_line sal;
10724 struct symbol *sym;
10725 struct static_tracepoint_marker *marker;
10726
10727 marker = VEC_index (static_tracepoint_marker_p, markers, 0);
10728
10729 xfree (b->static_trace_marker_id);
10730 b->static_trace_marker_id = xstrdup (marker->str_id);
10731
10732 warning (_("marker for static tracepoint %d (%s) not "
10733 "found at previous line number"),
10734 b->number, b->static_trace_marker_id);
10735
10736 init_sal (&sal);
10737
10738 sal.pc = marker->address;
10739
10740 sal = find_pc_line (marker->address, 0);
10741 sym = find_pc_sect_function (marker->address, NULL);
10742 ui_out_text (uiout, "Now in ");
10743 if (sym)
10744 {
10745 ui_out_field_string (uiout, "func",
10746 SYMBOL_PRINT_NAME (sym));
10747 ui_out_text (uiout, " at ");
10748 }
10749 ui_out_field_string (uiout, "file", sal.symtab->filename);
10750 ui_out_text (uiout, ":");
10751
10752 if (ui_out_is_mi_like_p (uiout))
10753 {
10754 char *fullname = symtab_to_fullname (sal.symtab);
10755
10756 if (fullname)
10757 ui_out_field_string (uiout, "fullname", fullname);
10758 }
10759
10760 ui_out_field_int (uiout, "line", sal.line);
10761 ui_out_text (uiout, "\n");
10762
10763 b->line_number = sal.line;
10764
10765 xfree (b->source_file);
10766 if (sym)
10767 b->source_file = xstrdup (sal.symtab->filename);
10768 else
10769 b->source_file = NULL;
10770
10771 xfree (b->addr_string);
10772 b->addr_string = xstrprintf ("%s:%d",
10773 sal.symtab->filename, b->line_number);
10774
10775 /* Might be nice to check if function changed, and warn if
10776 so. */
10777
10778 release_static_tracepoint_marker (marker);
10779 }
10780 }
10781 return sal;
10782}
10783
8d3788bd
VP
10784/* Returns 1 iff locations A and B are sufficiently same that
10785 we don't need to report breakpoint as changed. */
10786
10787static int
10788locations_are_equal (struct bp_location *a, struct bp_location *b)
10789{
10790 while (a && b)
10791 {
10792 if (a->address != b->address)
10793 return 0;
10794
10795 if (a->shlib_disabled != b->shlib_disabled)
10796 return 0;
10797
10798 if (a->enabled != b->enabled)
10799 return 0;
10800
10801 a = a->next;
10802 b = b->next;
10803 }
10804
10805 if ((a == NULL) != (b == NULL))
10806 return 0;
10807
10808 return 1;
10809}
10810
f1310107
TJB
10811/* Create new breakpoint locations for B (a hardware or software breakpoint)
10812 based on SALS and SALS_END. If SALS_END.NELTS is not zero, then B is
10813 a ranged breakpoint. */
10814
0e30163f 10815void
0d381245 10816update_breakpoint_locations (struct breakpoint *b,
f1310107
TJB
10817 struct symtabs_and_lines sals,
10818 struct symtabs_and_lines sals_end)
fe3f5fa8
VP
10819{
10820 int i;
0d381245
VP
10821 struct bp_location *existing_locations = b->loc;
10822
f1310107
TJB
10823 /* Ranged breakpoints have only one start location and one end location. */
10824 gdb_assert (sals_end.nelts == 0 || (sals.nelts == 1 && sals_end.nelts == 1));
10825
4a64f543
MS
10826 /* If there's no new locations, and all existing locations are
10827 pending, don't do anything. This optimizes the common case where
10828 all locations are in the same shared library, that was unloaded.
10829 We'd like to retain the location, so that when the library is
10830 loaded again, we don't loose the enabled/disabled status of the
10831 individual locations. */
0d381245 10832 if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
fe3f5fa8
VP
10833 return;
10834
fe3f5fa8
VP
10835 b->loc = NULL;
10836
0d381245 10837 for (i = 0; i < sals.nelts; ++i)
fe3f5fa8 10838 {
0d381245 10839 struct bp_location *new_loc =
39d61571 10840 add_location_to_breakpoint (b, &(sals.sals[i]));
fe3f5fa8 10841
0d381245
VP
10842 /* Reparse conditions, they might contain references to the
10843 old symtab. */
10844 if (b->cond_string != NULL)
10845 {
f1310107 10846 char *s;
0d381245 10847 struct gdb_exception e;
fe3f5fa8 10848
0d381245
VP
10849 s = b->cond_string;
10850 TRY_CATCH (e, RETURN_MASK_ERROR)
10851 {
10852 new_loc->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc),
10853 0);
10854 }
10855 if (e.reason < 0)
10856 {
3e43a32a
MS
10857 warning (_("failed to reevaluate condition "
10858 "for breakpoint %d: %s"),
0d381245
VP
10859 b->number, e.message);
10860 new_loc->enabled = 0;
10861 }
10862 }
fe3f5fa8 10863
0d381245
VP
10864 if (b->source_file != NULL)
10865 xfree (b->source_file);
10866 if (sals.sals[i].symtab == NULL)
10867 b->source_file = NULL;
10868 else
1b36a34b 10869 b->source_file = xstrdup (sals.sals[i].symtab->filename);
fe3f5fa8 10870
0d381245
VP
10871 if (b->line_number == 0)
10872 b->line_number = sals.sals[i].line;
f1310107
TJB
10873
10874 if (sals_end.nelts)
10875 {
10876 CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
10877
10878 new_loc->length = end - sals.sals[0].pc + 1;
10879 }
0d381245 10880 }
fe3f5fa8 10881
514f746b
AR
10882 /* Update locations of permanent breakpoints. */
10883 if (b->enable_state == bp_permanent)
10884 make_breakpoint_permanent (b);
10885
4a64f543
MS
10886 /* If possible, carry over 'disable' status from existing
10887 breakpoints. */
0d381245
VP
10888 {
10889 struct bp_location *e = existing_locations;
776592bf
DE
10890 /* If there are multiple breakpoints with the same function name,
10891 e.g. for inline functions, comparing function names won't work.
10892 Instead compare pc addresses; this is just a heuristic as things
10893 may have moved, but in practice it gives the correct answer
10894 often enough until a better solution is found. */
10895 int have_ambiguous_names = ambiguous_names_p (b->loc);
10896
0d381245
VP
10897 for (; e; e = e->next)
10898 {
10899 if (!e->enabled && e->function_name)
10900 {
10901 struct bp_location *l = b->loc;
776592bf
DE
10902 if (have_ambiguous_names)
10903 {
10904 for (; l; l = l->next)
f1310107 10905 if (breakpoint_locations_match (e, l))
776592bf
DE
10906 {
10907 l->enabled = 0;
10908 break;
10909 }
10910 }
10911 else
10912 {
10913 for (; l; l = l->next)
10914 if (l->function_name
10915 && strcmp (e->function_name, l->function_name) == 0)
10916 {
10917 l->enabled = 0;
10918 break;
10919 }
10920 }
0d381245
VP
10921 }
10922 }
10923 }
fe3f5fa8 10924
8d3788bd
VP
10925 if (!locations_are_equal (existing_locations, b->loc))
10926 observer_notify_breakpoint_modified (b);
10927
b60e7edf 10928 update_global_location_list (1);
fe3f5fa8
VP
10929}
10930
ef23e705
TJB
10931/* Find the SaL locations corresponding to the given ADDR_STRING.
10932 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
10933
10934static struct symtabs_and_lines
10935addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
10936{
10937 char *s;
58438ac1 10938 int marker_spec;
02d20e4a 10939 struct symtabs_and_lines sals = {0};
ef23e705
TJB
10940 struct gdb_exception e;
10941
10942 s = addr_string;
10943 marker_spec = b->type == bp_static_tracepoint && is_marker_spec (s);
10944
10945 TRY_CATCH (e, RETURN_MASK_ERROR)
10946 {
10947 if (marker_spec)
10948 {
10949 sals = decode_static_tracepoint_spec (&s);
10950 if (sals.nelts > b->static_trace_marker_id_idx)
10951 {
10952 sals.sals[0] = sals.sals[b->static_trace_marker_id_idx];
10953 sals.nelts = 1;
10954 }
10955 else
10956 error (_("marker %s not found"), b->static_trace_marker_id);
10957 }
10958 else
58438ac1 10959 sals = decode_line_1 (&s, 1, (struct symtab *) NULL, 0, NULL);
ef23e705
TJB
10960 }
10961 if (e.reason < 0)
10962 {
10963 int not_found_and_ok = 0;
10964 /* For pending breakpoints, it's expected that parsing will
10965 fail until the right shared library is loaded. User has
10966 already told to create pending breakpoints and don't need
10967 extra messages. If breakpoint is in bp_shlib_disabled
10968 state, then user already saw the message about that
10969 breakpoint being disabled, and don't want to see more
10970 errors. */
58438ac1 10971 if (e.error == NOT_FOUND_ERROR
ef23e705
TJB
10972 && (b->condition_not_parsed
10973 || (b->loc && b->loc->shlib_disabled)
10974 || b->enable_state == bp_disabled))
10975 not_found_and_ok = 1;
10976
10977 if (!not_found_and_ok)
10978 {
10979 /* We surely don't want to warn about the same breakpoint
10980 10 times. One solution, implemented here, is disable
10981 the breakpoint on error. Another solution would be to
10982 have separate 'warning emitted' flag. Since this
10983 happens only when a binary has changed, I don't know
10984 which approach is better. */
10985 b->enable_state = bp_disabled;
10986 throw_exception (e);
10987 }
10988 }
10989
58438ac1 10990 if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
ef23e705
TJB
10991 {
10992 gdb_assert (sals.nelts == 1);
10993
10994 resolve_sal_pc (&sals.sals[0]);
10995 if (b->condition_not_parsed && s && s[0])
10996 {
10997 char *cond_string = 0;
10998 int thread = -1;
10999 int task = 0;
11000
11001 find_condition_and_thread (s, sals.sals[0].pc,
11002 &cond_string, &thread, &task);
11003 if (cond_string)
11004 b->cond_string = cond_string;
11005 b->thread = thread;
11006 b->task = task;
11007 b->condition_not_parsed = 0;
11008 }
11009
11010 if (b->type == bp_static_tracepoint && !marker_spec)
11011 sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
ef23e705 11012
58438ac1
TT
11013 *found = 1;
11014 }
11015 else
11016 *found = 0;
ef23e705
TJB
11017
11018 return sals;
11019}
11020
11021/* Reevaluate a hardware or software breakpoint and recreate its locations.
11022 This is necessary after symbols are read (e.g., an executable or DSO
11023 was loaded, or the inferior just started). */
11024
11025static void
11026re_set_breakpoint (struct breakpoint *b)
11027{
11028 int found;
f1310107 11029 struct symtabs_and_lines sals, sals_end;
ef23e705 11030 struct symtabs_and_lines expanded = {0};
f1310107 11031 struct symtabs_and_lines expanded_end = {0};
ef23e705
TJB
11032 struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11033
11034 input_radix = b->input_radix;
11035 save_current_space_and_thread ();
11036 switch_to_program_space_and_thread (b->pspace);
11037 set_language (b->language);
11038
11039 sals = addr_string_to_sals (b, b->addr_string, &found);
11040 if (found)
11041 {
11042 make_cleanup (xfree, sals.sals);
11043 expanded = expand_line_sal_maybe (sals.sals[0]);
11044 }
11045
f1310107
TJB
11046 if (b->addr_string_range_end)
11047 {
11048 sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
11049 if (found)
11050 {
11051 make_cleanup (xfree, sals_end.sals);
11052 expanded_end = expand_line_sal_maybe (sals_end.sals[0]);
11053 }
11054 }
11055
11056 update_breakpoint_locations (b, expanded, expanded_end);
ef23e705
TJB
11057 do_cleanups (cleanups);
11058}
11059
c906108c
SS
11060/* Reset a breakpoint given it's struct breakpoint * BINT.
11061 The value we return ends up being the return value from catch_errors.
11062 Unused in this case. */
11063
11064static int
4efb68b1 11065breakpoint_re_set_one (void *bint)
c906108c 11066{
4a64f543 11067 /* Get past catch_errs. */
53a5351d 11068 struct breakpoint *b = (struct breakpoint *) bint;
c906108c
SS
11069
11070 switch (b->type)
11071 {
11072 case bp_none:
8a3fe4f8 11073 warning (_("attempted to reset apparently deleted breakpoint #%d?"),
53a5351d 11074 b->number);
c906108c
SS
11075 return 0;
11076 case bp_breakpoint:
11077 case bp_hardware_breakpoint:
1042e4c0 11078 case bp_tracepoint:
7a697b8d 11079 case bp_fast_tracepoint:
0fb4aa4b 11080 case bp_static_tracepoint:
0e30163f 11081 case bp_gnu_ifunc_resolver:
8bea4e01
UW
11082 /* Do not attempt to re-set breakpoints disabled during startup. */
11083 if (b->enable_state == bp_startup_disabled)
11084 return 0;
11085
c906108c
SS
11086 if (b->addr_string == NULL)
11087 {
4a64f543 11088 /* Anything without a string can't be re-set. */
c906108c
SS
11089 delete_breakpoint (b);
11090 return 0;
11091 }
c906108c 11092
ef23e705 11093 re_set_breakpoint (b);
c906108c
SS
11094 break;
11095
11096 case bp_watchpoint:
11097 case bp_hardware_watchpoint:
11098 case bp_read_watchpoint:
11099 case bp_access_watchpoint:
4a64f543
MS
11100 /* Watchpoint can be either on expression using entirely global
11101 variables, or it can be on local variables.
11102
11103 Watchpoints of the first kind are never auto-deleted, and
11104 even persist across program restarts. Since they can use
11105 variables from shared libraries, we need to reparse
11106 expression as libraries are loaded and unloaded.
11107
11108 Watchpoints on local variables can also change meaning as
11109 result of solib event. For example, if a watchpoint uses
11110 both a local and a global variables in expression, it's a
11111 local watchpoint, but unloading of a shared library will make
11112 the expression invalid. This is not a very common use case,
11113 but we still re-evaluate expression, to avoid surprises to
11114 the user.
0b3de036
VP
11115
11116 Note that for local watchpoints, we re-evaluate it only if
11117 watchpoints frame id is still valid. If it's not, it means
4a64f543
MS
11118 the watchpoint is out of scope and will be deleted soon. In
11119 fact, I'm not sure we'll ever be called in this case.
0b3de036
VP
11120
11121 If a local watchpoint's frame id is still valid, then
4a64f543 11122 b->exp_valid_block is likewise valid, and we can safely use it.
0b3de036
VP
11123
11124 Don't do anything about disabled watchpoints, since they will
11125 be reevaluated again when enabled. */
a5606eee 11126 update_watchpoint (b, 1 /* reparse */);
c906108c 11127 break;
c5aa993b
JM
11128 /* We needn't really do anything to reset these, since the mask
11129 that requests them is unaffected by e.g., new libraries being
4a64f543 11130 loaded. */
ce78b96d 11131 case bp_catchpoint:
c906108c 11132 break;
c5aa993b 11133
c906108c 11134 default:
a3f17187 11135 printf_filtered (_("Deleting unknown breakpoint type %d\n"), b->type);
c906108c 11136 /* fall through */
0fd8e87f
UW
11137 /* Delete overlay event and longjmp master breakpoints; they will be
11138 reset later by breakpoint_re_set. */
1900040c 11139 case bp_overlay_event:
0fd8e87f 11140 case bp_longjmp_master:
aa7d318d 11141 case bp_std_terminate_master:
186c406b 11142 case bp_exception_master:
c906108c
SS
11143 delete_breakpoint (b);
11144 break;
11145
c5aa993b
JM
11146 /* This breakpoint is special, it's set up when the inferior
11147 starts and we really don't want to touch it. */
c906108c
SS
11148 case bp_shlib_event:
11149
c4093a6a
JM
11150 /* Like bp_shlib_event, this breakpoint type is special.
11151 Once it is set up, we do not want to touch it. */
11152 case bp_thread_event:
11153
4a64f543
MS
11154 /* Keep temporary breakpoints, which can be encountered when we
11155 step over a dlopen call and SOLIB_ADD is resetting the
11156 breakpoints. Otherwise these should have been blown away via
11157 the cleanup chain or by breakpoint_init_inferior when we
11158 rerun the executable. */
c906108c
SS
11159 case bp_until:
11160 case bp_finish:
11161 case bp_watchpoint_scope:
11162 case bp_call_dummy:
aa7d318d 11163 case bp_std_terminate:
c906108c 11164 case bp_step_resume:
611c83ae
PA
11165 case bp_longjmp:
11166 case bp_longjmp_resume:
186c406b
TT
11167 case bp_exception:
11168 case bp_exception_resume:
4efc6507 11169 case bp_jit_event:
0e30163f 11170 case bp_gnu_ifunc_resolver_return:
c906108c
SS
11171 break;
11172 }
11173
11174 return 0;
11175}
11176
69de3c6a 11177/* Re-set all breakpoints after symbols have been re-loaded. */
c906108c 11178void
69de3c6a 11179breakpoint_re_set (void)
c906108c 11180{
35df4500 11181 struct breakpoint *b, *b_tmp;
c906108c
SS
11182 enum language save_language;
11183 int save_input_radix;
6c95b8df 11184 struct cleanup *old_chain;
c5aa993b 11185
c906108c
SS
11186 save_language = current_language->la_language;
11187 save_input_radix = input_radix;
6c95b8df
PA
11188 old_chain = save_current_program_space ();
11189
35df4500 11190 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 11191 {
4a64f543 11192 /* Format possible error msg. */
fe3f5fa8 11193 char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
9ebf4acf
AC
11194 b->number);
11195 struct cleanup *cleanups = make_cleanup (xfree, message);
c5aa993b 11196 catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
9ebf4acf 11197 do_cleanups (cleanups);
c5aa993b 11198 }
c906108c
SS
11199 set_language (save_language);
11200 input_radix = save_input_radix;
e62c965a 11201
0756c555 11202 jit_breakpoint_re_set ();
4efc6507 11203
6c95b8df
PA
11204 do_cleanups (old_chain);
11205
af02033e
PP
11206 create_overlay_event_breakpoint ();
11207 create_longjmp_master_breakpoint ();
11208 create_std_terminate_master_breakpoint ();
186c406b 11209 create_exception_master_breakpoint ();
c906108c
SS
11210}
11211\f
c906108c
SS
11212/* Reset the thread number of this breakpoint:
11213
11214 - If the breakpoint is for all threads, leave it as-is.
4a64f543 11215 - Else, reset it to the current thread for inferior_ptid. */
c906108c 11216void
fba45db2 11217breakpoint_re_set_thread (struct breakpoint *b)
c906108c
SS
11218{
11219 if (b->thread != -1)
11220 {
39f77062
KB
11221 if (in_thread_list (inferior_ptid))
11222 b->thread = pid_to_thread_id (inferior_ptid);
6c95b8df
PA
11223
11224 /* We're being called after following a fork. The new fork is
11225 selected as current, and unless this was a vfork will have a
11226 different program space from the original thread. Reset that
11227 as well. */
11228 b->loc->pspace = current_program_space;
c906108c
SS
11229 }
11230}
11231
03ac34d5
MS
11232/* Set ignore-count of breakpoint number BPTNUM to COUNT.
11233 If from_tty is nonzero, it prints a message to that effect,
11234 which ends with a period (no newline). */
11235
c906108c 11236void
fba45db2 11237set_ignore_count (int bptnum, int count, int from_tty)
c906108c 11238{
52f0bd74 11239 struct breakpoint *b;
c906108c
SS
11240
11241 if (count < 0)
11242 count = 0;
11243
11244 ALL_BREAKPOINTS (b)
11245 if (b->number == bptnum)
c5aa993b 11246 {
d77f58be
SS
11247 if (is_tracepoint (b))
11248 {
11249 if (from_tty && count != 0)
11250 printf_filtered (_("Ignore count ignored for tracepoint %d."),
11251 bptnum);
11252 return;
11253 }
11254
c5aa993b 11255 b->ignore_count = count;
221ea385
KS
11256 if (from_tty)
11257 {
11258 if (count == 0)
3e43a32a
MS
11259 printf_filtered (_("Will stop next time "
11260 "breakpoint %d is reached."),
221ea385
KS
11261 bptnum);
11262 else if (count == 1)
a3f17187 11263 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
221ea385
KS
11264 bptnum);
11265 else
3e43a32a
MS
11266 printf_filtered (_("Will ignore next %d "
11267 "crossings of breakpoint %d."),
221ea385
KS
11268 count, bptnum);
11269 }
c5aa993b 11270 breakpoints_changed ();
8d3788bd 11271 observer_notify_breakpoint_modified (b);
c5aa993b
JM
11272 return;
11273 }
c906108c 11274
8a3fe4f8 11275 error (_("No breakpoint number %d."), bptnum);
c906108c
SS
11276}
11277
c906108c
SS
11278/* Command to set ignore-count of breakpoint N to COUNT. */
11279
11280static void
fba45db2 11281ignore_command (char *args, int from_tty)
c906108c
SS
11282{
11283 char *p = args;
52f0bd74 11284 int num;
c906108c
SS
11285
11286 if (p == 0)
e2e0b3e5 11287 error_no_arg (_("a breakpoint number"));
c5aa993b 11288
c906108c 11289 num = get_number (&p);
5c44784c 11290 if (num == 0)
8a3fe4f8 11291 error (_("bad breakpoint number: '%s'"), args);
c906108c 11292 if (*p == 0)
8a3fe4f8 11293 error (_("Second argument (specified ignore-count) is missing."));
c906108c
SS
11294
11295 set_ignore_count (num,
11296 longest_to_int (value_as_long (parse_and_eval (p))),
11297 from_tty);
221ea385
KS
11298 if (from_tty)
11299 printf_filtered ("\n");
c906108c
SS
11300}
11301\f
11302/* Call FUNCTION on each of the breakpoints
11303 whose numbers are given in ARGS. */
11304
11305static void
95a42b64
TT
11306map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
11307 void *),
11308 void *data)
c906108c 11309{
52f0bd74
AC
11310 int num;
11311 struct breakpoint *b, *tmp;
11cf8741 11312 int match;
197f0a60 11313 struct get_number_or_range_state state;
c906108c 11314
197f0a60 11315 if (args == 0)
e2e0b3e5 11316 error_no_arg (_("one or more breakpoint numbers"));
c906108c 11317
197f0a60
TT
11318 init_number_or_range (&state, args);
11319
11320 while (!state.finished)
c906108c 11321 {
197f0a60
TT
11322 char *p = state.string;
11323
11cf8741 11324 match = 0;
c5aa993b 11325
197f0a60 11326 num = get_number_or_range (&state);
5c44784c 11327 if (num == 0)
c5aa993b 11328 {
8a3fe4f8 11329 warning (_("bad breakpoint number at or near '%s'"), p);
5c44784c
JM
11330 }
11331 else
11332 {
11333 ALL_BREAKPOINTS_SAFE (b, tmp)
11334 if (b->number == num)
11335 {
d0fb5eae
JK
11336 struct breakpoint *related_breakpoint;
11337
11cf8741 11338 match = 1;
d0fb5eae
JK
11339 related_breakpoint = b;
11340 do
11341 {
11342 struct breakpoint *next_related_b;
11343
11344 /* FUNCTION can be also delete_breakpoint. */
11345 next_related_b = related_breakpoint->related_breakpoint;
11346 function (related_breakpoint, data);
11347
11348 /* For delete_breakpoint of the last entry of the ring we
11349 were traversing we would never get back to B. */
11350 if (next_related_b == related_breakpoint)
11351 break;
11352 related_breakpoint = next_related_b;
11353 }
11354 while (related_breakpoint != b);
11cf8741 11355 break;
5c44784c 11356 }
11cf8741 11357 if (match == 0)
a3f17187 11358 printf_unfiltered (_("No breakpoint number %d.\n"), num);
c5aa993b 11359 }
c906108c
SS
11360 }
11361}
11362
0d381245
VP
11363static struct bp_location *
11364find_location_by_number (char *number)
11365{
11366 char *dot = strchr (number, '.');
11367 char *p1;
11368 int bp_num;
11369 int loc_num;
11370 struct breakpoint *b;
11371 struct bp_location *loc;
11372
11373 *dot = '\0';
11374
11375 p1 = number;
197f0a60 11376 bp_num = get_number (&p1);
0d381245
VP
11377 if (bp_num == 0)
11378 error (_("Bad breakpoint number '%s'"), number);
11379
11380 ALL_BREAKPOINTS (b)
11381 if (b->number == bp_num)
11382 {
11383 break;
11384 }
11385
11386 if (!b || b->number != bp_num)
11387 error (_("Bad breakpoint number '%s'"), number);
11388
11389 p1 = dot+1;
197f0a60 11390 loc_num = get_number (&p1);
0d381245
VP
11391 if (loc_num == 0)
11392 error (_("Bad breakpoint location number '%s'"), number);
11393
11394 --loc_num;
11395 loc = b->loc;
11396 for (;loc_num && loc; --loc_num, loc = loc->next)
11397 ;
11398 if (!loc)
11399 error (_("Bad breakpoint location number '%s'"), dot+1);
11400
11401 return loc;
11402}
11403
11404
1900040c
MS
11405/* Set ignore-count of breakpoint number BPTNUM to COUNT.
11406 If from_tty is nonzero, it prints a message to that effect,
11407 which ends with a period (no newline). */
11408
c906108c 11409void
fba45db2 11410disable_breakpoint (struct breakpoint *bpt)
c906108c
SS
11411{
11412 /* Never disable a watchpoint scope breakpoint; we want to
11413 hit them when we leave scope so we can delete both the
11414 watchpoint and its scope breakpoint at that time. */
11415 if (bpt->type == bp_watchpoint_scope)
11416 return;
11417
c2c6d25f 11418 /* You can't disable permanent breakpoints. */
b5de0fa7 11419 if (bpt->enable_state == bp_permanent)
c2c6d25f
JM
11420 return;
11421
b5de0fa7 11422 bpt->enable_state = bp_disabled;
c906108c 11423
b60e7edf 11424 update_global_location_list (0);
c906108c 11425
8d3788bd 11426 observer_notify_breakpoint_modified (bpt);
c906108c
SS
11427}
11428
95a42b64
TT
11429/* A callback for map_breakpoint_numbers that calls
11430 disable_breakpoint. */
11431
11432static void
11433do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
11434{
11435 disable_breakpoint (b);
11436}
11437
c906108c 11438static void
fba45db2 11439disable_command (char *args, int from_tty)
c906108c 11440{
c906108c 11441 if (args == 0)
46c6471b
PA
11442 {
11443 struct breakpoint *bpt;
11444
11445 ALL_BREAKPOINTS (bpt)
11446 if (user_breakpoint_p (bpt))
11447 disable_breakpoint (bpt);
11448 }
0d381245
VP
11449 else if (strchr (args, '.'))
11450 {
11451 struct bp_location *loc = find_location_by_number (args);
11452 if (loc)
11453 loc->enabled = 0;
b60e7edf 11454 update_global_location_list (0);
0d381245 11455 }
c906108c 11456 else
95a42b64 11457 map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
c906108c
SS
11458}
11459
11460static void
fba45db2 11461do_enable_breakpoint (struct breakpoint *bpt, enum bpdisp disposition)
c906108c 11462{
afe38095 11463 int target_resources_ok;
c906108c
SS
11464
11465 if (bpt->type == bp_hardware_breakpoint)
11466 {
11467 int i;
c5aa993b 11468 i = hw_breakpoint_used_count ();
53a5351d 11469 target_resources_ok =
d92524f1 11470 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
53a5351d 11471 i + 1, 0);
c906108c 11472 if (target_resources_ok == 0)
8a3fe4f8 11473 error (_("No hardware breakpoint support in the target."));
c906108c 11474 else if (target_resources_ok < 0)
8a3fe4f8 11475 error (_("Hardware breakpoints used exceeds limit."));
c906108c
SS
11476 }
11477
cc60f2e3 11478 if (is_watchpoint (bpt))
c906108c 11479 {
dde02812
ES
11480 struct gdb_exception e;
11481
11482 TRY_CATCH (e, RETURN_MASK_ALL)
c906108c 11483 {
dde02812 11484 update_watchpoint (bpt, 1 /* reparse */);
c906108c 11485 }
dde02812 11486 if (e.reason < 0)
c5aa993b 11487 {
dde02812
ES
11488 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
11489 bpt->number);
11490 return;
c5aa993b 11491 }
c906108c 11492 }
0101ce28 11493
b4c291bb
KH
11494 if (bpt->enable_state != bp_permanent)
11495 bpt->enable_state = bp_enabled;
11496 bpt->disposition = disposition;
b60e7edf 11497 update_global_location_list (1);
b4c291bb
KH
11498 breakpoints_changed ();
11499
8d3788bd 11500 observer_notify_breakpoint_modified (bpt);
c906108c
SS
11501}
11502
fe3f5fa8 11503
c906108c 11504void
fba45db2 11505enable_breakpoint (struct breakpoint *bpt)
c906108c
SS
11506{
11507 do_enable_breakpoint (bpt, bpt->disposition);
11508}
11509
95a42b64
TT
11510/* A callback for map_breakpoint_numbers that calls
11511 enable_breakpoint. */
11512
11513static void
11514do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
11515{
11516 enable_breakpoint (b);
11517}
11518
c906108c
SS
11519/* The enable command enables the specified breakpoints (or all defined
11520 breakpoints) so they once again become (or continue to be) effective
1272ad14 11521 in stopping the inferior. */
c906108c 11522
c906108c 11523static void
fba45db2 11524enable_command (char *args, int from_tty)
c906108c 11525{
c906108c 11526 if (args == 0)
46c6471b
PA
11527 {
11528 struct breakpoint *bpt;
11529
11530 ALL_BREAKPOINTS (bpt)
11531 if (user_breakpoint_p (bpt))
11532 enable_breakpoint (bpt);
11533 }
0d381245
VP
11534 else if (strchr (args, '.'))
11535 {
11536 struct bp_location *loc = find_location_by_number (args);
11537 if (loc)
11538 loc->enabled = 1;
b60e7edf 11539 update_global_location_list (1);
0d381245 11540 }
c906108c 11541 else
95a42b64 11542 map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
c906108c
SS
11543}
11544
11545static void
95a42b64 11546enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
c906108c 11547{
b5de0fa7 11548 do_enable_breakpoint (bpt, disp_disable);
c906108c
SS
11549}
11550
c906108c 11551static void
fba45db2 11552enable_once_command (char *args, int from_tty)
c906108c 11553{
95a42b64 11554 map_breakpoint_numbers (args, enable_once_breakpoint, NULL);
c906108c
SS
11555}
11556
11557static void
95a42b64 11558enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
c906108c 11559{
b5de0fa7 11560 do_enable_breakpoint (bpt, disp_del);
c906108c
SS
11561}
11562
c906108c 11563static void
fba45db2 11564enable_delete_command (char *args, int from_tty)
c906108c 11565{
95a42b64 11566 map_breakpoint_numbers (args, enable_delete_breakpoint, NULL);
c906108c
SS
11567}
11568\f
fa8d40ab
JJ
11569static void
11570set_breakpoint_cmd (char *args, int from_tty)
11571{
11572}
11573
11574static void
11575show_breakpoint_cmd (char *args, int from_tty)
11576{
11577}
11578
1f3b5d1b
PP
11579/* Invalidate last known value of any hardware watchpoint if
11580 the memory which that value represents has been written to by
11581 GDB itself. */
11582
11583static void
11584invalidate_bp_value_on_memory_change (CORE_ADDR addr, int len,
11585 const bfd_byte *data)
11586{
11587 struct breakpoint *bp;
11588
11589 ALL_BREAKPOINTS (bp)
11590 if (bp->enable_state == bp_enabled
11591 && bp->type == bp_hardware_watchpoint
11592 && bp->val_valid && bp->val)
11593 {
11594 struct bp_location *loc;
11595
11596 for (loc = bp->loc; loc != NULL; loc = loc->next)
11597 if (loc->loc_type == bp_loc_hardware_watchpoint
11598 && loc->address + loc->length > addr
11599 && addr + len > loc->address)
11600 {
11601 value_free (bp->val);
11602 bp->val = NULL;
11603 bp->val_valid = 0;
11604 }
11605 }
11606}
11607
c906108c
SS
11608/* Use default_breakpoint_'s, or nothing if they aren't valid. */
11609
11610struct symtabs_and_lines
fba45db2 11611decode_line_spec_1 (char *string, int funfirstline)
c906108c
SS
11612{
11613 struct symtabs_and_lines sals;
cc59ec59 11614
c906108c 11615 if (string == 0)
8a3fe4f8 11616 error (_("Empty line specification."));
c906108c
SS
11617 if (default_breakpoint_valid)
11618 sals = decode_line_1 (&string, funfirstline,
53a5351d
JM
11619 default_breakpoint_symtab,
11620 default_breakpoint_line,
58438ac1 11621 NULL);
c906108c
SS
11622 else
11623 sals = decode_line_1 (&string, funfirstline,
58438ac1 11624 (struct symtab *) NULL, 0, NULL);
c906108c 11625 if (*string)
8a3fe4f8 11626 error (_("Junk at end of line specification: %s"), string);
c906108c
SS
11627 return sals;
11628}
8181d85f
DJ
11629
11630/* Create and insert a raw software breakpoint at PC. Return an
11631 identifier, which should be used to remove the breakpoint later.
11632 In general, places which call this should be using something on the
11633 breakpoint chain instead; this function should be eliminated
11634 someday. */
11635
11636void *
6c95b8df
PA
11637deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
11638 struct address_space *aspace, CORE_ADDR pc)
8181d85f
DJ
11639{
11640 struct bp_target_info *bp_tgt;
11641
6c95b8df 11642 bp_tgt = XZALLOC (struct bp_target_info);
8181d85f 11643
6c95b8df 11644 bp_tgt->placed_address_space = aspace;
8181d85f 11645 bp_tgt->placed_address = pc;
6c95b8df 11646
a6d9a66e 11647 if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
8181d85f
DJ
11648 {
11649 /* Could not insert the breakpoint. */
11650 xfree (bp_tgt);
11651 return NULL;
11652 }
11653
11654 return bp_tgt;
11655}
11656
4a64f543
MS
11657/* Remove a breakpoint BP inserted by
11658 deprecated_insert_raw_breakpoint. */
8181d85f
DJ
11659
11660int
a6d9a66e 11661deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
8181d85f
DJ
11662{
11663 struct bp_target_info *bp_tgt = bp;
11664 int ret;
11665
a6d9a66e 11666 ret = target_remove_breakpoint (gdbarch, bp_tgt);
8181d85f
DJ
11667 xfree (bp_tgt);
11668
11669 return ret;
11670}
11671
4a64f543
MS
11672/* One (or perhaps two) breakpoints used for software single
11673 stepping. */
8181d85f
DJ
11674
11675static void *single_step_breakpoints[2];
a6d9a66e 11676static struct gdbarch *single_step_gdbarch[2];
8181d85f
DJ
11677
11678/* Create and insert a breakpoint for software single step. */
11679
11680void
6c95b8df 11681insert_single_step_breakpoint (struct gdbarch *gdbarch,
4a64f543
MS
11682 struct address_space *aspace,
11683 CORE_ADDR next_pc)
8181d85f
DJ
11684{
11685 void **bpt_p;
11686
11687 if (single_step_breakpoints[0] == NULL)
a6d9a66e
UW
11688 {
11689 bpt_p = &single_step_breakpoints[0];
11690 single_step_gdbarch[0] = gdbarch;
11691 }
8181d85f
DJ
11692 else
11693 {
11694 gdb_assert (single_step_breakpoints[1] == NULL);
11695 bpt_p = &single_step_breakpoints[1];
a6d9a66e 11696 single_step_gdbarch[1] = gdbarch;
8181d85f
DJ
11697 }
11698
4a64f543
MS
11699 /* NOTE drow/2006-04-11: A future improvement to this function would
11700 be to only create the breakpoints once, and actually put them on
11701 the breakpoint chain. That would let us use set_raw_breakpoint.
11702 We could adjust the addresses each time they were needed. Doing
11703 this requires corresponding changes elsewhere where single step
11704 breakpoints are handled, however. So, for now, we use this. */
8181d85f 11705
6c95b8df 11706 *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
8181d85f 11707 if (*bpt_p == NULL)
5af949e3
UW
11708 error (_("Could not insert single-step breakpoint at %s"),
11709 paddress (gdbarch, next_pc));
8181d85f
DJ
11710}
11711
f02253f1
HZ
11712/* Check if the breakpoints used for software single stepping
11713 were inserted or not. */
11714
11715int
11716single_step_breakpoints_inserted (void)
11717{
11718 return (single_step_breakpoints[0] != NULL
11719 || single_step_breakpoints[1] != NULL);
11720}
11721
8181d85f
DJ
11722/* Remove and delete any breakpoints used for software single step. */
11723
11724void
11725remove_single_step_breakpoints (void)
11726{
11727 gdb_assert (single_step_breakpoints[0] != NULL);
11728
11729 /* See insert_single_step_breakpoint for more about this deprecated
11730 call. */
a6d9a66e
UW
11731 deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
11732 single_step_breakpoints[0]);
11733 single_step_gdbarch[0] = NULL;
8181d85f
DJ
11734 single_step_breakpoints[0] = NULL;
11735
11736 if (single_step_breakpoints[1] != NULL)
11737 {
a6d9a66e
UW
11738 deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
11739 single_step_breakpoints[1]);
11740 single_step_gdbarch[1] = NULL;
8181d85f
DJ
11741 single_step_breakpoints[1] = NULL;
11742 }
11743}
11744
d03285ec
UW
11745/* Delete software single step breakpoints without removing them from
11746 the inferior. This is intended to be used if the inferior's address
11747 space where they were inserted is already gone, e.g. after exit or
11748 exec. */
11749
11750void
11751cancel_single_step_breakpoints (void)
11752{
11753 int i;
11754
11755 for (i = 0; i < 2; i++)
11756 if (single_step_breakpoints[i])
11757 {
11758 xfree (single_step_breakpoints[i]);
11759 single_step_breakpoints[i] = NULL;
11760 single_step_gdbarch[i] = NULL;
11761 }
11762}
11763
11764/* Detach software single-step breakpoints from INFERIOR_PTID without
11765 removing them. */
11766
11767static void
11768detach_single_step_breakpoints (void)
11769{
11770 int i;
11771
11772 for (i = 0; i < 2; i++)
11773 if (single_step_breakpoints[i])
11774 target_remove_breakpoint (single_step_gdbarch[i],
11775 single_step_breakpoints[i]);
11776}
11777
4a64f543
MS
11778/* Check whether a software single-step breakpoint is inserted at
11779 PC. */
1aafd4da
UW
11780
11781static int
cc59ec59
MS
11782single_step_breakpoint_inserted_here_p (struct address_space *aspace,
11783 CORE_ADDR pc)
1aafd4da
UW
11784{
11785 int i;
11786
11787 for (i = 0; i < 2; i++)
11788 {
11789 struct bp_target_info *bp_tgt = single_step_breakpoints[i];
6c95b8df
PA
11790 if (bp_tgt
11791 && breakpoint_address_match (bp_tgt->placed_address_space,
11792 bp_tgt->placed_address,
11793 aspace, pc))
1aafd4da
UW
11794 return 1;
11795 }
11796
11797 return 0;
11798}
11799
a96d9b2e
SDJ
11800/* Returns 0 if 'bp' is NOT a syscall catchpoint,
11801 non-zero otherwise. */
11802static int
11803is_syscall_catchpoint_enabled (struct breakpoint *bp)
11804{
11805 if (syscall_catchpoint_p (bp)
11806 && bp->enable_state != bp_disabled
11807 && bp->enable_state != bp_call_disabled)
11808 return 1;
11809 else
11810 return 0;
11811}
11812
11813int
11814catch_syscall_enabled (void)
11815{
11816 struct inferior *inf = current_inferior ();
11817
11818 return inf->total_syscalls_count != 0;
11819}
11820
11821int
11822catching_syscall_number (int syscall_number)
11823{
11824 struct breakpoint *bp;
11825
11826 ALL_BREAKPOINTS (bp)
11827 if (is_syscall_catchpoint_enabled (bp))
11828 {
11829 if (bp->syscalls_to_be_caught)
11830 {
11831 int i, iter;
11832 for (i = 0;
11833 VEC_iterate (int, bp->syscalls_to_be_caught, i, iter);
11834 i++)
11835 if (syscall_number == iter)
11836 return 1;
11837 }
11838 else
11839 return 1;
11840 }
11841
11842 return 0;
11843}
11844
11845/* Complete syscall names. Used by "catch syscall". */
11846static char **
11847catch_syscall_completer (struct cmd_list_element *cmd,
11848 char *text, char *word)
11849{
11850 const char **list = get_syscall_names ();
c38eea1a
MS
11851 char **retlist
11852 = (list == NULL) ? NULL : complete_on_enum (list, text, word);
cc59ec59 11853
c38eea1a
MS
11854 xfree (list);
11855 return retlist;
a96d9b2e
SDJ
11856}
11857
1042e4c0
SS
11858/* Tracepoint-specific operations. */
11859
11860/* Set tracepoint count to NUM. */
11861static void
11862set_tracepoint_count (int num)
11863{
11864 tracepoint_count = num;
4fa62494 11865 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
1042e4c0
SS
11866}
11867
11868void
11869trace_command (char *arg, int from_tty)
11870{
8cdf0e15
VP
11871 if (create_breakpoint (get_current_arch (),
11872 arg,
11873 NULL, 0, 1 /* parse arg */,
0fb4aa4b
PA
11874 0 /* tempflag */,
11875 bp_tracepoint /* type_wanted */,
8cdf0e15
VP
11876 0 /* Ignore count */,
11877 pending_break_support,
11878 NULL,
11879 from_tty,
84f4c1fe
PM
11880 1 /* enabled */,
11881 0 /* internal */))
fd9b8c24 11882 set_tracepoint_count (breakpoint_count);
1042e4c0
SS
11883}
11884
7a697b8d
SS
11885void
11886ftrace_command (char *arg, int from_tty)
11887{
8cdf0e15
VP
11888 if (create_breakpoint (get_current_arch (),
11889 arg,
11890 NULL, 0, 1 /* parse arg */,
0fb4aa4b
PA
11891 0 /* tempflag */,
11892 bp_fast_tracepoint /* type_wanted */,
11893 0 /* Ignore count */,
11894 pending_break_support,
11895 NULL,
11896 from_tty,
84f4c1fe
PM
11897 1 /* enabled */,
11898 0 /* internal */))
0fb4aa4b
PA
11899 set_tracepoint_count (breakpoint_count);
11900}
11901
11902/* strace command implementation. Creates a static tracepoint. */
11903
11904void
11905strace_command (char *arg, int from_tty)
11906{
11907 if (create_breakpoint (get_current_arch (),
11908 arg,
11909 NULL, 0, 1 /* parse arg */,
11910 0 /* tempflag */,
11911 bp_static_tracepoint /* type_wanted */,
8cdf0e15
VP
11912 0 /* Ignore count */,
11913 pending_break_support,
11914 NULL,
11915 from_tty,
84f4c1fe
PM
11916 1 /* enabled */,
11917 0 /* internal */))
fd9b8c24 11918 set_tracepoint_count (breakpoint_count);
7a697b8d
SS
11919}
11920
409873ef
SS
11921/* Set up a fake reader function that gets command lines from a linked
11922 list that was acquired during tracepoint uploading. */
11923
11924static struct uploaded_tp *this_utp;
3149d8c1 11925static int next_cmd;
409873ef
SS
11926
11927static char *
11928read_uploaded_action (void)
11929{
11930 char *rslt;
11931
3149d8c1 11932 VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
409873ef 11933
3149d8c1 11934 next_cmd++;
409873ef
SS
11935
11936 return rslt;
11937}
11938
00bf0b85
SS
11939/* Given information about a tracepoint as recorded on a target (which
11940 can be either a live system or a trace file), attempt to create an
11941 equivalent GDB tracepoint. This is not a reliable process, since
11942 the target does not necessarily have all the information used when
11943 the tracepoint was originally defined. */
11944
11945struct breakpoint *
11946create_tracepoint_from_upload (struct uploaded_tp *utp)
d5551862 11947{
409873ef 11948 char *addr_str, small_buf[100];
d5551862 11949 struct breakpoint *tp;
fd9b8c24 11950
409873ef
SS
11951 if (utp->at_string)
11952 addr_str = utp->at_string;
11953 else
11954 {
11955 /* In the absence of a source location, fall back to raw
11956 address. Since there is no way to confirm that the address
11957 means the same thing as when the trace was started, warn the
11958 user. */
3e43a32a
MS
11959 warning (_("Uploaded tracepoint %d has no "
11960 "source location, using raw address"),
409873ef
SS
11961 utp->number);
11962 sprintf (small_buf, "*%s", hex_string (utp->addr));
11963 addr_str = small_buf;
11964 }
11965
11966 /* There's not much we can do with a sequence of bytecodes. */
11967 if (utp->cond && !utp->cond_string)
3e43a32a
MS
11968 warning (_("Uploaded tracepoint %d condition "
11969 "has no source form, ignoring it"),
409873ef 11970 utp->number);
d5551862 11971
8cdf0e15 11972 if (!create_breakpoint (get_current_arch (),
409873ef
SS
11973 addr_str,
11974 utp->cond_string, -1, 0 /* parse cond/thread */,
8cdf0e15 11975 0 /* tempflag */,
0fb4aa4b 11976 utp->type /* type_wanted */,
8cdf0e15
VP
11977 0 /* Ignore count */,
11978 pending_break_support,
11979 NULL,
11980 0 /* from_tty */,
84f4c1fe
PM
11981 utp->enabled /* enabled */,
11982 0 /* internal */))
fd9b8c24
PA
11983 return NULL;
11984
00bf0b85
SS
11985 set_tracepoint_count (breakpoint_count);
11986
409873ef 11987 /* Get the tracepoint we just created. */
fd9b8c24
PA
11988 tp = get_tracepoint (tracepoint_count);
11989 gdb_assert (tp != NULL);
d5551862 11990
00bf0b85
SS
11991 if (utp->pass > 0)
11992 {
409873ef 11993 sprintf (small_buf, "%d %d", utp->pass, tp->number);
00bf0b85 11994
409873ef 11995 trace_pass_command (small_buf, 0);
00bf0b85
SS
11996 }
11997
409873ef
SS
11998 /* If we have uploaded versions of the original commands, set up a
11999 special-purpose "reader" function and call the usual command line
12000 reader, then pass the result to the breakpoint command-setting
12001 function. */
3149d8c1 12002 if (!VEC_empty (char_ptr, utp->cmd_strings))
00bf0b85 12003 {
409873ef 12004 struct command_line *cmd_list;
00bf0b85 12005
409873ef 12006 this_utp = utp;
3149d8c1 12007 next_cmd = 0;
d5551862 12008
409873ef
SS
12009 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
12010
12011 breakpoint_set_commands (tp, cmd_list);
00bf0b85 12012 }
3149d8c1
SS
12013 else if (!VEC_empty (char_ptr, utp->actions)
12014 || !VEC_empty (char_ptr, utp->step_actions))
3e43a32a
MS
12015 warning (_("Uploaded tracepoint %d actions "
12016 "have no source form, ignoring them"),
409873ef 12017 utp->number);
00bf0b85
SS
12018
12019 return tp;
12020 }
12021
1042e4c0
SS
12022/* Print information on tracepoint number TPNUM_EXP, or all if
12023 omitted. */
12024
12025static void
e5a67952 12026tracepoints_info (char *args, int from_tty)
1042e4c0 12027{
e5a67952 12028 int num_printed;
1042e4c0 12029
e5a67952 12030 num_printed = breakpoint_1 (args, 0, is_tracepoint);
d77f58be
SS
12031
12032 if (num_printed == 0)
1042e4c0 12033 {
e5a67952 12034 if (args == NULL || *args == '\0')
d77f58be
SS
12035 ui_out_message (uiout, 0, "No tracepoints.\n");
12036 else
e5a67952 12037 ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
1042e4c0 12038 }
ad443146
SS
12039
12040 default_collect_info ();
1042e4c0
SS
12041}
12042
4a64f543 12043/* The 'enable trace' command enables tracepoints.
1042e4c0
SS
12044 Not supported by all targets. */
12045static void
12046enable_trace_command (char *args, int from_tty)
12047{
12048 enable_command (args, from_tty);
12049}
12050
4a64f543 12051/* The 'disable trace' command disables tracepoints.
1042e4c0
SS
12052 Not supported by all targets. */
12053static void
12054disable_trace_command (char *args, int from_tty)
12055{
12056 disable_command (args, from_tty);
12057}
12058
4a64f543 12059/* Remove a tracepoint (or all if no argument). */
1042e4c0
SS
12060static void
12061delete_trace_command (char *arg, int from_tty)
12062{
35df4500 12063 struct breakpoint *b, *b_tmp;
1042e4c0
SS
12064
12065 dont_repeat ();
12066
12067 if (arg == 0)
12068 {
12069 int breaks_to_delete = 0;
12070
12071 /* Delete all breakpoints if no argument.
12072 Do not delete internal or call-dummy breakpoints, these
4a64f543
MS
12073 have to be deleted with an explicit breakpoint number
12074 argument. */
1042e4c0 12075 ALL_TRACEPOINTS (b)
46c6471b 12076 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0
SS
12077 {
12078 breaks_to_delete = 1;
12079 break;
12080 }
1042e4c0
SS
12081
12082 /* Ask user only if there are some breakpoints to delete. */
12083 if (!from_tty
12084 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
12085 {
35df4500 12086 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 12087 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0 12088 delete_breakpoint (b);
1042e4c0
SS
12089 }
12090 }
12091 else
95a42b64 12092 map_breakpoint_numbers (arg, do_delete_breakpoint, NULL);
1042e4c0
SS
12093}
12094
197f0a60
TT
12095/* Helper function for trace_pass_command. */
12096
12097static void
12098trace_pass_set_count (struct breakpoint *bp, int count, int from_tty)
12099{
12100 bp->pass_count = count;
12101 observer_notify_tracepoint_modified (bp->number);
12102 if (from_tty)
12103 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
12104 bp->number, count);
12105}
12106
1042e4c0
SS
12107/* Set passcount for tracepoint.
12108
12109 First command argument is passcount, second is tracepoint number.
12110 If tracepoint number omitted, apply to most recently defined.
12111 Also accepts special argument "all". */
12112
12113static void
12114trace_pass_command (char *args, int from_tty)
12115{
197f0a60 12116 struct breakpoint *t1;
1042e4c0 12117 unsigned int count;
1042e4c0
SS
12118
12119 if (args == 0 || *args == 0)
3e43a32a
MS
12120 error (_("passcount command requires an "
12121 "argument (count + optional TP num)"));
1042e4c0 12122
4a64f543 12123 count = strtoul (args, &args, 10); /* Count comes first, then TP num. */
1042e4c0
SS
12124
12125 while (*args && isspace ((int) *args))
12126 args++;
12127
12128 if (*args && strncasecmp (args, "all", 3) == 0)
12129 {
12130 args += 3; /* Skip special argument "all". */
1042e4c0
SS
12131 if (*args)
12132 error (_("Junk at end of arguments."));
1042e4c0 12133
197f0a60
TT
12134 ALL_TRACEPOINTS (t1)
12135 {
12136 trace_pass_set_count (t1, count, from_tty);
12137 }
12138 }
12139 else if (*args == '\0')
1042e4c0 12140 {
197f0a60 12141 t1 = get_tracepoint_by_number (&args, NULL, 1);
1042e4c0 12142 if (t1)
197f0a60
TT
12143 trace_pass_set_count (t1, count, from_tty);
12144 }
12145 else
12146 {
12147 struct get_number_or_range_state state;
12148
12149 init_number_or_range (&state, args);
12150 while (!state.finished)
1042e4c0 12151 {
197f0a60
TT
12152 t1 = get_tracepoint_by_number (&args, &state, 1);
12153 if (t1)
12154 trace_pass_set_count (t1, count, from_tty);
1042e4c0
SS
12155 }
12156 }
1042e4c0
SS
12157}
12158
12159struct breakpoint *
12160get_tracepoint (int num)
12161{
12162 struct breakpoint *t;
12163
12164 ALL_TRACEPOINTS (t)
12165 if (t->number == num)
12166 return t;
12167
12168 return NULL;
12169}
12170
d5551862
SS
12171/* Find the tracepoint with the given target-side number (which may be
12172 different from the tracepoint number after disconnecting and
12173 reconnecting). */
12174
12175struct breakpoint *
12176get_tracepoint_by_number_on_target (int num)
12177{
12178 struct breakpoint *t;
12179
12180 ALL_TRACEPOINTS (t)
12181 if (t->number_on_target == num)
12182 return t;
12183
12184 return NULL;
12185}
12186
1042e4c0 12187/* Utility: parse a tracepoint number and look it up in the list.
197f0a60
TT
12188 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
12189 If OPTIONAL_P is true, then if the argument is missing, the most
1042e4c0
SS
12190 recent tracepoint (tracepoint_count) is returned. */
12191struct breakpoint *
197f0a60
TT
12192get_tracepoint_by_number (char **arg,
12193 struct get_number_or_range_state *state,
12194 int optional_p)
1042e4c0
SS
12195{
12196 extern int tracepoint_count;
12197 struct breakpoint *t;
12198 int tpnum;
12199 char *instring = arg == NULL ? NULL : *arg;
12200
197f0a60
TT
12201 if (state)
12202 {
12203 gdb_assert (!state->finished);
12204 tpnum = get_number_or_range (state);
12205 }
12206 else if (arg == NULL || *arg == NULL || ! **arg)
1042e4c0
SS
12207 {
12208 if (optional_p)
12209 tpnum = tracepoint_count;
12210 else
12211 error_no_arg (_("tracepoint number"));
12212 }
12213 else
197f0a60 12214 tpnum = get_number (arg);
1042e4c0
SS
12215
12216 if (tpnum <= 0)
12217 {
12218 if (instring && *instring)
12219 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
12220 instring);
12221 else
3e43a32a
MS
12222 printf_filtered (_("Tracepoint argument missing "
12223 "and no previous tracepoint\n"));
1042e4c0
SS
12224 return NULL;
12225 }
12226
12227 ALL_TRACEPOINTS (t)
12228 if (t->number == tpnum)
12229 {
12230 return t;
12231 }
12232
1042e4c0
SS
12233 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
12234 return NULL;
12235}
12236
6149aea9
PA
12237/* Save information on user settable breakpoints (watchpoints, etc) to
12238 a new script file named FILENAME. If FILTER is non-NULL, call it
12239 on each breakpoint and only include the ones for which it returns
12240 non-zero. */
12241
1042e4c0 12242static void
6149aea9
PA
12243save_breakpoints (char *filename, int from_tty,
12244 int (*filter) (const struct breakpoint *))
1042e4c0
SS
12245{
12246 struct breakpoint *tp;
6149aea9 12247 int any = 0;
a7bdde9e 12248 char *pathname;
1042e4c0 12249 struct cleanup *cleanup;
a7bdde9e 12250 struct ui_file *fp;
6149aea9 12251 int extra_trace_bits = 0;
1042e4c0 12252
6149aea9
PA
12253 if (filename == 0 || *filename == 0)
12254 error (_("Argument required (file name in which to save)"));
1042e4c0
SS
12255
12256 /* See if we have anything to save. */
6149aea9 12257 ALL_BREAKPOINTS (tp)
1042e4c0 12258 {
6149aea9 12259 /* Skip internal and momentary breakpoints. */
09d682a4 12260 if (!user_breakpoint_p (tp))
6149aea9
PA
12261 continue;
12262
12263 /* If we have a filter, only save the breakpoints it accepts. */
12264 if (filter && !filter (tp))
12265 continue;
12266
12267 any = 1;
12268
12269 if (is_tracepoint (tp))
12270 {
12271 extra_trace_bits = 1;
12272
12273 /* We can stop searching. */
12274 break;
12275 }
1042e4c0 12276 }
6149aea9
PA
12277
12278 if (!any)
1042e4c0 12279 {
6149aea9 12280 warning (_("Nothing to save."));
1042e4c0
SS
12281 return;
12282 }
12283
6149aea9 12284 pathname = tilde_expand (filename);
1042e4c0 12285 cleanup = make_cleanup (xfree, pathname);
a7bdde9e 12286 fp = gdb_fopen (pathname, "w");
059fb39f 12287 if (!fp)
6149aea9
PA
12288 error (_("Unable to open file '%s' for saving (%s)"),
12289 filename, safe_strerror (errno));
a7bdde9e 12290 make_cleanup_ui_file_delete (fp);
8bf6485c 12291
6149aea9
PA
12292 if (extra_trace_bits)
12293 save_trace_state_variables (fp);
8bf6485c 12294
6149aea9 12295 ALL_BREAKPOINTS (tp)
1042e4c0 12296 {
6149aea9 12297 /* Skip internal and momentary breakpoints. */
09d682a4 12298 if (!user_breakpoint_p (tp))
6149aea9 12299 continue;
8bf6485c 12300
6149aea9
PA
12301 /* If we have a filter, only save the breakpoints it accepts. */
12302 if (filter && !filter (tp))
12303 continue;
12304
26063d49 12305 if (tp->ops != NULL && tp->ops->print_recreate != NULL)
6149aea9 12306 (tp->ops->print_recreate) (tp, fp);
1042e4c0
SS
12307 else
12308 {
6149aea9
PA
12309 if (tp->type == bp_fast_tracepoint)
12310 fprintf_unfiltered (fp, "ftrace");
0fb4aa4b
PA
12311 if (tp->type == bp_static_tracepoint)
12312 fprintf_unfiltered (fp, "strace");
6149aea9
PA
12313 else if (tp->type == bp_tracepoint)
12314 fprintf_unfiltered (fp, "trace");
12315 else if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12316 fprintf_unfiltered (fp, "tbreak");
12317 else if (tp->type == bp_breakpoint)
12318 fprintf_unfiltered (fp, "break");
12319 else if (tp->type == bp_hardware_breakpoint
12320 && tp->disposition == disp_del)
12321 fprintf_unfiltered (fp, "thbreak");
12322 else if (tp->type == bp_hardware_breakpoint)
12323 fprintf_unfiltered (fp, "hbreak");
12324 else if (tp->type == bp_watchpoint)
12325 fprintf_unfiltered (fp, "watch");
12326 else if (tp->type == bp_hardware_watchpoint)
12327 fprintf_unfiltered (fp, "watch");
12328 else if (tp->type == bp_read_watchpoint)
12329 fprintf_unfiltered (fp, "rwatch");
12330 else if (tp->type == bp_access_watchpoint)
12331 fprintf_unfiltered (fp, "awatch");
12332 else
12333 internal_error (__FILE__, __LINE__,
12334 _("unhandled breakpoint type %d"), (int) tp->type);
12335
12336 if (tp->exp_string)
12337 fprintf_unfiltered (fp, " %s", tp->exp_string);
12338 else if (tp->addr_string)
12339 fprintf_unfiltered (fp, " %s", tp->addr_string);
12340 else
12341 {
12342 char tmp[40];
12343
12344 sprintf_vma (tmp, tp->loc->address);
12345 fprintf_unfiltered (fp, " *0x%s", tmp);
12346 }
1042e4c0
SS
12347 }
12348
6149aea9
PA
12349 if (tp->thread != -1)
12350 fprintf_unfiltered (fp, " thread %d", tp->thread);
12351
12352 if (tp->task != 0)
12353 fprintf_unfiltered (fp, " task %d", tp->task);
8bf6485c
SS
12354
12355 fprintf_unfiltered (fp, "\n");
12356
6149aea9
PA
12357 /* Note, we can't rely on tp->number for anything, as we can't
12358 assume the recreated breakpoint numbers will match. Use $bpnum
12359 instead. */
12360
12361 if (tp->cond_string)
12362 fprintf_unfiltered (fp, " condition $bpnum %s\n", tp->cond_string);
12363
12364 if (tp->ignore_count)
12365 fprintf_unfiltered (fp, " ignore $bpnum %d\n", tp->ignore_count);
12366
1042e4c0 12367 if (tp->pass_count)
a7bdde9e 12368 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
1042e4c0 12369
a7bdde9e 12370 if (tp->commands)
1042e4c0 12371 {
a7bdde9e
VP
12372 volatile struct gdb_exception ex;
12373
6149aea9 12374 fprintf_unfiltered (fp, " commands\n");
a7bdde9e
VP
12375
12376 ui_out_redirect (uiout, fp);
14dba4b4 12377 TRY_CATCH (ex, RETURN_MASK_ALL)
1042e4c0 12378 {
9add0f1b 12379 print_command_lines (uiout, tp->commands->commands, 2);
a7bdde9e
VP
12380 }
12381 ui_out_redirect (uiout, NULL);
1042e4c0 12382
a7bdde9e
VP
12383 if (ex.reason < 0)
12384 throw_exception (ex);
1042e4c0 12385
a7bdde9e 12386 fprintf_unfiltered (fp, " end\n");
1042e4c0 12387 }
6149aea9
PA
12388
12389 if (tp->enable_state == bp_disabled)
12390 fprintf_unfiltered (fp, "disable\n");
12391
12392 /* If this is a multi-location breakpoint, check if the locations
12393 should be individually disabled. Watchpoint locations are
12394 special, and not user visible. */
12395 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
12396 {
12397 struct bp_location *loc;
12398 int n = 1;
12399
12400 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
12401 if (!loc->enabled)
12402 fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
12403 }
1042e4c0 12404 }
8bf6485c 12405
6149aea9 12406 if (extra_trace_bits && *default_collect)
8bf6485c
SS
12407 fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
12408
1042e4c0
SS
12409 do_cleanups (cleanup);
12410 if (from_tty)
6149aea9
PA
12411 printf_filtered (_("Saved to file '%s'.\n"), filename);
12412}
12413
12414/* The `save breakpoints' command. */
12415
12416static void
12417save_breakpoints_command (char *args, int from_tty)
12418{
12419 save_breakpoints (args, from_tty, NULL);
12420}
12421
12422/* The `save tracepoints' command. */
12423
12424static void
12425save_tracepoints_command (char *args, int from_tty)
12426{
12427 save_breakpoints (args, from_tty, is_tracepoint);
1042e4c0
SS
12428}
12429
12430/* Create a vector of all tracepoints. */
12431
12432VEC(breakpoint_p) *
eeae04df 12433all_tracepoints (void)
1042e4c0
SS
12434{
12435 VEC(breakpoint_p) *tp_vec = 0;
12436 struct breakpoint *tp;
12437
12438 ALL_TRACEPOINTS (tp)
12439 {
12440 VEC_safe_push (breakpoint_p, tp_vec, tp);
12441 }
12442
12443 return tp_vec;
12444}
12445
c906108c 12446\f
4a64f543
MS
12447/* This help string is used for the break, hbreak, tbreak and thbreak
12448 commands. It is defined as a macro to prevent duplication.
12449 COMMAND should be a string constant containing the name of the
12450 command. */
31e2b00f
AS
12451#define BREAK_ARGS_HELP(command) \
12452command" [LOCATION] [thread THREADNUM] [if CONDITION]\n\
12453LOCATION may be a line number, function name, or \"*\" and an address.\n\
12454If a line number is specified, break at start of code for that line.\n\
12455If a function is specified, break at start of code for that function.\n\
12456If an address is specified, break at that exact address.\n\
dc10affe
PA
12457With no LOCATION, uses current execution address of the selected\n\
12458stack frame. This is useful for breaking on return to a stack frame.\n\
31e2b00f
AS
12459\n\
12460THREADNUM is the number from \"info threads\".\n\
12461CONDITION is a boolean expression.\n\
12462\n\
d41c0fc8
PA
12463Multiple breakpoints at one place are permitted, and useful if their\n\
12464conditions are different.\n\
31e2b00f
AS
12465\n\
12466Do \"help breakpoints\" for info on other commands dealing with breakpoints."
12467
44feb3ce
TT
12468/* List of subcommands for "catch". */
12469static struct cmd_list_element *catch_cmdlist;
12470
12471/* List of subcommands for "tcatch". */
12472static struct cmd_list_element *tcatch_cmdlist;
12473
12474/* Like add_cmd, but add the command to both the "catch" and "tcatch"
12475 lists, and pass some additional user data to the command function. */
12476static void
12477add_catch_command (char *name, char *docstring,
12478 void (*sfunc) (char *args, int from_tty,
12479 struct cmd_list_element *command),
a96d9b2e
SDJ
12480 char **(*completer) (struct cmd_list_element *cmd,
12481 char *text, char *word),
44feb3ce
TT
12482 void *user_data_catch,
12483 void *user_data_tcatch)
12484{
12485 struct cmd_list_element *command;
12486
12487 command = add_cmd (name, class_breakpoint, NULL, docstring,
12488 &catch_cmdlist);
12489 set_cmd_sfunc (command, sfunc);
12490 set_cmd_context (command, user_data_catch);
a96d9b2e 12491 set_cmd_completer (command, completer);
44feb3ce
TT
12492
12493 command = add_cmd (name, class_breakpoint, NULL, docstring,
12494 &tcatch_cmdlist);
12495 set_cmd_sfunc (command, sfunc);
12496 set_cmd_context (command, user_data_tcatch);
a96d9b2e 12497 set_cmd_completer (command, completer);
44feb3ce
TT
12498}
12499
6c95b8df 12500static void
a79b8f6e 12501clear_syscall_counts (struct inferior *inf)
6c95b8df 12502{
6c95b8df
PA
12503 inf->total_syscalls_count = 0;
12504 inf->any_syscall_count = 0;
12505 VEC_free (int, inf->syscalls_counts);
12506}
12507
6149aea9
PA
12508static void
12509save_command (char *arg, int from_tty)
12510{
3e43a32a
MS
12511 printf_unfiltered (_("\"save\" must be followed by "
12512 "the name of a save subcommand.\n"));
6149aea9
PA
12513 help_list (save_cmdlist, "save ", -1, gdb_stdout);
12514}
12515
84f4c1fe
PM
12516struct breakpoint *
12517iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
12518 void *data)
12519{
35df4500 12520 struct breakpoint *b, *b_tmp;
84f4c1fe 12521
35df4500 12522 ALL_BREAKPOINTS_SAFE (b, b_tmp)
84f4c1fe
PM
12523 {
12524 if ((*callback) (b, data))
12525 return b;
12526 }
12527
12528 return NULL;
12529}
12530
c906108c 12531void
fba45db2 12532_initialize_breakpoint (void)
c906108c
SS
12533{
12534 struct cmd_list_element *c;
12535
84acb35a 12536 observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
6c95b8df 12537 observer_attach_inferior_exit (clear_syscall_counts);
1f3b5d1b 12538 observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
84acb35a 12539
17450429
PP
12540 breakpoint_objfile_key = register_objfile_data ();
12541
c906108c
SS
12542 breakpoint_chain = 0;
12543 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
12544 before a breakpoint is set. */
12545 breakpoint_count = 0;
12546
1042e4c0
SS
12547 tracepoint_count = 0;
12548
1bedd215
AC
12549 add_com ("ignore", class_breakpoint, ignore_command, _("\
12550Set ignore-count of breakpoint number N to COUNT.\n\
12551Usage is `ignore N COUNT'."));
c906108c 12552 if (xdb_commands)
c5aa993b 12553 add_com_alias ("bc", "ignore", class_breakpoint, 1);
c906108c 12554
1bedd215
AC
12555 add_com ("commands", class_breakpoint, commands_command, _("\
12556Set commands to be executed when a breakpoint is hit.\n\
c906108c
SS
12557Give breakpoint number as argument after \"commands\".\n\
12558With no argument, the targeted breakpoint is the last one set.\n\
12559The commands themselves follow starting on the next line.\n\
12560Type a line containing \"end\" to indicate the end of them.\n\
12561Give \"silent\" as the first line to make the breakpoint silent;\n\
1bedd215 12562then no output is printed when it is hit, except what the commands print."));
c906108c 12563
1bedd215
AC
12564 add_com ("condition", class_breakpoint, condition_command, _("\
12565Specify breakpoint number N to break only if COND is true.\n\
c906108c 12566Usage is `condition N COND', where N is an integer and COND is an\n\
1bedd215 12567expression to be evaluated whenever breakpoint N is reached."));
c906108c 12568
1bedd215 12569 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
31e2b00f 12570Set a temporary breakpoint.\n\
c906108c
SS
12571Like \"break\" except the breakpoint is only temporary,\n\
12572so it will be deleted when hit. Equivalent to \"break\" followed\n\
31e2b00f
AS
12573by using \"enable delete\" on the breakpoint number.\n\
12574\n"
12575BREAK_ARGS_HELP ("tbreak")));
5ba2abeb 12576 set_cmd_completer (c, location_completer);
c94fdfd0 12577
1bedd215 12578 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
a3be7890 12579Set a hardware assisted breakpoint.\n\
c906108c 12580Like \"break\" except the breakpoint requires hardware support,\n\
31e2b00f
AS
12581some target hardware may not have this support.\n\
12582\n"
12583BREAK_ARGS_HELP ("hbreak")));
5ba2abeb 12584 set_cmd_completer (c, location_completer);
c906108c 12585
1bedd215 12586 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
31e2b00f 12587Set a temporary hardware assisted breakpoint.\n\
c906108c 12588Like \"hbreak\" except the breakpoint is only temporary,\n\
31e2b00f
AS
12589so it will be deleted when hit.\n\
12590\n"
12591BREAK_ARGS_HELP ("thbreak")));
5ba2abeb 12592 set_cmd_completer (c, location_completer);
c906108c 12593
1bedd215
AC
12594 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
12595Enable some breakpoints.\n\
c906108c
SS
12596Give breakpoint numbers (separated by spaces) as arguments.\n\
12597With no subcommand, breakpoints are enabled until you command otherwise.\n\
12598This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 12599With a subcommand you can enable temporarily."),
c906108c
SS
12600 &enablelist, "enable ", 1, &cmdlist);
12601 if (xdb_commands)
1bedd215
AC
12602 add_com ("ab", class_breakpoint, enable_command, _("\
12603Enable some breakpoints.\n\
c906108c
SS
12604Give breakpoint numbers (separated by spaces) as arguments.\n\
12605With no subcommand, breakpoints are enabled until you command otherwise.\n\
12606This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 12607With a subcommand you can enable temporarily."));
c906108c
SS
12608
12609 add_com_alias ("en", "enable", class_breakpoint, 1);
12610
84951ab5 12611 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
1bedd215 12612Enable some breakpoints.\n\
c906108c
SS
12613Give breakpoint numbers (separated by spaces) as arguments.\n\
12614This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 12615May be abbreviated to simply \"enable\".\n"),
c5aa993b 12616 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
c906108c 12617
1a966eab
AC
12618 add_cmd ("once", no_class, enable_once_command, _("\
12619Enable breakpoints for one hit. Give breakpoint numbers.\n\
12620If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
c906108c
SS
12621 &enablebreaklist);
12622
1a966eab
AC
12623 add_cmd ("delete", no_class, enable_delete_command, _("\
12624Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
12625If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
12626 &enablebreaklist);
12627
1a966eab
AC
12628 add_cmd ("delete", no_class, enable_delete_command, _("\
12629Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
12630If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
12631 &enablelist);
12632
1a966eab
AC
12633 add_cmd ("once", no_class, enable_once_command, _("\
12634Enable breakpoints for one hit. Give breakpoint numbers.\n\
12635If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
c906108c
SS
12636 &enablelist);
12637
1bedd215
AC
12638 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
12639Disable some breakpoints.\n\
c906108c
SS
12640Arguments are breakpoint numbers with spaces in between.\n\
12641To disable all breakpoints, give no argument.\n\
1bedd215 12642A disabled breakpoint is not forgotten, but has no effect until reenabled."),
c906108c
SS
12643 &disablelist, "disable ", 1, &cmdlist);
12644 add_com_alias ("dis", "disable", class_breakpoint, 1);
12645 add_com_alias ("disa", "disable", class_breakpoint, 1);
12646 if (xdb_commands)
1bedd215
AC
12647 add_com ("sb", class_breakpoint, disable_command, _("\
12648Disable some breakpoints.\n\
c906108c
SS
12649Arguments are breakpoint numbers with spaces in between.\n\
12650To disable all breakpoints, give no argument.\n\
1bedd215 12651A disabled breakpoint is not forgotten, but has no effect until reenabled."));
c906108c 12652
1a966eab
AC
12653 add_cmd ("breakpoints", class_alias, disable_command, _("\
12654Disable some breakpoints.\n\
c906108c
SS
12655Arguments are breakpoint numbers with spaces in between.\n\
12656To disable all breakpoints, give no argument.\n\
12657A disabled breakpoint is not forgotten, but has no effect until reenabled.\n\
1a966eab 12658This command may be abbreviated \"disable\"."),
c906108c
SS
12659 &disablelist);
12660
1bedd215
AC
12661 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
12662Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
12663Arguments are breakpoint numbers with spaces in between.\n\
12664To delete all breakpoints, give no argument.\n\
12665\n\
12666Also a prefix command for deletion of other GDB objects.\n\
1bedd215 12667The \"unset\" command is also an alias for \"delete\"."),
c906108c
SS
12668 &deletelist, "delete ", 1, &cmdlist);
12669 add_com_alias ("d", "delete", class_breakpoint, 1);
7f198e01 12670 add_com_alias ("del", "delete", class_breakpoint, 1);
c906108c 12671 if (xdb_commands)
1bedd215
AC
12672 add_com ("db", class_breakpoint, delete_command, _("\
12673Delete some breakpoints.\n\
c906108c 12674Arguments are breakpoint numbers with spaces in between.\n\
1bedd215 12675To delete all breakpoints, give no argument.\n"));
c906108c 12676
1a966eab
AC
12677 add_cmd ("breakpoints", class_alias, delete_command, _("\
12678Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
12679Arguments are breakpoint numbers with spaces in between.\n\
12680To delete all breakpoints, give no argument.\n\
1a966eab 12681This command may be abbreviated \"delete\"."),
c906108c
SS
12682 &deletelist);
12683
1bedd215
AC
12684 add_com ("clear", class_breakpoint, clear_command, _("\
12685Clear breakpoint at specified line or function.\n\
c906108c
SS
12686Argument may be line number, function name, or \"*\" and an address.\n\
12687If line number is specified, all breakpoints in that line are cleared.\n\
12688If function is specified, breakpoints at beginning of function are cleared.\n\
1bedd215
AC
12689If an address is specified, breakpoints at that address are cleared.\n\
12690\n\
12691With no argument, clears all breakpoints in the line that the selected frame\n\
c906108c
SS
12692is executing in.\n\
12693\n\
1bedd215 12694See also the \"delete\" command which clears breakpoints by number."));
a6cc4789 12695 add_com_alias ("cl", "clear", class_breakpoint, 1);
c906108c 12696
1bedd215 12697 c = add_com ("break", class_breakpoint, break_command, _("\
31e2b00f
AS
12698Set breakpoint at specified line or function.\n"
12699BREAK_ARGS_HELP ("break")));
5ba2abeb 12700 set_cmd_completer (c, location_completer);
c94fdfd0 12701
c906108c
SS
12702 add_com_alias ("b", "break", class_run, 1);
12703 add_com_alias ("br", "break", class_run, 1);
12704 add_com_alias ("bre", "break", class_run, 1);
12705 add_com_alias ("brea", "break", class_run, 1);
12706
7681d515
PM
12707 if (xdb_commands)
12708 add_com_alias ("ba", "break", class_breakpoint, 1);
c906108c
SS
12709
12710 if (dbx_commands)
12711 {
1bedd215
AC
12712 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
12713Break in function/address or break at a line in the current file."),
c5aa993b
JM
12714 &stoplist, "stop ", 1, &cmdlist);
12715 add_cmd ("in", class_breakpoint, stopin_command,
1a966eab 12716 _("Break in function or address."), &stoplist);
c5aa993b 12717 add_cmd ("at", class_breakpoint, stopat_command,
1a966eab 12718 _("Break at a line in the current file."), &stoplist);
1bedd215
AC
12719 add_com ("status", class_info, breakpoints_info, _("\
12720Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
12721The \"Type\" column indicates one of:\n\
12722\tbreakpoint - normal breakpoint\n\
12723\twatchpoint - watchpoint\n\
12724The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
12725the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
12726breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
12727address and file/line number respectively.\n\
12728\n\
12729Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
12730are set to the address of the last breakpoint listed unless the command\n\
12731is prefixed with \"server \".\n\n\
c906108c 12732Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 12733breakpoint set."));
c906108c
SS
12734 }
12735
1bedd215 12736 add_info ("breakpoints", breakpoints_info, _("\
e5a67952 12737Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
c906108c
SS
12738The \"Type\" column indicates one of:\n\
12739\tbreakpoint - normal breakpoint\n\
12740\twatchpoint - watchpoint\n\
12741The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
12742the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
12743breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
12744address and file/line number respectively.\n\
12745\n\
12746Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
12747are set to the address of the last breakpoint listed unless the command\n\
12748is prefixed with \"server \".\n\n\
c906108c 12749Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 12750breakpoint set."));
c906108c 12751
6b04bdb7
MS
12752 add_info_alias ("b", "breakpoints", 1);
12753
c906108c 12754 if (xdb_commands)
1bedd215
AC
12755 add_com ("lb", class_breakpoint, breakpoints_info, _("\
12756Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
12757The \"Type\" column indicates one of:\n\
12758\tbreakpoint - normal breakpoint\n\
12759\twatchpoint - watchpoint\n\
12760The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
12761the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
12762breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
12763address and file/line number respectively.\n\
12764\n\
12765Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
12766are set to the address of the last breakpoint listed unless the command\n\
12767is prefixed with \"server \".\n\n\
c906108c 12768Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 12769breakpoint set."));
c906108c 12770
1a966eab
AC
12771 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
12772Status of all breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
12773The \"Type\" column indicates one of:\n\
12774\tbreakpoint - normal breakpoint\n\
12775\twatchpoint - watchpoint\n\
12776\tlongjmp - internal breakpoint used to step through longjmp()\n\
12777\tlongjmp resume - internal breakpoint at the target of longjmp()\n\
12778\tuntil - internal breakpoint used by the \"until\" command\n\
1a966eab
AC
12779\tfinish - internal breakpoint used by the \"finish\" command\n\
12780The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
c906108c
SS
12781the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
12782breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1a966eab
AC
12783address and file/line number respectively.\n\
12784\n\
12785Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
12786are set to the address of the last breakpoint listed unless the command\n\
12787is prefixed with \"server \".\n\n\
c906108c 12788Convenience variable \"$bpnum\" contains the number of the last\n\
1a966eab 12789breakpoint set."),
c906108c
SS
12790 &maintenanceinfolist);
12791
44feb3ce
TT
12792 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
12793Set catchpoints to catch events."),
12794 &catch_cmdlist, "catch ",
12795 0/*allow-unknown*/, &cmdlist);
12796
12797 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
12798Set temporary catchpoints to catch events."),
12799 &tcatch_cmdlist, "tcatch ",
12800 0/*allow-unknown*/, &cmdlist);
12801
12802 /* Add catch and tcatch sub-commands. */
12803 add_catch_command ("catch", _("\
12804Catch an exception, when caught.\n\
12805With an argument, catch only exceptions with the given name."),
12806 catch_catch_command,
a96d9b2e 12807 NULL,
44feb3ce
TT
12808 CATCH_PERMANENT,
12809 CATCH_TEMPORARY);
12810 add_catch_command ("throw", _("\
12811Catch an exception, when thrown.\n\
12812With an argument, catch only exceptions with the given name."),
12813 catch_throw_command,
a96d9b2e 12814 NULL,
44feb3ce
TT
12815 CATCH_PERMANENT,
12816 CATCH_TEMPORARY);
12817 add_catch_command ("fork", _("Catch calls to fork."),
12818 catch_fork_command_1,
a96d9b2e 12819 NULL,
44feb3ce
TT
12820 (void *) (uintptr_t) catch_fork_permanent,
12821 (void *) (uintptr_t) catch_fork_temporary);
12822 add_catch_command ("vfork", _("Catch calls to vfork."),
12823 catch_fork_command_1,
a96d9b2e 12824 NULL,
44feb3ce
TT
12825 (void *) (uintptr_t) catch_vfork_permanent,
12826 (void *) (uintptr_t) catch_vfork_temporary);
12827 add_catch_command ("exec", _("Catch calls to exec."),
12828 catch_exec_command_1,
a96d9b2e
SDJ
12829 NULL,
12830 CATCH_PERMANENT,
12831 CATCH_TEMPORARY);
12832 add_catch_command ("syscall", _("\
12833Catch system calls by their names and/or numbers.\n\
12834Arguments say which system calls to catch. If no arguments\n\
12835are given, every system call will be caught.\n\
12836Arguments, if given, should be one or more system call names\n\
12837(if your system supports that), or system call numbers."),
12838 catch_syscall_command_1,
12839 catch_syscall_completer,
44feb3ce
TT
12840 CATCH_PERMANENT,
12841 CATCH_TEMPORARY);
44feb3ce
TT
12842 add_catch_command ("exception", _("\
12843Catch Ada exceptions, when raised.\n\
12844With an argument, catch only exceptions with the given name."),
12845 catch_ada_exception_command,
a96d9b2e 12846 NULL,
44feb3ce
TT
12847 CATCH_PERMANENT,
12848 CATCH_TEMPORARY);
12849 add_catch_command ("assert", _("\
12850Catch failed Ada assertions, when raised.\n\
12851With an argument, catch only exceptions with the given name."),
12852 catch_assert_command,
a96d9b2e 12853 NULL,
44feb3ce
TT
12854 CATCH_PERMANENT,
12855 CATCH_TEMPORARY);
c5aa993b 12856
1bedd215
AC
12857 c = add_com ("watch", class_breakpoint, watch_command, _("\
12858Set a watchpoint for an expression.\n\
06a64a0b 12859Usage: watch [-l|-location] EXPRESSION\n\
c906108c 12860A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
12861an expression changes.\n\
12862If -l or -location is given, this evaluates EXPRESSION and watches\n\
12863the memory to which it refers."));
65d12d83 12864 set_cmd_completer (c, expression_completer);
c906108c 12865
1bedd215
AC
12866 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
12867Set a read watchpoint for an expression.\n\
06a64a0b 12868Usage: rwatch [-l|-location] EXPRESSION\n\
c906108c 12869A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
12870an expression is read.\n\
12871If -l or -location is given, this evaluates EXPRESSION and watches\n\
12872the memory to which it refers."));
65d12d83 12873 set_cmd_completer (c, expression_completer);
c906108c 12874
1bedd215
AC
12875 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
12876Set a watchpoint for an expression.\n\
06a64a0b 12877Usage: awatch [-l|-location] EXPRESSION\n\
c906108c 12878A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
12879an expression is either read or written.\n\
12880If -l or -location is given, this evaluates EXPRESSION and watches\n\
12881the memory to which it refers."));
65d12d83 12882 set_cmd_completer (c, expression_completer);
c906108c 12883
d77f58be 12884 add_info ("watchpoints", watchpoints_info, _("\
e5a67952 12885Status of specified watchpoints (all watchpoints if no argument)."));
c906108c 12886
920d2a44
AC
12887 /* XXX: cagney/2005-02-23: This should be a boolean, and should
12888 respond to changes - contrary to the description. */
85c07804
AC
12889 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
12890 &can_use_hw_watchpoints, _("\
12891Set debugger's willingness to use watchpoint hardware."), _("\
12892Show debugger's willingness to use watchpoint hardware."), _("\
c906108c
SS
12893If zero, gdb will not use hardware for new watchpoints, even if\n\
12894such is available. (However, any hardware watchpoints that were\n\
12895created before setting this to nonzero, will continue to use watchpoint\n\
85c07804
AC
12896hardware.)"),
12897 NULL,
920d2a44 12898 show_can_use_hw_watchpoints,
85c07804 12899 &setlist, &showlist);
c906108c
SS
12900
12901 can_use_hw_watchpoints = 1;
fa8d40ab 12902
1042e4c0
SS
12903 /* Tracepoint manipulation commands. */
12904
12905 c = add_com ("trace", class_breakpoint, trace_command, _("\
12906Set a tracepoint at specified line or function.\n\
12907\n"
12908BREAK_ARGS_HELP ("trace") "\n\
12909Do \"help tracepoints\" for info on other tracepoint commands."));
12910 set_cmd_completer (c, location_completer);
12911
12912 add_com_alias ("tp", "trace", class_alias, 0);
12913 add_com_alias ("tr", "trace", class_alias, 1);
12914 add_com_alias ("tra", "trace", class_alias, 1);
12915 add_com_alias ("trac", "trace", class_alias, 1);
12916
7a697b8d
SS
12917 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
12918Set a fast tracepoint at specified line or function.\n\
12919\n"
12920BREAK_ARGS_HELP ("ftrace") "\n\
12921Do \"help tracepoints\" for info on other tracepoint commands."));
12922 set_cmd_completer (c, location_completer);
12923
0fb4aa4b
PA
12924 c = add_com ("strace", class_breakpoint, strace_command, _("\
12925Set a static tracepoint at specified line, function or marker.\n\
12926\n\
12927strace [LOCATION] [if CONDITION]\n\
12928LOCATION may be a line number, function name, \"*\" and an address,\n\
12929or -m MARKER_ID.\n\
12930If a line number is specified, probe the marker at start of code\n\
12931for that line. If a function is specified, probe the marker at start\n\
12932of code for that function. If an address is specified, probe the marker\n\
12933at that exact address. If a marker id is specified, probe the marker\n\
12934with that name. With no LOCATION, uses current execution address of\n\
12935the selected stack frame.\n\
12936Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
12937This collects arbitrary user data passed in the probe point call to the\n\
12938tracing library. You can inspect it when analyzing the trace buffer,\n\
12939by printing the $_sdata variable like any other convenience variable.\n\
12940\n\
12941CONDITION is a boolean expression.\n\
12942\n\
d41c0fc8
PA
12943Multiple tracepoints at one place are permitted, and useful if their\n\
12944conditions are different.\n\
0fb4aa4b
PA
12945\n\
12946Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
12947Do \"help tracepoints\" for info on other tracepoint commands."));
12948 set_cmd_completer (c, location_completer);
12949
1042e4c0 12950 add_info ("tracepoints", tracepoints_info, _("\
e5a67952 12951Status of specified tracepoints (all tracepoints if no argument).\n\
1042e4c0
SS
12952Convenience variable \"$tpnum\" contains the number of the\n\
12953last tracepoint set."));
12954
12955 add_info_alias ("tp", "tracepoints", 1);
12956
12957 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
12958Delete specified tracepoints.\n\
12959Arguments are tracepoint numbers, separated by spaces.\n\
12960No argument means delete all tracepoints."),
12961 &deletelist);
12962
12963 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
12964Disable specified tracepoints.\n\
12965Arguments are tracepoint numbers, separated by spaces.\n\
12966No argument means disable all tracepoints."),
12967 &disablelist);
12968 deprecate_cmd (c, "disable");
12969
12970 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
12971Enable specified tracepoints.\n\
12972Arguments are tracepoint numbers, separated by spaces.\n\
12973No argument means enable all tracepoints."),
12974 &enablelist);
12975 deprecate_cmd (c, "enable");
12976
12977 add_com ("passcount", class_trace, trace_pass_command, _("\
12978Set the passcount for a tracepoint.\n\
12979The trace will end when the tracepoint has been passed 'count' times.\n\
12980Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
12981if TPNUM is omitted, passcount refers to the last tracepoint defined."));
12982
6149aea9
PA
12983 add_prefix_cmd ("save", class_breakpoint, save_command,
12984 _("Save breakpoint definitions as a script."),
12985 &save_cmdlist, "save ",
12986 0/*allow-unknown*/, &cmdlist);
12987
12988 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
12989Save current breakpoint definitions as a script.\n\
cce7e648 12990This includes all types of breakpoints (breakpoints, watchpoints,\n\
6149aea9
PA
12991catchpoints, tracepoints). Use the 'source' command in another debug\n\
12992session to restore them."),
12993 &save_cmdlist);
12994 set_cmd_completer (c, filename_completer);
12995
12996 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
1042e4c0 12997Save current tracepoint definitions as a script.\n\
6149aea9
PA
12998Use the 'source' command in another debug session to restore them."),
12999 &save_cmdlist);
1042e4c0
SS
13000 set_cmd_completer (c, filename_completer);
13001
6149aea9
PA
13002 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
13003 deprecate_cmd (c, "save tracepoints");
13004
1bedd215 13005 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
fa8d40ab
JJ
13006Breakpoint specific settings\n\
13007Configure various breakpoint-specific variables such as\n\
1bedd215 13008pending breakpoint behavior"),
fa8d40ab
JJ
13009 &breakpoint_set_cmdlist, "set breakpoint ",
13010 0/*allow-unknown*/, &setlist);
1bedd215 13011 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
fa8d40ab
JJ
13012Breakpoint specific settings\n\
13013Configure various breakpoint-specific variables such as\n\
1bedd215 13014pending breakpoint behavior"),
fa8d40ab
JJ
13015 &breakpoint_show_cmdlist, "show breakpoint ",
13016 0/*allow-unknown*/, &showlist);
13017
7915a72c
AC
13018 add_setshow_auto_boolean_cmd ("pending", no_class,
13019 &pending_break_support, _("\
13020Set debugger's behavior regarding pending breakpoints."), _("\
13021Show debugger's behavior regarding pending breakpoints."), _("\
6e1d7d6c
AC
13022If on, an unrecognized breakpoint location will cause gdb to create a\n\
13023pending breakpoint. If off, an unrecognized breakpoint location results in\n\
13024an error. If auto, an unrecognized breakpoint location results in a\n\
7915a72c 13025user-query to see if a pending breakpoint should be created."),
2c5b56ce 13026 NULL,
920d2a44 13027 show_pending_break_support,
6e1d7d6c
AC
13028 &breakpoint_set_cmdlist,
13029 &breakpoint_show_cmdlist);
fa8d40ab
JJ
13030
13031 pending_break_support = AUTO_BOOLEAN_AUTO;
765dc015
VP
13032
13033 add_setshow_boolean_cmd ("auto-hw", no_class,
13034 &automatic_hardware_breakpoints, _("\
13035Set automatic usage of hardware breakpoints."), _("\
13036Show automatic usage of hardware breakpoints."), _("\
13037If set, the debugger will automatically use hardware breakpoints for\n\
13038breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
13039a warning will be emitted for such breakpoints."),
13040 NULL,
13041 show_automatic_hardware_breakpoints,
13042 &breakpoint_set_cmdlist,
13043 &breakpoint_show_cmdlist);
74960c60 13044
33e5cbd6
PA
13045 add_setshow_enum_cmd ("always-inserted", class_support,
13046 always_inserted_enums, &always_inserted_mode, _("\
74960c60
VP
13047Set mode for inserting breakpoints."), _("\
13048Show mode for inserting breakpoints."), _("\
33e5cbd6
PA
13049When this mode is off, breakpoints are inserted in inferior when it is\n\
13050resumed, and removed when execution stops. When this mode is on,\n\
13051breakpoints are inserted immediately and removed only when the user\n\
13052deletes the breakpoint. When this mode is auto (which is the default),\n\
13053the behaviour depends on the non-stop setting (see help set non-stop).\n\
13054In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
13055behaves as if always-inserted mode is on; if gdb is controlling the\n\
13056inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
74960c60
VP
13057 NULL,
13058 &show_always_inserted_mode,
13059 &breakpoint_set_cmdlist,
13060 &breakpoint_show_cmdlist);
f1310107
TJB
13061
13062 add_com ("break-range", class_breakpoint, break_range_command, _("\
13063Set a breakpoint for an address range.\n\
13064break-range START-LOCATION, END-LOCATION\n\
13065where START-LOCATION and END-LOCATION can be one of the following:\n\
13066 LINENUM, for that line in the current file,\n\
13067 FILE:LINENUM, for that line in that file,\n\
13068 +OFFSET, for that number of lines after the current line\n\
13069 or the start of the range\n\
13070 FUNCTION, for the first line in that function,\n\
13071 FILE:FUNCTION, to distinguish among like-named static functions.\n\
13072 *ADDRESS, for the instruction at that address.\n\
13073\n\
13074The breakpoint will stop execution of the inferior whenever it executes\n\
13075an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
13076range (including START-LOCATION and END-LOCATION)."));
13077
765dc015 13078 automatic_hardware_breakpoints = 1;
f3b1572e
PA
13079
13080 observer_attach_about_to_proceed (breakpoint_about_to_proceed);
c906108c 13081}
This page took 2.603781 seconds and 4 git commands to generate.