gdb/inflow.c: Move SIGTTOU temporary ignoring to a RAII class
[deliverable/binutils-gdb.git] / gdb / breakpoint.c
CommitLineData
c906108c 1/* Everything about breakpoints, for GDB.
8926118c 2
61baf725 3 Copyright (C) 1986-2017 Free Software Foundation, Inc.
c906108c 4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
c5aa993b 10 (at your option) any later version.
c906108c 11
c5aa993b
JM
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
c906108c 16
c5aa993b 17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
19
20#include "defs.h"
a6d9a66e 21#include "arch-utils.h"
c906108c 22#include <ctype.h>
776592bf 23#include "hashtab.h"
c906108c
SS
24#include "symtab.h"
25#include "frame.h"
26#include "breakpoint.h"
1042e4c0 27#include "tracepoint.h"
c906108c
SS
28#include "gdbtypes.h"
29#include "expression.h"
30#include "gdbcore.h"
31#include "gdbcmd.h"
32#include "value.h"
33#include "command.h"
34#include "inferior.h"
45741a9c 35#include "infrun.h"
c906108c
SS
36#include "gdbthread.h"
37#include "target.h"
38#include "language.h"
50f182aa 39#include "gdb-demangle.h"
0ba1096a 40#include "filenames.h"
c906108c
SS
41#include "annotate.h"
42#include "symfile.h"
43#include "objfiles.h"
0378c332 44#include "source.h"
c5f0f3d0 45#include "linespec.h"
c94fdfd0 46#include "completer.h"
8b93c638 47#include "ui-out.h"
e1507482 48#include "cli/cli-script.h"
fe898f56 49#include "block.h"
a77053c2 50#include "solib.h"
84acb35a
JJ
51#include "solist.h"
52#include "observer.h"
765dc015 53#include "memattr.h"
f7f9143b 54#include "ada-lang.h"
d1aa2f50 55#include "top.h"
79a45b7d 56#include "valprint.h"
4efc6507 57#include "jit.h"
65d79d4b 58#include "parser-defs.h"
55aa24fb
SDJ
59#include "gdb_regex.h"
60#include "probe.h"
e9cafbcc 61#include "cli/cli-utils.h"
be34f849 62#include "continuations.h"
1bfeeb0f
JL
63#include "stack.h"
64#include "skip.h"
b775012e 65#include "ax-gdb.h"
e2e4d78b 66#include "dummy-frame.h"
5589af0e 67#include "interps.h"
d3ce09f5 68#include "format.h"
cfc31633 69#include "thread-fsm.h"
5d5658a1 70#include "tid-parse.h"
d3ce09f5 71
1042e4c0
SS
72/* readline include files */
73#include "readline/readline.h"
74#include "readline/history.h"
75
76/* readline defines this. */
77#undef savestring
78
034dad6f 79#include "mi/mi-common.h"
6dddc817 80#include "extension.h"
325fac50 81#include <algorithm>
5ed8105e 82#include "progspace-and-thread.h"
6c5b2ebe 83#include "common/array-view.h"
76f9c9cf 84#include "common/gdb_optional.h"
104c1213 85
e7e8980f
YQ
86/* Enums for exception-handling support. */
87enum exception_event_kind
88{
89 EX_EVENT_THROW,
591f19e8 90 EX_EVENT_RETHROW,
e7e8980f
YQ
91 EX_EVENT_CATCH
92};
93
4a64f543 94/* Prototypes for local functions. */
c906108c 95
896b6bda 96static void map_breakpoint_numbers (const char *,
48649e1b 97 gdb::function_view<void (breakpoint *)>);
c906108c 98
348d480f
PA
99static void breakpoint_re_set_default (struct breakpoint *);
100
f00aae0f
KS
101static void
102 create_sals_from_location_default (const struct event_location *location,
103 struct linespec_result *canonical,
104 enum bptype type_wanted);
983af33b
SDJ
105
106static void create_breakpoints_sal_default (struct gdbarch *,
107 struct linespec_result *,
e1e01040
PA
108 gdb::unique_xmalloc_ptr<char>,
109 gdb::unique_xmalloc_ptr<char>,
110 enum bptype,
983af33b
SDJ
111 enum bpdisp, int, int,
112 int,
113 const struct breakpoint_ops *,
44f238bb 114 int, int, int, unsigned);
983af33b 115
6c5b2ebe
PA
116static std::vector<symtab_and_line> decode_location_default
117 (struct breakpoint *b, const struct event_location *location,
118 struct program_space *search_pspace);
983af33b 119
a9634178 120static int can_use_hardware_watchpoint (struct value *);
c906108c 121
a14ed312 122static void mention (struct breakpoint *);
c906108c 123
348d480f
PA
124static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
125 enum bptype,
c0a91b2b 126 const struct breakpoint_ops *);
3742cc8b
YQ
127static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
128 const struct symtab_and_line *);
129
4a64f543
MS
130/* This function is used in gdbtk sources and thus can not be made
131 static. */
63c252f8 132struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 133 struct symtab_and_line,
c0a91b2b
TT
134 enum bptype,
135 const struct breakpoint_ops *);
c906108c 136
06edf0c0
PA
137static struct breakpoint *
138 momentary_breakpoint_from_master (struct breakpoint *orig,
139 enum bptype type,
a1aa2221
LM
140 const struct breakpoint_ops *ops,
141 int loc_enabled);
06edf0c0 142
76897487
KB
143static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
144
a6d9a66e
UW
145static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
146 CORE_ADDR bpaddr,
88f7da05 147 enum bptype bptype);
76897487 148
6c95b8df
PA
149static void describe_other_breakpoints (struct gdbarch *,
150 struct program_space *, CORE_ADDR,
5af949e3 151 struct obj_section *, int);
c906108c 152
85d721b8
PA
153static int watchpoint_locations_match (struct bp_location *loc1,
154 struct bp_location *loc2);
155
f1310107 156static int breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 157 const struct address_space *aspace,
f1310107
TJB
158 CORE_ADDR addr);
159
d35ae833 160static int breakpoint_location_address_range_overlap (struct bp_location *,
accd0bcd 161 const address_space *,
d35ae833
PA
162 CORE_ADDR, int);
163
834c0d03 164static int remove_breakpoint (struct bp_location *);
b2b6a7da 165static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
c906108c 166
e514a9d6 167static enum print_stop_action print_bp_stop_message (bpstat bs);
c906108c 168
a14ed312 169static int hw_breakpoint_used_count (void);
c906108c 170
a1398e0c
PA
171static int hw_watchpoint_use_count (struct breakpoint *);
172
173static int hw_watchpoint_used_count_others (struct breakpoint *except,
174 enum bptype type,
175 int *other_type_used);
c906108c 176
816338b5
SS
177static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
178 int count);
c906108c 179
fe3f5fa8 180static void free_bp_location (struct bp_location *loc);
f431efe5
PA
181static void incref_bp_location (struct bp_location *loc);
182static void decref_bp_location (struct bp_location **loc);
fe3f5fa8 183
39d61571 184static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
a5606eee 185
44702360
PA
186/* update_global_location_list's modes of operation wrt to whether to
187 insert locations now. */
188enum ugll_insert_mode
189{
190 /* Don't insert any breakpoint locations into the inferior, only
191 remove already-inserted locations that no longer should be
192 inserted. Functions that delete a breakpoint or breakpoints
193 should specify this mode, so that deleting a breakpoint doesn't
194 have the side effect of inserting the locations of other
195 breakpoints that are marked not-inserted, but should_be_inserted
196 returns true on them.
197
198 This behavior is useful is situations close to tear-down -- e.g.,
199 after an exec, while the target still has execution, but
200 breakpoint shadows of the previous executable image should *NOT*
201 be restored to the new image; or before detaching, where the
202 target still has execution and wants to delete breakpoints from
203 GDB's lists, and all breakpoints had already been removed from
204 the inferior. */
205 UGLL_DONT_INSERT,
206
a25a5a45
PA
207 /* May insert breakpoints iff breakpoints_should_be_inserted_now
208 claims breakpoints should be inserted now. */
04086b45
PA
209 UGLL_MAY_INSERT,
210
a25a5a45
PA
211 /* Insert locations now, irrespective of
212 breakpoints_should_be_inserted_now. E.g., say all threads are
213 stopped right now, and the user did "continue". We need to
214 insert breakpoints _before_ resuming the target, but
215 UGLL_MAY_INSERT wouldn't insert them, because
216 breakpoints_should_be_inserted_now returns false at that point,
217 as no thread is running yet. */
04086b45 218 UGLL_INSERT
44702360
PA
219};
220
221static void update_global_location_list (enum ugll_insert_mode);
a5606eee 222
44702360 223static void update_global_location_list_nothrow (enum ugll_insert_mode);
74960c60 224
d77f58be 225static int is_hardware_watchpoint (const struct breakpoint *bpt);
74960c60
VP
226
227static void insert_breakpoint_locations (void);
a5606eee 228
0b39b52e 229static void trace_pass_command (const char *, int);
1042e4c0 230
558a9d82
YQ
231static void set_tracepoint_count (int num);
232
9c06b0b4
TJB
233static int is_masked_watchpoint (const struct breakpoint *b);
234
b775012e
LM
235static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
236
983af33b
SDJ
237/* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
238 otherwise. */
239
240static int strace_marker_p (struct breakpoint *b);
0fb4aa4b 241
2060206e
PA
242/* The breakpoint_ops structure to be inherited by all breakpoint_ops
243 that are implemented on top of software or hardware breakpoints
244 (user breakpoints, internal and momentary breakpoints, etc.). */
245static struct breakpoint_ops bkpt_base_breakpoint_ops;
246
247/* Internal breakpoints class type. */
06edf0c0 248static struct breakpoint_ops internal_breakpoint_ops;
2060206e
PA
249
250/* Momentary breakpoints class type. */
06edf0c0
PA
251static struct breakpoint_ops momentary_breakpoint_ops;
252
2060206e
PA
253/* The breakpoint_ops structure to be used in regular user created
254 breakpoints. */
255struct breakpoint_ops bkpt_breakpoint_ops;
256
55aa24fb
SDJ
257/* Breakpoints set on probes. */
258static struct breakpoint_ops bkpt_probe_breakpoint_ops;
259
e7e0cddf 260/* Dynamic printf class type. */
c5867ab6 261struct breakpoint_ops dprintf_breakpoint_ops;
e7e0cddf 262
d3ce09f5
SS
263/* The style in which to perform a dynamic printf. This is a user
264 option because different output options have different tradeoffs;
265 if GDB does the printing, there is better error handling if there
266 is a problem with any of the arguments, but using an inferior
267 function lets you have special-purpose printers and sending of
268 output to the same place as compiled-in print functions. */
269
270static const char dprintf_style_gdb[] = "gdb";
271static const char dprintf_style_call[] = "call";
272static const char dprintf_style_agent[] = "agent";
273static const char *const dprintf_style_enums[] = {
274 dprintf_style_gdb,
275 dprintf_style_call,
276 dprintf_style_agent,
277 NULL
278};
279static const char *dprintf_style = dprintf_style_gdb;
280
281/* The function to use for dynamic printf if the preferred style is to
282 call into the inferior. The value is simply a string that is
283 copied into the command, so it can be anything that GDB can
284 evaluate to a callable address, not necessarily a function name. */
285
bde6261a 286static char *dprintf_function;
d3ce09f5
SS
287
288/* The channel to use for dynamic printf if the preferred style is to
289 call into the inferior; if a nonempty string, it will be passed to
290 the call as the first argument, with the format string as the
291 second. As with the dprintf function, this can be anything that
292 GDB knows how to evaluate, so in addition to common choices like
293 "stderr", this could be an app-specific expression like
294 "mystreams[curlogger]". */
295
bde6261a 296static char *dprintf_channel;
d3ce09f5
SS
297
298/* True if dprintf commands should continue to operate even if GDB
299 has disconnected. */
300static int disconnected_dprintf = 1;
301
5cea2a26
PA
302struct command_line *
303breakpoint_commands (struct breakpoint *b)
304{
d1b0a7bf 305 return b->commands ? b->commands.get () : NULL;
5cea2a26 306}
3daf8fe5 307
f3b1572e
PA
308/* Flag indicating that a command has proceeded the inferior past the
309 current breakpoint. */
310
311static int breakpoint_proceeded;
312
956a9fb9 313const char *
2cec12e5
AR
314bpdisp_text (enum bpdisp disp)
315{
4a64f543
MS
316 /* NOTE: the following values are a part of MI protocol and
317 represent values of 'disp' field returned when inferior stops at
318 a breakpoint. */
bc043ef3 319 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
cc59ec59 320
2cec12e5
AR
321 return bpdisps[(int) disp];
322}
c906108c 323
4a64f543 324/* Prototypes for exported functions. */
c906108c 325/* If FALSE, gdb will not use hardware support for watchpoints, even
4a64f543 326 if such is available. */
c906108c
SS
327static int can_use_hw_watchpoints;
328
920d2a44
AC
329static void
330show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
331 struct cmd_list_element *c,
332 const char *value)
333{
3e43a32a
MS
334 fprintf_filtered (file,
335 _("Debugger's willingness to use "
336 "watchpoint hardware is %s.\n"),
920d2a44
AC
337 value);
338}
339
fa8d40ab
JJ
340/* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
341 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
4a64f543 342 for unrecognized breakpoint locations.
fa8d40ab
JJ
343 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
344static enum auto_boolean pending_break_support;
920d2a44
AC
345static void
346show_pending_break_support (struct ui_file *file, int from_tty,
347 struct cmd_list_element *c,
348 const char *value)
349{
3e43a32a
MS
350 fprintf_filtered (file,
351 _("Debugger's behavior regarding "
352 "pending breakpoints is %s.\n"),
920d2a44
AC
353 value);
354}
fa8d40ab 355
765dc015 356/* If 1, gdb will automatically use hardware breakpoints for breakpoints
4a64f543 357 set with "break" but falling in read-only memory.
765dc015
VP
358 If 0, gdb will warn about such breakpoints, but won't automatically
359 use hardware breakpoints. */
360static int automatic_hardware_breakpoints;
361static void
362show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
363 struct cmd_list_element *c,
364 const char *value)
365{
3e43a32a
MS
366 fprintf_filtered (file,
367 _("Automatic usage of hardware breakpoints is %s.\n"),
765dc015
VP
368 value);
369}
370
a25a5a45
PA
371/* If on, GDB keeps breakpoints inserted even if the inferior is
372 stopped, and immediately inserts any new breakpoints as soon as
373 they're created. If off (default), GDB keeps breakpoints off of
374 the target as long as possible. That is, it delays inserting
375 breakpoints until the next resume, and removes them again when the
376 target fully stops. This is a bit safer in case GDB crashes while
377 processing user input. */
378static int always_inserted_mode = 0;
72d0e2c5 379
33e5cbd6 380static void
74960c60 381show_always_inserted_mode (struct ui_file *file, int from_tty,
33e5cbd6 382 struct cmd_list_element *c, const char *value)
74960c60 383{
a25a5a45
PA
384 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
385 value);
74960c60
VP
386}
387
b57bacec
PA
388/* See breakpoint.h. */
389
33e5cbd6 390int
a25a5a45 391breakpoints_should_be_inserted_now (void)
33e5cbd6 392{
a25a5a45
PA
393 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
394 {
395 /* If breakpoints are global, they should be inserted even if no
396 thread under gdb's control is running, or even if there are
397 no threads under GDB's control yet. */
398 return 1;
399 }
400 else if (target_has_execution)
401 {
372316f1
PA
402 struct thread_info *tp;
403
a25a5a45
PA
404 if (always_inserted_mode)
405 {
406 /* The user wants breakpoints inserted even if all threads
407 are stopped. */
408 return 1;
409 }
410
b57bacec
PA
411 if (threads_are_executing ())
412 return 1;
372316f1
PA
413
414 /* Don't remove breakpoints yet if, even though all threads are
415 stopped, we still have events to process. */
416 ALL_NON_EXITED_THREADS (tp)
417 if (tp->resumed
418 && tp->suspend.waitstatus_pending_p)
419 return 1;
a25a5a45
PA
420 }
421 return 0;
33e5cbd6 422}
765dc015 423
b775012e
LM
424static const char condition_evaluation_both[] = "host or target";
425
426/* Modes for breakpoint condition evaluation. */
427static const char condition_evaluation_auto[] = "auto";
428static const char condition_evaluation_host[] = "host";
429static const char condition_evaluation_target[] = "target";
430static const char *const condition_evaluation_enums[] = {
431 condition_evaluation_auto,
432 condition_evaluation_host,
433 condition_evaluation_target,
434 NULL
435};
436
437/* Global that holds the current mode for breakpoint condition evaluation. */
438static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
439
440/* Global that we use to display information to the user (gets its value from
441 condition_evaluation_mode_1. */
442static const char *condition_evaluation_mode = condition_evaluation_auto;
443
444/* Translate a condition evaluation mode MODE into either "host"
445 or "target". This is used mostly to translate from "auto" to the
446 real setting that is being used. It returns the translated
447 evaluation mode. */
448
449static const char *
450translate_condition_evaluation_mode (const char *mode)
451{
452 if (mode == condition_evaluation_auto)
453 {
454 if (target_supports_evaluation_of_breakpoint_conditions ())
455 return condition_evaluation_target;
456 else
457 return condition_evaluation_host;
458 }
459 else
460 return mode;
461}
462
463/* Discovers what condition_evaluation_auto translates to. */
464
465static const char *
466breakpoint_condition_evaluation_mode (void)
467{
468 return translate_condition_evaluation_mode (condition_evaluation_mode);
469}
470
471/* Return true if GDB should evaluate breakpoint conditions or false
472 otherwise. */
473
474static int
475gdb_evaluates_breakpoint_condition_p (void)
476{
477 const char *mode = breakpoint_condition_evaluation_mode ();
478
479 return (mode == condition_evaluation_host);
480}
481
c906108c
SS
482/* Are we executing breakpoint commands? */
483static int executing_breakpoint_commands;
484
c02f5703
MS
485/* Are overlay event breakpoints enabled? */
486static int overlay_events_enabled;
487
e09342b5
TJB
488/* See description in breakpoint.h. */
489int target_exact_watchpoints = 0;
490
c906108c 491/* Walk the following statement or block through all breakpoints.
e5dd4106 492 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
4a64f543 493 current breakpoint. */
c906108c 494
5c44784c 495#define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
c906108c 496
5c44784c
JM
497#define ALL_BREAKPOINTS_SAFE(B,TMP) \
498 for (B = breakpoint_chain; \
499 B ? (TMP=B->next, 1): 0; \
500 B = TMP)
c906108c 501
4a64f543
MS
502/* Similar iterator for the low-level breakpoints. SAFE variant is
503 not provided so update_global_location_list must not be called
504 while executing the block of ALL_BP_LOCATIONS. */
7cc221ef 505
876fa593 506#define ALL_BP_LOCATIONS(B,BP_TMP) \
f5336ca5
PA
507 for (BP_TMP = bp_locations; \
508 BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
876fa593 509 BP_TMP++)
7cc221ef 510
b775012e
LM
511/* Iterates through locations with address ADDRESS for the currently selected
512 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
513 to where the loop should start from.
514 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
515 appropriate location to start with. */
516
517#define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
518 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
519 BP_LOCP_TMP = BP_LOCP_START; \
520 BP_LOCP_START \
f5336ca5 521 && (BP_LOCP_TMP < bp_locations + bp_locations_count \
b775012e
LM
522 && (*BP_LOCP_TMP)->address == ADDRESS); \
523 BP_LOCP_TMP++)
524
1042e4c0
SS
525/* Iterator for tracepoints only. */
526
527#define ALL_TRACEPOINTS(B) \
528 for (B = breakpoint_chain; B; B = B->next) \
d77f58be 529 if (is_tracepoint (B))
1042e4c0 530
7cc221ef 531/* Chains of all breakpoints defined. */
c906108c
SS
532
533struct breakpoint *breakpoint_chain;
534
f5336ca5 535/* Array is sorted by bp_locations_compare - primarily by the ADDRESS. */
876fa593 536
f5336ca5 537static struct bp_location **bp_locations;
876fa593 538
f5336ca5 539/* Number of elements of BP_LOCATIONS. */
876fa593 540
f5336ca5 541static unsigned bp_locations_count;
876fa593 542
4a64f543 543/* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
f5336ca5 544 ADDRESS for the current elements of BP_LOCATIONS which get a valid
4a64f543 545 result from bp_location_has_shadow. You can use it for roughly
f5336ca5 546 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
4a64f543 547 an address you need to read. */
876fa593 548
f5336ca5 549static CORE_ADDR bp_locations_placed_address_before_address_max;
876fa593 550
4a64f543
MS
551/* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
552 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
f5336ca5
PA
553 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
554 You can use it for roughly limiting the subrange of BP_LOCATIONS to
4a64f543 555 scan for shadow bytes for an address you need to read. */
876fa593 556
f5336ca5 557static CORE_ADDR bp_locations_shadow_len_after_address_max;
7cc221ef 558
4a64f543 559/* The locations that no longer correspond to any breakpoint, unlinked
f5336ca5
PA
560 from the bp_locations array, but for which a hit may still be
561 reported by a target. */
20874c92
VP
562VEC(bp_location_p) *moribund_locations = NULL;
563
c906108c
SS
564/* Number of last breakpoint made. */
565
95a42b64
TT
566static int breakpoint_count;
567
86b17b60
PA
568/* The value of `breakpoint_count' before the last command that
569 created breakpoints. If the last (break-like) command created more
570 than one breakpoint, then the difference between BREAKPOINT_COUNT
571 and PREV_BREAKPOINT_COUNT is more than one. */
572static int prev_breakpoint_count;
c906108c 573
1042e4c0
SS
574/* Number of last tracepoint made. */
575
95a42b64 576static int tracepoint_count;
1042e4c0 577
6149aea9
PA
578static struct cmd_list_element *breakpoint_set_cmdlist;
579static struct cmd_list_element *breakpoint_show_cmdlist;
9291a0cd 580struct cmd_list_element *save_cmdlist;
6149aea9 581
badd37ce
SDJ
582/* See declaration at breakpoint.h. */
583
584struct breakpoint *
585breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
586 void *user_data)
587{
588 struct breakpoint *b = NULL;
589
590 ALL_BREAKPOINTS (b)
591 {
592 if (func (b, user_data) != 0)
593 break;
594 }
595
596 return b;
597}
598
468d015d
JJ
599/* Return whether a breakpoint is an active enabled breakpoint. */
600static int
601breakpoint_enabled (struct breakpoint *b)
602{
0d381245 603 return (b->enable_state == bp_enabled);
468d015d
JJ
604}
605
c906108c
SS
606/* Set breakpoint count to NUM. */
607
95a42b64 608static void
fba45db2 609set_breakpoint_count (int num)
c906108c 610{
86b17b60 611 prev_breakpoint_count = breakpoint_count;
c906108c 612 breakpoint_count = num;
4fa62494 613 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
c906108c
SS
614}
615
86b17b60
PA
616/* Used by `start_rbreak_breakpoints' below, to record the current
617 breakpoint count before "rbreak" creates any breakpoint. */
618static int rbreak_start_breakpoint_count;
619
95a42b64
TT
620/* Called at the start an "rbreak" command to record the first
621 breakpoint made. */
86b17b60 622
c80049d3 623scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
95a42b64 624{
86b17b60 625 rbreak_start_breakpoint_count = breakpoint_count;
95a42b64
TT
626}
627
628/* Called at the end of an "rbreak" command to record the last
629 breakpoint made. */
86b17b60 630
c80049d3 631scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
95a42b64 632{
86b17b60 633 prev_breakpoint_count = rbreak_start_breakpoint_count;
95a42b64
TT
634}
635
4a64f543 636/* Used in run_command to zero the hit count when a new run starts. */
c906108c
SS
637
638void
fba45db2 639clear_breakpoint_hit_counts (void)
c906108c
SS
640{
641 struct breakpoint *b;
642
643 ALL_BREAKPOINTS (b)
644 b->hit_count = 0;
645}
646
c906108c 647\f
48cb2d85
VP
648/* Return the breakpoint with the specified number, or NULL
649 if the number does not refer to an existing breakpoint. */
650
651struct breakpoint *
652get_breakpoint (int num)
653{
654 struct breakpoint *b;
655
656 ALL_BREAKPOINTS (b)
657 if (b->number == num)
658 return b;
659
660 return NULL;
661}
5c44784c 662
c906108c 663\f
adc36818 664
b775012e
LM
665/* Mark locations as "conditions have changed" in case the target supports
666 evaluating conditions on its side. */
667
668static void
669mark_breakpoint_modified (struct breakpoint *b)
670{
671 struct bp_location *loc;
672
673 /* This is only meaningful if the target is
674 evaluating conditions and if the user has
675 opted for condition evaluation on the target's
676 side. */
677 if (gdb_evaluates_breakpoint_condition_p ()
678 || !target_supports_evaluation_of_breakpoint_conditions ())
679 return;
680
681 if (!is_breakpoint (b))
682 return;
683
684 for (loc = b->loc; loc; loc = loc->next)
685 loc->condition_changed = condition_modified;
686}
687
688/* Mark location as "conditions have changed" in case the target supports
689 evaluating conditions on its side. */
690
691static void
692mark_breakpoint_location_modified (struct bp_location *loc)
693{
694 /* This is only meaningful if the target is
695 evaluating conditions and if the user has
696 opted for condition evaluation on the target's
697 side. */
698 if (gdb_evaluates_breakpoint_condition_p ()
699 || !target_supports_evaluation_of_breakpoint_conditions ())
700
701 return;
702
703 if (!is_breakpoint (loc->owner))
704 return;
705
706 loc->condition_changed = condition_modified;
707}
708
709/* Sets the condition-evaluation mode using the static global
710 condition_evaluation_mode. */
711
712static void
eb4c3f4a 713set_condition_evaluation_mode (const char *args, int from_tty,
b775012e
LM
714 struct cmd_list_element *c)
715{
b775012e
LM
716 const char *old_mode, *new_mode;
717
718 if ((condition_evaluation_mode_1 == condition_evaluation_target)
719 && !target_supports_evaluation_of_breakpoint_conditions ())
720 {
721 condition_evaluation_mode_1 = condition_evaluation_mode;
722 warning (_("Target does not support breakpoint condition evaluation.\n"
723 "Using host evaluation mode instead."));
724 return;
725 }
726
727 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
728 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
729
abf1152a
JK
730 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
731 settings was "auto". */
732 condition_evaluation_mode = condition_evaluation_mode_1;
733
b775012e
LM
734 /* Only update the mode if the user picked a different one. */
735 if (new_mode != old_mode)
736 {
737 struct bp_location *loc, **loc_tmp;
738 /* If the user switched to a different evaluation mode, we
739 need to synch the changes with the target as follows:
740
741 "host" -> "target": Send all (valid) conditions to the target.
742 "target" -> "host": Remove all the conditions from the target.
743 */
744
b775012e
LM
745 if (new_mode == condition_evaluation_target)
746 {
747 /* Mark everything modified and synch conditions with the
748 target. */
749 ALL_BP_LOCATIONS (loc, loc_tmp)
750 mark_breakpoint_location_modified (loc);
751 }
752 else
753 {
754 /* Manually mark non-duplicate locations to synch conditions
755 with the target. We do this to remove all the conditions the
756 target knows about. */
757 ALL_BP_LOCATIONS (loc, loc_tmp)
758 if (is_breakpoint (loc->owner) && loc->inserted)
759 loc->needs_update = 1;
760 }
761
762 /* Do the update. */
44702360 763 update_global_location_list (UGLL_MAY_INSERT);
b775012e
LM
764 }
765
766 return;
767}
768
769/* Shows the current mode of breakpoint condition evaluation. Explicitly shows
770 what "auto" is translating to. */
771
772static void
773show_condition_evaluation_mode (struct ui_file *file, int from_tty,
774 struct cmd_list_element *c, const char *value)
775{
776 if (condition_evaluation_mode == condition_evaluation_auto)
777 fprintf_filtered (file,
778 _("Breakpoint condition evaluation "
779 "mode is %s (currently %s).\n"),
780 value,
781 breakpoint_condition_evaluation_mode ());
782 else
783 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
784 value);
785}
786
787/* A comparison function for bp_location AP and BP that is used by
788 bsearch. This comparison function only cares about addresses, unlike
f5336ca5 789 the more general bp_locations_compare function. */
b775012e
LM
790
791static int
f5336ca5 792bp_locations_compare_addrs (const void *ap, const void *bp)
b775012e 793{
9a3c8263
SM
794 const struct bp_location *a = *(const struct bp_location **) ap;
795 const struct bp_location *b = *(const struct bp_location **) bp;
b775012e
LM
796
797 if (a->address == b->address)
798 return 0;
799 else
800 return ((a->address > b->address) - (a->address < b->address));
801}
802
803/* Helper function to skip all bp_locations with addresses
804 less than ADDRESS. It returns the first bp_location that
805 is greater than or equal to ADDRESS. If none is found, just
806 return NULL. */
807
808static struct bp_location **
809get_first_locp_gte_addr (CORE_ADDR address)
810{
811 struct bp_location dummy_loc;
812 struct bp_location *dummy_locp = &dummy_loc;
813 struct bp_location **locp_found = NULL;
814
815 /* Initialize the dummy location's address field. */
b775012e
LM
816 dummy_loc.address = address;
817
818 /* Find a close match to the first location at ADDRESS. */
9a3c8263 819 locp_found = ((struct bp_location **)
f5336ca5 820 bsearch (&dummy_locp, bp_locations, bp_locations_count,
9a3c8263 821 sizeof (struct bp_location **),
f5336ca5 822 bp_locations_compare_addrs));
b775012e
LM
823
824 /* Nothing was found, nothing left to do. */
825 if (locp_found == NULL)
826 return NULL;
827
828 /* We may have found a location that is at ADDRESS but is not the first in the
829 location's list. Go backwards (if possible) and locate the first one. */
f5336ca5 830 while ((locp_found - 1) >= bp_locations
b775012e
LM
831 && (*(locp_found - 1))->address == address)
832 locp_found--;
833
834 return locp_found;
835}
836
adc36818 837void
7a26bd4d 838set_breakpoint_condition (struct breakpoint *b, const char *exp,
adc36818
PM
839 int from_tty)
840{
3a5c3e22
PA
841 xfree (b->cond_string);
842 b->cond_string = NULL;
adc36818 843
3a5c3e22 844 if (is_watchpoint (b))
adc36818 845 {
3a5c3e22
PA
846 struct watchpoint *w = (struct watchpoint *) b;
847
4d01a485 848 w->cond_exp.reset ();
3a5c3e22
PA
849 }
850 else
851 {
852 struct bp_location *loc;
853
854 for (loc = b->loc; loc; loc = loc->next)
855 {
4d01a485 856 loc->cond.reset ();
b775012e
LM
857
858 /* No need to free the condition agent expression
859 bytecode (if we have one). We will handle this
860 when we go through update_global_location_list. */
3a5c3e22 861 }
adc36818 862 }
adc36818
PM
863
864 if (*exp == 0)
865 {
866 if (from_tty)
867 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
868 }
869 else
870 {
bbc13ae3 871 const char *arg = exp;
cc59ec59 872
adc36818
PM
873 /* I don't know if it matters whether this is the string the user
874 typed in or the decompiled expression. */
875 b->cond_string = xstrdup (arg);
876 b->condition_not_parsed = 0;
877
878 if (is_watchpoint (b))
879 {
3a5c3e22
PA
880 struct watchpoint *w = (struct watchpoint *) b;
881
adc36818
PM
882 innermost_block = NULL;
883 arg = exp;
1bb9788d 884 w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
adc36818
PM
885 if (*arg)
886 error (_("Junk at end of expression"));
3a5c3e22 887 w->cond_exp_valid_block = innermost_block;
adc36818
PM
888 }
889 else
890 {
3a5c3e22
PA
891 struct bp_location *loc;
892
adc36818
PM
893 for (loc = b->loc; loc; loc = loc->next)
894 {
895 arg = exp;
896 loc->cond =
1bb9788d
TT
897 parse_exp_1 (&arg, loc->address,
898 block_for_pc (loc->address), 0);
adc36818
PM
899 if (*arg)
900 error (_("Junk at end of expression"));
901 }
902 }
903 }
b775012e
LM
904 mark_breakpoint_modified (b);
905
8d3788bd 906 observer_notify_breakpoint_modified (b);
adc36818
PM
907}
908
d55637df
TT
909/* Completion for the "condition" command. */
910
eb3ff9a5 911static void
6f937416 912condition_completer (struct cmd_list_element *cmd,
eb3ff9a5 913 completion_tracker &tracker,
6f937416 914 const char *text, const char *word)
d55637df 915{
6f937416 916 const char *space;
d55637df 917
f1735a53
TT
918 text = skip_spaces (text);
919 space = skip_to_space (text);
d55637df
TT
920 if (*space == '\0')
921 {
922 int len;
923 struct breakpoint *b;
924 VEC (char_ptr) *result = NULL;
925
926 if (text[0] == '$')
927 {
928 /* We don't support completion of history indices. */
eb3ff9a5
PA
929 if (!isdigit (text[1]))
930 complete_internalvar (tracker, &text[1]);
931 return;
d55637df
TT
932 }
933
934 /* We're completing the breakpoint number. */
935 len = strlen (text);
936
937 ALL_BREAKPOINTS (b)
58ce7251
SDJ
938 {
939 char number[50];
940
941 xsnprintf (number, sizeof (number), "%d", b->number);
942
943 if (strncmp (number, text, len) == 0)
eb3ff9a5
PA
944 {
945 gdb::unique_xmalloc_ptr<char> copy (xstrdup (number));
946 tracker.add_completion (std::move (copy));
947 }
58ce7251 948 }
d55637df 949
eb3ff9a5 950 return;
d55637df
TT
951 }
952
953 /* We're completing the expression part. */
f1735a53 954 text = skip_spaces (space);
eb3ff9a5 955 expression_completer (cmd, tracker, text, word);
d55637df
TT
956}
957
c906108c
SS
958/* condition N EXP -- set break condition of breakpoint N to EXP. */
959
960static void
0b39b52e 961condition_command (const char *arg, int from_tty)
c906108c 962{
52f0bd74 963 struct breakpoint *b;
0b39b52e 964 const char *p;
52f0bd74 965 int bnum;
c906108c
SS
966
967 if (arg == 0)
e2e0b3e5 968 error_no_arg (_("breakpoint number"));
c906108c
SS
969
970 p = arg;
971 bnum = get_number (&p);
5c44784c 972 if (bnum == 0)
8a3fe4f8 973 error (_("Bad breakpoint argument: '%s'"), arg);
c906108c
SS
974
975 ALL_BREAKPOINTS (b)
976 if (b->number == bnum)
2f069f6f 977 {
6dddc817
DE
978 /* Check if this breakpoint has a "stop" method implemented in an
979 extension language. This method and conditions entered into GDB
980 from the CLI are mutually exclusive. */
981 const struct extension_language_defn *extlang
982 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
983
984 if (extlang != NULL)
985 {
986 error (_("Only one stop condition allowed. There is currently"
987 " a %s stop condition defined for this breakpoint."),
988 ext_lang_capitalized_name (extlang));
989 }
2566ad2d 990 set_breakpoint_condition (b, p, from_tty);
b775012e
LM
991
992 if (is_breakpoint (b))
44702360 993 update_global_location_list (UGLL_MAY_INSERT);
b775012e 994
2f069f6f
JB
995 return;
996 }
c906108c 997
8a3fe4f8 998 error (_("No breakpoint number %d."), bnum);
c906108c
SS
999}
1000
a7bdde9e
VP
1001/* Check that COMMAND do not contain commands that are suitable
1002 only for tracepoints and not suitable for ordinary breakpoints.
4a64f543
MS
1003 Throw if any such commands is found. */
1004
a7bdde9e
VP
1005static void
1006check_no_tracepoint_commands (struct command_line *commands)
1007{
1008 struct command_line *c;
cc59ec59 1009
a7bdde9e
VP
1010 for (c = commands; c; c = c->next)
1011 {
1012 int i;
1013
1014 if (c->control_type == while_stepping_control)
3e43a32a
MS
1015 error (_("The 'while-stepping' command can "
1016 "only be used for tracepoints"));
a7bdde9e
VP
1017
1018 for (i = 0; i < c->body_count; ++i)
1019 check_no_tracepoint_commands ((c->body_list)[i]);
1020
1021 /* Not that command parsing removes leading whitespace and comment
4a64f543 1022 lines and also empty lines. So, we only need to check for
a7bdde9e
VP
1023 command directly. */
1024 if (strstr (c->line, "collect ") == c->line)
1025 error (_("The 'collect' command can only be used for tracepoints"));
1026
51661e93
VP
1027 if (strstr (c->line, "teval ") == c->line)
1028 error (_("The 'teval' command can only be used for tracepoints"));
a7bdde9e
VP
1029 }
1030}
1031
c1fc2657 1032struct longjmp_breakpoint : public breakpoint
3b0871f4 1033{
c1fc2657 1034 ~longjmp_breakpoint () override;
3b0871f4
SM
1035};
1036
d77f58be
SS
1037/* Encapsulate tests for different types of tracepoints. */
1038
3b0871f4
SM
1039static bool
1040is_tracepoint_type (bptype type)
d9b3f62e
PA
1041{
1042 return (type == bp_tracepoint
1043 || type == bp_fast_tracepoint
1044 || type == bp_static_tracepoint);
1045}
1046
3b0871f4
SM
1047static bool
1048is_longjmp_type (bptype type)
1049{
1050 return type == bp_longjmp || type == bp_exception;
1051}
1052
a7bdde9e 1053int
d77f58be 1054is_tracepoint (const struct breakpoint *b)
a7bdde9e 1055{
d9b3f62e 1056 return is_tracepoint_type (b->type);
a7bdde9e 1057}
d9b3f62e 1058
a5e364af
SM
1059/* Factory function to create an appropriate instance of breakpoint given
1060 TYPE. */
1061
1062static std::unique_ptr<breakpoint>
1063new_breakpoint_from_type (bptype type)
1064{
1065 breakpoint *b;
1066
1067 if (is_tracepoint_type (type))
c1fc2657 1068 b = new tracepoint ();
3b0871f4 1069 else if (is_longjmp_type (type))
c1fc2657 1070 b = new longjmp_breakpoint ();
a5e364af
SM
1071 else
1072 b = new breakpoint ();
1073
1074 return std::unique_ptr<breakpoint> (b);
1075}
1076
e5dd4106 1077/* A helper function that validates that COMMANDS are valid for a
95a42b64
TT
1078 breakpoint. This function will throw an exception if a problem is
1079 found. */
48cb2d85 1080
95a42b64
TT
1081static void
1082validate_commands_for_breakpoint (struct breakpoint *b,
1083 struct command_line *commands)
48cb2d85 1084{
d77f58be 1085 if (is_tracepoint (b))
a7bdde9e 1086 {
c9a6ce02 1087 struct tracepoint *t = (struct tracepoint *) b;
a7bdde9e
VP
1088 struct command_line *c;
1089 struct command_line *while_stepping = 0;
c9a6ce02
PA
1090
1091 /* Reset the while-stepping step count. The previous commands
1092 might have included a while-stepping action, while the new
1093 ones might not. */
1094 t->step_count = 0;
1095
1096 /* We need to verify that each top-level element of commands is
1097 valid for tracepoints, that there's at most one
1098 while-stepping element, and that the while-stepping's body
1099 has valid tracing commands excluding nested while-stepping.
1100 We also need to validate the tracepoint action line in the
1101 context of the tracepoint --- validate_actionline actually
1102 has side effects, like setting the tracepoint's
1103 while-stepping STEP_COUNT, in addition to checking if the
1104 collect/teval actions parse and make sense in the
1105 tracepoint's context. */
a7bdde9e
VP
1106 for (c = commands; c; c = c->next)
1107 {
a7bdde9e
VP
1108 if (c->control_type == while_stepping_control)
1109 {
1110 if (b->type == bp_fast_tracepoint)
3e43a32a
MS
1111 error (_("The 'while-stepping' command "
1112 "cannot be used for fast tracepoint"));
0fb4aa4b 1113 else if (b->type == bp_static_tracepoint)
3e43a32a
MS
1114 error (_("The 'while-stepping' command "
1115 "cannot be used for static tracepoint"));
a7bdde9e
VP
1116
1117 if (while_stepping)
3e43a32a
MS
1118 error (_("The 'while-stepping' command "
1119 "can be used only once"));
a7bdde9e
VP
1120 else
1121 while_stepping = c;
1122 }
c9a6ce02
PA
1123
1124 validate_actionline (c->line, b);
a7bdde9e
VP
1125 }
1126 if (while_stepping)
1127 {
1128 struct command_line *c2;
1129
1130 gdb_assert (while_stepping->body_count == 1);
1131 c2 = while_stepping->body_list[0];
1132 for (; c2; c2 = c2->next)
1133 {
a7bdde9e
VP
1134 if (c2->control_type == while_stepping_control)
1135 error (_("The 'while-stepping' command cannot be nested"));
1136 }
1137 }
1138 }
1139 else
1140 {
1141 check_no_tracepoint_commands (commands);
1142 }
95a42b64
TT
1143}
1144
0fb4aa4b
PA
1145/* Return a vector of all the static tracepoints set at ADDR. The
1146 caller is responsible for releasing the vector. */
1147
1148VEC(breakpoint_p) *
1149static_tracepoints_here (CORE_ADDR addr)
1150{
1151 struct breakpoint *b;
1152 VEC(breakpoint_p) *found = 0;
1153 struct bp_location *loc;
1154
1155 ALL_BREAKPOINTS (b)
1156 if (b->type == bp_static_tracepoint)
1157 {
1158 for (loc = b->loc; loc; loc = loc->next)
1159 if (loc->address == addr)
1160 VEC_safe_push(breakpoint_p, found, b);
1161 }
1162
1163 return found;
1164}
1165
95a42b64 1166/* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
4a64f543 1167 validate that only allowed commands are included. */
95a42b64
TT
1168
1169void
4a64f543 1170breakpoint_set_commands (struct breakpoint *b,
93921405 1171 command_line_up &&commands)
95a42b64 1172{
93921405 1173 validate_commands_for_breakpoint (b, commands.get ());
a7bdde9e 1174
d1b0a7bf 1175 b->commands = std::move (commands);
8d3788bd 1176 observer_notify_breakpoint_modified (b);
48cb2d85
VP
1177}
1178
45a43567
TT
1179/* Set the internal `silent' flag on the breakpoint. Note that this
1180 is not the same as the "silent" that may appear in the breakpoint's
1181 commands. */
1182
1183void
1184breakpoint_set_silent (struct breakpoint *b, int silent)
1185{
1186 int old_silent = b->silent;
1187
1188 b->silent = silent;
1189 if (old_silent != silent)
8d3788bd 1190 observer_notify_breakpoint_modified (b);
45a43567
TT
1191}
1192
1193/* Set the thread for this breakpoint. If THREAD is -1, make the
1194 breakpoint work for any thread. */
1195
1196void
1197breakpoint_set_thread (struct breakpoint *b, int thread)
1198{
1199 int old_thread = b->thread;
1200
1201 b->thread = thread;
1202 if (old_thread != thread)
8d3788bd 1203 observer_notify_breakpoint_modified (b);
45a43567
TT
1204}
1205
1206/* Set the task for this breakpoint. If TASK is 0, make the
1207 breakpoint work for any task. */
1208
1209void
1210breakpoint_set_task (struct breakpoint *b, int task)
1211{
1212 int old_task = b->task;
1213
1214 b->task = task;
1215 if (old_task != task)
8d3788bd 1216 observer_notify_breakpoint_modified (b);
45a43567
TT
1217}
1218
95a42b64
TT
1219void
1220check_tracepoint_command (char *line, void *closure)
a7bdde9e 1221{
9a3c8263 1222 struct breakpoint *b = (struct breakpoint *) closure;
cc59ec59 1223
6f937416 1224 validate_actionline (line, b);
a7bdde9e
VP
1225}
1226
95a42b64 1227static void
896b6bda 1228commands_command_1 (const char *arg, int from_tty,
4a64f543 1229 struct command_line *control)
95a42b64 1230{
d1b0a7bf 1231 counted_command_line cmd;
95a42b64 1232
896b6bda
PA
1233 std::string new_arg;
1234
95a42b64
TT
1235 if (arg == NULL || !*arg)
1236 {
86b17b60 1237 if (breakpoint_count - prev_breakpoint_count > 1)
896b6bda
PA
1238 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1239 breakpoint_count);
95a42b64 1240 else if (breakpoint_count > 0)
896b6bda 1241 new_arg = string_printf ("%d", breakpoint_count);
48649e1b
TT
1242 arg = new_arg.c_str ();
1243 }
1244
1245 map_breakpoint_numbers
1246 (arg, [&] (breakpoint *b)
1247 {
1248 if (cmd == NULL)
1249 {
48649e1b 1250 if (control != NULL)
d1b0a7bf 1251 cmd = copy_command_lines (control->body_list[0]);
48649e1b
TT
1252 else
1253 {
81b1e71c
TT
1254 std::string str
1255 = string_printf (_("Type commands for breakpoint(s) "
1256 "%s, one per line."),
1257 arg);
48649e1b 1258
81b1e71c 1259 cmd = read_command_lines (&str[0],
d1b0a7bf
TT
1260 from_tty, 1,
1261 (is_tracepoint (b)
1262 ? check_tracepoint_command : 0),
1263 b);
48649e1b 1264 }
48649e1b
TT
1265 }
1266
1267 /* If a breakpoint was on the list more than once, we don't need to
1268 do anything. */
1269 if (b->commands != cmd)
1270 {
d1b0a7bf 1271 validate_commands_for_breakpoint (b, cmd.get ());
48649e1b
TT
1272 b->commands = cmd;
1273 observer_notify_breakpoint_modified (b);
1274 }
1275 });
95a42b64 1276
48649e1b 1277 if (cmd == NULL)
95a42b64 1278 error (_("No breakpoints specified."));
95a42b64
TT
1279}
1280
1281static void
0b39b52e 1282commands_command (const char *arg, int from_tty)
95a42b64
TT
1283{
1284 commands_command_1 (arg, from_tty, NULL);
c906108c 1285}
40c03ae8
EZ
1286
1287/* Like commands_command, but instead of reading the commands from
1288 input stream, takes them from an already parsed command structure.
1289
1290 This is used by cli-script.c to DTRT with breakpoint commands
1291 that are part of if and while bodies. */
1292enum command_control_type
896b6bda 1293commands_from_control_command (const char *arg, struct command_line *cmd)
40c03ae8 1294{
95a42b64
TT
1295 commands_command_1 (arg, 0, cmd);
1296 return simple_control;
40c03ae8 1297}
876fa593
JK
1298
1299/* Return non-zero if BL->TARGET_INFO contains valid information. */
1300
1301static int
1302bp_location_has_shadow (struct bp_location *bl)
1303{
1304 if (bl->loc_type != bp_loc_software_breakpoint)
1305 return 0;
1306 if (!bl->inserted)
1307 return 0;
1308 if (bl->target_info.shadow_len == 0)
e5dd4106 1309 /* BL isn't valid, or doesn't shadow memory. */
876fa593
JK
1310 return 0;
1311 return 1;
1312}
1313
9d497a19
PA
1314/* Update BUF, which is LEN bytes read from the target address
1315 MEMADDR, by replacing a memory breakpoint with its shadowed
1316 contents.
1317
1318 If READBUF is not NULL, this buffer must not overlap with the of
1319 the breakpoint location's shadow_contents buffer. Otherwise, a
1320 failed assertion internal error will be raised. */
1321
1322static void
1323one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1324 const gdb_byte *writebuf_org,
1325 ULONGEST memaddr, LONGEST len,
1326 struct bp_target_info *target_info,
1327 struct gdbarch *gdbarch)
1328{
1329 /* Now do full processing of the found relevant range of elements. */
1330 CORE_ADDR bp_addr = 0;
1331 int bp_size = 0;
1332 int bptoffset = 0;
1333
1334 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1335 current_program_space->aspace, 0))
1336 {
1337 /* The breakpoint is inserted in a different address space. */
1338 return;
1339 }
1340
1341 /* Addresses and length of the part of the breakpoint that
1342 we need to copy. */
1343 bp_addr = target_info->placed_address;
1344 bp_size = target_info->shadow_len;
1345
1346 if (bp_addr + bp_size <= memaddr)
1347 {
1348 /* The breakpoint is entirely before the chunk of memory we are
1349 reading. */
1350 return;
1351 }
1352
1353 if (bp_addr >= memaddr + len)
1354 {
1355 /* The breakpoint is entirely after the chunk of memory we are
1356 reading. */
1357 return;
1358 }
1359
1360 /* Offset within shadow_contents. */
1361 if (bp_addr < memaddr)
1362 {
1363 /* Only copy the second part of the breakpoint. */
1364 bp_size -= memaddr - bp_addr;
1365 bptoffset = memaddr - bp_addr;
1366 bp_addr = memaddr;
1367 }
1368
1369 if (bp_addr + bp_size > memaddr + len)
1370 {
1371 /* Only copy the first part of the breakpoint. */
1372 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1373 }
1374
1375 if (readbuf != NULL)
1376 {
1377 /* Verify that the readbuf buffer does not overlap with the
1378 shadow_contents buffer. */
1379 gdb_assert (target_info->shadow_contents >= readbuf + len
1380 || readbuf >= (target_info->shadow_contents
1381 + target_info->shadow_len));
1382
1383 /* Update the read buffer with this inserted breakpoint's
1384 shadow. */
1385 memcpy (readbuf + bp_addr - memaddr,
1386 target_info->shadow_contents + bptoffset, bp_size);
1387 }
1388 else
1389 {
1390 const unsigned char *bp;
0d5ed153
MR
1391 CORE_ADDR addr = target_info->reqstd_address;
1392 int placed_size;
9d497a19
PA
1393
1394 /* Update the shadow with what we want to write to memory. */
1395 memcpy (target_info->shadow_contents + bptoffset,
1396 writebuf_org + bp_addr - memaddr, bp_size);
1397
1398 /* Determine appropriate breakpoint contents and size for this
1399 address. */
0d5ed153 1400 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
9d497a19
PA
1401
1402 /* Update the final write buffer with this inserted
1403 breakpoint's INSN. */
1404 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1405 }
1406}
1407
8defab1a 1408/* Update BUF, which is LEN bytes read from the target address MEMADDR,
876fa593
JK
1409 by replacing any memory breakpoints with their shadowed contents.
1410
35c63cd8
JB
1411 If READBUF is not NULL, this buffer must not overlap with any of
1412 the breakpoint location's shadow_contents buffers. Otherwise,
1413 a failed assertion internal error will be raised.
1414
876fa593 1415 The range of shadowed area by each bp_location is:
f5336ca5
PA
1416 bl->address - bp_locations_placed_address_before_address_max
1417 up to bl->address + bp_locations_shadow_len_after_address_max
876fa593
JK
1418 The range we were requested to resolve shadows for is:
1419 memaddr ... memaddr + len
1420 Thus the safe cutoff boundaries for performance optimization are
35df4500 1421 memaddr + len <= (bl->address
f5336ca5 1422 - bp_locations_placed_address_before_address_max)
876fa593 1423 and:
f5336ca5 1424 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
c906108c 1425
8defab1a 1426void
f0ba3972
PA
1427breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1428 const gdb_byte *writebuf_org,
1429 ULONGEST memaddr, LONGEST len)
c906108c 1430{
4a64f543
MS
1431 /* Left boundary, right boundary and median element of our binary
1432 search. */
876fa593
JK
1433 unsigned bc_l, bc_r, bc;
1434
4a64f543
MS
1435 /* Find BC_L which is a leftmost element which may affect BUF
1436 content. It is safe to report lower value but a failure to
1437 report higher one. */
876fa593
JK
1438
1439 bc_l = 0;
f5336ca5 1440 bc_r = bp_locations_count;
876fa593
JK
1441 while (bc_l + 1 < bc_r)
1442 {
35df4500 1443 struct bp_location *bl;
876fa593
JK
1444
1445 bc = (bc_l + bc_r) / 2;
f5336ca5 1446 bl = bp_locations[bc];
876fa593 1447
4a64f543
MS
1448 /* Check first BL->ADDRESS will not overflow due to the added
1449 constant. Then advance the left boundary only if we are sure
1450 the BC element can in no way affect the BUF content (MEMADDR
1451 to MEMADDR + LEN range).
876fa593 1452
f5336ca5 1453 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
4a64f543
MS
1454 offset so that we cannot miss a breakpoint with its shadow
1455 range tail still reaching MEMADDR. */
c5aa993b 1456
f5336ca5 1457 if ((bl->address + bp_locations_shadow_len_after_address_max
35df4500 1458 >= bl->address)
f5336ca5 1459 && (bl->address + bp_locations_shadow_len_after_address_max
35df4500 1460 <= memaddr))
876fa593
JK
1461 bc_l = bc;
1462 else
1463 bc_r = bc;
1464 }
1465
128070bb
PA
1466 /* Due to the binary search above, we need to make sure we pick the
1467 first location that's at BC_L's address. E.g., if there are
1468 multiple locations at the same address, BC_L may end up pointing
1469 at a duplicate location, and miss the "master"/"inserted"
1470 location. Say, given locations L1, L2 and L3 at addresses A and
1471 B:
1472
1473 L1@A, L2@A, L3@B, ...
1474
1475 BC_L could end up pointing at location L2, while the "master"
1476 location could be L1. Since the `loc->inserted' flag is only set
1477 on "master" locations, we'd forget to restore the shadow of L1
1478 and L2. */
1479 while (bc_l > 0
f5336ca5 1480 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
128070bb
PA
1481 bc_l--;
1482
876fa593
JK
1483 /* Now do full processing of the found relevant range of elements. */
1484
f5336ca5 1485 for (bc = bc_l; bc < bp_locations_count; bc++)
c5aa993b 1486 {
f5336ca5 1487 struct bp_location *bl = bp_locations[bc];
876fa593 1488
35df4500
TJB
1489 /* bp_location array has BL->OWNER always non-NULL. */
1490 if (bl->owner->type == bp_none)
8a3fe4f8 1491 warning (_("reading through apparently deleted breakpoint #%d?"),
35df4500 1492 bl->owner->number);
ffce0d52 1493
e5dd4106 1494 /* Performance optimization: any further element can no longer affect BUF
876fa593
JK
1495 content. */
1496
f5336ca5
PA
1497 if (bl->address >= bp_locations_placed_address_before_address_max
1498 && memaddr + len <= (bl->address
1499 - bp_locations_placed_address_before_address_max))
876fa593
JK
1500 break;
1501
35df4500 1502 if (!bp_location_has_shadow (bl))
c5aa993b 1503 continue;
6c95b8df 1504
9d497a19
PA
1505 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1506 memaddr, len, &bl->target_info, bl->gdbarch);
1507 }
c906108c 1508}
9d497a19 1509
c906108c 1510\f
c5aa993b 1511
b775012e
LM
1512/* Return true if BPT is either a software breakpoint or a hardware
1513 breakpoint. */
1514
1515int
1516is_breakpoint (const struct breakpoint *bpt)
1517{
1518 return (bpt->type == bp_breakpoint
e7e0cddf
SS
1519 || bpt->type == bp_hardware_breakpoint
1520 || bpt->type == bp_dprintf);
b775012e
LM
1521}
1522
60e1c644
PA
1523/* Return true if BPT is of any hardware watchpoint kind. */
1524
a5606eee 1525static int
d77f58be 1526is_hardware_watchpoint (const struct breakpoint *bpt)
a5606eee
VP
1527{
1528 return (bpt->type == bp_hardware_watchpoint
1529 || bpt->type == bp_read_watchpoint
1530 || bpt->type == bp_access_watchpoint);
1531}
7270d8f2 1532
60e1c644
PA
1533/* Return true if BPT is of any watchpoint kind, hardware or
1534 software. */
1535
3a5c3e22 1536int
d77f58be 1537is_watchpoint (const struct breakpoint *bpt)
60e1c644
PA
1538{
1539 return (is_hardware_watchpoint (bpt)
1540 || bpt->type == bp_watchpoint);
1541}
1542
3a5c3e22
PA
1543/* Returns true if the current thread and its running state are safe
1544 to evaluate or update watchpoint B. Watchpoints on local
1545 expressions need to be evaluated in the context of the thread that
1546 was current when the watchpoint was created, and, that thread needs
1547 to be stopped to be able to select the correct frame context.
1548 Watchpoints on global expressions can be evaluated on any thread,
1549 and in any state. It is presently left to the target allowing
1550 memory accesses when threads are running. */
f6bc2008
PA
1551
1552static int
3a5c3e22 1553watchpoint_in_thread_scope (struct watchpoint *b)
f6bc2008 1554{
c1fc2657 1555 return (b->pspace == current_program_space
d0d8b0c6
JK
1556 && (ptid_equal (b->watchpoint_thread, null_ptid)
1557 || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1558 && !is_executing (inferior_ptid))));
f6bc2008
PA
1559}
1560
d0fb5eae
JK
1561/* Set watchpoint B to disp_del_at_next_stop, even including its possible
1562 associated bp_watchpoint_scope breakpoint. */
1563
1564static void
3a5c3e22 1565watchpoint_del_at_next_stop (struct watchpoint *w)
d0fb5eae 1566{
c1fc2657 1567 if (w->related_breakpoint != w)
d0fb5eae 1568 {
c1fc2657
SM
1569 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1570 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1571 w->related_breakpoint->disposition = disp_del_at_next_stop;
1572 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1573 w->related_breakpoint = w;
d0fb5eae 1574 }
c1fc2657 1575 w->disposition = disp_del_at_next_stop;
d0fb5eae
JK
1576}
1577
bb9d5f81
PP
1578/* Extract a bitfield value from value VAL using the bit parameters contained in
1579 watchpoint W. */
1580
1581static struct value *
1582extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1583{
1584 struct value *bit_val;
1585
1586 if (val == NULL)
1587 return NULL;
1588
1589 bit_val = allocate_value (value_type (val));
1590
1591 unpack_value_bitfield (bit_val,
1592 w->val_bitpos,
1593 w->val_bitsize,
1594 value_contents_for_printing (val),
1595 value_offset (val),
1596 val);
1597
1598 return bit_val;
1599}
1600
c6d81124
PA
1601/* Allocate a dummy location and add it to B, which must be a software
1602 watchpoint. This is required because even if a software watchpoint
1603 is not watching any memory, bpstat_stop_status requires a location
1604 to be able to report stops. */
1605
1606static void
1607software_watchpoint_add_no_memory_location (struct breakpoint *b,
1608 struct program_space *pspace)
1609{
1610 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1611
1612 b->loc = allocate_bp_location (b);
1613 b->loc->pspace = pspace;
1614 b->loc->address = -1;
1615 b->loc->length = -1;
1616}
1617
1618/* Returns true if B is a software watchpoint that is not watching any
1619 memory (e.g., "watch $pc"). */
1620
1621static int
1622is_no_memory_software_watchpoint (struct breakpoint *b)
1623{
1624 return (b->type == bp_watchpoint
1625 && b->loc != NULL
1626 && b->loc->next == NULL
1627 && b->loc->address == -1
1628 && b->loc->length == -1);
1629}
1630
567e1b4e
JB
1631/* Assuming that B is a watchpoint:
1632 - Reparse watchpoint expression, if REPARSE is non-zero
a5606eee 1633 - Evaluate expression and store the result in B->val
567e1b4e
JB
1634 - Evaluate the condition if there is one, and store the result
1635 in b->loc->cond.
a5606eee
VP
1636 - Update the list of values that must be watched in B->loc.
1637
4a64f543
MS
1638 If the watchpoint disposition is disp_del_at_next_stop, then do
1639 nothing. If this is local watchpoint that is out of scope, delete
1640 it.
1641
1642 Even with `set breakpoint always-inserted on' the watchpoints are
1643 removed + inserted on each stop here. Normal breakpoints must
1644 never be removed because they might be missed by a running thread
1645 when debugging in non-stop mode. On the other hand, hardware
1646 watchpoints (is_hardware_watchpoint; processed here) are specific
1647 to each LWP since they are stored in each LWP's hardware debug
1648 registers. Therefore, such LWP must be stopped first in order to
1649 be able to modify its hardware watchpoints.
1650
1651 Hardware watchpoints must be reset exactly once after being
1652 presented to the user. It cannot be done sooner, because it would
1653 reset the data used to present the watchpoint hit to the user. And
1654 it must not be done later because it could display the same single
1655 watchpoint hit during multiple GDB stops. Note that the latter is
1656 relevant only to the hardware watchpoint types bp_read_watchpoint
1657 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1658 not user-visible - its hit is suppressed if the memory content has
1659 not changed.
1660
1661 The following constraints influence the location where we can reset
1662 hardware watchpoints:
1663
1664 * target_stopped_by_watchpoint and target_stopped_data_address are
1665 called several times when GDB stops.
1666
1667 [linux]
1668 * Multiple hardware watchpoints can be hit at the same time,
1669 causing GDB to stop. GDB only presents one hardware watchpoint
1670 hit at a time as the reason for stopping, and all the other hits
1671 are presented later, one after the other, each time the user
1672 requests the execution to be resumed. Execution is not resumed
1673 for the threads still having pending hit event stored in
1674 LWP_INFO->STATUS. While the watchpoint is already removed from
1675 the inferior on the first stop the thread hit event is kept being
1676 reported from its cached value by linux_nat_stopped_data_address
1677 until the real thread resume happens after the watchpoint gets
1678 presented and thus its LWP_INFO->STATUS gets reset.
1679
1680 Therefore the hardware watchpoint hit can get safely reset on the
1681 watchpoint removal from inferior. */
a79d3c27 1682
b40ce68a 1683static void
3a5c3e22 1684update_watchpoint (struct watchpoint *b, int reparse)
7270d8f2 1685{
a5606eee 1686 int within_current_scope;
a5606eee 1687 struct frame_id saved_frame_id;
66076460 1688 int frame_saved;
a5606eee 1689
f6bc2008
PA
1690 /* If this is a local watchpoint, we only want to check if the
1691 watchpoint frame is in scope if the current thread is the thread
1692 that was used to create the watchpoint. */
1693 if (!watchpoint_in_thread_scope (b))
1694 return;
1695
c1fc2657 1696 if (b->disposition == disp_del_at_next_stop)
a5606eee
VP
1697 return;
1698
66076460 1699 frame_saved = 0;
a5606eee
VP
1700
1701 /* Determine if the watchpoint is within scope. */
1702 if (b->exp_valid_block == NULL)
1703 within_current_scope = 1;
1704 else
1705 {
b5db5dfc
UW
1706 struct frame_info *fi = get_current_frame ();
1707 struct gdbarch *frame_arch = get_frame_arch (fi);
1708 CORE_ADDR frame_pc = get_frame_pc (fi);
1709
c9cf6e20
MG
1710 /* If we're at a point where the stack has been destroyed
1711 (e.g. in a function epilogue), unwinding may not work
1712 properly. Do not attempt to recreate locations at this
b5db5dfc 1713 point. See similar comments in watchpoint_check. */
c9cf6e20 1714 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
b5db5dfc 1715 return;
66076460
DJ
1716
1717 /* Save the current frame's ID so we can restore it after
1718 evaluating the watchpoint expression on its own frame. */
1719 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1720 took a frame parameter, so that we didn't have to change the
1721 selected frame. */
1722 frame_saved = 1;
1723 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1724
a5606eee
VP
1725 fi = frame_find_by_id (b->watchpoint_frame);
1726 within_current_scope = (fi != NULL);
1727 if (within_current_scope)
1728 select_frame (fi);
1729 }
1730
b5db5dfc
UW
1731 /* We don't free locations. They are stored in the bp_location array
1732 and update_global_location_list will eventually delete them and
1733 remove breakpoints if needed. */
c1fc2657 1734 b->loc = NULL;
b5db5dfc 1735
a5606eee
VP
1736 if (within_current_scope && reparse)
1737 {
bbc13ae3 1738 const char *s;
d63d0675 1739
4d01a485 1740 b->exp.reset ();
d63d0675 1741 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1bb9788d 1742 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
a5606eee
VP
1743 /* If the meaning of expression itself changed, the old value is
1744 no longer relevant. We don't want to report a watchpoint hit
1745 to the user when the old value and the new value may actually
1746 be completely different objects. */
1747 value_free (b->val);
fa4727a6
DJ
1748 b->val = NULL;
1749 b->val_valid = 0;
60e1c644
PA
1750
1751 /* Note that unlike with breakpoints, the watchpoint's condition
1752 expression is stored in the breakpoint object, not in the
1753 locations (re)created below. */
c1fc2657 1754 if (b->cond_string != NULL)
60e1c644 1755 {
4d01a485 1756 b->cond_exp.reset ();
60e1c644 1757
c1fc2657 1758 s = b->cond_string;
1bb9788d 1759 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
60e1c644 1760 }
a5606eee 1761 }
a5606eee
VP
1762
1763 /* If we failed to parse the expression, for example because
1764 it refers to a global variable in a not-yet-loaded shared library,
1765 don't try to insert watchpoint. We don't automatically delete
1766 such watchpoint, though, since failure to parse expression
1767 is different from out-of-scope watchpoint. */
e8369a73 1768 if (!target_has_execution)
2d134ed3
PA
1769 {
1770 /* Without execution, memory can't change. No use to try and
1771 set watchpoint locations. The watchpoint will be reset when
1772 the target gains execution, through breakpoint_re_set. */
e8369a73
AB
1773 if (!can_use_hw_watchpoints)
1774 {
c1fc2657
SM
1775 if (b->ops->works_in_software_mode (b))
1776 b->type = bp_watchpoint;
e8369a73 1777 else
638aa5a1
AB
1778 error (_("Can't set read/access watchpoint when "
1779 "hardware watchpoints are disabled."));
e8369a73 1780 }
2d134ed3
PA
1781 }
1782 else if (within_current_scope && b->exp)
a5606eee 1783 {
0cf6dd15 1784 int pc = 0;
fa4727a6 1785 struct value *val_chain, *v, *result, *next;
2d134ed3 1786 struct program_space *frame_pspace;
a5606eee 1787
4d01a485 1788 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
a5606eee 1789
a5606eee
VP
1790 /* Avoid setting b->val if it's already set. The meaning of
1791 b->val is 'the last value' user saw, and we should update
1792 it only if we reported that last value to user. As it
9c06b0b4
TJB
1793 happens, the code that reports it updates b->val directly.
1794 We don't keep track of the memory value for masked
1795 watchpoints. */
c1fc2657 1796 if (!b->val_valid && !is_masked_watchpoint (b))
fa4727a6 1797 {
bb9d5f81
PP
1798 if (b->val_bitsize != 0)
1799 {
1800 v = extract_bitfield_from_watchpoint_value (b, v);
1801 if (v != NULL)
1802 release_value (v);
1803 }
fa4727a6
DJ
1804 b->val = v;
1805 b->val_valid = 1;
1806 }
a5606eee 1807
2d134ed3
PA
1808 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1809
a5606eee 1810 /* Look at each value on the value chain. */
9fa40276 1811 for (v = val_chain; v; v = value_next (v))
a5606eee
VP
1812 {
1813 /* If it's a memory location, and GDB actually needed
1814 its contents to evaluate the expression, then we
fa4727a6
DJ
1815 must watch it. If the first value returned is
1816 still lazy, that means an error occurred reading it;
1817 watch it anyway in case it becomes readable. */
a5606eee 1818 if (VALUE_LVAL (v) == lval_memory
fa4727a6 1819 && (v == val_chain || ! value_lazy (v)))
a5606eee
VP
1820 {
1821 struct type *vtype = check_typedef (value_type (v));
7270d8f2 1822
a5606eee
VP
1823 /* We only watch structs and arrays if user asked
1824 for it explicitly, never if they just happen to
1825 appear in the middle of some value chain. */
fa4727a6 1826 if (v == result
a5606eee
VP
1827 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1828 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1829 {
1830 CORE_ADDR addr;
f486487f 1831 enum target_hw_bp_type type;
a5606eee 1832 struct bp_location *loc, **tmp;
bb9d5f81
PP
1833 int bitpos = 0, bitsize = 0;
1834
1835 if (value_bitsize (v) != 0)
1836 {
1837 /* Extract the bit parameters out from the bitfield
1838 sub-expression. */
1839 bitpos = value_bitpos (v);
1840 bitsize = value_bitsize (v);
1841 }
1842 else if (v == result && b->val_bitsize != 0)
1843 {
1844 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1845 lvalue whose bit parameters are saved in the fields
1846 VAL_BITPOS and VAL_BITSIZE. */
1847 bitpos = b->val_bitpos;
1848 bitsize = b->val_bitsize;
1849 }
a5606eee 1850
42ae5230 1851 addr = value_address (v);
bb9d5f81
PP
1852 if (bitsize != 0)
1853 {
1854 /* Skip the bytes that don't contain the bitfield. */
1855 addr += bitpos / 8;
1856 }
1857
a5606eee 1858 type = hw_write;
c1fc2657 1859 if (b->type == bp_read_watchpoint)
a5606eee 1860 type = hw_read;
c1fc2657 1861 else if (b->type == bp_access_watchpoint)
a5606eee 1862 type = hw_access;
3a5c3e22 1863
c1fc2657
SM
1864 loc = allocate_bp_location (b);
1865 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
a5606eee
VP
1866 ;
1867 *tmp = loc;
a6d9a66e 1868 loc->gdbarch = get_type_arch (value_type (v));
6c95b8df
PA
1869
1870 loc->pspace = frame_pspace;
a5606eee 1871 loc->address = addr;
bb9d5f81
PP
1872
1873 if (bitsize != 0)
1874 {
1875 /* Just cover the bytes that make up the bitfield. */
1876 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1877 }
1878 else
1879 loc->length = TYPE_LENGTH (value_type (v));
1880
a5606eee
VP
1881 loc->watchpoint_type = type;
1882 }
1883 }
9fa40276
TJB
1884 }
1885
1886 /* Change the type of breakpoint between hardware assisted or
1887 an ordinary watchpoint depending on the hardware support
1888 and free hardware slots. REPARSE is set when the inferior
1889 is started. */
a9634178 1890 if (reparse)
9fa40276 1891 {
e09342b5 1892 int reg_cnt;
9fa40276
TJB
1893 enum bp_loc_type loc_type;
1894 struct bp_location *bl;
a5606eee 1895
a9634178 1896 reg_cnt = can_use_hardware_watchpoint (val_chain);
e09342b5
TJB
1897
1898 if (reg_cnt)
9fa40276
TJB
1899 {
1900 int i, target_resources_ok, other_type_used;
a1398e0c 1901 enum bptype type;
9fa40276 1902
a9634178
TJB
1903 /* Use an exact watchpoint when there's only one memory region to be
1904 watched, and only one debug register is needed to watch it. */
1905 b->exact = target_exact_watchpoints && reg_cnt == 1;
1906
9fa40276 1907 /* We need to determine how many resources are already
e09342b5
TJB
1908 used for all other hardware watchpoints plus this one
1909 to see if we still have enough resources to also fit
a1398e0c
PA
1910 this watchpoint in as well. */
1911
1912 /* If this is a software watchpoint, we try to turn it
1913 to a hardware one -- count resources as if B was of
1914 hardware watchpoint type. */
c1fc2657 1915 type = b->type;
a1398e0c
PA
1916 if (type == bp_watchpoint)
1917 type = bp_hardware_watchpoint;
1918
1919 /* This watchpoint may or may not have been placed on
1920 the list yet at this point (it won't be in the list
1921 if we're trying to create it for the first time,
1922 through watch_command), so always account for it
1923 manually. */
1924
1925 /* Count resources used by all watchpoints except B. */
c1fc2657 1926 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
a1398e0c
PA
1927
1928 /* Add in the resources needed for B. */
c1fc2657 1929 i += hw_watchpoint_use_count (b);
a1398e0c
PA
1930
1931 target_resources_ok
1932 = target_can_use_hardware_watchpoint (type, i, other_type_used);
e09342b5 1933 if (target_resources_ok <= 0)
a9634178 1934 {
c1fc2657 1935 int sw_mode = b->ops->works_in_software_mode (b);
9c06b0b4
TJB
1936
1937 if (target_resources_ok == 0 && !sw_mode)
a9634178
TJB
1938 error (_("Target does not support this type of "
1939 "hardware watchpoint."));
9c06b0b4
TJB
1940 else if (target_resources_ok < 0 && !sw_mode)
1941 error (_("There are not enough available hardware "
1942 "resources for this watchpoint."));
a1398e0c
PA
1943
1944 /* Downgrade to software watchpoint. */
c1fc2657 1945 b->type = bp_watchpoint;
a1398e0c
PA
1946 }
1947 else
1948 {
1949 /* If this was a software watchpoint, we've just
1950 found we have enough resources to turn it to a
1951 hardware watchpoint. Otherwise, this is a
1952 nop. */
c1fc2657 1953 b->type = type;
a9634178 1954 }
9fa40276 1955 }
c1fc2657 1956 else if (!b->ops->works_in_software_mode (b))
638aa5a1
AB
1957 {
1958 if (!can_use_hw_watchpoints)
1959 error (_("Can't set read/access watchpoint when "
1960 "hardware watchpoints are disabled."));
1961 else
1962 error (_("Expression cannot be implemented with "
1963 "read/access watchpoint."));
1964 }
9fa40276 1965 else
c1fc2657 1966 b->type = bp_watchpoint;
9fa40276 1967
c1fc2657 1968 loc_type = (b->type == bp_watchpoint? bp_loc_other
9fa40276 1969 : bp_loc_hardware_watchpoint);
c1fc2657 1970 for (bl = b->loc; bl; bl = bl->next)
9fa40276
TJB
1971 bl->loc_type = loc_type;
1972 }
1973
1974 for (v = val_chain; v; v = next)
1975 {
a5606eee
VP
1976 next = value_next (v);
1977 if (v != b->val)
1978 value_free (v);
1979 }
1980
c7437ca6
PA
1981 /* If a software watchpoint is not watching any memory, then the
1982 above left it without any location set up. But,
1983 bpstat_stop_status requires a location to be able to report
1984 stops, so make sure there's at least a dummy one. */
c1fc2657
SM
1985 if (b->type == bp_watchpoint && b->loc == NULL)
1986 software_watchpoint_add_no_memory_location (b, frame_pspace);
a5606eee
VP
1987 }
1988 else if (!within_current_scope)
7270d8f2 1989 {
ac74f770
MS
1990 printf_filtered (_("\
1991Watchpoint %d deleted because the program has left the block\n\
1992in which its expression is valid.\n"),
c1fc2657 1993 b->number);
d0fb5eae 1994 watchpoint_del_at_next_stop (b);
7270d8f2 1995 }
a5606eee
VP
1996
1997 /* Restore the selected frame. */
66076460
DJ
1998 if (frame_saved)
1999 select_frame (frame_find_by_id (saved_frame_id));
7270d8f2
OF
2000}
2001
a5606eee 2002
74960c60 2003/* Returns 1 iff breakpoint location should be
1e4d1764
YQ
2004 inserted in the inferior. We don't differentiate the type of BL's owner
2005 (breakpoint vs. tracepoint), although insert_location in tracepoint's
2006 breakpoint_ops is not defined, because in insert_bp_location,
2007 tracepoint's insert_location will not be called. */
74960c60 2008static int
35df4500 2009should_be_inserted (struct bp_location *bl)
74960c60 2010{
35df4500 2011 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
74960c60
VP
2012 return 0;
2013
35df4500 2014 if (bl->owner->disposition == disp_del_at_next_stop)
74960c60
VP
2015 return 0;
2016
35df4500 2017 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
74960c60
VP
2018 return 0;
2019
f8eba3c6
TT
2020 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2021 return 0;
2022
56710373
PA
2023 /* This is set for example, when we're attached to the parent of a
2024 vfork, and have detached from the child. The child is running
2025 free, and we expect it to do an exec or exit, at which point the
2026 OS makes the parent schedulable again (and the target reports
2027 that the vfork is done). Until the child is done with the shared
2028 memory region, do not insert breakpoints in the parent, otherwise
2029 the child could still trip on the parent's breakpoints. Since
2030 the parent is blocked anyway, it won't miss any breakpoint. */
35df4500 2031 if (bl->pspace->breakpoints_not_allowed)
56710373
PA
2032 return 0;
2033
31e77af2 2034 /* Don't insert a breakpoint if we're trying to step past its
21edc42f
YQ
2035 location, except if the breakpoint is a single-step breakpoint,
2036 and the breakpoint's thread is the thread which is stepping past
2037 a breakpoint. */
31e77af2
PA
2038 if ((bl->loc_type == bp_loc_software_breakpoint
2039 || bl->loc_type == bp_loc_hardware_breakpoint)
2040 && stepping_past_instruction_at (bl->pspace->aspace,
21edc42f
YQ
2041 bl->address)
2042 /* The single-step breakpoint may be inserted at the location
2043 we're trying to step if the instruction branches to itself.
2044 However, the instruction won't be executed at all and it may
2045 break the semantics of the instruction, for example, the
2046 instruction is a conditional branch or updates some flags.
2047 We can't fix it unless GDB is able to emulate the instruction
2048 or switch to displaced stepping. */
2049 && !(bl->owner->type == bp_single_step
2050 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
e558d7c1
PA
2051 {
2052 if (debug_infrun)
2053 {
2054 fprintf_unfiltered (gdb_stdlog,
2055 "infrun: skipping breakpoint: "
2056 "stepping past insn at: %s\n",
2057 paddress (bl->gdbarch, bl->address));
2058 }
2059 return 0;
2060 }
31e77af2 2061
963f9c80
PA
2062 /* Don't insert watchpoints if we're trying to step past the
2063 instruction that triggered one. */
2064 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2065 && stepping_past_nonsteppable_watchpoint ())
2066 {
2067 if (debug_infrun)
2068 {
2069 fprintf_unfiltered (gdb_stdlog,
2070 "infrun: stepping past non-steppable watchpoint. "
2071 "skipping watchpoint at %s:%d\n",
2072 paddress (bl->gdbarch, bl->address),
2073 bl->length);
2074 }
2075 return 0;
2076 }
2077
74960c60
VP
2078 return 1;
2079}
2080
934709f0
PW
2081/* Same as should_be_inserted but does the check assuming
2082 that the location is not duplicated. */
2083
2084static int
2085unduplicated_should_be_inserted (struct bp_location *bl)
2086{
2087 int result;
2088 const int save_duplicate = bl->duplicate;
2089
2090 bl->duplicate = 0;
2091 result = should_be_inserted (bl);
2092 bl->duplicate = save_duplicate;
2093 return result;
2094}
2095
b775012e
LM
2096/* Parses a conditional described by an expression COND into an
2097 agent expression bytecode suitable for evaluation
2098 by the bytecode interpreter. Return NULL if there was
2099 any error during parsing. */
2100
833177a4 2101static agent_expr_up
b775012e
LM
2102parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2103{
833177a4 2104 if (cond == NULL)
b775012e
LM
2105 return NULL;
2106
833177a4
PA
2107 agent_expr_up aexpr;
2108
b775012e
LM
2109 /* We don't want to stop processing, so catch any errors
2110 that may show up. */
492d29ea 2111 TRY
b775012e 2112 {
036e657b 2113 aexpr = gen_eval_for_expr (scope, cond);
b775012e
LM
2114 }
2115
492d29ea 2116 CATCH (ex, RETURN_MASK_ERROR)
b775012e
LM
2117 {
2118 /* If we got here, it means the condition could not be parsed to a valid
2119 bytecode expression and thus can't be evaluated on the target's side.
2120 It's no use iterating through the conditions. */
b775012e 2121 }
492d29ea 2122 END_CATCH
b775012e
LM
2123
2124 /* We have a valid agent expression. */
2125 return aexpr;
2126}
2127
2128/* Based on location BL, create a list of breakpoint conditions to be
2129 passed on to the target. If we have duplicated locations with different
2130 conditions, we will add such conditions to the list. The idea is that the
2131 target will evaluate the list of conditions and will only notify GDB when
2132 one of them is true. */
2133
2134static void
2135build_target_condition_list (struct bp_location *bl)
2136{
2137 struct bp_location **locp = NULL, **loc2p;
2138 int null_condition_or_parse_error = 0;
2139 int modified = bl->needs_update;
2140 struct bp_location *loc;
2141
8b4f3082 2142 /* Release conditions left over from a previous insert. */
3cde5c42 2143 bl->target_info.conditions.clear ();
8b4f3082 2144
b775012e
LM
2145 /* This is only meaningful if the target is
2146 evaluating conditions and if the user has
2147 opted for condition evaluation on the target's
2148 side. */
2149 if (gdb_evaluates_breakpoint_condition_p ()
2150 || !target_supports_evaluation_of_breakpoint_conditions ())
2151 return;
2152
2153 /* Do a first pass to check for locations with no assigned
2154 conditions or conditions that fail to parse to a valid agent expression
2155 bytecode. If any of these happen, then it's no use to send conditions
2156 to the target since this location will always trigger and generate a
2157 response back to GDB. */
2158 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2159 {
2160 loc = (*loc2p);
2161 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2162 {
2163 if (modified)
2164 {
b775012e
LM
2165 /* Re-parse the conditions since something changed. In that
2166 case we already freed the condition bytecodes (see
2167 force_breakpoint_reinsertion). We just
2168 need to parse the condition to bytecodes again. */
833177a4
PA
2169 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2170 loc->cond.get ());
b775012e
LM
2171 }
2172
2173 /* If we have a NULL bytecode expression, it means something
2174 went wrong or we have a null condition expression. */
2175 if (!loc->cond_bytecode)
2176 {
2177 null_condition_or_parse_error = 1;
2178 break;
2179 }
2180 }
2181 }
2182
2183 /* If any of these happened, it means we will have to evaluate the conditions
2184 for the location's address on gdb's side. It is no use keeping bytecodes
2185 for all the other duplicate locations, thus we free all of them here.
2186
2187 This is so we have a finer control over which locations' conditions are
2188 being evaluated by GDB or the remote stub. */
2189 if (null_condition_or_parse_error)
2190 {
2191 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2192 {
2193 loc = (*loc2p);
2194 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2195 {
2196 /* Only go as far as the first NULL bytecode is
2197 located. */
2198 if (!loc->cond_bytecode)
2199 return;
2200
833177a4 2201 loc->cond_bytecode.reset ();
b775012e
LM
2202 }
2203 }
2204 }
2205
2206 /* No NULL conditions or failed bytecode generation. Build a condition list
2207 for this location's address. */
2208 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2209 {
2210 loc = (*loc2p);
2211 if (loc->cond
2212 && is_breakpoint (loc->owner)
2213 && loc->pspace->num == bl->pspace->num
2214 && loc->owner->enable_state == bp_enabled
2215 && loc->enabled)
3cde5c42
PA
2216 {
2217 /* Add the condition to the vector. This will be used later
2218 to send the conditions to the target. */
2219 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2220 }
b775012e
LM
2221 }
2222
2223 return;
2224}
2225
d3ce09f5
SS
2226/* Parses a command described by string CMD into an agent expression
2227 bytecode suitable for evaluation by the bytecode interpreter.
2228 Return NULL if there was any error during parsing. */
2229
833177a4 2230static agent_expr_up
d3ce09f5
SS
2231parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2232{
2233 struct cleanup *old_cleanups = 0;
4d01a485 2234 struct expression **argvec;
bbc13ae3
KS
2235 const char *cmdrest;
2236 const char *format_start, *format_end;
d3ce09f5
SS
2237 struct format_piece *fpieces;
2238 int nargs;
2239 struct gdbarch *gdbarch = get_current_arch ();
2240
833177a4 2241 if (cmd == NULL)
d3ce09f5
SS
2242 return NULL;
2243
2244 cmdrest = cmd;
2245
2246 if (*cmdrest == ',')
2247 ++cmdrest;
f1735a53 2248 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2249
2250 if (*cmdrest++ != '"')
2251 error (_("No format string following the location"));
2252
2253 format_start = cmdrest;
2254
2255 fpieces = parse_format_string (&cmdrest);
2256
2257 old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2258
2259 format_end = cmdrest;
2260
2261 if (*cmdrest++ != '"')
2262 error (_("Bad format string, non-terminated '\"'."));
2263
f1735a53 2264 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2265
2266 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2267 error (_("Invalid argument syntax"));
2268
2269 if (*cmdrest == ',')
2270 cmdrest++;
f1735a53 2271 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2272
2273 /* For each argument, make an expression. */
2274
2275 argvec = (struct expression **) alloca (strlen (cmd)
2276 * sizeof (struct expression *));
2277
2278 nargs = 0;
2279 while (*cmdrest != '\0')
2280 {
bbc13ae3 2281 const char *cmd1;
d3ce09f5
SS
2282
2283 cmd1 = cmdrest;
4d01a485
PA
2284 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2285 argvec[nargs++] = expr.release ();
d3ce09f5
SS
2286 cmdrest = cmd1;
2287 if (*cmdrest == ',')
2288 ++cmdrest;
2289 }
2290
833177a4
PA
2291 agent_expr_up aexpr;
2292
d3ce09f5
SS
2293 /* We don't want to stop processing, so catch any errors
2294 that may show up. */
492d29ea 2295 TRY
d3ce09f5 2296 {
036e657b
JB
2297 aexpr = gen_printf (scope, gdbarch, 0, 0,
2298 format_start, format_end - format_start,
2299 fpieces, nargs, argvec);
d3ce09f5 2300 }
492d29ea 2301 CATCH (ex, RETURN_MASK_ERROR)
d3ce09f5
SS
2302 {
2303 /* If we got here, it means the command could not be parsed to a valid
2304 bytecode expression and thus can't be evaluated on the target's side.
2305 It's no use iterating through the other commands. */
d3ce09f5 2306 }
492d29ea
PA
2307 END_CATCH
2308
2309 do_cleanups (old_cleanups);
d3ce09f5 2310
d3ce09f5
SS
2311 /* We have a valid agent expression, return it. */
2312 return aexpr;
2313}
2314
2315/* Based on location BL, create a list of breakpoint commands to be
2316 passed on to the target. If we have duplicated locations with
2317 different commands, we will add any such to the list. */
2318
2319static void
2320build_target_command_list (struct bp_location *bl)
2321{
2322 struct bp_location **locp = NULL, **loc2p;
2323 int null_command_or_parse_error = 0;
2324 int modified = bl->needs_update;
2325 struct bp_location *loc;
2326
3cde5c42
PA
2327 /* Clear commands left over from a previous insert. */
2328 bl->target_info.tcommands.clear ();
8b4f3082 2329
41fac0cf 2330 if (!target_can_run_breakpoint_commands ())
d3ce09f5
SS
2331 return;
2332
41fac0cf
PA
2333 /* For now, limit to agent-style dprintf breakpoints. */
2334 if (dprintf_style != dprintf_style_agent)
d3ce09f5
SS
2335 return;
2336
41fac0cf
PA
2337 /* For now, if we have any duplicate location that isn't a dprintf,
2338 don't install the target-side commands, as that would make the
2339 breakpoint not be reported to the core, and we'd lose
2340 control. */
2341 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2342 {
2343 loc = (*loc2p);
2344 if (is_breakpoint (loc->owner)
2345 && loc->pspace->num == bl->pspace->num
2346 && loc->owner->type != bp_dprintf)
2347 return;
2348 }
2349
d3ce09f5
SS
2350 /* Do a first pass to check for locations with no assigned
2351 conditions or conditions that fail to parse to a valid agent expression
2352 bytecode. If any of these happen, then it's no use to send conditions
2353 to the target since this location will always trigger and generate a
2354 response back to GDB. */
2355 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2356 {
2357 loc = (*loc2p);
2358 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2359 {
2360 if (modified)
2361 {
d3ce09f5
SS
2362 /* Re-parse the commands since something changed. In that
2363 case we already freed the command bytecodes (see
2364 force_breakpoint_reinsertion). We just
2365 need to parse the command to bytecodes again. */
833177a4
PA
2366 loc->cmd_bytecode
2367 = parse_cmd_to_aexpr (bl->address,
2368 loc->owner->extra_string);
d3ce09f5
SS
2369 }
2370
2371 /* If we have a NULL bytecode expression, it means something
2372 went wrong or we have a null command expression. */
2373 if (!loc->cmd_bytecode)
2374 {
2375 null_command_or_parse_error = 1;
2376 break;
2377 }
2378 }
2379 }
2380
2381 /* If anything failed, then we're not doing target-side commands,
2382 and so clean up. */
2383 if (null_command_or_parse_error)
2384 {
2385 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2386 {
2387 loc = (*loc2p);
2388 if (is_breakpoint (loc->owner)
2389 && loc->pspace->num == bl->pspace->num)
2390 {
2391 /* Only go as far as the first NULL bytecode is
2392 located. */
40fb6c5e 2393 if (loc->cmd_bytecode == NULL)
d3ce09f5
SS
2394 return;
2395
833177a4 2396 loc->cmd_bytecode.reset ();
d3ce09f5
SS
2397 }
2398 }
2399 }
2400
2401 /* No NULL commands or failed bytecode generation. Build a command list
2402 for this location's address. */
2403 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2404 {
2405 loc = (*loc2p);
2406 if (loc->owner->extra_string
2407 && is_breakpoint (loc->owner)
2408 && loc->pspace->num == bl->pspace->num
2409 && loc->owner->enable_state == bp_enabled
2410 && loc->enabled)
3cde5c42
PA
2411 {
2412 /* Add the command to the vector. This will be used later
2413 to send the commands to the target. */
2414 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2415 }
d3ce09f5
SS
2416 }
2417
2418 bl->target_info.persist = 0;
2419 /* Maybe flag this location as persistent. */
2420 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2421 bl->target_info.persist = 1;
2422}
2423
833b7ab5
YQ
2424/* Return the kind of breakpoint on address *ADDR. Get the kind
2425 of breakpoint according to ADDR except single-step breakpoint.
2426 Get the kind of single-step breakpoint according to the current
2427 registers state. */
cd6c3b4f
YQ
2428
2429static int
2430breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2431{
833b7ab5
YQ
2432 if (bl->owner->type == bp_single_step)
2433 {
2434 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2435 struct regcache *regcache;
2436
2437 regcache = get_thread_regcache (thr->ptid);
2438
2439 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2440 regcache, addr);
2441 }
2442 else
2443 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
cd6c3b4f
YQ
2444}
2445
35df4500
TJB
2446/* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2447 location. Any error messages are printed to TMP_ERROR_STREAM; and
3fbb6ffa 2448 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
c30eee59
TJB
2449 Returns 0 for success, 1 if the bp_location type is not supported or
2450 -1 for failure.
879bfdc2 2451
4a64f543
MS
2452 NOTE drow/2003-09-09: This routine could be broken down to an
2453 object-style method for each breakpoint or catchpoint type. */
26bb91f3 2454static int
35df4500 2455insert_bp_location (struct bp_location *bl,
26bb91f3 2456 struct ui_file *tmp_error_stream,
3fbb6ffa 2457 int *disabled_breaks,
dd61ec5c
MW
2458 int *hw_breakpoint_error,
2459 int *hw_bp_error_explained_already)
879bfdc2 2460{
0000e5cc
PA
2461 enum errors bp_err = GDB_NO_ERROR;
2462 const char *bp_err_message = NULL;
879bfdc2 2463
b775012e 2464 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2465 return 0;
2466
35c63cd8
JB
2467 /* Note we don't initialize bl->target_info, as that wipes out
2468 the breakpoint location's shadow_contents if the breakpoint
2469 is still inserted at that location. This in turn breaks
2470 target_read_memory which depends on these buffers when
2471 a memory read is requested at the breakpoint location:
2472 Once the target_info has been wiped, we fail to see that
2473 we have a breakpoint inserted at that address and thus
2474 read the breakpoint instead of returning the data saved in
2475 the breakpoint location's shadow contents. */
0d5ed153 2476 bl->target_info.reqstd_address = bl->address;
35df4500 2477 bl->target_info.placed_address_space = bl->pspace->aspace;
f1310107 2478 bl->target_info.length = bl->length;
8181d85f 2479
b775012e
LM
2480 /* When working with target-side conditions, we must pass all the conditions
2481 for the same breakpoint address down to the target since GDB will not
2482 insert those locations. With a list of breakpoint conditions, the target
2483 can decide when to stop and notify GDB. */
2484
2485 if (is_breakpoint (bl->owner))
2486 {
2487 build_target_condition_list (bl);
d3ce09f5
SS
2488 build_target_command_list (bl);
2489 /* Reset the modification marker. */
b775012e
LM
2490 bl->needs_update = 0;
2491 }
2492
35df4500
TJB
2493 if (bl->loc_type == bp_loc_software_breakpoint
2494 || bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2495 {
35df4500 2496 if (bl->owner->type != bp_hardware_breakpoint)
765dc015
VP
2497 {
2498 /* If the explicitly specified breakpoint type
2499 is not hardware breakpoint, check the memory map to see
2500 if the breakpoint address is in read only memory or not.
4a64f543 2501
765dc015
VP
2502 Two important cases are:
2503 - location type is not hardware breakpoint, memory
2504 is readonly. We change the type of the location to
2505 hardware breakpoint.
4a64f543
MS
2506 - location type is hardware breakpoint, memory is
2507 read-write. This means we've previously made the
2508 location hardware one, but then the memory map changed,
2509 so we undo.
765dc015 2510
4a64f543
MS
2511 When breakpoints are removed, remove_breakpoints will use
2512 location types we've just set here, the only possible
2513 problem is that memory map has changed during running
2514 program, but it's not going to work anyway with current
2515 gdb. */
765dc015 2516 struct mem_region *mr
0d5ed153 2517 = lookup_mem_region (bl->target_info.reqstd_address);
765dc015
VP
2518
2519 if (mr)
2520 {
2521 if (automatic_hardware_breakpoints)
2522 {
765dc015
VP
2523 enum bp_loc_type new_type;
2524
2525 if (mr->attrib.mode != MEM_RW)
2526 new_type = bp_loc_hardware_breakpoint;
2527 else
2528 new_type = bp_loc_software_breakpoint;
2529
35df4500 2530 if (new_type != bl->loc_type)
765dc015
VP
2531 {
2532 static int said = 0;
cc59ec59 2533
35df4500 2534 bl->loc_type = new_type;
765dc015
VP
2535 if (!said)
2536 {
3e43a32a
MS
2537 fprintf_filtered (gdb_stdout,
2538 _("Note: automatically using "
2539 "hardware breakpoints for "
2540 "read-only addresses.\n"));
765dc015
VP
2541 said = 1;
2542 }
2543 }
2544 }
35df4500 2545 else if (bl->loc_type == bp_loc_software_breakpoint
0fec99e8
PA
2546 && mr->attrib.mode != MEM_RW)
2547 {
2548 fprintf_unfiltered (tmp_error_stream,
2549 _("Cannot insert breakpoint %d.\n"
2550 "Cannot set software breakpoint "
2551 "at read-only address %s\n"),
2552 bl->owner->number,
2553 paddress (bl->gdbarch, bl->address));
2554 return 1;
2555 }
765dc015
VP
2556 }
2557 }
2558
879bfdc2
DJ
2559 /* First check to see if we have to handle an overlay. */
2560 if (overlay_debugging == ovly_off
35df4500
TJB
2561 || bl->section == NULL
2562 || !(section_is_overlay (bl->section)))
879bfdc2
DJ
2563 {
2564 /* No overlay handling: just set the breakpoint. */
492d29ea 2565 TRY
dd61ec5c 2566 {
0000e5cc
PA
2567 int val;
2568
dd61ec5c 2569 val = bl->owner->ops->insert_location (bl);
0000e5cc
PA
2570 if (val)
2571 bp_err = GENERIC_ERROR;
dd61ec5c 2572 }
492d29ea 2573 CATCH (e, RETURN_MASK_ALL)
dd61ec5c 2574 {
0000e5cc
PA
2575 bp_err = e.error;
2576 bp_err_message = e.message;
dd61ec5c 2577 }
492d29ea 2578 END_CATCH
879bfdc2
DJ
2579 }
2580 else
2581 {
4a64f543 2582 /* This breakpoint is in an overlay section.
879bfdc2
DJ
2583 Shall we set a breakpoint at the LMA? */
2584 if (!overlay_events_enabled)
2585 {
2586 /* Yes -- overlay event support is not active,
2587 so we must try to set a breakpoint at the LMA.
2588 This will not work for a hardware breakpoint. */
35df4500 2589 if (bl->loc_type == bp_loc_hardware_breakpoint)
8a3fe4f8 2590 warning (_("hardware breakpoint %d not supported in overlay!"),
35df4500 2591 bl->owner->number);
879bfdc2
DJ
2592 else
2593 {
35df4500
TJB
2594 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2595 bl->section);
879bfdc2 2596 /* Set a software (trap) breakpoint at the LMA. */
35df4500 2597 bl->overlay_target_info = bl->target_info;
0d5ed153 2598 bl->overlay_target_info.reqstd_address = addr;
0000e5cc
PA
2599
2600 /* No overlay handling: just set the breakpoint. */
492d29ea 2601 TRY
0000e5cc
PA
2602 {
2603 int val;
2604
579c6ad9 2605 bl->overlay_target_info.kind
cd6c3b4f
YQ
2606 = breakpoint_kind (bl, &addr);
2607 bl->overlay_target_info.placed_address = addr;
0000e5cc
PA
2608 val = target_insert_breakpoint (bl->gdbarch,
2609 &bl->overlay_target_info);
2610 if (val)
2611 bp_err = GENERIC_ERROR;
2612 }
492d29ea 2613 CATCH (e, RETURN_MASK_ALL)
0000e5cc
PA
2614 {
2615 bp_err = e.error;
2616 bp_err_message = e.message;
2617 }
492d29ea 2618 END_CATCH
0000e5cc
PA
2619
2620 if (bp_err != GDB_NO_ERROR)
99361f52 2621 fprintf_unfiltered (tmp_error_stream,
3e43a32a
MS
2622 "Overlay breakpoint %d "
2623 "failed: in ROM?\n",
35df4500 2624 bl->owner->number);
879bfdc2
DJ
2625 }
2626 }
2627 /* Shall we set a breakpoint at the VMA? */
35df4500 2628 if (section_is_mapped (bl->section))
879bfdc2
DJ
2629 {
2630 /* Yes. This overlay section is mapped into memory. */
492d29ea 2631 TRY
dd61ec5c 2632 {
0000e5cc
PA
2633 int val;
2634
dd61ec5c 2635 val = bl->owner->ops->insert_location (bl);
0000e5cc
PA
2636 if (val)
2637 bp_err = GENERIC_ERROR;
dd61ec5c 2638 }
492d29ea 2639 CATCH (e, RETURN_MASK_ALL)
dd61ec5c 2640 {
0000e5cc
PA
2641 bp_err = e.error;
2642 bp_err_message = e.message;
dd61ec5c 2643 }
492d29ea 2644 END_CATCH
879bfdc2
DJ
2645 }
2646 else
2647 {
2648 /* No. This breakpoint will not be inserted.
2649 No error, but do not mark the bp as 'inserted'. */
2650 return 0;
2651 }
2652 }
2653
0000e5cc 2654 if (bp_err != GDB_NO_ERROR)
879bfdc2
DJ
2655 {
2656 /* Can't set the breakpoint. */
0000e5cc
PA
2657
2658 /* In some cases, we might not be able to insert a
2659 breakpoint in a shared library that has already been
2660 removed, but we have not yet processed the shlib unload
2661 event. Unfortunately, some targets that implement
076855f9
PA
2662 breakpoint insertion themselves can't tell why the
2663 breakpoint insertion failed (e.g., the remote target
2664 doesn't define error codes), so we must treat generic
2665 errors as memory errors. */
0000e5cc 2666 if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
076855f9 2667 && bl->loc_type == bp_loc_software_breakpoint
08351840 2668 && (solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
2669 || shared_objfile_contains_address_p (bl->pspace,
2670 bl->address)))
879bfdc2 2671 {
4a64f543 2672 /* See also: disable_breakpoints_in_shlibs. */
35df4500 2673 bl->shlib_disabled = 1;
8d3788bd 2674 observer_notify_breakpoint_modified (bl->owner);
3fbb6ffa
TJB
2675 if (!*disabled_breaks)
2676 {
2677 fprintf_unfiltered (tmp_error_stream,
2678 "Cannot insert breakpoint %d.\n",
2679 bl->owner->number);
2680 fprintf_unfiltered (tmp_error_stream,
2681 "Temporarily disabling shared "
2682 "library breakpoints:\n");
2683 }
2684 *disabled_breaks = 1;
879bfdc2 2685 fprintf_unfiltered (tmp_error_stream,
35df4500 2686 "breakpoint #%d\n", bl->owner->number);
0000e5cc 2687 return 0;
879bfdc2
DJ
2688 }
2689 else
879bfdc2 2690 {
35df4500 2691 if (bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2692 {
0000e5cc
PA
2693 *hw_breakpoint_error = 1;
2694 *hw_bp_error_explained_already = bp_err_message != NULL;
dd61ec5c
MW
2695 fprintf_unfiltered (tmp_error_stream,
2696 "Cannot insert hardware breakpoint %d%s",
0000e5cc
PA
2697 bl->owner->number, bp_err_message ? ":" : ".\n");
2698 if (bp_err_message != NULL)
2699 fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
879bfdc2
DJ
2700 }
2701 else
2702 {
0000e5cc
PA
2703 if (bp_err_message == NULL)
2704 {
1ccbe998 2705 std::string message
0000e5cc
PA
2706 = memory_error_message (TARGET_XFER_E_IO,
2707 bl->gdbarch, bl->address);
0000e5cc
PA
2708
2709 fprintf_unfiltered (tmp_error_stream,
2710 "Cannot insert breakpoint %d.\n"
2711 "%s\n",
1ccbe998 2712 bl->owner->number, message.c_str ());
0000e5cc
PA
2713 }
2714 else
2715 {
2716 fprintf_unfiltered (tmp_error_stream,
2717 "Cannot insert breakpoint %d: %s\n",
2718 bl->owner->number,
2719 bp_err_message);
2720 }
879bfdc2 2721 }
0000e5cc 2722 return 1;
879bfdc2
DJ
2723
2724 }
2725 }
2726 else
35df4500 2727 bl->inserted = 1;
879bfdc2 2728
0000e5cc 2729 return 0;
879bfdc2
DJ
2730 }
2731
35df4500 2732 else if (bl->loc_type == bp_loc_hardware_watchpoint
879bfdc2 2733 /* NOTE drow/2003-09-08: This state only exists for removing
4a64f543 2734 watchpoints. It's not clear that it's necessary... */
35df4500 2735 && bl->owner->disposition != disp_del_at_next_stop)
879bfdc2 2736 {
0000e5cc
PA
2737 int val;
2738
77b06cd7
TJB
2739 gdb_assert (bl->owner->ops != NULL
2740 && bl->owner->ops->insert_location != NULL);
2741
2742 val = bl->owner->ops->insert_location (bl);
85d721b8
PA
2743
2744 /* If trying to set a read-watchpoint, and it turns out it's not
2745 supported, try emulating one with an access watchpoint. */
35df4500 2746 if (val == 1 && bl->watchpoint_type == hw_read)
85d721b8
PA
2747 {
2748 struct bp_location *loc, **loc_temp;
2749
2750 /* But don't try to insert it, if there's already another
2751 hw_access location that would be considered a duplicate
2752 of this one. */
2753 ALL_BP_LOCATIONS (loc, loc_temp)
35df4500 2754 if (loc != bl
85d721b8 2755 && loc->watchpoint_type == hw_access
35df4500 2756 && watchpoint_locations_match (bl, loc))
85d721b8 2757 {
35df4500
TJB
2758 bl->duplicate = 1;
2759 bl->inserted = 1;
2760 bl->target_info = loc->target_info;
2761 bl->watchpoint_type = hw_access;
85d721b8
PA
2762 val = 0;
2763 break;
2764 }
2765
2766 if (val == 1)
2767 {
77b06cd7
TJB
2768 bl->watchpoint_type = hw_access;
2769 val = bl->owner->ops->insert_location (bl);
2770
2771 if (val)
2772 /* Back to the original value. */
2773 bl->watchpoint_type = hw_read;
85d721b8
PA
2774 }
2775 }
2776
35df4500 2777 bl->inserted = (val == 0);
879bfdc2
DJ
2778 }
2779
35df4500 2780 else if (bl->owner->type == bp_catchpoint)
879bfdc2 2781 {
0000e5cc
PA
2782 int val;
2783
77b06cd7
TJB
2784 gdb_assert (bl->owner->ops != NULL
2785 && bl->owner->ops->insert_location != NULL);
2786
2787 val = bl->owner->ops->insert_location (bl);
2788 if (val)
2789 {
2790 bl->owner->enable_state = bp_disabled;
2791
2792 if (val == 1)
2793 warning (_("\
2794Error inserting catchpoint %d: Your system does not support this type\n\
2795of catchpoint."), bl->owner->number);
2796 else
2797 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2798 }
2799
2800 bl->inserted = (val == 0);
1640b821
DJ
2801
2802 /* We've already printed an error message if there was a problem
2803 inserting this catchpoint, and we've disabled the catchpoint,
2804 so just return success. */
2805 return 0;
879bfdc2
DJ
2806 }
2807
2808 return 0;
2809}
2810
6c95b8df
PA
2811/* This function is called when program space PSPACE is about to be
2812 deleted. It takes care of updating breakpoints to not reference
2813 PSPACE anymore. */
2814
2815void
2816breakpoint_program_space_exit (struct program_space *pspace)
2817{
2818 struct breakpoint *b, *b_temp;
876fa593 2819 struct bp_location *loc, **loc_temp;
6c95b8df
PA
2820
2821 /* Remove any breakpoint that was set through this program space. */
2822 ALL_BREAKPOINTS_SAFE (b, b_temp)
2823 {
2824 if (b->pspace == pspace)
2825 delete_breakpoint (b);
2826 }
2827
2828 /* Breakpoints set through other program spaces could have locations
2829 bound to PSPACE as well. Remove those. */
876fa593 2830 ALL_BP_LOCATIONS (loc, loc_temp)
6c95b8df
PA
2831 {
2832 struct bp_location *tmp;
2833
2834 if (loc->pspace == pspace)
2835 {
2bdf28a0 2836 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6c95b8df
PA
2837 if (loc->owner->loc == loc)
2838 loc->owner->loc = loc->next;
2839 else
2840 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2841 if (tmp->next == loc)
2842 {
2843 tmp->next = loc->next;
2844 break;
2845 }
2846 }
2847 }
2848
2849 /* Now update the global location list to permanently delete the
2850 removed locations above. */
44702360 2851 update_global_location_list (UGLL_DONT_INSERT);
6c95b8df
PA
2852}
2853
74960c60
VP
2854/* Make sure all breakpoints are inserted in inferior.
2855 Throws exception on any error.
2856 A breakpoint that is already inserted won't be inserted
2857 again, so calling this function twice is safe. */
2858void
2859insert_breakpoints (void)
2860{
2861 struct breakpoint *bpt;
2862
2863 ALL_BREAKPOINTS (bpt)
2864 if (is_hardware_watchpoint (bpt))
3a5c3e22
PA
2865 {
2866 struct watchpoint *w = (struct watchpoint *) bpt;
2867
2868 update_watchpoint (w, 0 /* don't reparse. */);
2869 }
74960c60 2870
04086b45
PA
2871 /* Updating watchpoints creates new locations, so update the global
2872 location list. Explicitly tell ugll to insert locations and
2873 ignore breakpoints_always_inserted_mode. */
2874 update_global_location_list (UGLL_INSERT);
74960c60
VP
2875}
2876
20388dd6
YQ
2877/* Invoke CALLBACK for each of bp_location. */
2878
2879void
2880iterate_over_bp_locations (walk_bp_location_callback callback)
2881{
2882 struct bp_location *loc, **loc_tmp;
2883
2884 ALL_BP_LOCATIONS (loc, loc_tmp)
2885 {
2886 callback (loc, NULL);
2887 }
2888}
2889
b775012e
LM
2890/* This is used when we need to synch breakpoint conditions between GDB and the
2891 target. It is the case with deleting and disabling of breakpoints when using
2892 always-inserted mode. */
2893
2894static void
2895update_inserted_breakpoint_locations (void)
2896{
2897 struct bp_location *bl, **blp_tmp;
2898 int error_flag = 0;
2899 int val = 0;
2900 int disabled_breaks = 0;
2901 int hw_breakpoint_error = 0;
dd61ec5c 2902 int hw_bp_details_reported = 0;
b775012e 2903
d7e74731 2904 string_file tmp_error_stream;
b775012e
LM
2905
2906 /* Explicitly mark the warning -- this will only be printed if
2907 there was an error. */
d7e74731 2908 tmp_error_stream.puts ("Warning:\n");
b775012e 2909
5ed8105e 2910 scoped_restore_current_pspace_and_thread restore_pspace_thread;
b775012e
LM
2911
2912 ALL_BP_LOCATIONS (bl, blp_tmp)
2913 {
2914 /* We only want to update software breakpoints and hardware
2915 breakpoints. */
2916 if (!is_breakpoint (bl->owner))
2917 continue;
2918
2919 /* We only want to update locations that are already inserted
2920 and need updating. This is to avoid unwanted insertion during
2921 deletion of breakpoints. */
2922 if (!bl->inserted || (bl->inserted && !bl->needs_update))
2923 continue;
2924
2925 switch_to_program_space_and_thread (bl->pspace);
2926
2927 /* For targets that support global breakpoints, there's no need
2928 to select an inferior to insert breakpoint to. In fact, even
2929 if we aren't attached to any process yet, we should still
2930 insert breakpoints. */
f5656ead 2931 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
b775012e
LM
2932 && ptid_equal (inferior_ptid, null_ptid))
2933 continue;
2934
d7e74731 2935 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 2936 &hw_breakpoint_error, &hw_bp_details_reported);
b775012e
LM
2937 if (val)
2938 error_flag = val;
2939 }
2940
2941 if (error_flag)
2942 {
223ffa71 2943 target_terminal::ours_for_output ();
b775012e
LM
2944 error_stream (tmp_error_stream);
2945 }
b775012e
LM
2946}
2947
c30eee59 2948/* Used when starting or continuing the program. */
c906108c 2949
74960c60
VP
2950static void
2951insert_breakpoint_locations (void)
c906108c 2952{
a5606eee 2953 struct breakpoint *bpt;
35df4500 2954 struct bp_location *bl, **blp_tmp;
eacd795a 2955 int error_flag = 0;
c906108c 2956 int val = 0;
3fbb6ffa 2957 int disabled_breaks = 0;
81d0cc19 2958 int hw_breakpoint_error = 0;
dd61ec5c 2959 int hw_bp_error_explained_already = 0;
c906108c 2960
d7e74731
PA
2961 string_file tmp_error_stream;
2962
81d0cc19
GS
2963 /* Explicitly mark the warning -- this will only be printed if
2964 there was an error. */
d7e74731 2965 tmp_error_stream.puts ("Warning:\n");
6c95b8df 2966
5ed8105e 2967 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 2968
35df4500 2969 ALL_BP_LOCATIONS (bl, blp_tmp)
879bfdc2 2970 {
b775012e 2971 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2972 continue;
2973
4a64f543
MS
2974 /* There is no point inserting thread-specific breakpoints if
2975 the thread no longer exists. ALL_BP_LOCATIONS bp_location
2976 has BL->OWNER always non-NULL. */
35df4500 2977 if (bl->owner->thread != -1
5d5658a1 2978 && !valid_global_thread_id (bl->owner->thread))
f365de73
AS
2979 continue;
2980
35df4500 2981 switch_to_program_space_and_thread (bl->pspace);
6c95b8df
PA
2982
2983 /* For targets that support global breakpoints, there's no need
2984 to select an inferior to insert breakpoint to. In fact, even
2985 if we aren't attached to any process yet, we should still
2986 insert breakpoints. */
f5656ead 2987 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
2988 && ptid_equal (inferior_ptid, null_ptid))
2989 continue;
2990
d7e74731 2991 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 2992 &hw_breakpoint_error, &hw_bp_error_explained_already);
879bfdc2 2993 if (val)
eacd795a 2994 error_flag = val;
879bfdc2 2995 }
c906108c 2996
4a64f543
MS
2997 /* If we failed to insert all locations of a watchpoint, remove
2998 them, as half-inserted watchpoint is of limited use. */
a5606eee
VP
2999 ALL_BREAKPOINTS (bpt)
3000 {
3001 int some_failed = 0;
3002 struct bp_location *loc;
3003
3004 if (!is_hardware_watchpoint (bpt))
3005 continue;
3006
d6b74ac4 3007 if (!breakpoint_enabled (bpt))
a5606eee 3008 continue;
74960c60
VP
3009
3010 if (bpt->disposition == disp_del_at_next_stop)
3011 continue;
a5606eee
VP
3012
3013 for (loc = bpt->loc; loc; loc = loc->next)
56710373 3014 if (!loc->inserted && should_be_inserted (loc))
a5606eee
VP
3015 {
3016 some_failed = 1;
3017 break;
3018 }
3019 if (some_failed)
3020 {
3021 for (loc = bpt->loc; loc; loc = loc->next)
3022 if (loc->inserted)
834c0d03 3023 remove_breakpoint (loc);
a5606eee
VP
3024
3025 hw_breakpoint_error = 1;
d7e74731
PA
3026 tmp_error_stream.printf ("Could not insert "
3027 "hardware watchpoint %d.\n",
3028 bpt->number);
eacd795a 3029 error_flag = -1;
a5606eee
VP
3030 }
3031 }
3032
eacd795a 3033 if (error_flag)
81d0cc19
GS
3034 {
3035 /* If a hardware breakpoint or watchpoint was inserted, add a
3036 message about possibly exhausted resources. */
dd61ec5c 3037 if (hw_breakpoint_error && !hw_bp_error_explained_already)
81d0cc19 3038 {
d7e74731 3039 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
c6510018 3040You may have requested too many hardware breakpoints/watchpoints.\n");
81d0cc19 3041 }
223ffa71 3042 target_terminal::ours_for_output ();
81d0cc19
GS
3043 error_stream (tmp_error_stream);
3044 }
c906108c
SS
3045}
3046
c30eee59
TJB
3047/* Used when the program stops.
3048 Returns zero if successful, or non-zero if there was a problem
3049 removing a breakpoint location. */
3050
c906108c 3051int
fba45db2 3052remove_breakpoints (void)
c906108c 3053{
35df4500 3054 struct bp_location *bl, **blp_tmp;
3a1bae8e 3055 int val = 0;
c906108c 3056
35df4500 3057 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3058 {
1e4d1764 3059 if (bl->inserted && !is_tracepoint (bl->owner))
834c0d03 3060 val |= remove_breakpoint (bl);
c5aa993b 3061 }
3a1bae8e 3062 return val;
c906108c
SS
3063}
3064
49fa26b0
PA
3065/* When a thread exits, remove breakpoints that are related to
3066 that thread. */
3067
3068static void
3069remove_threaded_breakpoints (struct thread_info *tp, int silent)
3070{
3071 struct breakpoint *b, *b_tmp;
3072
3073 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3074 {
5d5658a1 3075 if (b->thread == tp->global_num && user_breakpoint_p (b))
49fa26b0
PA
3076 {
3077 b->disposition = disp_del_at_next_stop;
3078
3079 printf_filtered (_("\
43792cf0
PA
3080Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3081 b->number, print_thread_id (tp));
49fa26b0
PA
3082
3083 /* Hide it from the user. */
3084 b->number = 0;
3085 }
3086 }
3087}
3088
6c95b8df
PA
3089/* Remove breakpoints of process PID. */
3090
3091int
3092remove_breakpoints_pid (int pid)
3093{
35df4500 3094 struct bp_location *bl, **blp_tmp;
6c95b8df
PA
3095 int val;
3096 struct inferior *inf = find_inferior_pid (pid);
3097
35df4500 3098 ALL_BP_LOCATIONS (bl, blp_tmp)
6c95b8df 3099 {
35df4500 3100 if (bl->pspace != inf->pspace)
6c95b8df
PA
3101 continue;
3102
fc126975 3103 if (bl->inserted && !bl->target_info.persist)
6c95b8df 3104 {
834c0d03 3105 val = remove_breakpoint (bl);
6c95b8df
PA
3106 if (val != 0)
3107 return val;
3108 }
3109 }
3110 return 0;
3111}
3112
e58b0e63
PA
3113static int internal_breakpoint_number = -1;
3114
84f4c1fe
PM
3115/* Set the breakpoint number of B, depending on the value of INTERNAL.
3116 If INTERNAL is non-zero, the breakpoint number will be populated
3117 from internal_breakpoint_number and that variable decremented.
e5dd4106 3118 Otherwise the breakpoint number will be populated from
84f4c1fe
PM
3119 breakpoint_count and that value incremented. Internal breakpoints
3120 do not set the internal var bpnum. */
3121static void
3122set_breakpoint_number (int internal, struct breakpoint *b)
3123{
3124 if (internal)
3125 b->number = internal_breakpoint_number--;
3126 else
3127 {
3128 set_breakpoint_count (breakpoint_count + 1);
3129 b->number = breakpoint_count;
3130 }
3131}
3132
e62c965a 3133static struct breakpoint *
a6d9a66e 3134create_internal_breakpoint (struct gdbarch *gdbarch,
06edf0c0 3135 CORE_ADDR address, enum bptype type,
c0a91b2b 3136 const struct breakpoint_ops *ops)
e62c965a 3137{
51abb421 3138 symtab_and_line sal;
e62c965a
PP
3139 sal.pc = address;
3140 sal.section = find_pc_overlay (sal.pc);
6c95b8df 3141 sal.pspace = current_program_space;
e62c965a 3142
51abb421 3143 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
e62c965a
PP
3144 b->number = internal_breakpoint_number--;
3145 b->disposition = disp_donttouch;
3146
3147 return b;
3148}
3149
17450429
PP
3150static const char *const longjmp_names[] =
3151 {
3152 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3153 };
3154#define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3155
3156/* Per-objfile data private to breakpoint.c. */
3157struct breakpoint_objfile_data
3158{
3159 /* Minimal symbol for "_ovly_debug_event" (if any). */
43dce439 3160 struct bound_minimal_symbol overlay_msym {};
17450429
PP
3161
3162 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
43dce439 3163 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
17450429 3164
28106bc2 3165 /* True if we have looked for longjmp probes. */
43dce439 3166 int longjmp_searched = 0;
28106bc2 3167
45461e0d
SM
3168 /* SystemTap probe points for longjmp (if any). These are non-owning
3169 references. */
3170 std::vector<probe *> longjmp_probes;
28106bc2 3171
17450429 3172 /* Minimal symbol for "std::terminate()" (if any). */
43dce439 3173 struct bound_minimal_symbol terminate_msym {};
17450429
PP
3174
3175 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
43dce439 3176 struct bound_minimal_symbol exception_msym {};
28106bc2
SDJ
3177
3178 /* True if we have looked for exception probes. */
43dce439 3179 int exception_searched = 0;
28106bc2 3180
45461e0d
SM
3181 /* SystemTap probe points for unwinding (if any). These are non-owning
3182 references. */
3183 std::vector<probe *> exception_probes;
17450429
PP
3184};
3185
3186static const struct objfile_data *breakpoint_objfile_key;
3187
3188/* Minimal symbol not found sentinel. */
3189static struct minimal_symbol msym_not_found;
3190
3191/* Returns TRUE if MSYM point to the "not found" sentinel. */
3192
3193static int
3194msym_not_found_p (const struct minimal_symbol *msym)
3195{
3196 return msym == &msym_not_found;
3197}
3198
3199/* Return per-objfile data needed by breakpoint.c.
3200 Allocate the data if necessary. */
3201
3202static struct breakpoint_objfile_data *
3203get_breakpoint_objfile_data (struct objfile *objfile)
3204{
3205 struct breakpoint_objfile_data *bp_objfile_data;
3206
9a3c8263
SM
3207 bp_objfile_data = ((struct breakpoint_objfile_data *)
3208 objfile_data (objfile, breakpoint_objfile_key));
17450429
PP
3209 if (bp_objfile_data == NULL)
3210 {
43dce439 3211 bp_objfile_data = new breakpoint_objfile_data ();
17450429
PP
3212 set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3213 }
3214 return bp_objfile_data;
3215}
3216
28106bc2 3217static void
43dce439 3218free_breakpoint_objfile_data (struct objfile *obj, void *data)
28106bc2 3219{
9a3c8263
SM
3220 struct breakpoint_objfile_data *bp_objfile_data
3221 = (struct breakpoint_objfile_data *) data;
28106bc2 3222
43dce439 3223 delete bp_objfile_data;
28106bc2
SDJ
3224}
3225
e62c965a 3226static void
af02033e 3227create_overlay_event_breakpoint (void)
e62c965a 3228{
69de3c6a 3229 struct objfile *objfile;
af02033e 3230 const char *const func_name = "_ovly_debug_event";
e62c965a 3231
69de3c6a
PP
3232 ALL_OBJFILES (objfile)
3233 {
3234 struct breakpoint *b;
17450429
PP
3235 struct breakpoint_objfile_data *bp_objfile_data;
3236 CORE_ADDR addr;
67994074 3237 struct explicit_location explicit_loc;
69de3c6a 3238
17450429
PP
3239 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3240
3b7344d5 3241 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
17450429
PP
3242 continue;
3243
3b7344d5 3244 if (bp_objfile_data->overlay_msym.minsym == NULL)
17450429 3245 {
3b7344d5 3246 struct bound_minimal_symbol m;
17450429
PP
3247
3248 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3249 if (m.minsym == NULL)
17450429
PP
3250 {
3251 /* Avoid future lookups in this objfile. */
3b7344d5 3252 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
17450429
PP
3253 continue;
3254 }
3255 bp_objfile_data->overlay_msym = m;
3256 }
e62c965a 3257
77e371c0 3258 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
17450429 3259 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
06edf0c0
PA
3260 bp_overlay_event,
3261 &internal_breakpoint_ops);
67994074
KS
3262 initialize_explicit_location (&explicit_loc);
3263 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3264 b->location = new_explicit_location (&explicit_loc);
e62c965a 3265
69de3c6a
PP
3266 if (overlay_debugging == ovly_auto)
3267 {
3268 b->enable_state = bp_enabled;
3269 overlay_events_enabled = 1;
3270 }
3271 else
3272 {
3273 b->enable_state = bp_disabled;
3274 overlay_events_enabled = 0;
3275 }
e62c965a 3276 }
e62c965a
PP
3277}
3278
0fd8e87f 3279static void
af02033e 3280create_longjmp_master_breakpoint (void)
0fd8e87f 3281{
6c95b8df 3282 struct program_space *pspace;
6c95b8df 3283
5ed8105e 3284 scoped_restore_current_program_space restore_pspace;
0fd8e87f 3285
6c95b8df 3286 ALL_PSPACES (pspace)
af02033e
PP
3287 {
3288 struct objfile *objfile;
3289
3290 set_current_program_space (pspace);
3291
3292 ALL_OBJFILES (objfile)
0fd8e87f 3293 {
af02033e
PP
3294 int i;
3295 struct gdbarch *gdbarch;
17450429 3296 struct breakpoint_objfile_data *bp_objfile_data;
0fd8e87f 3297
af02033e 3298 gdbarch = get_objfile_arch (objfile);
0fd8e87f 3299
17450429
PP
3300 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3301
28106bc2
SDJ
3302 if (!bp_objfile_data->longjmp_searched)
3303 {
45461e0d
SM
3304 std::vector<probe *> ret
3305 = find_probes_in_objfile (objfile, "libc", "longjmp");
25f9533e 3306
45461e0d 3307 if (!ret.empty ())
25f9533e
SDJ
3308 {
3309 /* We are only interested in checking one element. */
45461e0d 3310 probe *p = ret[0];
25f9533e
SDJ
3311
3312 if (!can_evaluate_probe_arguments (p))
3313 {
3314 /* We cannot use the probe interface here, because it does
3315 not know how to evaluate arguments. */
45461e0d 3316 ret.clear ();
25f9533e
SDJ
3317 }
3318 }
3319 bp_objfile_data->longjmp_probes = ret;
28106bc2
SDJ
3320 bp_objfile_data->longjmp_searched = 1;
3321 }
3322
45461e0d 3323 if (!bp_objfile_data->longjmp_probes.empty ())
28106bc2 3324 {
28106bc2
SDJ
3325 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3326
45461e0d 3327 for (probe *p : bp_objfile_data->longjmp_probes)
28106bc2
SDJ
3328 {
3329 struct breakpoint *b;
3330
729662a5 3331 b = create_internal_breakpoint (gdbarch,
45461e0d 3332 get_probe_address (p, objfile),
28106bc2
SDJ
3333 bp_longjmp_master,
3334 &internal_breakpoint_ops);
d28cd78a 3335 b->location = new_probe_location ("-probe-stap libc:longjmp");
28106bc2
SDJ
3336 b->enable_state = bp_disabled;
3337 }
3338
3339 continue;
3340 }
3341
0569175e
TSD
3342 if (!gdbarch_get_longjmp_target_p (gdbarch))
3343 continue;
3344
17450429 3345 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
af02033e
PP
3346 {
3347 struct breakpoint *b;
af02033e 3348 const char *func_name;
17450429 3349 CORE_ADDR addr;
67994074 3350 struct explicit_location explicit_loc;
6c95b8df 3351
3b7344d5 3352 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
af02033e 3353 continue;
0fd8e87f 3354
17450429 3355 func_name = longjmp_names[i];
3b7344d5 3356 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
17450429 3357 {
3b7344d5 3358 struct bound_minimal_symbol m;
17450429
PP
3359
3360 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3361 if (m.minsym == NULL)
17450429
PP
3362 {
3363 /* Prevent future lookups in this objfile. */
3b7344d5 3364 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
17450429
PP
3365 continue;
3366 }
3367 bp_objfile_data->longjmp_msym[i] = m;
3368 }
3369
77e371c0 3370 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
06edf0c0
PA
3371 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3372 &internal_breakpoint_ops);
67994074
KS
3373 initialize_explicit_location (&explicit_loc);
3374 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3375 b->location = new_explicit_location (&explicit_loc);
af02033e
PP
3376 b->enable_state = bp_disabled;
3377 }
0fd8e87f 3378 }
af02033e 3379 }
0fd8e87f
UW
3380}
3381
af02033e 3382/* Create a master std::terminate breakpoint. */
aa7d318d 3383static void
af02033e 3384create_std_terminate_master_breakpoint (void)
aa7d318d
TT
3385{
3386 struct program_space *pspace;
af02033e 3387 const char *const func_name = "std::terminate()";
aa7d318d 3388
5ed8105e 3389 scoped_restore_current_program_space restore_pspace;
aa7d318d
TT
3390
3391 ALL_PSPACES (pspace)
17450429
PP
3392 {
3393 struct objfile *objfile;
3394 CORE_ADDR addr;
3395
3396 set_current_program_space (pspace);
3397
aa7d318d
TT
3398 ALL_OBJFILES (objfile)
3399 {
3400 struct breakpoint *b;
17450429 3401 struct breakpoint_objfile_data *bp_objfile_data;
67994074 3402 struct explicit_location explicit_loc;
aa7d318d 3403
17450429 3404 bp_objfile_data = get_breakpoint_objfile_data (objfile);
aa7d318d 3405
3b7344d5 3406 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
17450429
PP
3407 continue;
3408
3b7344d5 3409 if (bp_objfile_data->terminate_msym.minsym == NULL)
17450429 3410 {
3b7344d5 3411 struct bound_minimal_symbol m;
17450429
PP
3412
3413 m = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5
TT
3414 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3415 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
17450429
PP
3416 {
3417 /* Prevent future lookups in this objfile. */
3b7344d5 3418 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
17450429
PP
3419 continue;
3420 }
3421 bp_objfile_data->terminate_msym = m;
3422 }
aa7d318d 3423
77e371c0 3424 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
17450429 3425 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
06edf0c0
PA
3426 bp_std_terminate_master,
3427 &internal_breakpoint_ops);
67994074
KS
3428 initialize_explicit_location (&explicit_loc);
3429 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3430 b->location = new_explicit_location (&explicit_loc);
aa7d318d
TT
3431 b->enable_state = bp_disabled;
3432 }
17450429 3433 }
aa7d318d
TT
3434}
3435
186c406b
TT
3436/* Install a master breakpoint on the unwinder's debug hook. */
3437
70221824 3438static void
186c406b
TT
3439create_exception_master_breakpoint (void)
3440{
3441 struct objfile *objfile;
17450429 3442 const char *const func_name = "_Unwind_DebugHook";
186c406b
TT
3443
3444 ALL_OBJFILES (objfile)
3445 {
17450429
PP
3446 struct breakpoint *b;
3447 struct gdbarch *gdbarch;
3448 struct breakpoint_objfile_data *bp_objfile_data;
3449 CORE_ADDR addr;
67994074 3450 struct explicit_location explicit_loc;
17450429
PP
3451
3452 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3453
28106bc2
SDJ
3454 /* We prefer the SystemTap probe point if it exists. */
3455 if (!bp_objfile_data->exception_searched)
3456 {
45461e0d
SM
3457 std::vector<probe *> ret
3458 = find_probes_in_objfile (objfile, "libgcc", "unwind");
25f9533e 3459
45461e0d 3460 if (!ret.empty ())
25f9533e
SDJ
3461 {
3462 /* We are only interested in checking one element. */
45461e0d 3463 probe *p = ret[0];
25f9533e
SDJ
3464
3465 if (!can_evaluate_probe_arguments (p))
3466 {
3467 /* We cannot use the probe interface here, because it does
3468 not know how to evaluate arguments. */
45461e0d 3469 ret.clear ();
25f9533e
SDJ
3470 }
3471 }
3472 bp_objfile_data->exception_probes = ret;
28106bc2
SDJ
3473 bp_objfile_data->exception_searched = 1;
3474 }
3475
45461e0d 3476 if (!bp_objfile_data->exception_probes.empty ())
28106bc2
SDJ
3477 {
3478 struct gdbarch *gdbarch = get_objfile_arch (objfile);
45461e0d
SM
3479
3480 for (probe *p : bp_objfile_data->exception_probes)
28106bc2
SDJ
3481 {
3482 struct breakpoint *b;
3483
729662a5 3484 b = create_internal_breakpoint (gdbarch,
45461e0d 3485 get_probe_address (p, objfile),
28106bc2
SDJ
3486 bp_exception_master,
3487 &internal_breakpoint_ops);
d28cd78a 3488 b->location = new_probe_location ("-probe-stap libgcc:unwind");
28106bc2
SDJ
3489 b->enable_state = bp_disabled;
3490 }
3491
3492 continue;
3493 }
3494
3495 /* Otherwise, try the hook function. */
3496
3b7344d5 3497 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
17450429
PP
3498 continue;
3499
3500 gdbarch = get_objfile_arch (objfile);
186c406b 3501
3b7344d5 3502 if (bp_objfile_data->exception_msym.minsym == NULL)
186c406b 3503 {
3b7344d5 3504 struct bound_minimal_symbol debug_hook;
186c406b 3505
17450429 3506 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5 3507 if (debug_hook.minsym == NULL)
17450429 3508 {
3b7344d5 3509 bp_objfile_data->exception_msym.minsym = &msym_not_found;
17450429
PP
3510 continue;
3511 }
3512
3513 bp_objfile_data->exception_msym = debug_hook;
186c406b 3514 }
17450429 3515
77e371c0 3516 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
17450429
PP
3517 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3518 &current_target);
06edf0c0
PA
3519 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3520 &internal_breakpoint_ops);
67994074
KS
3521 initialize_explicit_location (&explicit_loc);
3522 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3523 b->location = new_explicit_location (&explicit_loc);
17450429 3524 b->enable_state = bp_disabled;
186c406b 3525 }
186c406b
TT
3526}
3527
9ef9e6a6
KS
3528/* Does B have a location spec? */
3529
3530static int
3531breakpoint_event_location_empty_p (const struct breakpoint *b)
3532{
d28cd78a 3533 return b->location != NULL && event_location_empty_p (b->location.get ());
9ef9e6a6
KS
3534}
3535
c906108c 3536void
fba45db2 3537update_breakpoints_after_exec (void)
c906108c 3538{
35df4500 3539 struct breakpoint *b, *b_tmp;
876fa593 3540 struct bp_location *bploc, **bplocp_tmp;
c906108c 3541
25b22b0a
PA
3542 /* We're about to delete breakpoints from GDB's lists. If the
3543 INSERTED flag is true, GDB will try to lift the breakpoints by
3544 writing the breakpoints' "shadow contents" back into memory. The
3545 "shadow contents" are NOT valid after an exec, so GDB should not
3546 do that. Instead, the target is responsible from marking
3547 breakpoints out as soon as it detects an exec. We don't do that
3548 here instead, because there may be other attempts to delete
3549 breakpoints after detecting an exec and before reaching here. */
876fa593 3550 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
6c95b8df
PA
3551 if (bploc->pspace == current_program_space)
3552 gdb_assert (!bploc->inserted);
c906108c 3553
35df4500 3554 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3555 {
6c95b8df
PA
3556 if (b->pspace != current_program_space)
3557 continue;
3558
4a64f543 3559 /* Solib breakpoints must be explicitly reset after an exec(). */
c5aa993b
JM
3560 if (b->type == bp_shlib_event)
3561 {
3562 delete_breakpoint (b);
3563 continue;
3564 }
c906108c 3565
4a64f543 3566 /* JIT breakpoints must be explicitly reset after an exec(). */
4efc6507
DE
3567 if (b->type == bp_jit_event)
3568 {
3569 delete_breakpoint (b);
3570 continue;
3571 }
3572
1900040c 3573 /* Thread event breakpoints must be set anew after an exec(),
0fd8e87f
UW
3574 as must overlay event and longjmp master breakpoints. */
3575 if (b->type == bp_thread_event || b->type == bp_overlay_event
186c406b
TT
3576 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3577 || b->type == bp_exception_master)
c4093a6a
JM
3578 {
3579 delete_breakpoint (b);
3580 continue;
3581 }
3582
4a64f543 3583 /* Step-resume breakpoints are meaningless after an exec(). */
2c03e5be 3584 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
c5aa993b
JM
3585 {
3586 delete_breakpoint (b);
3587 continue;
3588 }
3589
7c16b83e
PA
3590 /* Just like single-step breakpoints. */
3591 if (b->type == bp_single_step)
3592 {
3593 delete_breakpoint (b);
3594 continue;
3595 }
3596
611c83ae
PA
3597 /* Longjmp and longjmp-resume breakpoints are also meaningless
3598 after an exec. */
186c406b 3599 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
e2e4d78b 3600 || b->type == bp_longjmp_call_dummy
186c406b 3601 || b->type == bp_exception || b->type == bp_exception_resume)
611c83ae
PA
3602 {
3603 delete_breakpoint (b);
3604 continue;
3605 }
3606
ce78b96d
JB
3607 if (b->type == bp_catchpoint)
3608 {
3609 /* For now, none of the bp_catchpoint breakpoints need to
3610 do anything at this point. In the future, if some of
3611 the catchpoints need to something, we will need to add
3612 a new method, and call this method from here. */
3613 continue;
3614 }
3615
c5aa993b
JM
3616 /* bp_finish is a special case. The only way we ought to be able
3617 to see one of these when an exec() has happened, is if the user
3618 caught a vfork, and then said "finish". Ordinarily a finish just
3619 carries them to the call-site of the current callee, by setting
3620 a temporary bp there and resuming. But in this case, the finish
3621 will carry them entirely through the vfork & exec.
3622
3623 We don't want to allow a bp_finish to remain inserted now. But
3624 we can't safely delete it, 'cause finish_command has a handle to
3625 the bp on a bpstat, and will later want to delete it. There's a
3626 chance (and I've seen it happen) that if we delete the bp_finish
3627 here, that its storage will get reused by the time finish_command
3628 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3629 We really must allow finish_command to delete a bp_finish.
3630
e5dd4106 3631 In the absence of a general solution for the "how do we know
53a5351d
JM
3632 it's safe to delete something others may have handles to?"
3633 problem, what we'll do here is just uninsert the bp_finish, and
3634 let finish_command delete it.
3635
3636 (We know the bp_finish is "doomed" in the sense that it's
3637 momentary, and will be deleted as soon as finish_command sees
3638 the inferior stopped. So it doesn't matter that the bp's
3639 address is probably bogus in the new a.out, unlike e.g., the
3640 solib breakpoints.) */
c5aa993b 3641
c5aa993b
JM
3642 if (b->type == bp_finish)
3643 {
3644 continue;
3645 }
3646
3647 /* Without a symbolic address, we have little hope of the
3648 pre-exec() address meaning the same thing in the post-exec()
4a64f543 3649 a.out. */
9ef9e6a6 3650 if (breakpoint_event_location_empty_p (b))
c5aa993b
JM
3651 {
3652 delete_breakpoint (b);
3653 continue;
3654 }
c5aa993b 3655 }
c906108c
SS
3656}
3657
3658int
d80ee84f 3659detach_breakpoints (ptid_t ptid)
c906108c 3660{
35df4500 3661 struct bp_location *bl, **blp_tmp;
3a1bae8e 3662 int val = 0;
2989a365 3663 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
6c95b8df 3664 struct inferior *inf = current_inferior ();
c5aa993b 3665
dfd4cc63 3666 if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
8a3fe4f8 3667 error (_("Cannot detach breakpoints of inferior_ptid"));
c5aa993b 3668
6c95b8df 3669 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
d80ee84f 3670 inferior_ptid = ptid;
35df4500 3671 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3672 {
35df4500 3673 if (bl->pspace != inf->pspace)
6c95b8df
PA
3674 continue;
3675
bd9673a4
PW
3676 /* This function must physically remove breakpoints locations
3677 from the specified ptid, without modifying the breakpoint
3678 package's state. Locations of type bp_loc_other are only
3679 maintained at GDB side. So, there is no need to remove
3680 these bp_loc_other locations. Moreover, removing these
3681 would modify the breakpoint package's state. */
3682 if (bl->loc_type == bp_loc_other)
3683 continue;
3684
35df4500 3685 if (bl->inserted)
b2b6a7da 3686 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
c5aa993b 3687 }
d03285ec 3688
3a1bae8e 3689 return val;
c906108c
SS
3690}
3691
35df4500 3692/* Remove the breakpoint location BL from the current address space.
6c95b8df
PA
3693 Note that this is used to detach breakpoints from a child fork.
3694 When we get here, the child isn't in the inferior list, and neither
3695 do we have objects to represent its address space --- we should
35df4500 3696 *not* look at bl->pspace->aspace here. */
6c95b8df 3697
c906108c 3698static int
b2b6a7da 3699remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
c906108c
SS
3700{
3701 int val;
c5aa993b 3702
35df4500
TJB
3703 /* BL is never in moribund_locations by our callers. */
3704 gdb_assert (bl->owner != NULL);
2bdf28a0 3705
74960c60
VP
3706 /* The type of none suggests that owner is actually deleted.
3707 This should not ever happen. */
35df4500 3708 gdb_assert (bl->owner->type != bp_none);
0bde7532 3709
35df4500
TJB
3710 if (bl->loc_type == bp_loc_software_breakpoint
3711 || bl->loc_type == bp_loc_hardware_breakpoint)
c906108c 3712 {
c02f5703
MS
3713 /* "Normal" instruction breakpoint: either the standard
3714 trap-instruction bp (bp_breakpoint), or a
3715 bp_hardware_breakpoint. */
3716
3717 /* First check to see if we have to handle an overlay. */
3718 if (overlay_debugging == ovly_off
35df4500
TJB
3719 || bl->section == NULL
3720 || !(section_is_overlay (bl->section)))
c02f5703
MS
3721 {
3722 /* No overlay handling: just remove the breakpoint. */
08351840
PA
3723
3724 /* If we're trying to uninsert a memory breakpoint that we
3725 know is set in a dynamic object that is marked
3726 shlib_disabled, then either the dynamic object was
3727 removed with "remove-symbol-file" or with
3728 "nosharedlibrary". In the former case, we don't know
3729 whether another dynamic object might have loaded over the
3730 breakpoint's address -- the user might well let us know
3731 about it next with add-symbol-file (the whole point of
d03de421 3732 add-symbol-file is letting the user manually maintain a
08351840
PA
3733 list of dynamically loaded objects). If we have the
3734 breakpoint's shadow memory, that is, this is a software
3735 breakpoint managed by GDB, check whether the breakpoint
3736 is still inserted in memory, to avoid overwriting wrong
3737 code with stale saved shadow contents. Note that HW
3738 breakpoints don't have shadow memory, as they're
3739 implemented using a mechanism that is not dependent on
3740 being able to modify the target's memory, and as such
3741 they should always be removed. */
3742 if (bl->shlib_disabled
3743 && bl->target_info.shadow_len != 0
3744 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3745 val = 0;
3746 else
73971819 3747 val = bl->owner->ops->remove_location (bl, reason);
c02f5703 3748 }
c906108c
SS
3749 else
3750 {
4a64f543 3751 /* This breakpoint is in an overlay section.
c02f5703
MS
3752 Did we set a breakpoint at the LMA? */
3753 if (!overlay_events_enabled)
3754 {
3755 /* Yes -- overlay event support is not active, so we
3756 should have set a breakpoint at the LMA. Remove it.
3757 */
c02f5703
MS
3758 /* Ignore any failures: if the LMA is in ROM, we will
3759 have already warned when we failed to insert it. */
35df4500
TJB
3760 if (bl->loc_type == bp_loc_hardware_breakpoint)
3761 target_remove_hw_breakpoint (bl->gdbarch,
3762 &bl->overlay_target_info);
c02f5703 3763 else
35df4500 3764 target_remove_breakpoint (bl->gdbarch,
73971819
PA
3765 &bl->overlay_target_info,
3766 reason);
c02f5703
MS
3767 }
3768 /* Did we set a breakpoint at the VMA?
3769 If so, we will have marked the breakpoint 'inserted'. */
35df4500 3770 if (bl->inserted)
c906108c 3771 {
c02f5703
MS
3772 /* Yes -- remove it. Previously we did not bother to
3773 remove the breakpoint if the section had been
3774 unmapped, but let's not rely on that being safe. We
3775 don't know what the overlay manager might do. */
aa67235e
UW
3776
3777 /* However, we should remove *software* breakpoints only
3778 if the section is still mapped, or else we overwrite
3779 wrong code with the saved shadow contents. */
348d480f
PA
3780 if (bl->loc_type == bp_loc_hardware_breakpoint
3781 || section_is_mapped (bl->section))
73971819 3782 val = bl->owner->ops->remove_location (bl, reason);
aa67235e
UW
3783 else
3784 val = 0;
c906108c 3785 }
c02f5703
MS
3786 else
3787 {
3788 /* No -- not inserted, so no need to remove. No error. */
3789 val = 0;
3790 }
c906108c 3791 }
879d1e6b 3792
08351840
PA
3793 /* In some cases, we might not be able to remove a breakpoint in
3794 a shared library that has already been removed, but we have
3795 not yet processed the shlib unload event. Similarly for an
3796 unloaded add-symbol-file object - the user might not yet have
3797 had the chance to remove-symbol-file it. shlib_disabled will
3798 be set if the library/object has already been removed, but
3799 the breakpoint hasn't been uninserted yet, e.g., after
3800 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3801 always-inserted mode. */
076855f9 3802 if (val
08351840
PA
3803 && (bl->loc_type == bp_loc_software_breakpoint
3804 && (bl->shlib_disabled
3805 || solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
3806 || shared_objfile_contains_address_p (bl->pspace,
3807 bl->address))))
879d1e6b
UW
3808 val = 0;
3809
c906108c
SS
3810 if (val)
3811 return val;
b2b6a7da 3812 bl->inserted = (reason == DETACH_BREAKPOINT);
c906108c 3813 }
35df4500 3814 else if (bl->loc_type == bp_loc_hardware_watchpoint)
c906108c 3815 {
77b06cd7
TJB
3816 gdb_assert (bl->owner->ops != NULL
3817 && bl->owner->ops->remove_location != NULL);
3818
b2b6a7da 3819 bl->inserted = (reason == DETACH_BREAKPOINT);
73971819 3820 bl->owner->ops->remove_location (bl, reason);
2e70b7b9 3821
c906108c 3822 /* Failure to remove any of the hardware watchpoints comes here. */
b2b6a7da 3823 if (reason == REMOVE_BREAKPOINT && bl->inserted)
8a3fe4f8 3824 warning (_("Could not remove hardware watchpoint %d."),
35df4500 3825 bl->owner->number);
c906108c 3826 }
35df4500
TJB
3827 else if (bl->owner->type == bp_catchpoint
3828 && breakpoint_enabled (bl->owner)
3829 && !bl->duplicate)
ce78b96d 3830 {
77b06cd7
TJB
3831 gdb_assert (bl->owner->ops != NULL
3832 && bl->owner->ops->remove_location != NULL);
ce78b96d 3833
73971819 3834 val = bl->owner->ops->remove_location (bl, reason);
ce78b96d
JB
3835 if (val)
3836 return val;
77b06cd7 3837
b2b6a7da 3838 bl->inserted = (reason == DETACH_BREAKPOINT);
ce78b96d 3839 }
c906108c
SS
3840
3841 return 0;
3842}
3843
6c95b8df 3844static int
834c0d03 3845remove_breakpoint (struct bp_location *bl)
6c95b8df 3846{
35df4500
TJB
3847 /* BL is never in moribund_locations by our callers. */
3848 gdb_assert (bl->owner != NULL);
2bdf28a0 3849
6c95b8df
PA
3850 /* The type of none suggests that owner is actually deleted.
3851 This should not ever happen. */
35df4500 3852 gdb_assert (bl->owner->type != bp_none);
6c95b8df 3853
5ed8105e 3854 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 3855
35df4500 3856 switch_to_program_space_and_thread (bl->pspace);
6c95b8df 3857
5ed8105e 3858 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
6c95b8df
PA
3859}
3860
c906108c
SS
3861/* Clear the "inserted" flag in all breakpoints. */
3862
25b22b0a 3863void
fba45db2 3864mark_breakpoints_out (void)
c906108c 3865{
35df4500 3866 struct bp_location *bl, **blp_tmp;
c906108c 3867
35df4500 3868 ALL_BP_LOCATIONS (bl, blp_tmp)
66c4b3e8 3869 if (bl->pspace == current_program_space)
35df4500 3870 bl->inserted = 0;
c906108c
SS
3871}
3872
53a5351d
JM
3873/* Clear the "inserted" flag in all breakpoints and delete any
3874 breakpoints which should go away between runs of the program.
c906108c
SS
3875
3876 Plus other such housekeeping that has to be done for breakpoints
3877 between runs.
3878
53a5351d
JM
3879 Note: this function gets called at the end of a run (by
3880 generic_mourn_inferior) and when a run begins (by
4a64f543 3881 init_wait_for_inferior). */
c906108c
SS
3882
3883
3884
3885void
fba45db2 3886breakpoint_init_inferior (enum inf_context context)
c906108c 3887{
35df4500 3888 struct breakpoint *b, *b_tmp;
870f88f7 3889 struct bp_location *bl;
1c5cfe86 3890 int ix;
6c95b8df 3891 struct program_space *pspace = current_program_space;
c906108c 3892
50c71eaf
PA
3893 /* If breakpoint locations are shared across processes, then there's
3894 nothing to do. */
f5656ead 3895 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
50c71eaf
PA
3896 return;
3897
1a853c52 3898 mark_breakpoints_out ();
075f6582 3899
35df4500 3900 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3901 {
6c95b8df
PA
3902 if (b->loc && b->loc->pspace != pspace)
3903 continue;
3904
c5aa993b
JM
3905 switch (b->type)
3906 {
3907 case bp_call_dummy:
e2e4d78b 3908 case bp_longjmp_call_dummy:
c906108c 3909
c5aa993b 3910 /* If the call dummy breakpoint is at the entry point it will
ab92d69b
PA
3911 cause problems when the inferior is rerun, so we better get
3912 rid of it. */
3913
3914 case bp_watchpoint_scope:
3915
3916 /* Also get rid of scope breakpoints. */
3917
3918 case bp_shlib_event:
3919
3920 /* Also remove solib event breakpoints. Their addresses may
3921 have changed since the last time we ran the program.
3922 Actually we may now be debugging against different target;
3923 and so the solib backend that installed this breakpoint may
3924 not be used in by the target. E.g.,
3925
3926 (gdb) file prog-linux
3927 (gdb) run # native linux target
3928 ...
3929 (gdb) kill
3930 (gdb) file prog-win.exe
3931 (gdb) tar rem :9999 # remote Windows gdbserver.
3932 */
c906108c 3933
f59f708a
PA
3934 case bp_step_resume:
3935
3936 /* Also remove step-resume breakpoints. */
3937
7c16b83e
PA
3938 case bp_single_step:
3939
3940 /* Also remove single-step breakpoints. */
3941
c5aa993b
JM
3942 delete_breakpoint (b);
3943 break;
c906108c 3944
c5aa993b
JM
3945 case bp_watchpoint:
3946 case bp_hardware_watchpoint:
3947 case bp_read_watchpoint:
3948 case bp_access_watchpoint:
3a5c3e22
PA
3949 {
3950 struct watchpoint *w = (struct watchpoint *) b;
c906108c 3951
3a5c3e22
PA
3952 /* Likewise for watchpoints on local expressions. */
3953 if (w->exp_valid_block != NULL)
3954 delete_breakpoint (b);
63000888 3955 else
3a5c3e22 3956 {
63000888
PA
3957 /* Get rid of existing locations, which are no longer
3958 valid. New ones will be created in
3959 update_watchpoint, when the inferior is restarted.
3960 The next update_global_location_list call will
3961 garbage collect them. */
3962 b->loc = NULL;
3963
3964 if (context == inf_starting)
3965 {
3966 /* Reset val field to force reread of starting value in
3967 insert_breakpoints. */
3968 if (w->val)
3969 value_free (w->val);
3970 w->val = NULL;
3971 w->val_valid = 0;
3972 }
3973 }
3a5c3e22 3974 }
c5aa993b
JM
3975 break;
3976 default:
c5aa993b
JM
3977 break;
3978 }
3979 }
1c5cfe86
PA
3980
3981 /* Get rid of the moribund locations. */
35df4500
TJB
3982 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3983 decref_bp_location (&bl);
1c5cfe86 3984 VEC_free (bp_location_p, moribund_locations);
c906108c
SS
3985}
3986
6c95b8df
PA
3987/* These functions concern about actual breakpoints inserted in the
3988 target --- to e.g. check if we need to do decr_pc adjustment or if
3989 we need to hop over the bkpt --- so we check for address space
3990 match, not program space. */
3991
c2c6d25f
JM
3992/* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3993 exists at PC. It returns ordinary_breakpoint_here if it's an
3994 ordinary breakpoint, or permanent_breakpoint_here if it's a
3995 permanent breakpoint.
3996 - When continuing from a location with an ordinary breakpoint, we
3997 actually single step once before calling insert_breakpoints.
e5dd4106 3998 - When continuing from a location with a permanent breakpoint, we
c2c6d25f
JM
3999 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4000 the target, to advance the PC past the breakpoint. */
c906108c 4001
c2c6d25f 4002enum breakpoint_here
accd0bcd 4003breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 4004{
35df4500 4005 struct bp_location *bl, **blp_tmp;
c2c6d25f 4006 int any_breakpoint_here = 0;
c906108c 4007
35df4500 4008 ALL_BP_LOCATIONS (bl, blp_tmp)
075f6582 4009 {
35df4500
TJB
4010 if (bl->loc_type != bp_loc_software_breakpoint
4011 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4012 continue;
4013
f1310107 4014 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
35df4500 4015 if ((breakpoint_enabled (bl->owner)
1a853c52 4016 || bl->permanent)
f1310107 4017 && breakpoint_location_address_match (bl, aspace, pc))
075f6582
DJ
4018 {
4019 if (overlay_debugging
35df4500
TJB
4020 && section_is_overlay (bl->section)
4021 && !section_is_mapped (bl->section))
075f6582 4022 continue; /* unmapped overlay -- can't be a match */
1a853c52 4023 else if (bl->permanent)
075f6582
DJ
4024 return permanent_breakpoint_here;
4025 else
4026 any_breakpoint_here = 1;
4027 }
4028 }
c906108c 4029
f486487f 4030 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
c906108c
SS
4031}
4032
d35ae833
PA
4033/* See breakpoint.h. */
4034
4035int
accd0bcd 4036breakpoint_in_range_p (const address_space *aspace,
d35ae833
PA
4037 CORE_ADDR addr, ULONGEST len)
4038{
4039 struct bp_location *bl, **blp_tmp;
4040
4041 ALL_BP_LOCATIONS (bl, blp_tmp)
4042 {
4043 if (bl->loc_type != bp_loc_software_breakpoint
4044 && bl->loc_type != bp_loc_hardware_breakpoint)
4045 continue;
4046
4047 if ((breakpoint_enabled (bl->owner)
4048 || bl->permanent)
4049 && breakpoint_location_address_range_overlap (bl, aspace,
4050 addr, len))
4051 {
4052 if (overlay_debugging
4053 && section_is_overlay (bl->section)
4054 && !section_is_mapped (bl->section))
4055 {
4056 /* Unmapped overlay -- can't be a match. */
4057 continue;
4058 }
4059
4060 return 1;
4061 }
4062 }
4063
4064 return 0;
4065}
4066
1c5cfe86
PA
4067/* Return true if there's a moribund breakpoint at PC. */
4068
4069int
accd0bcd 4070moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
1c5cfe86
PA
4071{
4072 struct bp_location *loc;
4073 int ix;
4074
4075 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
f1310107 4076 if (breakpoint_location_address_match (loc, aspace, pc))
1c5cfe86
PA
4077 return 1;
4078
4079 return 0;
4080}
c2c6d25f 4081
f7ce857f
PA
4082/* Returns non-zero iff BL is inserted at PC, in address space
4083 ASPACE. */
4084
4085static int
4086bp_location_inserted_here_p (struct bp_location *bl,
accd0bcd 4087 const address_space *aspace, CORE_ADDR pc)
f7ce857f
PA
4088{
4089 if (bl->inserted
4090 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4091 aspace, pc))
4092 {
4093 if (overlay_debugging
4094 && section_is_overlay (bl->section)
4095 && !section_is_mapped (bl->section))
4096 return 0; /* unmapped overlay -- can't be a match */
4097 else
4098 return 1;
4099 }
4100 return 0;
4101}
4102
a1fd2fa5 4103/* Returns non-zero iff there's a breakpoint inserted at PC. */
c906108c
SS
4104
4105int
accd0bcd 4106breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 4107{
f7ce857f 4108 struct bp_location **blp, **blp_tmp = NULL;
c906108c 4109
f7ce857f 4110 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
c5aa993b 4111 {
f7ce857f
PA
4112 struct bp_location *bl = *blp;
4113
35df4500
TJB
4114 if (bl->loc_type != bp_loc_software_breakpoint
4115 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4116 continue;
4117
f7ce857f
PA
4118 if (bp_location_inserted_here_p (bl, aspace, pc))
4119 return 1;
c5aa993b 4120 }
c36b740a
VP
4121 return 0;
4122}
4123
a1fd2fa5
PA
4124/* This function returns non-zero iff there is a software breakpoint
4125 inserted at PC. */
c36b740a
VP
4126
4127int
accd0bcd 4128software_breakpoint_inserted_here_p (const address_space *aspace,
a1fd2fa5 4129 CORE_ADDR pc)
4fa8626c 4130{
f7ce857f 4131 struct bp_location **blp, **blp_tmp = NULL;
4fa8626c 4132
f7ce857f 4133 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4fa8626c 4134 {
f7ce857f
PA
4135 struct bp_location *bl = *blp;
4136
35df4500 4137 if (bl->loc_type != bp_loc_software_breakpoint)
4fa8626c
DJ
4138 continue;
4139
f7ce857f
PA
4140 if (bp_location_inserted_here_p (bl, aspace, pc))
4141 return 1;
4fa8626c
DJ
4142 }
4143
4144 return 0;
9c02b525
PA
4145}
4146
4147/* See breakpoint.h. */
4148
4149int
accd0bcd 4150hardware_breakpoint_inserted_here_p (const address_space *aspace,
9c02b525
PA
4151 CORE_ADDR pc)
4152{
4153 struct bp_location **blp, **blp_tmp = NULL;
9c02b525
PA
4154
4155 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4156 {
4157 struct bp_location *bl = *blp;
4158
4159 if (bl->loc_type != bp_loc_hardware_breakpoint)
4160 continue;
4161
4162 if (bp_location_inserted_here_p (bl, aspace, pc))
4163 return 1;
4164 }
4165
4166 return 0;
4fa8626c
DJ
4167}
4168
9093389c 4169int
accd0bcd 4170hardware_watchpoint_inserted_in_range (const address_space *aspace,
9093389c
PA
4171 CORE_ADDR addr, ULONGEST len)
4172{
4173 struct breakpoint *bpt;
4174
4175 ALL_BREAKPOINTS (bpt)
4176 {
4177 struct bp_location *loc;
4178
4179 if (bpt->type != bp_hardware_watchpoint
4180 && bpt->type != bp_access_watchpoint)
4181 continue;
4182
4183 if (!breakpoint_enabled (bpt))
4184 continue;
4185
4186 for (loc = bpt->loc; loc; loc = loc->next)
4187 if (loc->pspace->aspace == aspace && loc->inserted)
4188 {
4189 CORE_ADDR l, h;
4190
4191 /* Check for intersection. */
768adc05
PA
4192 l = std::max<CORE_ADDR> (loc->address, addr);
4193 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
9093389c
PA
4194 if (l < h)
4195 return 1;
4196 }
4197 }
4198 return 0;
4199}
c906108c 4200\f
c5aa993b 4201
c906108c
SS
4202/* bpstat stuff. External routines' interfaces are documented
4203 in breakpoint.h. */
4204
4205int
c326b90e 4206is_catchpoint (struct breakpoint *ep)
c906108c 4207{
533be4dd 4208 return (ep->type == bp_catchpoint);
c906108c
SS
4209}
4210
f431efe5
PA
4211/* Frees any storage that is part of a bpstat. Does not walk the
4212 'next' chain. */
4213
04afa70c 4214bpstats::~bpstats ()
198757a8 4215{
04afa70c
TT
4216 if (old_val != NULL)
4217 value_free (old_val);
04afa70c
TT
4218 if (bp_location_at != NULL)
4219 decref_bp_location (&bp_location_at);
198757a8
VP
4220}
4221
c906108c
SS
4222/* Clear a bpstat so that it says we are not at any breakpoint.
4223 Also free any storage that is part of a bpstat. */
4224
4225void
fba45db2 4226bpstat_clear (bpstat *bsp)
c906108c
SS
4227{
4228 bpstat p;
4229 bpstat q;
4230
4231 if (bsp == 0)
4232 return;
4233 p = *bsp;
4234 while (p != NULL)
4235 {
4236 q = p->next;
04afa70c 4237 delete p;
c906108c
SS
4238 p = q;
4239 }
4240 *bsp = NULL;
4241}
4242
04afa70c
TT
4243bpstats::bpstats (const bpstats &other)
4244 : next (NULL),
4245 bp_location_at (other.bp_location_at),
4246 breakpoint_at (other.breakpoint_at),
4247 commands (other.commands),
4248 old_val (other.old_val),
4249 print (other.print),
4250 stop (other.stop),
4251 print_it (other.print_it)
4252{
4253 if (old_val != NULL)
4254 {
4255 old_val = value_copy (old_val);
4256 release_value (old_val);
4257 }
4258 incref_bp_location (bp_location_at);
04afa70c
TT
4259}
4260
c906108c
SS
4261/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4262 is part of the bpstat is copied as well. */
4263
4264bpstat
fba45db2 4265bpstat_copy (bpstat bs)
c906108c
SS
4266{
4267 bpstat p = NULL;
4268 bpstat tmp;
4269 bpstat retval = NULL;
4270
4271 if (bs == NULL)
4272 return bs;
4273
4274 for (; bs != NULL; bs = bs->next)
4275 {
04afa70c 4276 tmp = new bpstats (*bs);
31cc81e9 4277
c906108c
SS
4278 if (p == NULL)
4279 /* This is the first thing in the chain. */
4280 retval = tmp;
4281 else
4282 p->next = tmp;
4283 p = tmp;
4284 }
4285 p->next = NULL;
4286 return retval;
4287}
4288
4a64f543 4289/* Find the bpstat associated with this breakpoint. */
c906108c
SS
4290
4291bpstat
fba45db2 4292bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
c906108c 4293{
c5aa993b
JM
4294 if (bsp == NULL)
4295 return NULL;
c906108c 4296
c5aa993b
JM
4297 for (; bsp != NULL; bsp = bsp->next)
4298 {
f431efe5 4299 if (bsp->breakpoint_at == breakpoint)
c5aa993b
JM
4300 return bsp;
4301 }
c906108c
SS
4302 return NULL;
4303}
4304
ab04a2af
TT
4305/* See breakpoint.h. */
4306
47591c29 4307int
427cd150 4308bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
ab04a2af 4309{
ab04a2af
TT
4310 for (; bsp != NULL; bsp = bsp->next)
4311 {
427cd150
TT
4312 if (bsp->breakpoint_at == NULL)
4313 {
4314 /* A moribund location can never explain a signal other than
4315 GDB_SIGNAL_TRAP. */
4316 if (sig == GDB_SIGNAL_TRAP)
47591c29 4317 return 1;
427cd150
TT
4318 }
4319 else
47591c29
PA
4320 {
4321 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4322 sig))
4323 return 1;
4324 }
ab04a2af
TT
4325 }
4326
47591c29 4327 return 0;
ab04a2af
TT
4328}
4329
4a64f543
MS
4330/* Put in *NUM the breakpoint number of the first breakpoint we are
4331 stopped at. *BSP upon return is a bpstat which points to the
4332 remaining breakpoints stopped at (but which is not guaranteed to be
4333 good for anything but further calls to bpstat_num).
4334
8671a17b
PA
4335 Return 0 if passed a bpstat which does not indicate any breakpoints.
4336 Return -1 if stopped at a breakpoint that has been deleted since
4337 we set it.
4338 Return 1 otherwise. */
c906108c
SS
4339
4340int
8671a17b 4341bpstat_num (bpstat *bsp, int *num)
c906108c
SS
4342{
4343 struct breakpoint *b;
4344
4345 if ((*bsp) == NULL)
4346 return 0; /* No more breakpoint values */
8671a17b 4347
4a64f543
MS
4348 /* We assume we'll never have several bpstats that correspond to a
4349 single breakpoint -- otherwise, this function might return the
4350 same number more than once and this will look ugly. */
f431efe5 4351 b = (*bsp)->breakpoint_at;
8671a17b
PA
4352 *bsp = (*bsp)->next;
4353 if (b == NULL)
4354 return -1; /* breakpoint that's been deleted since */
4355
4356 *num = b->number; /* We have its number */
4357 return 1;
c906108c
SS
4358}
4359
e93ca019 4360/* See breakpoint.h. */
c906108c
SS
4361
4362void
e93ca019 4363bpstat_clear_actions (void)
c906108c 4364{
e93ca019
JK
4365 struct thread_info *tp;
4366 bpstat bs;
4367
4368 if (ptid_equal (inferior_ptid, null_ptid))
4369 return;
4370
4371 tp = find_thread_ptid (inferior_ptid);
4372 if (tp == NULL)
4373 return;
4374
4375 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
c906108c 4376 {
d1b0a7bf 4377 bs->commands = NULL;
abf85f46 4378
c906108c
SS
4379 if (bs->old_val != NULL)
4380 {
4381 value_free (bs->old_val);
4382 bs->old_val = NULL;
4383 }
4384 }
4385}
4386
f3b1572e
PA
4387/* Called when a command is about to proceed the inferior. */
4388
4389static void
4390breakpoint_about_to_proceed (void)
4391{
4392 if (!ptid_equal (inferior_ptid, null_ptid))
4393 {
4394 struct thread_info *tp = inferior_thread ();
4395
4396 /* Allow inferior function calls in breakpoint commands to not
4397 interrupt the command list. When the call finishes
4398 successfully, the inferior will be standing at the same
4399 breakpoint as if nothing happened. */
16c381f0 4400 if (tp->control.in_infcall)
f3b1572e
PA
4401 return;
4402 }
4403
4404 breakpoint_proceeded = 1;
4405}
4406
abf85f46
JK
4407/* Return non-zero iff CMD as the first line of a command sequence is `silent'
4408 or its equivalent. */
4409
4410static int
4411command_line_is_silent (struct command_line *cmd)
4412{
4f45d445 4413 return cmd && (strcmp ("silent", cmd->line) == 0);
abf85f46
JK
4414}
4415
4a64f543
MS
4416/* Execute all the commands associated with all the breakpoints at
4417 this location. Any of these commands could cause the process to
4418 proceed beyond this point, etc. We look out for such changes by
4419 checking the global "breakpoint_proceeded" after each command.
c906108c 4420
347bddb7
PA
4421 Returns true if a breakpoint command resumed the inferior. In that
4422 case, it is the caller's responsibility to recall it again with the
4423 bpstat of the current thread. */
4424
4425static int
4426bpstat_do_actions_1 (bpstat *bsp)
c906108c
SS
4427{
4428 bpstat bs;
347bddb7 4429 int again = 0;
c906108c
SS
4430
4431 /* Avoid endless recursion if a `source' command is contained
4432 in bs->commands. */
4433 if (executing_breakpoint_commands)
347bddb7 4434 return 0;
c906108c 4435
81b1e71c
TT
4436 scoped_restore save_executing
4437 = make_scoped_restore (&executing_breakpoint_commands, 1);
c906108c 4438
1ac32117 4439 scoped_restore preventer = prevent_dont_repeat ();
cf6c5ffb 4440
4a64f543 4441 /* This pointer will iterate over the list of bpstat's. */
c906108c
SS
4442 bs = *bsp;
4443
4444 breakpoint_proceeded = 0;
4445 for (; bs != NULL; bs = bs->next)
4446 {
d1b0a7bf 4447 struct command_line *cmd = NULL;
6c50ab1c
JB
4448
4449 /* Take ownership of the BSP's command tree, if it has one.
4450
4451 The command tree could legitimately contain commands like
4452 'step' and 'next', which call clear_proceed_status, which
4453 frees stop_bpstat's command tree. To make sure this doesn't
4454 free the tree we're executing out from under us, we need to
4455 take ownership of the tree ourselves. Since a given bpstat's
4456 commands are only executed once, we don't need to copy it; we
4457 can clear the pointer in the bpstat, and make sure we free
4458 the tree when we're done. */
d1b0a7bf 4459 counted_command_line ccmd = bs->commands;
9add0f1b 4460 bs->commands = NULL;
d1b0a7bf
TT
4461 if (ccmd != NULL)
4462 cmd = ccmd.get ();
abf85f46
JK
4463 if (command_line_is_silent (cmd))
4464 {
4465 /* The action has been already done by bpstat_stop_status. */
4466 cmd = cmd->next;
4467 }
6c50ab1c 4468
c906108c
SS
4469 while (cmd != NULL)
4470 {
4471 execute_control_command (cmd);
4472
4473 if (breakpoint_proceeded)
4474 break;
4475 else
4476 cmd = cmd->next;
4477 }
6c50ab1c 4478
c906108c 4479 if (breakpoint_proceeded)
32c1e744 4480 {
cb814510 4481 if (current_ui->async)
347bddb7
PA
4482 /* If we are in async mode, then the target might be still
4483 running, not stopped at any breakpoint, so nothing for
4484 us to do here -- just return to the event loop. */
4485 ;
32c1e744
VP
4486 else
4487 /* In sync mode, when execute_control_command returns
4488 we're already standing on the next breakpoint.
347bddb7
PA
4489 Breakpoint commands for that stop were not run, since
4490 execute_command does not run breakpoint commands --
4491 only command_line_handler does, but that one is not
4492 involved in execution of breakpoint commands. So, we
4493 can now execute breakpoint commands. It should be
4494 noted that making execute_command do bpstat actions is
4495 not an option -- in this case we'll have recursive
4496 invocation of bpstat for each breakpoint with a
4497 command, and can easily blow up GDB stack. Instead, we
4498 return true, which will trigger the caller to recall us
4499 with the new stop_bpstat. */
4500 again = 1;
4501 break;
32c1e744 4502 }
c906108c 4503 }
347bddb7
PA
4504 return again;
4505}
4506
4507void
4508bpstat_do_actions (void)
4509{
353d1d73
JK
4510 struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4511
347bddb7
PA
4512 /* Do any commands attached to breakpoint we are stopped at. */
4513 while (!ptid_equal (inferior_ptid, null_ptid)
4514 && target_has_execution
4515 && !is_exited (inferior_ptid)
4516 && !is_executing (inferior_ptid))
4517 /* Since in sync mode, bpstat_do_actions may resume the inferior,
4518 and only return when it is stopped at the next breakpoint, we
4519 keep doing breakpoint actions until it returns false to
4520 indicate the inferior was not resumed. */
16c381f0 4521 if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
347bddb7 4522 break;
353d1d73
JK
4523
4524 discard_cleanups (cleanup_if_error);
c906108c
SS
4525}
4526
fa4727a6
DJ
4527/* Print out the (old or new) value associated with a watchpoint. */
4528
4529static void
4530watchpoint_value_print (struct value *val, struct ui_file *stream)
4531{
4532 if (val == NULL)
4533 fprintf_unfiltered (stream, _("<unreadable>"));
4534 else
79a45b7d
TT
4535 {
4536 struct value_print_options opts;
4537 get_user_print_options (&opts);
4538 value_print (val, stream, &opts);
4539 }
fa4727a6
DJ
4540}
4541
f303dbd6
PA
4542/* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4543 debugging multiple threads. */
4544
4545void
4546maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4547{
112e8700 4548 if (uiout->is_mi_like_p ())
f303dbd6
PA
4549 return;
4550
112e8700 4551 uiout->text ("\n");
f303dbd6
PA
4552
4553 if (show_thread_that_caused_stop ())
4554 {
4555 const char *name;
4556 struct thread_info *thr = inferior_thread ();
4557
112e8700
SM
4558 uiout->text ("Thread ");
4559 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
f303dbd6
PA
4560
4561 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4562 if (name != NULL)
4563 {
112e8700
SM
4564 uiout->text (" \"");
4565 uiout->field_fmt ("name", "%s", name);
4566 uiout->text ("\"");
f303dbd6
PA
4567 }
4568
112e8700 4569 uiout->text (" hit ");
f303dbd6
PA
4570 }
4571}
4572
e514a9d6 4573/* Generic routine for printing messages indicating why we
4a64f543 4574 stopped. The behavior of this function depends on the value
e514a9d6
JM
4575 'print_it' in the bpstat structure. Under some circumstances we
4576 may decide not to print anything here and delegate the task to
4a64f543 4577 normal_stop(). */
e514a9d6
JM
4578
4579static enum print_stop_action
4580print_bp_stop_message (bpstat bs)
4581{
4582 switch (bs->print_it)
4583 {
4584 case print_it_noop:
4a64f543 4585 /* Nothing should be printed for this bpstat entry. */
e514a9d6
JM
4586 return PRINT_UNKNOWN;
4587 break;
4588
4589 case print_it_done:
4590 /* We still want to print the frame, but we already printed the
4a64f543 4591 relevant messages. */
e514a9d6
JM
4592 return PRINT_SRC_AND_LOC;
4593 break;
4594
4595 case print_it_normal:
4f8d1dc6 4596 {
f431efe5
PA
4597 struct breakpoint *b = bs->breakpoint_at;
4598
1a6a67de
TJB
4599 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4600 which has since been deleted. */
4601 if (b == NULL)
4602 return PRINT_UNKNOWN;
4603
348d480f
PA
4604 /* Normal case. Call the breakpoint's print_it method. */
4605 return b->ops->print_it (bs);
4f8d1dc6 4606 }
348d480f 4607 break;
3086aeae 4608
e514a9d6 4609 default:
8e65ff28 4610 internal_error (__FILE__, __LINE__,
e2e0b3e5 4611 _("print_bp_stop_message: unrecognized enum value"));
e514a9d6 4612 break;
c906108c 4613 }
c906108c
SS
4614}
4615
edcc5120
TT
4616/* A helper function that prints a shared library stopped event. */
4617
4618static void
4619print_solib_event (int is_catchpoint)
4620{
4621 int any_deleted
4622 = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4623 int any_added
4624 = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4625
4626 if (!is_catchpoint)
4627 {
4628 if (any_added || any_deleted)
112e8700 4629 current_uiout->text (_("Stopped due to shared library event:\n"));
edcc5120 4630 else
112e8700
SM
4631 current_uiout->text (_("Stopped due to shared library event (no "
4632 "libraries added or removed)\n"));
edcc5120
TT
4633 }
4634
112e8700
SM
4635 if (current_uiout->is_mi_like_p ())
4636 current_uiout->field_string ("reason",
4637 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
edcc5120
TT
4638
4639 if (any_deleted)
4640 {
edcc5120
TT
4641 char *name;
4642 int ix;
4643
112e8700 4644 current_uiout->text (_(" Inferior unloaded "));
10f489e5 4645 ui_out_emit_list list_emitter (current_uiout, "removed");
edcc5120
TT
4646 for (ix = 0;
4647 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4648 ix, name);
4649 ++ix)
4650 {
4651 if (ix > 0)
112e8700
SM
4652 current_uiout->text (" ");
4653 current_uiout->field_string ("library", name);
4654 current_uiout->text ("\n");
edcc5120 4655 }
edcc5120
TT
4656 }
4657
4658 if (any_added)
4659 {
4660 struct so_list *iter;
4661 int ix;
edcc5120 4662
112e8700 4663 current_uiout->text (_(" Inferior loaded "));
10f489e5 4664 ui_out_emit_list list_emitter (current_uiout, "added");
edcc5120
TT
4665 for (ix = 0;
4666 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4667 ix, iter);
4668 ++ix)
4669 {
4670 if (ix > 0)
112e8700
SM
4671 current_uiout->text (" ");
4672 current_uiout->field_string ("library", iter->so_name);
4673 current_uiout->text ("\n");
edcc5120 4674 }
edcc5120
TT
4675 }
4676}
4677
e514a9d6
JM
4678/* Print a message indicating what happened. This is called from
4679 normal_stop(). The input to this routine is the head of the bpstat
36dfb11c
TT
4680 list - a list of the eventpoints that caused this stop. KIND is
4681 the target_waitkind for the stopping event. This
e514a9d6
JM
4682 routine calls the generic print routine for printing a message
4683 about reasons for stopping. This will print (for example) the
4684 "Breakpoint n," part of the output. The return value of this
4685 routine is one of:
c906108c 4686
4a64f543 4687 PRINT_UNKNOWN: Means we printed nothing.
917317f4 4688 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4a64f543 4689 code to print the location. An example is
c5aa993b
JM
4690 "Breakpoint 1, " which should be followed by
4691 the location.
917317f4 4692 PRINT_SRC_ONLY: Means we printed something, but there is no need
c5aa993b
JM
4693 to also print the location part of the message.
4694 An example is the catch/throw messages, which
4a64f543 4695 don't require a location appended to the end.
917317f4 4696 PRINT_NOTHING: We have done some printing and we don't need any
4a64f543 4697 further info to be printed. */
c906108c 4698
917317f4 4699enum print_stop_action
36dfb11c 4700bpstat_print (bpstat bs, int kind)
c906108c 4701{
f486487f 4702 enum print_stop_action val;
c5aa993b 4703
c906108c 4704 /* Maybe another breakpoint in the chain caused us to stop.
53a5351d
JM
4705 (Currently all watchpoints go on the bpstat whether hit or not.
4706 That probably could (should) be changed, provided care is taken
c906108c 4707 with respect to bpstat_explains_signal). */
e514a9d6
JM
4708 for (; bs; bs = bs->next)
4709 {
4710 val = print_bp_stop_message (bs);
4711 if (val == PRINT_SRC_ONLY
4712 || val == PRINT_SRC_AND_LOC
4713 || val == PRINT_NOTHING)
4714 return val;
4715 }
c906108c 4716
36dfb11c
TT
4717 /* If we had hit a shared library event breakpoint,
4718 print_bp_stop_message would print out this message. If we hit an
4719 OS-level shared library event, do the same thing. */
4720 if (kind == TARGET_WAITKIND_LOADED)
4721 {
edcc5120 4722 print_solib_event (0);
36dfb11c
TT
4723 return PRINT_NOTHING;
4724 }
4725
e514a9d6 4726 /* We reached the end of the chain, or we got a null BS to start
4a64f543 4727 with and nothing was printed. */
917317f4 4728 return PRINT_UNKNOWN;
c906108c
SS
4729}
4730
bf469271 4731/* Evaluate the boolean expression EXP and return the result. */
c906108c 4732
bf469271
PA
4733static bool
4734breakpoint_cond_eval (expression *exp)
c906108c 4735{
278cd55f 4736 struct value *mark = value_mark ();
bf469271 4737 bool res = value_true (evaluate_expression (exp));
cc59ec59 4738
c906108c 4739 value_free_to_mark (mark);
bf469271 4740 return res;
c906108c
SS
4741}
4742
5760d0ab 4743/* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
c906108c 4744
04afa70c
TT
4745bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4746 : next (NULL),
4747 bp_location_at (bl),
4748 breakpoint_at (bl->owner),
4749 commands (NULL),
4750 old_val (NULL),
4751 print (0),
4752 stop (0),
4753 print_it (print_it_normal)
c906108c 4754{
f431efe5 4755 incref_bp_location (bl);
04afa70c
TT
4756 **bs_link_pointer = this;
4757 *bs_link_pointer = &next;
4758}
4759
4760bpstats::bpstats ()
4761 : next (NULL),
4762 bp_location_at (NULL),
4763 breakpoint_at (NULL),
4764 commands (NULL),
4765 old_val (NULL),
4766 print (0),
4767 stop (0),
4768 print_it (print_it_normal)
4769{
c906108c
SS
4770}
4771\f
d983da9c
DJ
4772/* The target has stopped with waitstatus WS. Check if any hardware
4773 watchpoints have triggered, according to the target. */
4774
4775int
4776watchpoints_triggered (struct target_waitstatus *ws)
4777{
d92524f1 4778 int stopped_by_watchpoint = target_stopped_by_watchpoint ();
d983da9c
DJ
4779 CORE_ADDR addr;
4780 struct breakpoint *b;
4781
4782 if (!stopped_by_watchpoint)
4783 {
4784 /* We were not stopped by a watchpoint. Mark all watchpoints
4785 as not triggered. */
4786 ALL_BREAKPOINTS (b)
cc60f2e3 4787 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4788 {
4789 struct watchpoint *w = (struct watchpoint *) b;
4790
4791 w->watchpoint_triggered = watch_triggered_no;
4792 }
d983da9c
DJ
4793
4794 return 0;
4795 }
4796
4797 if (!target_stopped_data_address (&current_target, &addr))
4798 {
4799 /* We were stopped by a watchpoint, but we don't know where.
4800 Mark all watchpoints as unknown. */
4801 ALL_BREAKPOINTS (b)
cc60f2e3 4802 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4803 {
4804 struct watchpoint *w = (struct watchpoint *) b;
4805
4806 w->watchpoint_triggered = watch_triggered_unknown;
4807 }
d983da9c 4808
3c4797ba 4809 return 1;
d983da9c
DJ
4810 }
4811
4812 /* The target could report the data address. Mark watchpoints
4813 affected by this data address as triggered, and all others as not
4814 triggered. */
4815
4816 ALL_BREAKPOINTS (b)
cc60f2e3 4817 if (is_hardware_watchpoint (b))
d983da9c 4818 {
3a5c3e22 4819 struct watchpoint *w = (struct watchpoint *) b;
a5606eee 4820 struct bp_location *loc;
d983da9c 4821
3a5c3e22 4822 w->watchpoint_triggered = watch_triggered_no;
a5606eee 4823 for (loc = b->loc; loc; loc = loc->next)
9c06b0b4 4824 {
3a5c3e22 4825 if (is_masked_watchpoint (b))
9c06b0b4 4826 {
3a5c3e22
PA
4827 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4828 CORE_ADDR start = loc->address & w->hw_wp_mask;
9c06b0b4
TJB
4829
4830 if (newaddr == start)
4831 {
3a5c3e22 4832 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4833 break;
4834 }
4835 }
4836 /* Exact match not required. Within range is sufficient. */
4837 else if (target_watchpoint_addr_within_range (&current_target,
4838 addr, loc->address,
4839 loc->length))
4840 {
3a5c3e22 4841 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4842 break;
4843 }
4844 }
d983da9c
DJ
4845 }
4846
4847 return 1;
4848}
4849
bf469271
PA
4850/* Possible return values for watchpoint_check. */
4851enum wp_check_result
4852 {
4853 /* The watchpoint has been deleted. */
4854 WP_DELETED = 1,
4855
4856 /* The value has changed. */
4857 WP_VALUE_CHANGED = 2,
4858
4859 /* The value has not changed. */
4860 WP_VALUE_NOT_CHANGED = 3,
4861
4862 /* Ignore this watchpoint, no matter if the value changed or not. */
4863 WP_IGNORE = 4,
4864 };
c906108c
SS
4865
4866#define BP_TEMPFLAG 1
4867#define BP_HARDWAREFLAG 2
4868
4a64f543 4869/* Evaluate watchpoint condition expression and check if its value
bf469271 4870 changed. */
553e4c11 4871
bf469271
PA
4872static wp_check_result
4873watchpoint_check (bpstat bs)
c906108c 4874{
3a5c3e22 4875 struct watchpoint *b;
c906108c
SS
4876 struct frame_info *fr;
4877 int within_current_scope;
4878
f431efe5 4879 /* BS is built from an existing struct breakpoint. */
2bdf28a0 4880 gdb_assert (bs->breakpoint_at != NULL);
3a5c3e22 4881 b = (struct watchpoint *) bs->breakpoint_at;
d0fb5eae 4882
f6bc2008
PA
4883 /* If this is a local watchpoint, we only want to check if the
4884 watchpoint frame is in scope if the current thread is the thread
4885 that was used to create the watchpoint. */
4886 if (!watchpoint_in_thread_scope (b))
60e1c644 4887 return WP_IGNORE;
f6bc2008 4888
c906108c
SS
4889 if (b->exp_valid_block == NULL)
4890 within_current_scope = 1;
4891 else
4892 {
edb3359d
DJ
4893 struct frame_info *frame = get_current_frame ();
4894 struct gdbarch *frame_arch = get_frame_arch (frame);
4895 CORE_ADDR frame_pc = get_frame_pc (frame);
4896
c9cf6e20 4897 /* stack_frame_destroyed_p() returns a non-zero value if we're
4a64f543
MS
4898 still in the function but the stack frame has already been
4899 invalidated. Since we can't rely on the values of local
4900 variables after the stack has been destroyed, we are treating
4901 the watchpoint in that state as `not changed' without further
4902 checking. Don't mark watchpoints as changed if the current
4903 frame is in an epilogue - even if they are in some other
4904 frame, our view of the stack is likely to be wrong and
4905 frame_find_by_id could error out. */
c9cf6e20 4906 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
60e1c644 4907 return WP_IGNORE;
a0f49112 4908
101dcfbe 4909 fr = frame_find_by_id (b->watchpoint_frame);
c906108c 4910 within_current_scope = (fr != NULL);
69fbadd5
DJ
4911
4912 /* If we've gotten confused in the unwinder, we might have
4913 returned a frame that can't describe this variable. */
edb3359d
DJ
4914 if (within_current_scope)
4915 {
4916 struct symbol *function;
4917
4918 function = get_frame_function (fr);
4919 if (function == NULL
4920 || !contained_in (b->exp_valid_block,
4921 SYMBOL_BLOCK_VALUE (function)))
4922 within_current_scope = 0;
4923 }
69fbadd5 4924
edb3359d 4925 if (within_current_scope)
c906108c
SS
4926 /* If we end up stopping, the current frame will get selected
4927 in normal_stop. So this call to select_frame won't affect
4928 the user. */
0f7d239c 4929 select_frame (fr);
c906108c 4930 }
c5aa993b 4931
c906108c
SS
4932 if (within_current_scope)
4933 {
4a64f543
MS
4934 /* We use value_{,free_to_}mark because it could be a *long*
4935 time before we return to the command level and call
4936 free_all_values. We can't call free_all_values because we
4937 might be in the middle of evaluating a function call. */
c906108c 4938
0cf6dd15 4939 int pc = 0;
9c06b0b4 4940 struct value *mark;
fa4727a6
DJ
4941 struct value *new_val;
4942
c1fc2657 4943 if (is_masked_watchpoint (b))
9c06b0b4
TJB
4944 /* Since we don't know the exact trigger address (from
4945 stopped_data_address), just tell the user we've triggered
4946 a mask watchpoint. */
4947 return WP_VALUE_CHANGED;
4948
4949 mark = value_mark ();
4d01a485 4950 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
218d2fc6 4951
bb9d5f81
PP
4952 if (b->val_bitsize != 0)
4953 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4954
4a64f543
MS
4955 /* We use value_equal_contents instead of value_equal because
4956 the latter coerces an array to a pointer, thus comparing just
4957 the address of the array instead of its contents. This is
4958 not what we want. */
fa4727a6 4959 if ((b->val != NULL) != (new_val != NULL)
218d2fc6 4960 || (b->val != NULL && !value_equal_contents (b->val, new_val)))
c906108c 4961 {
fa4727a6
DJ
4962 if (new_val != NULL)
4963 {
4964 release_value (new_val);
4965 value_free_to_mark (mark);
4966 }
c906108c
SS
4967 bs->old_val = b->val;
4968 b->val = new_val;
fa4727a6 4969 b->val_valid = 1;
c906108c
SS
4970 return WP_VALUE_CHANGED;
4971 }
4972 else
4973 {
60e1c644 4974 /* Nothing changed. */
c906108c 4975 value_free_to_mark (mark);
c906108c
SS
4976 return WP_VALUE_NOT_CHANGED;
4977 }
4978 }
4979 else
4980 {
4981 /* This seems like the only logical thing to do because
c5aa993b
JM
4982 if we temporarily ignored the watchpoint, then when
4983 we reenter the block in which it is valid it contains
4984 garbage (in the case of a function, it may have two
4985 garbage values, one before and one after the prologue).
4986 So we can't even detect the first assignment to it and
4987 watch after that (since the garbage may or may not equal
4988 the first value assigned). */
348d480f
PA
4989 /* We print all the stop information in
4990 breakpoint_ops->print_it, but in this case, by the time we
4991 call breakpoint_ops->print_it this bp will be deleted
4992 already. So we have no choice but print the information
4993 here. */
468afe6c 4994
0e454242 4995 SWITCH_THRU_ALL_UIS ()
468afe6c
PA
4996 {
4997 struct ui_out *uiout = current_uiout;
4998
112e8700
SM
4999 if (uiout->is_mi_like_p ())
5000 uiout->field_string
5001 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5002 uiout->text ("\nWatchpoint ");
c1fc2657 5003 uiout->field_int ("wpnum", b->number);
112e8700 5004 uiout->text (" deleted because the program has left the block in\n"
468afe6c
PA
5005 "which its expression is valid.\n");
5006 }
4ce44c66 5007
cdac0397 5008 /* Make sure the watchpoint's commands aren't executed. */
d1b0a7bf 5009 b->commands = NULL;
d0fb5eae 5010 watchpoint_del_at_next_stop (b);
c906108c
SS
5011
5012 return WP_DELETED;
5013 }
5014}
5015
18a18393 5016/* Return true if it looks like target has stopped due to hitting
348d480f
PA
5017 breakpoint location BL. This function does not check if we should
5018 stop, only if BL explains the stop. */
5019
18a18393 5020static int
6c95b8df 5021bpstat_check_location (const struct bp_location *bl,
accd0bcd 5022 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 5023 const struct target_waitstatus *ws)
18a18393
VP
5024{
5025 struct breakpoint *b = bl->owner;
5026
348d480f 5027 /* BL is from an existing breakpoint. */
2bdf28a0
JK
5028 gdb_assert (b != NULL);
5029
bd522513 5030 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
18a18393
VP
5031}
5032
3a5c3e22
PA
5033/* Determine if the watched values have actually changed, and we
5034 should stop. If not, set BS->stop to 0. */
5035
18a18393
VP
5036static void
5037bpstat_check_watchpoint (bpstat bs)
5038{
2bdf28a0 5039 const struct bp_location *bl;
3a5c3e22 5040 struct watchpoint *b;
2bdf28a0
JK
5041
5042 /* BS is built for existing struct breakpoint. */
f431efe5 5043 bl = bs->bp_location_at;
2bdf28a0 5044 gdb_assert (bl != NULL);
3a5c3e22 5045 b = (struct watchpoint *) bs->breakpoint_at;
2bdf28a0 5046 gdb_assert (b != NULL);
18a18393 5047
18a18393 5048 {
18a18393
VP
5049 int must_check_value = 0;
5050
c1fc2657 5051 if (b->type == bp_watchpoint)
18a18393
VP
5052 /* For a software watchpoint, we must always check the
5053 watched value. */
5054 must_check_value = 1;
5055 else if (b->watchpoint_triggered == watch_triggered_yes)
5056 /* We have a hardware watchpoint (read, write, or access)
5057 and the target earlier reported an address watched by
5058 this watchpoint. */
5059 must_check_value = 1;
5060 else if (b->watchpoint_triggered == watch_triggered_unknown
c1fc2657 5061 && b->type == bp_hardware_watchpoint)
18a18393
VP
5062 /* We were stopped by a hardware watchpoint, but the target could
5063 not report the data address. We must check the watchpoint's
5064 value. Access and read watchpoints are out of luck; without
5065 a data address, we can't figure it out. */
5066 must_check_value = 1;
3a5c3e22 5067
18a18393
VP
5068 if (must_check_value)
5069 {
bf469271
PA
5070 wp_check_result e;
5071
5072 TRY
5073 {
5074 e = watchpoint_check (bs);
5075 }
5076 CATCH (ex, RETURN_MASK_ALL)
5077 {
5078 exception_fprintf (gdb_stderr, ex,
5079 "Error evaluating expression "
5080 "for watchpoint %d\n",
5081 b->number);
5082
5083 SWITCH_THRU_ALL_UIS ()
5084 {
5085 printf_filtered (_("Watchpoint %d deleted.\n"),
5086 b->number);
5087 }
5088 watchpoint_del_at_next_stop (b);
5089 e = WP_DELETED;
5090 }
5091 END_CATCH
5092
18a18393
VP
5093 switch (e)
5094 {
5095 case WP_DELETED:
5096 /* We've already printed what needs to be printed. */
5097 bs->print_it = print_it_done;
5098 /* Stop. */
5099 break;
60e1c644
PA
5100 case WP_IGNORE:
5101 bs->print_it = print_it_noop;
5102 bs->stop = 0;
5103 break;
18a18393 5104 case WP_VALUE_CHANGED:
c1fc2657 5105 if (b->type == bp_read_watchpoint)
18a18393 5106 {
85d721b8
PA
5107 /* There are two cases to consider here:
5108
4a64f543 5109 1. We're watching the triggered memory for reads.
85d721b8
PA
5110 In that case, trust the target, and always report
5111 the watchpoint hit to the user. Even though
5112 reads don't cause value changes, the value may
5113 have changed since the last time it was read, and
5114 since we're not trapping writes, we will not see
5115 those, and as such we should ignore our notion of
5116 old value.
5117
4a64f543 5118 2. We're watching the triggered memory for both
85d721b8
PA
5119 reads and writes. There are two ways this may
5120 happen:
5121
4a64f543 5122 2.1. This is a target that can't break on data
85d721b8
PA
5123 reads only, but can break on accesses (reads or
5124 writes), such as e.g., x86. We detect this case
5125 at the time we try to insert read watchpoints.
5126
4a64f543 5127 2.2. Otherwise, the target supports read
85d721b8
PA
5128 watchpoints, but, the user set an access or write
5129 watchpoint watching the same memory as this read
5130 watchpoint.
5131
5132 If we're watching memory writes as well as reads,
5133 ignore watchpoint hits when we find that the
5134 value hasn't changed, as reads don't cause
5135 changes. This still gives false positives when
5136 the program writes the same value to memory as
5137 what there was already in memory (we will confuse
5138 it for a read), but it's much better than
5139 nothing. */
5140
5141 int other_write_watchpoint = 0;
5142
5143 if (bl->watchpoint_type == hw_read)
5144 {
5145 struct breakpoint *other_b;
5146
5147 ALL_BREAKPOINTS (other_b)
3a5c3e22
PA
5148 if (other_b->type == bp_hardware_watchpoint
5149 || other_b->type == bp_access_watchpoint)
85d721b8 5150 {
3a5c3e22
PA
5151 struct watchpoint *other_w =
5152 (struct watchpoint *) other_b;
5153
5154 if (other_w->watchpoint_triggered
5155 == watch_triggered_yes)
5156 {
5157 other_write_watchpoint = 1;
5158 break;
5159 }
85d721b8
PA
5160 }
5161 }
5162
5163 if (other_write_watchpoint
5164 || bl->watchpoint_type == hw_access)
5165 {
5166 /* We're watching the same memory for writes,
5167 and the value changed since the last time we
5168 updated it, so this trap must be for a write.
5169 Ignore it. */
5170 bs->print_it = print_it_noop;
5171 bs->stop = 0;
5172 }
18a18393
VP
5173 }
5174 break;
5175 case WP_VALUE_NOT_CHANGED:
c1fc2657
SM
5176 if (b->type == bp_hardware_watchpoint
5177 || b->type == bp_watchpoint)
18a18393
VP
5178 {
5179 /* Don't stop: write watchpoints shouldn't fire if
5180 the value hasn't changed. */
5181 bs->print_it = print_it_noop;
5182 bs->stop = 0;
5183 }
5184 /* Stop. */
5185 break;
5186 default:
5187 /* Can't happen. */
18a18393
VP
5188 break;
5189 }
5190 }
5191 else /* must_check_value == 0 */
5192 {
5193 /* This is a case where some watchpoint(s) triggered, but
5194 not at the address of this watchpoint, or else no
5195 watchpoint triggered after all. So don't print
5196 anything for this watchpoint. */
5197 bs->print_it = print_it_noop;
5198 bs->stop = 0;
5199 }
5200 }
5201}
5202
7d4df6a4
DE
5203/* For breakpoints that are currently marked as telling gdb to stop,
5204 check conditions (condition proper, frame, thread and ignore count)
18a18393
VP
5205 of breakpoint referred to by BS. If we should not stop for this
5206 breakpoint, set BS->stop to 0. */
f431efe5 5207
18a18393
VP
5208static void
5209bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5210{
2bdf28a0
JK
5211 const struct bp_location *bl;
5212 struct breakpoint *b;
bf469271
PA
5213 /* Assume stop. */
5214 bool condition_result = true;
7d4df6a4
DE
5215 struct expression *cond;
5216
5217 gdb_assert (bs->stop);
2bdf28a0
JK
5218
5219 /* BS is built for existing struct breakpoint. */
f431efe5 5220 bl = bs->bp_location_at;
2bdf28a0 5221 gdb_assert (bl != NULL);
f431efe5 5222 b = bs->breakpoint_at;
2bdf28a0 5223 gdb_assert (b != NULL);
18a18393 5224
b775012e
LM
5225 /* Even if the target evaluated the condition on its end and notified GDB, we
5226 need to do so again since GDB does not know if we stopped due to a
5227 breakpoint or a single step breakpoint. */
5228
18a18393 5229 if (frame_id_p (b->frame_id)
edb3359d 5230 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
18a18393 5231 {
7d4df6a4
DE
5232 bs->stop = 0;
5233 return;
5234 }
60e1c644 5235
12ab52e9
PA
5236 /* If this is a thread/task-specific breakpoint, don't waste cpu
5237 evaluating the condition if this isn't the specified
5238 thread/task. */
5d5658a1 5239 if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
12ab52e9
PA
5240 || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5241
6c1b0f7b
DE
5242 {
5243 bs->stop = 0;
5244 return;
5245 }
5246
6dddc817
DE
5247 /* Evaluate extension language breakpoints that have a "stop" method
5248 implemented. */
5249 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
7371cf6d 5250
7d4df6a4
DE
5251 if (is_watchpoint (b))
5252 {
5253 struct watchpoint *w = (struct watchpoint *) b;
3a5c3e22 5254
4d01a485 5255 cond = w->cond_exp.get ();
7d4df6a4
DE
5256 }
5257 else
4d01a485 5258 cond = bl->cond.get ();
60e1c644 5259
7d4df6a4
DE
5260 if (cond && b->disposition != disp_del_at_next_stop)
5261 {
5262 int within_current_scope = 1;
5263 struct watchpoint * w;
60e1c644 5264
7d4df6a4
DE
5265 /* We use value_mark and value_free_to_mark because it could
5266 be a long time before we return to the command level and
5267 call free_all_values. We can't call free_all_values
5268 because we might be in the middle of evaluating a
5269 function call. */
5270 struct value *mark = value_mark ();
5271
5272 if (is_watchpoint (b))
5273 w = (struct watchpoint *) b;
5274 else
5275 w = NULL;
5276
5277 /* Need to select the frame, with all that implies so that
5278 the conditions will have the right context. Because we
5279 use the frame, we will not see an inlined function's
5280 variables when we arrive at a breakpoint at the start
5281 of the inlined function; the current frame will be the
5282 call site. */
5283 if (w == NULL || w->cond_exp_valid_block == NULL)
5284 select_frame (get_current_frame ());
5285 else
18a18393 5286 {
7d4df6a4
DE
5287 struct frame_info *frame;
5288
5289 /* For local watchpoint expressions, which particular
5290 instance of a local is being watched matters, so we
5291 keep track of the frame to evaluate the expression
5292 in. To evaluate the condition however, it doesn't
5293 really matter which instantiation of the function
5294 where the condition makes sense triggers the
5295 watchpoint. This allows an expression like "watch
5296 global if q > 10" set in `func', catch writes to
5297 global on all threads that call `func', or catch
5298 writes on all recursive calls of `func' by a single
5299 thread. We simply always evaluate the condition in
5300 the innermost frame that's executing where it makes
5301 sense to evaluate the condition. It seems
5302 intuitive. */
5303 frame = block_innermost_frame (w->cond_exp_valid_block);
5304 if (frame != NULL)
5305 select_frame (frame);
5306 else
5307 within_current_scope = 0;
18a18393 5308 }
7d4df6a4 5309 if (within_current_scope)
bf469271
PA
5310 {
5311 TRY
5312 {
5313 condition_result = breakpoint_cond_eval (cond);
5314 }
5315 CATCH (ex, RETURN_MASK_ALL)
5316 {
5317 exception_fprintf (gdb_stderr, ex,
5318 "Error in testing breakpoint condition:\n");
5319 }
5320 END_CATCH
5321 }
7d4df6a4 5322 else
18a18393 5323 {
7d4df6a4
DE
5324 warning (_("Watchpoint condition cannot be tested "
5325 "in the current scope"));
5326 /* If we failed to set the right context for this
5327 watchpoint, unconditionally report it. */
18a18393 5328 }
7d4df6a4
DE
5329 /* FIXME-someday, should give breakpoint #. */
5330 value_free_to_mark (mark);
18a18393 5331 }
7d4df6a4 5332
bf469271 5333 if (cond && !condition_result)
7d4df6a4
DE
5334 {
5335 bs->stop = 0;
5336 }
7d4df6a4
DE
5337 else if (b->ignore_count > 0)
5338 {
5339 b->ignore_count--;
5340 bs->stop = 0;
5341 /* Increase the hit count even though we don't stop. */
5342 ++(b->hit_count);
5343 observer_notify_breakpoint_modified (b);
5344 }
18a18393
VP
5345}
5346
1cf4d951
PA
5347/* Returns true if we need to track moribund locations of LOC's type
5348 on the current target. */
5349
5350static int
5351need_moribund_for_location_type (struct bp_location *loc)
5352{
5353 return ((loc->loc_type == bp_loc_software_breakpoint
5354 && !target_supports_stopped_by_sw_breakpoint ())
5355 || (loc->loc_type == bp_loc_hardware_breakpoint
5356 && !target_supports_stopped_by_hw_breakpoint ()));
5357}
5358
18a18393 5359
9709f61c 5360/* Get a bpstat associated with having just stopped at address
d983da9c 5361 BP_ADDR in thread PTID.
c906108c 5362
d983da9c 5363 Determine whether we stopped at a breakpoint, etc, or whether we
4a64f543
MS
5364 don't understand this stop. Result is a chain of bpstat's such
5365 that:
c906108c 5366
c5aa993b 5367 if we don't understand the stop, the result is a null pointer.
c906108c 5368
c5aa993b 5369 if we understand why we stopped, the result is not null.
c906108c 5370
c5aa993b
JM
5371 Each element of the chain refers to a particular breakpoint or
5372 watchpoint at which we have stopped. (We may have stopped for
5373 several reasons concurrently.)
c906108c 5374
c5aa993b
JM
5375 Each element of the chain has valid next, breakpoint_at,
5376 commands, FIXME??? fields. */
c906108c
SS
5377
5378bpstat
accd0bcd 5379bpstat_stop_status (const address_space *aspace,
09ac7c10
TT
5380 CORE_ADDR bp_addr, ptid_t ptid,
5381 const struct target_waitstatus *ws)
c906108c 5382{
0d381245 5383 struct breakpoint *b = NULL;
afe38095 5384 struct bp_location *bl;
20874c92 5385 struct bp_location *loc;
5760d0ab
JK
5386 /* First item of allocated bpstat's. */
5387 bpstat bs_head = NULL, *bs_link = &bs_head;
c906108c 5388 /* Pointer to the last thing in the chain currently. */
5760d0ab 5389 bpstat bs;
20874c92 5390 int ix;
429374b8 5391 int need_remove_insert;
f431efe5 5392 int removed_any;
c906108c 5393
f431efe5
PA
5394 /* First, build the bpstat chain with locations that explain a
5395 target stop, while being careful to not set the target running,
5396 as that may invalidate locations (in particular watchpoint
5397 locations are recreated). Resuming will happen here with
5398 breakpoint conditions or watchpoint expressions that include
5399 inferior function calls. */
c5aa993b 5400
429374b8
JK
5401 ALL_BREAKPOINTS (b)
5402 {
1a853c52 5403 if (!breakpoint_enabled (b))
429374b8 5404 continue;
a5606eee 5405
429374b8
JK
5406 for (bl = b->loc; bl != NULL; bl = bl->next)
5407 {
4a64f543
MS
5408 /* For hardware watchpoints, we look only at the first
5409 location. The watchpoint_check function will work on the
5410 entire expression, not the individual locations. For
5411 read watchpoints, the watchpoints_triggered function has
5412 checked all locations already. */
429374b8
JK
5413 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5414 break;
18a18393 5415
f6592439 5416 if (!bl->enabled || bl->shlib_disabled)
429374b8 5417 continue;
c5aa993b 5418
09ac7c10 5419 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
429374b8 5420 continue;
c5aa993b 5421
4a64f543
MS
5422 /* Come here if it's a watchpoint, or if the break address
5423 matches. */
c5aa993b 5424
04afa70c 5425 bs = new bpstats (bl, &bs_link); /* Alloc a bpstat to
4a64f543 5426 explain stop. */
c5aa993b 5427
f431efe5
PA
5428 /* Assume we stop. Should we find a watchpoint that is not
5429 actually triggered, or if the condition of the breakpoint
5430 evaluates as false, we'll reset 'stop' to 0. */
429374b8
JK
5431 bs->stop = 1;
5432 bs->print = 1;
d983da9c 5433
f431efe5
PA
5434 /* If this is a scope breakpoint, mark the associated
5435 watchpoint as triggered so that we will handle the
5436 out-of-scope event. We'll get to the watchpoint next
5437 iteration. */
d0fb5eae 5438 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
3a5c3e22
PA
5439 {
5440 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5441
5442 w->watchpoint_triggered = watch_triggered_yes;
5443 }
f431efe5
PA
5444 }
5445 }
5446
7c16b83e 5447 /* Check if a moribund breakpoint explains the stop. */
1cf4d951
PA
5448 if (!target_supports_stopped_by_sw_breakpoint ()
5449 || !target_supports_stopped_by_hw_breakpoint ())
f431efe5 5450 {
1cf4d951 5451 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
f431efe5 5452 {
1cf4d951
PA
5453 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5454 && need_moribund_for_location_type (loc))
5455 {
04afa70c 5456 bs = new bpstats (loc, &bs_link);
1cf4d951
PA
5457 /* For hits of moribund locations, we should just proceed. */
5458 bs->stop = 0;
5459 bs->print = 0;
5460 bs->print_it = print_it_noop;
5461 }
f431efe5
PA
5462 }
5463 }
5464
edcc5120
TT
5465 /* A bit of special processing for shlib breakpoints. We need to
5466 process solib loading here, so that the lists of loaded and
5467 unloaded libraries are correct before we handle "catch load" and
5468 "catch unload". */
5469 for (bs = bs_head; bs != NULL; bs = bs->next)
5470 {
5d268276 5471 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
edcc5120
TT
5472 {
5473 handle_solib_event ();
5474 break;
5475 }
5476 }
5477
f431efe5
PA
5478 /* Now go through the locations that caused the target to stop, and
5479 check whether we're interested in reporting this stop to higher
5480 layers, or whether we should resume the target transparently. */
5481
5482 removed_any = 0;
5483
5760d0ab 5484 for (bs = bs_head; bs != NULL; bs = bs->next)
f431efe5
PA
5485 {
5486 if (!bs->stop)
5487 continue;
5488
f431efe5 5489 b = bs->breakpoint_at;
348d480f
PA
5490 b->ops->check_status (bs);
5491 if (bs->stop)
28010a5d 5492 {
348d480f 5493 bpstat_check_breakpoint_conditions (bs, ptid);
f431efe5 5494
429374b8
JK
5495 if (bs->stop)
5496 {
5497 ++(b->hit_count);
8d3788bd 5498 observer_notify_breakpoint_modified (b);
c906108c 5499
4a64f543 5500 /* We will stop here. */
429374b8
JK
5501 if (b->disposition == disp_disable)
5502 {
816338b5 5503 --(b->enable_count);
1a853c52 5504 if (b->enable_count <= 0)
429374b8 5505 b->enable_state = bp_disabled;
f431efe5 5506 removed_any = 1;
429374b8
JK
5507 }
5508 if (b->silent)
5509 bs->print = 0;
5510 bs->commands = b->commands;
abf85f46 5511 if (command_line_is_silent (bs->commands
d1b0a7bf 5512 ? bs->commands.get () : NULL))
abf85f46 5513 bs->print = 0;
9d6e6e84
HZ
5514
5515 b->ops->after_condition_true (bs);
429374b8
JK
5516 }
5517
348d480f 5518 }
a9b3a50f
PA
5519
5520 /* Print nothing for this entry if we don't stop or don't
5521 print. */
5522 if (!bs->stop || !bs->print)
5523 bs->print_it = print_it_noop;
429374b8 5524 }
876fa593 5525
d983da9c
DJ
5526 /* If we aren't stopping, the value of some hardware watchpoint may
5527 not have changed, but the intermediate memory locations we are
5528 watching may have. Don't bother if we're stopping; this will get
5529 done later. */
d832cb68 5530 need_remove_insert = 0;
5760d0ab
JK
5531 if (! bpstat_causes_stop (bs_head))
5532 for (bs = bs_head; bs != NULL; bs = bs->next)
d983da9c 5533 if (!bs->stop
f431efe5
PA
5534 && bs->breakpoint_at
5535 && is_hardware_watchpoint (bs->breakpoint_at))
d983da9c 5536 {
3a5c3e22
PA
5537 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5538
5539 update_watchpoint (w, 0 /* don't reparse. */);
d832cb68 5540 need_remove_insert = 1;
d983da9c
DJ
5541 }
5542
d832cb68 5543 if (need_remove_insert)
44702360 5544 update_global_location_list (UGLL_MAY_INSERT);
f431efe5 5545 else if (removed_any)
44702360 5546 update_global_location_list (UGLL_DONT_INSERT);
d832cb68 5547
5760d0ab 5548 return bs_head;
c906108c 5549}
628fe4e4
JK
5550
5551static void
5552handle_jit_event (void)
5553{
5554 struct frame_info *frame;
5555 struct gdbarch *gdbarch;
5556
243a9253
PA
5557 if (debug_infrun)
5558 fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5559
628fe4e4
JK
5560 /* Switch terminal for any messages produced by
5561 breakpoint_re_set. */
223ffa71 5562 target_terminal::ours_for_output ();
628fe4e4
JK
5563
5564 frame = get_current_frame ();
5565 gdbarch = get_frame_arch (frame);
5566
5567 jit_event_handler (gdbarch);
5568
223ffa71 5569 target_terminal::inferior ();
628fe4e4
JK
5570}
5571
5572/* Prepare WHAT final decision for infrun. */
5573
5574/* Decide what infrun needs to do with this bpstat. */
5575
c906108c 5576struct bpstat_what
0e30163f 5577bpstat_what (bpstat bs_head)
c906108c 5578{
c906108c 5579 struct bpstat_what retval;
0e30163f 5580 bpstat bs;
c906108c 5581
628fe4e4 5582 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
aa7d318d 5583 retval.call_dummy = STOP_NONE;
186c406b 5584 retval.is_longjmp = 0;
628fe4e4 5585
0e30163f 5586 for (bs = bs_head; bs != NULL; bs = bs->next)
c906108c 5587 {
628fe4e4
JK
5588 /* Extract this BS's action. After processing each BS, we check
5589 if its action overrides all we've seem so far. */
5590 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5591 enum bptype bptype;
5592
c906108c 5593 if (bs->breakpoint_at == NULL)
628fe4e4
JK
5594 {
5595 /* I suspect this can happen if it was a momentary
5596 breakpoint which has since been deleted. */
5597 bptype = bp_none;
5598 }
20874c92 5599 else
f431efe5 5600 bptype = bs->breakpoint_at->type;
628fe4e4
JK
5601
5602 switch (bptype)
c906108c
SS
5603 {
5604 case bp_none:
628fe4e4 5605 break;
c906108c
SS
5606 case bp_breakpoint:
5607 case bp_hardware_breakpoint:
7c16b83e 5608 case bp_single_step:
c906108c
SS
5609 case bp_until:
5610 case bp_finish:
a9b3a50f 5611 case bp_shlib_event:
c906108c
SS
5612 if (bs->stop)
5613 {
5614 if (bs->print)
628fe4e4 5615 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5616 else
628fe4e4 5617 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5618 }
5619 else
628fe4e4 5620 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5621 break;
5622 case bp_watchpoint:
5623 case bp_hardware_watchpoint:
5624 case bp_read_watchpoint:
5625 case bp_access_watchpoint:
5626 if (bs->stop)
5627 {
5628 if (bs->print)
628fe4e4 5629 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5630 else
628fe4e4 5631 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5632 }
5633 else
628fe4e4
JK
5634 {
5635 /* There was a watchpoint, but we're not stopping.
5636 This requires no further action. */
5637 }
c906108c
SS
5638 break;
5639 case bp_longjmp:
e2e4d78b 5640 case bp_longjmp_call_dummy:
186c406b 5641 case bp_exception:
0a39bb32
PA
5642 if (bs->stop)
5643 {
5644 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5645 retval.is_longjmp = bptype != bp_exception;
5646 }
5647 else
5648 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5649 break;
5650 case bp_longjmp_resume:
186c406b 5651 case bp_exception_resume:
0a39bb32
PA
5652 if (bs->stop)
5653 {
5654 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5655 retval.is_longjmp = bptype == bp_longjmp_resume;
5656 }
5657 else
5658 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5659 break;
5660 case bp_step_resume:
5661 if (bs->stop)
628fe4e4
JK
5662 this_action = BPSTAT_WHAT_STEP_RESUME;
5663 else
c906108c 5664 {
628fe4e4
JK
5665 /* It is for the wrong frame. */
5666 this_action = BPSTAT_WHAT_SINGLE;
c906108c 5667 }
c906108c 5668 break;
2c03e5be
PA
5669 case bp_hp_step_resume:
5670 if (bs->stop)
5671 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5672 else
5673 {
5674 /* It is for the wrong frame. */
5675 this_action = BPSTAT_WHAT_SINGLE;
5676 }
5677 break;
c906108c 5678 case bp_watchpoint_scope:
c4093a6a 5679 case bp_thread_event:
1900040c 5680 case bp_overlay_event:
0fd8e87f 5681 case bp_longjmp_master:
aa7d318d 5682 case bp_std_terminate_master:
186c406b 5683 case bp_exception_master:
628fe4e4 5684 this_action = BPSTAT_WHAT_SINGLE;
c4093a6a 5685 break;
ce78b96d 5686 case bp_catchpoint:
c5aa993b
JM
5687 if (bs->stop)
5688 {
5689 if (bs->print)
628fe4e4 5690 this_action = BPSTAT_WHAT_STOP_NOISY;
c5aa993b 5691 else
628fe4e4 5692 this_action = BPSTAT_WHAT_STOP_SILENT;
c5aa993b
JM
5693 }
5694 else
628fe4e4
JK
5695 {
5696 /* There was a catchpoint, but we're not stopping.
5697 This requires no further action. */
5698 }
5699 break;
628fe4e4 5700 case bp_jit_event:
628fe4e4 5701 this_action = BPSTAT_WHAT_SINGLE;
c5aa993b 5702 break;
c906108c 5703 case bp_call_dummy:
53a5351d
JM
5704 /* Make sure the action is stop (silent or noisy),
5705 so infrun.c pops the dummy frame. */
aa7d318d 5706 retval.call_dummy = STOP_STACK_DUMMY;
628fe4e4 5707 this_action = BPSTAT_WHAT_STOP_SILENT;
aa7d318d
TT
5708 break;
5709 case bp_std_terminate:
5710 /* Make sure the action is stop (silent or noisy),
5711 so infrun.c pops the dummy frame. */
aa7d318d 5712 retval.call_dummy = STOP_STD_TERMINATE;
628fe4e4 5713 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c 5714 break;
1042e4c0 5715 case bp_tracepoint:
7a697b8d 5716 case bp_fast_tracepoint:
0fb4aa4b 5717 case bp_static_tracepoint:
1042e4c0
SS
5718 /* Tracepoint hits should not be reported back to GDB, and
5719 if one got through somehow, it should have been filtered
5720 out already. */
5721 internal_error (__FILE__, __LINE__,
7a697b8d 5722 _("bpstat_what: tracepoint encountered"));
0e30163f
JK
5723 break;
5724 case bp_gnu_ifunc_resolver:
5725 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5726 this_action = BPSTAT_WHAT_SINGLE;
5727 break;
5728 case bp_gnu_ifunc_resolver_return:
5729 /* The breakpoint will be removed, execution will restart from the
5730 PC of the former breakpoint. */
5731 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5732 break;
e7e0cddf
SS
5733
5734 case bp_dprintf:
a11cfd87
HZ
5735 if (bs->stop)
5736 this_action = BPSTAT_WHAT_STOP_SILENT;
5737 else
5738 this_action = BPSTAT_WHAT_SINGLE;
e7e0cddf
SS
5739 break;
5740
628fe4e4
JK
5741 default:
5742 internal_error (__FILE__, __LINE__,
5743 _("bpstat_what: unhandled bptype %d"), (int) bptype);
c906108c 5744 }
628fe4e4 5745
325fac50 5746 retval.main_action = std::max (retval.main_action, this_action);
c906108c 5747 }
628fe4e4 5748
243a9253
PA
5749 return retval;
5750}
628fe4e4 5751
243a9253
PA
5752void
5753bpstat_run_callbacks (bpstat bs_head)
5754{
5755 bpstat bs;
628fe4e4 5756
0e30163f
JK
5757 for (bs = bs_head; bs != NULL; bs = bs->next)
5758 {
5759 struct breakpoint *b = bs->breakpoint_at;
5760
5761 if (b == NULL)
5762 continue;
5763 switch (b->type)
5764 {
243a9253
PA
5765 case bp_jit_event:
5766 handle_jit_event ();
5767 break;
0e30163f
JK
5768 case bp_gnu_ifunc_resolver:
5769 gnu_ifunc_resolver_stop (b);
5770 break;
5771 case bp_gnu_ifunc_resolver_return:
5772 gnu_ifunc_resolver_return_stop (b);
5773 break;
5774 }
5775 }
c906108c
SS
5776}
5777
5778/* Nonzero if we should step constantly (e.g. watchpoints on machines
5779 without hardware support). This isn't related to a specific bpstat,
5780 just to things like whether watchpoints are set. */
5781
c5aa993b 5782int
fba45db2 5783bpstat_should_step (void)
c906108c
SS
5784{
5785 struct breakpoint *b;
cc59ec59 5786
c906108c 5787 ALL_BREAKPOINTS (b)
717a8278 5788 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
3172dc30 5789 return 1;
c906108c
SS
5790 return 0;
5791}
5792
67822962
PA
5793int
5794bpstat_causes_stop (bpstat bs)
5795{
5796 for (; bs != NULL; bs = bs->next)
5797 if (bs->stop)
5798 return 1;
5799
5800 return 0;
5801}
5802
c906108c 5803\f
c5aa993b 5804
170b53b2
UW
5805/* Compute a string of spaces suitable to indent the next line
5806 so it starts at the position corresponding to the table column
5807 named COL_NAME in the currently active table of UIOUT. */
5808
5809static char *
5810wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5811{
5812 static char wrap_indent[80];
5813 int i, total_width, width, align;
c5209615 5814 const char *text;
170b53b2
UW
5815
5816 total_width = 0;
112e8700 5817 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
170b53b2
UW
5818 {
5819 if (strcmp (text, col_name) == 0)
5820 {
5821 gdb_assert (total_width < sizeof wrap_indent);
5822 memset (wrap_indent, ' ', total_width);
5823 wrap_indent[total_width] = 0;
5824
5825 return wrap_indent;
5826 }
5827
5828 total_width += width + 1;
5829 }
5830
5831 return NULL;
5832}
5833
b775012e
LM
5834/* Determine if the locations of this breakpoint will have their conditions
5835 evaluated by the target, host or a mix of both. Returns the following:
5836
5837 "host": Host evals condition.
5838 "host or target": Host or Target evals condition.
5839 "target": Target evals condition.
5840*/
5841
5842static const char *
5843bp_condition_evaluator (struct breakpoint *b)
5844{
5845 struct bp_location *bl;
5846 char host_evals = 0;
5847 char target_evals = 0;
5848
5849 if (!b)
5850 return NULL;
5851
5852 if (!is_breakpoint (b))
5853 return NULL;
5854
5855 if (gdb_evaluates_breakpoint_condition_p ()
5856 || !target_supports_evaluation_of_breakpoint_conditions ())
5857 return condition_evaluation_host;
5858
5859 for (bl = b->loc; bl; bl = bl->next)
5860 {
5861 if (bl->cond_bytecode)
5862 target_evals++;
5863 else
5864 host_evals++;
5865 }
5866
5867 if (host_evals && target_evals)
5868 return condition_evaluation_both;
5869 else if (target_evals)
5870 return condition_evaluation_target;
5871 else
5872 return condition_evaluation_host;
5873}
5874
5875/* Determine the breakpoint location's condition evaluator. This is
5876 similar to bp_condition_evaluator, but for locations. */
5877
5878static const char *
5879bp_location_condition_evaluator (struct bp_location *bl)
5880{
5881 if (bl && !is_breakpoint (bl->owner))
5882 return NULL;
5883
5884 if (gdb_evaluates_breakpoint_condition_p ()
5885 || !target_supports_evaluation_of_breakpoint_conditions ())
5886 return condition_evaluation_host;
5887
5888 if (bl && bl->cond_bytecode)
5889 return condition_evaluation_target;
5890 else
5891 return condition_evaluation_host;
5892}
5893
859825b8
JK
5894/* Print the LOC location out of the list of B->LOC locations. */
5895
170b53b2
UW
5896static void
5897print_breakpoint_location (struct breakpoint *b,
5898 struct bp_location *loc)
0d381245 5899{
79a45e25 5900 struct ui_out *uiout = current_uiout;
5ed8105e
PA
5901
5902 scoped_restore_current_program_space restore_pspace;
6c95b8df 5903
859825b8
JK
5904 if (loc != NULL && loc->shlib_disabled)
5905 loc = NULL;
5906
6c95b8df
PA
5907 if (loc != NULL)
5908 set_current_program_space (loc->pspace);
5909
56435ebe 5910 if (b->display_canonical)
d28cd78a 5911 uiout->field_string ("what", event_location_to_string (b->location.get ()));
2f202fde 5912 else if (loc && loc->symtab)
0d381245 5913 {
4a27f119
KS
5914 const struct symbol *sym = loc->symbol;
5915
5916 if (sym == NULL)
5917 sym = find_pc_sect_function (loc->address, loc->section);
5918
0d381245
VP
5919 if (sym)
5920 {
112e8700
SM
5921 uiout->text ("in ");
5922 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
5923 uiout->text (" ");
5924 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5925 uiout->text ("at ");
0d381245 5926 }
112e8700 5927 uiout->field_string ("file",
05cba821 5928 symtab_to_filename_for_display (loc->symtab));
112e8700 5929 uiout->text (":");
05cba821 5930
112e8700
SM
5931 if (uiout->is_mi_like_p ())
5932 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
0d381245 5933
112e8700 5934 uiout->field_int ("line", loc->line_number);
0d381245 5935 }
859825b8 5936 else if (loc)
0d381245 5937 {
d7e74731 5938 string_file stb;
170b53b2 5939
d7e74731 5940 print_address_symbolic (loc->gdbarch, loc->address, &stb,
22e722e1 5941 demangle, "");
112e8700 5942 uiout->field_stream ("at", stb);
0d381245 5943 }
859825b8 5944 else
f00aae0f 5945 {
d28cd78a
TT
5946 uiout->field_string ("pending",
5947 event_location_to_string (b->location.get ()));
f00aae0f
KS
5948 /* If extra_string is available, it could be holding a condition
5949 or dprintf arguments. In either case, make sure it is printed,
5950 too, but only for non-MI streams. */
112e8700 5951 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
f00aae0f
KS
5952 {
5953 if (b->type == bp_dprintf)
112e8700 5954 uiout->text (",");
f00aae0f 5955 else
112e8700
SM
5956 uiout->text (" ");
5957 uiout->text (b->extra_string);
f00aae0f
KS
5958 }
5959 }
6c95b8df 5960
b775012e
LM
5961 if (loc && is_breakpoint (b)
5962 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5963 && bp_condition_evaluator (b) == condition_evaluation_both)
5964 {
112e8700
SM
5965 uiout->text (" (");
5966 uiout->field_string ("evaluated-by",
b775012e 5967 bp_location_condition_evaluator (loc));
112e8700 5968 uiout->text (")");
b775012e 5969 }
0d381245
VP
5970}
5971
269b11a2
PA
5972static const char *
5973bptype_string (enum bptype type)
c906108c 5974{
c4093a6a
JM
5975 struct ep_type_description
5976 {
5977 enum bptype type;
a121b7c1 5978 const char *description;
c4093a6a
JM
5979 };
5980 static struct ep_type_description bptypes[] =
c906108c 5981 {
c5aa993b
JM
5982 {bp_none, "?deleted?"},
5983 {bp_breakpoint, "breakpoint"},
c906108c 5984 {bp_hardware_breakpoint, "hw breakpoint"},
7c16b83e 5985 {bp_single_step, "sw single-step"},
c5aa993b
JM
5986 {bp_until, "until"},
5987 {bp_finish, "finish"},
5988 {bp_watchpoint, "watchpoint"},
c906108c 5989 {bp_hardware_watchpoint, "hw watchpoint"},
c5aa993b
JM
5990 {bp_read_watchpoint, "read watchpoint"},
5991 {bp_access_watchpoint, "acc watchpoint"},
5992 {bp_longjmp, "longjmp"},
5993 {bp_longjmp_resume, "longjmp resume"},
e2e4d78b 5994 {bp_longjmp_call_dummy, "longjmp for call dummy"},
186c406b
TT
5995 {bp_exception, "exception"},
5996 {bp_exception_resume, "exception resume"},
c5aa993b 5997 {bp_step_resume, "step resume"},
2c03e5be 5998 {bp_hp_step_resume, "high-priority step resume"},
c5aa993b
JM
5999 {bp_watchpoint_scope, "watchpoint scope"},
6000 {bp_call_dummy, "call dummy"},
aa7d318d 6001 {bp_std_terminate, "std::terminate"},
c5aa993b 6002 {bp_shlib_event, "shlib events"},
c4093a6a 6003 {bp_thread_event, "thread events"},
1900040c 6004 {bp_overlay_event, "overlay events"},
0fd8e87f 6005 {bp_longjmp_master, "longjmp master"},
aa7d318d 6006 {bp_std_terminate_master, "std::terminate master"},
186c406b 6007 {bp_exception_master, "exception master"},
ce78b96d 6008 {bp_catchpoint, "catchpoint"},
1042e4c0 6009 {bp_tracepoint, "tracepoint"},
7a697b8d 6010 {bp_fast_tracepoint, "fast tracepoint"},
0fb4aa4b 6011 {bp_static_tracepoint, "static tracepoint"},
e7e0cddf 6012 {bp_dprintf, "dprintf"},
4efc6507 6013 {bp_jit_event, "jit events"},
0e30163f
JK
6014 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6015 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
c5aa993b 6016 };
269b11a2
PA
6017
6018 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6019 || ((int) type != bptypes[(int) type].type))
6020 internal_error (__FILE__, __LINE__,
6021 _("bptypes table does not describe type #%d."),
6022 (int) type);
6023
6024 return bptypes[(int) type].description;
6025}
6026
998580f1
MK
6027/* For MI, output a field named 'thread-groups' with a list as the value.
6028 For CLI, prefix the list with the string 'inf'. */
6029
6030static void
6031output_thread_groups (struct ui_out *uiout,
6032 const char *field_name,
6033 VEC(int) *inf_num,
6034 int mi_only)
6035{
112e8700 6036 int is_mi = uiout->is_mi_like_p ();
998580f1
MK
6037 int inf;
6038 int i;
6039
6040 /* For backward compatibility, don't display inferiors in CLI unless
6041 there are several. Always display them for MI. */
6042 if (!is_mi && mi_only)
6043 return;
6044
10f489e5 6045 ui_out_emit_list list_emitter (uiout, field_name);
752eb8b4 6046
998580f1
MK
6047 for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6048 {
6049 if (is_mi)
6050 {
6051 char mi_group[10];
6052
6053 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
112e8700 6054 uiout->field_string (NULL, mi_group);
998580f1
MK
6055 }
6056 else
6057 {
6058 if (i == 0)
112e8700 6059 uiout->text (" inf ");
998580f1 6060 else
112e8700 6061 uiout->text (", ");
998580f1 6062
112e8700 6063 uiout->text (plongest (inf));
998580f1
MK
6064 }
6065 }
998580f1
MK
6066}
6067
269b11a2
PA
6068/* Print B to gdb_stdout. */
6069
6070static void
6071print_one_breakpoint_location (struct breakpoint *b,
6072 struct bp_location *loc,
6073 int loc_number,
6074 struct bp_location **last_loc,
269b11a2
PA
6075 int allflag)
6076{
6077 struct command_line *l;
c2c6d25f 6078 static char bpenables[] = "nynny";
c906108c 6079
79a45e25 6080 struct ui_out *uiout = current_uiout;
0d381245
VP
6081 int header_of_multiple = 0;
6082 int part_of_multiple = (loc != NULL);
79a45b7d
TT
6083 struct value_print_options opts;
6084
6085 get_user_print_options (&opts);
0d381245
VP
6086
6087 gdb_assert (!loc || loc_number != 0);
4a64f543
MS
6088 /* See comment in print_one_breakpoint concerning treatment of
6089 breakpoints with single disabled location. */
0d381245
VP
6090 if (loc == NULL
6091 && (b->loc != NULL
6092 && (b->loc->next != NULL || !b->loc->enabled)))
6093 header_of_multiple = 1;
6094 if (loc == NULL)
6095 loc = b->loc;
6096
c4093a6a
JM
6097 annotate_record ();
6098
6099 /* 1 */
6100 annotate_field (0);
0d381245
VP
6101 if (part_of_multiple)
6102 {
6103 char *formatted;
0c6773c1 6104 formatted = xstrprintf ("%d.%d", b->number, loc_number);
112e8700 6105 uiout->field_string ("number", formatted);
0d381245
VP
6106 xfree (formatted);
6107 }
6108 else
6109 {
112e8700 6110 uiout->field_int ("number", b->number);
0d381245 6111 }
c4093a6a
JM
6112
6113 /* 2 */
6114 annotate_field (1);
0d381245 6115 if (part_of_multiple)
112e8700 6116 uiout->field_skip ("type");
269b11a2 6117 else
112e8700 6118 uiout->field_string ("type", bptype_string (b->type));
c4093a6a
JM
6119
6120 /* 3 */
6121 annotate_field (2);
0d381245 6122 if (part_of_multiple)
112e8700 6123 uiout->field_skip ("disp");
0d381245 6124 else
112e8700 6125 uiout->field_string ("disp", bpdisp_text (b->disposition));
0d381245 6126
c4093a6a
JM
6127
6128 /* 4 */
6129 annotate_field (3);
0d381245 6130 if (part_of_multiple)
112e8700 6131 uiout->field_string ("enabled", loc->enabled ? "y" : "n");
0d381245 6132 else
112e8700
SM
6133 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6134 uiout->spaces (2);
0d381245 6135
c4093a6a
JM
6136
6137 /* 5 and 6 */
3086aeae 6138 if (b->ops != NULL && b->ops->print_one != NULL)
0d381245 6139 {
4a64f543
MS
6140 /* Although the print_one can possibly print all locations,
6141 calling it here is not likely to get any nice result. So,
6142 make sure there's just one location. */
0d381245 6143 gdb_assert (b->loc == NULL || b->loc->next == NULL);
a6d9a66e 6144 b->ops->print_one (b, last_loc);
0d381245 6145 }
3086aeae
DJ
6146 else
6147 switch (b->type)
6148 {
6149 case bp_none:
6150 internal_error (__FILE__, __LINE__,
e2e0b3e5 6151 _("print_one_breakpoint: bp_none encountered\n"));
3086aeae 6152 break;
c906108c 6153
3086aeae
DJ
6154 case bp_watchpoint:
6155 case bp_hardware_watchpoint:
6156 case bp_read_watchpoint:
6157 case bp_access_watchpoint:
3a5c3e22
PA
6158 {
6159 struct watchpoint *w = (struct watchpoint *) b;
6160
6161 /* Field 4, the address, is omitted (which makes the columns
6162 not line up too nicely with the headers, but the effect
6163 is relatively readable). */
6164 if (opts.addressprint)
112e8700 6165 uiout->field_skip ("addr");
3a5c3e22 6166 annotate_field (5);
112e8700 6167 uiout->field_string ("what", w->exp_string);
3a5c3e22 6168 }
3086aeae
DJ
6169 break;
6170
3086aeae
DJ
6171 case bp_breakpoint:
6172 case bp_hardware_breakpoint:
7c16b83e 6173 case bp_single_step:
3086aeae
DJ
6174 case bp_until:
6175 case bp_finish:
6176 case bp_longjmp:
6177 case bp_longjmp_resume:
e2e4d78b 6178 case bp_longjmp_call_dummy:
186c406b
TT
6179 case bp_exception:
6180 case bp_exception_resume:
3086aeae 6181 case bp_step_resume:
2c03e5be 6182 case bp_hp_step_resume:
3086aeae
DJ
6183 case bp_watchpoint_scope:
6184 case bp_call_dummy:
aa7d318d 6185 case bp_std_terminate:
3086aeae
DJ
6186 case bp_shlib_event:
6187 case bp_thread_event:
6188 case bp_overlay_event:
0fd8e87f 6189 case bp_longjmp_master:
aa7d318d 6190 case bp_std_terminate_master:
186c406b 6191 case bp_exception_master:
1042e4c0 6192 case bp_tracepoint:
7a697b8d 6193 case bp_fast_tracepoint:
0fb4aa4b 6194 case bp_static_tracepoint:
e7e0cddf 6195 case bp_dprintf:
4efc6507 6196 case bp_jit_event:
0e30163f
JK
6197 case bp_gnu_ifunc_resolver:
6198 case bp_gnu_ifunc_resolver_return:
79a45b7d 6199 if (opts.addressprint)
3086aeae
DJ
6200 {
6201 annotate_field (4);
54e52265 6202 if (header_of_multiple)
112e8700 6203 uiout->field_string ("addr", "<MULTIPLE>");
e9bbd7c5 6204 else if (b->loc == NULL || loc->shlib_disabled)
112e8700 6205 uiout->field_string ("addr", "<PENDING>");
0101ce28 6206 else
112e8700 6207 uiout->field_core_addr ("addr",
5af949e3 6208 loc->gdbarch, loc->address);
3086aeae
DJ
6209 }
6210 annotate_field (5);
0d381245 6211 if (!header_of_multiple)
170b53b2 6212 print_breakpoint_location (b, loc);
0d381245 6213 if (b->loc)
a6d9a66e 6214 *last_loc = b->loc;
3086aeae
DJ
6215 break;
6216 }
c906108c 6217
6c95b8df 6218
998580f1 6219 if (loc != NULL && !header_of_multiple)
6c95b8df
PA
6220 {
6221 struct inferior *inf;
998580f1
MK
6222 VEC(int) *inf_num = NULL;
6223 int mi_only = 1;
6c95b8df 6224
998580f1 6225 ALL_INFERIORS (inf)
6c95b8df
PA
6226 {
6227 if (inf->pspace == loc->pspace)
998580f1 6228 VEC_safe_push (int, inf_num, inf->num);
6c95b8df 6229 }
998580f1
MK
6230
6231 /* For backward compatibility, don't display inferiors in CLI unless
6232 there are several. Always display for MI. */
6233 if (allflag
6234 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6235 && (number_of_program_spaces () > 1
6236 || number_of_inferiors () > 1)
6237 /* LOC is for existing B, it cannot be in
6238 moribund_locations and thus having NULL OWNER. */
6239 && loc->owner->type != bp_catchpoint))
6240 mi_only = 0;
6241 output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6242 VEC_free (int, inf_num);
6c95b8df
PA
6243 }
6244
4a306c9a 6245 if (!part_of_multiple)
c4093a6a 6246 {
4a306c9a
JB
6247 if (b->thread != -1)
6248 {
6249 /* FIXME: This seems to be redundant and lost here; see the
4a64f543 6250 "stop only in" line a little further down. */
112e8700
SM
6251 uiout->text (" thread ");
6252 uiout->field_int ("thread", b->thread);
4a306c9a
JB
6253 }
6254 else if (b->task != 0)
6255 {
112e8700
SM
6256 uiout->text (" task ");
6257 uiout->field_int ("task", b->task);
4a306c9a 6258 }
c4093a6a 6259 }
f1310107 6260
112e8700 6261 uiout->text ("\n");
f1310107 6262
348d480f 6263 if (!part_of_multiple)
f1310107
TJB
6264 b->ops->print_one_detail (b, uiout);
6265
0d381245 6266 if (part_of_multiple && frame_id_p (b->frame_id))
c4093a6a
JM
6267 {
6268 annotate_field (6);
112e8700 6269 uiout->text ("\tstop only in stack frame at ");
e5dd4106 6270 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
818dd999 6271 the frame ID. */
112e8700 6272 uiout->field_core_addr ("frame",
5af949e3 6273 b->gdbarch, b->frame_id.stack_addr);
112e8700 6274 uiout->text ("\n");
c4093a6a
JM
6275 }
6276
28010a5d 6277 if (!part_of_multiple && b->cond_string)
c4093a6a
JM
6278 {
6279 annotate_field (7);
d77f58be 6280 if (is_tracepoint (b))
112e8700 6281 uiout->text ("\ttrace only if ");
1042e4c0 6282 else
112e8700
SM
6283 uiout->text ("\tstop only if ");
6284 uiout->field_string ("cond", b->cond_string);
b775012e
LM
6285
6286 /* Print whether the target is doing the breakpoint's condition
6287 evaluation. If GDB is doing the evaluation, don't print anything. */
6288 if (is_breakpoint (b)
6289 && breakpoint_condition_evaluation_mode ()
6290 == condition_evaluation_target)
6291 {
112e8700
SM
6292 uiout->text (" (");
6293 uiout->field_string ("evaluated-by",
b775012e 6294 bp_condition_evaluator (b));
112e8700 6295 uiout->text (" evals)");
b775012e 6296 }
112e8700 6297 uiout->text ("\n");
0101ce28
JJ
6298 }
6299
0d381245 6300 if (!part_of_multiple && b->thread != -1)
c4093a6a 6301 {
4a64f543 6302 /* FIXME should make an annotation for this. */
112e8700
SM
6303 uiout->text ("\tstop only in thread ");
6304 if (uiout->is_mi_like_p ())
6305 uiout->field_int ("thread", b->thread);
5d5658a1
PA
6306 else
6307 {
6308 struct thread_info *thr = find_thread_global_id (b->thread);
6309
112e8700 6310 uiout->field_string ("thread", print_thread_id (thr));
5d5658a1 6311 }
112e8700 6312 uiout->text ("\n");
c4093a6a
JM
6313 }
6314
556ec64d
YQ
6315 if (!part_of_multiple)
6316 {
6317 if (b->hit_count)
31f56a27
YQ
6318 {
6319 /* FIXME should make an annotation for this. */
6320 if (is_catchpoint (b))
112e8700 6321 uiout->text ("\tcatchpoint");
31f56a27 6322 else if (is_tracepoint (b))
112e8700 6323 uiout->text ("\ttracepoint");
31f56a27 6324 else
112e8700
SM
6325 uiout->text ("\tbreakpoint");
6326 uiout->text (" already hit ");
6327 uiout->field_int ("times", b->hit_count);
31f56a27 6328 if (b->hit_count == 1)
112e8700 6329 uiout->text (" time\n");
31f56a27 6330 else
112e8700 6331 uiout->text (" times\n");
31f56a27 6332 }
556ec64d
YQ
6333 else
6334 {
31f56a27 6335 /* Output the count also if it is zero, but only if this is mi. */
112e8700
SM
6336 if (uiout->is_mi_like_p ())
6337 uiout->field_int ("times", b->hit_count);
556ec64d
YQ
6338 }
6339 }
8b93c638 6340
0d381245 6341 if (!part_of_multiple && b->ignore_count)
c4093a6a
JM
6342 {
6343 annotate_field (8);
112e8700
SM
6344 uiout->text ("\tignore next ");
6345 uiout->field_int ("ignore", b->ignore_count);
6346 uiout->text (" hits\n");
c4093a6a 6347 }
059fb39f 6348
816338b5
SS
6349 /* Note that an enable count of 1 corresponds to "enable once"
6350 behavior, which is reported by the combination of enablement and
6351 disposition, so we don't need to mention it here. */
6352 if (!part_of_multiple && b->enable_count > 1)
6353 {
6354 annotate_field (8);
112e8700 6355 uiout->text ("\tdisable after ");
816338b5
SS
6356 /* Tweak the wording to clarify that ignore and enable counts
6357 are distinct, and have additive effect. */
6358 if (b->ignore_count)
112e8700 6359 uiout->text ("additional ");
816338b5 6360 else
112e8700
SM
6361 uiout->text ("next ");
6362 uiout->field_int ("enable", b->enable_count);
6363 uiout->text (" hits\n");
816338b5
SS
6364 }
6365
f196051f
SS
6366 if (!part_of_multiple && is_tracepoint (b))
6367 {
6368 struct tracepoint *tp = (struct tracepoint *) b;
6369
6370 if (tp->traceframe_usage)
6371 {
112e8700
SM
6372 uiout->text ("\ttrace buffer usage ");
6373 uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6374 uiout->text (" bytes\n");
f196051f
SS
6375 }
6376 }
d3ce09f5 6377
d1b0a7bf 6378 l = b->commands ? b->commands.get () : NULL;
059fb39f 6379 if (!part_of_multiple && l)
c4093a6a
JM
6380 {
6381 annotate_field (9);
2e783024 6382 ui_out_emit_tuple tuple_emitter (uiout, "script");
8b93c638 6383 print_command_lines (uiout, l, 4);
c4093a6a 6384 }
d24317b4 6385
d9b3f62e 6386 if (is_tracepoint (b))
1042e4c0 6387 {
d9b3f62e
PA
6388 struct tracepoint *t = (struct tracepoint *) b;
6389
6390 if (!part_of_multiple && t->pass_count)
6391 {
6392 annotate_field (10);
112e8700
SM
6393 uiout->text ("\tpass count ");
6394 uiout->field_int ("pass", t->pass_count);
6395 uiout->text (" \n");
d9b3f62e 6396 }
f2a8bc8a
YQ
6397
6398 /* Don't display it when tracepoint or tracepoint location is
6399 pending. */
6400 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6401 {
6402 annotate_field (11);
6403
112e8700
SM
6404 if (uiout->is_mi_like_p ())
6405 uiout->field_string ("installed",
f2a8bc8a
YQ
6406 loc->inserted ? "y" : "n");
6407 else
6408 {
6409 if (loc->inserted)
112e8700 6410 uiout->text ("\t");
f2a8bc8a 6411 else
112e8700
SM
6412 uiout->text ("\tnot ");
6413 uiout->text ("installed on target\n");
f2a8bc8a
YQ
6414 }
6415 }
1042e4c0
SS
6416 }
6417
112e8700 6418 if (uiout->is_mi_like_p () && !part_of_multiple)
d24317b4 6419 {
3a5c3e22
PA
6420 if (is_watchpoint (b))
6421 {
6422 struct watchpoint *w = (struct watchpoint *) b;
6423
112e8700 6424 uiout->field_string ("original-location", w->exp_string);
3a5c3e22 6425 }
f00aae0f 6426 else if (b->location != NULL
d28cd78a 6427 && event_location_to_string (b->location.get ()) != NULL)
112e8700 6428 uiout->field_string ("original-location",
d28cd78a 6429 event_location_to_string (b->location.get ()));
d24317b4 6430 }
c4093a6a 6431}
c5aa993b 6432
0d381245
VP
6433static void
6434print_one_breakpoint (struct breakpoint *b,
4a64f543 6435 struct bp_location **last_loc,
6c95b8df 6436 int allflag)
0d381245 6437{
79a45e25 6438 struct ui_out *uiout = current_uiout;
8d3788bd 6439
2e783024
TT
6440 {
6441 ui_out_emit_tuple tuple_emitter (uiout, "bkpt");
8d3788bd 6442
2e783024
TT
6443 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6444 }
0d381245
VP
6445
6446 /* If this breakpoint has custom print function,
6447 it's already printed. Otherwise, print individual
6448 locations, if any. */
6449 if (b->ops == NULL || b->ops->print_one == NULL)
6450 {
4a64f543
MS
6451 /* If breakpoint has a single location that is disabled, we
6452 print it as if it had several locations, since otherwise it's
6453 hard to represent "breakpoint enabled, location disabled"
6454 situation.
6455
6456 Note that while hardware watchpoints have several locations
a3be7890 6457 internally, that's not a property exposed to user. */
0d381245 6458 if (b->loc
a5606eee 6459 && !is_hardware_watchpoint (b)
8d3788bd 6460 && (b->loc->next || !b->loc->enabled))
0d381245
VP
6461 {
6462 struct bp_location *loc;
6463 int n = 1;
8d3788bd 6464
0d381245 6465 for (loc = b->loc; loc; loc = loc->next, ++n)
8d3788bd 6466 {
2e783024 6467 ui_out_emit_tuple tuple_emitter (uiout, NULL);
8d3788bd 6468 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
8d3788bd 6469 }
0d381245
VP
6470 }
6471 }
6472}
6473
a6d9a66e
UW
6474static int
6475breakpoint_address_bits (struct breakpoint *b)
6476{
6477 int print_address_bits = 0;
6478 struct bp_location *loc;
6479
c6d81124
PA
6480 /* Software watchpoints that aren't watching memory don't have an
6481 address to print. */
6482 if (is_no_memory_software_watchpoint (b))
6483 return 0;
6484
a6d9a66e
UW
6485 for (loc = b->loc; loc; loc = loc->next)
6486 {
c7437ca6
PA
6487 int addr_bit;
6488
c7437ca6 6489 addr_bit = gdbarch_addr_bit (loc->gdbarch);
a6d9a66e
UW
6490 if (addr_bit > print_address_bits)
6491 print_address_bits = addr_bit;
6492 }
6493
6494 return print_address_bits;
6495}
0d381245 6496
65630365 6497/* See breakpoint.h. */
c5aa993b 6498
65630365
PA
6499void
6500print_breakpoint (breakpoint *b)
c4093a6a 6501{
a6d9a66e 6502 struct bp_location *dummy_loc = NULL;
65630365 6503 print_one_breakpoint (b, &dummy_loc, 0);
c4093a6a 6504}
c5aa993b 6505
09d682a4
TT
6506/* Return true if this breakpoint was set by the user, false if it is
6507 internal or momentary. */
6508
6509int
6510user_breakpoint_p (struct breakpoint *b)
6511{
46c6471b 6512 return b->number > 0;
09d682a4
TT
6513}
6514
93daf339
TT
6515/* See breakpoint.h. */
6516
6517int
6518pending_breakpoint_p (struct breakpoint *b)
6519{
6520 return b->loc == NULL;
6521}
6522
7f3b0473 6523/* Print information on user settable breakpoint (watchpoint, etc)
d77f58be
SS
6524 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6525 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6526 FILTER is non-NULL, call it on each breakpoint and only include the
6527 ones for which it returns non-zero. Return the total number of
6528 breakpoints listed. */
c906108c 6529
d77f58be 6530static int
4495129a 6531breakpoint_1 (const char *args, int allflag,
4a64f543 6532 int (*filter) (const struct breakpoint *))
c4093a6a 6533{
52f0bd74 6534 struct breakpoint *b;
a6d9a66e 6535 struct bp_location *last_loc = NULL;
7f3b0473 6536 int nr_printable_breakpoints;
79a45b7d 6537 struct value_print_options opts;
a6d9a66e 6538 int print_address_bits = 0;
269b11a2 6539 int print_type_col_width = 14;
79a45e25 6540 struct ui_out *uiout = current_uiout;
269b11a2 6541
79a45b7d
TT
6542 get_user_print_options (&opts);
6543
4a64f543
MS
6544 /* Compute the number of rows in the table, as well as the size
6545 required for address fields. */
7f3b0473
AC
6546 nr_printable_breakpoints = 0;
6547 ALL_BREAKPOINTS (b)
e5a67952
MS
6548 {
6549 /* If we have a filter, only list the breakpoints it accepts. */
6550 if (filter && !filter (b))
6551 continue;
6552
6553 /* If we have an "args" string, it is a list of breakpoints to
6554 accept. Skip the others. */
6555 if (args != NULL && *args != '\0')
6556 {
6557 if (allflag && parse_and_eval_long (args) != b->number)
6558 continue;
6559 if (!allflag && !number_is_in_list (args, b->number))
6560 continue;
6561 }
269b11a2 6562
e5a67952
MS
6563 if (allflag || user_breakpoint_p (b))
6564 {
6565 int addr_bit, type_len;
a6d9a66e 6566
e5a67952
MS
6567 addr_bit = breakpoint_address_bits (b);
6568 if (addr_bit > print_address_bits)
6569 print_address_bits = addr_bit;
269b11a2 6570
e5a67952
MS
6571 type_len = strlen (bptype_string (b->type));
6572 if (type_len > print_type_col_width)
6573 print_type_col_width = type_len;
6574
6575 nr_printable_breakpoints++;
6576 }
6577 }
7f3b0473 6578
4a2b031d
TT
6579 {
6580 ui_out_emit_table table_emitter (uiout,
6581 opts.addressprint ? 6 : 5,
6582 nr_printable_breakpoints,
6583 "BreakpointTable");
6584
6585 if (nr_printable_breakpoints > 0)
6586 annotate_breakpoints_headers ();
6587 if (nr_printable_breakpoints > 0)
6588 annotate_field (0);
6589 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6590 if (nr_printable_breakpoints > 0)
6591 annotate_field (1);
6592 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6593 if (nr_printable_breakpoints > 0)
6594 annotate_field (2);
6595 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6596 if (nr_printable_breakpoints > 0)
6597 annotate_field (3);
6598 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6599 if (opts.addressprint)
6600 {
6601 if (nr_printable_breakpoints > 0)
6602 annotate_field (4);
6603 if (print_address_bits <= 32)
6604 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6605 else
6606 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6607 }
6608 if (nr_printable_breakpoints > 0)
6609 annotate_field (5);
6610 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6611 uiout->table_body ();
6612 if (nr_printable_breakpoints > 0)
6613 annotate_breakpoints_table ();
6614
6615 ALL_BREAKPOINTS (b)
6616 {
6617 QUIT;
6618 /* If we have a filter, only list the breakpoints it accepts. */
6619 if (filter && !filter (b))
6620 continue;
e5a67952 6621
4a2b031d
TT
6622 /* If we have an "args" string, it is a list of breakpoints to
6623 accept. Skip the others. */
e5a67952 6624
4a2b031d
TT
6625 if (args != NULL && *args != '\0')
6626 {
6627 if (allflag) /* maintenance info breakpoint */
6628 {
6629 if (parse_and_eval_long (args) != b->number)
6630 continue;
6631 }
6632 else /* all others */
6633 {
6634 if (!number_is_in_list (args, b->number))
6635 continue;
6636 }
6637 }
6638 /* We only print out user settable breakpoints unless the
6639 allflag is set. */
6640 if (allflag || user_breakpoint_p (b))
6641 print_one_breakpoint (b, &last_loc, allflag);
6642 }
6643 }
698384cd 6644
7f3b0473 6645 if (nr_printable_breakpoints == 0)
c906108c 6646 {
4a64f543
MS
6647 /* If there's a filter, let the caller decide how to report
6648 empty list. */
d77f58be
SS
6649 if (!filter)
6650 {
e5a67952 6651 if (args == NULL || *args == '\0')
112e8700 6652 uiout->message ("No breakpoints or watchpoints.\n");
d77f58be 6653 else
112e8700 6654 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
e5a67952 6655 args);
d77f58be 6656 }
c906108c
SS
6657 }
6658 else
c4093a6a 6659 {
a6d9a66e
UW
6660 if (last_loc && !server_command)
6661 set_next_address (last_loc->gdbarch, last_loc->address);
c4093a6a 6662 }
c906108c 6663
4a64f543 6664 /* FIXME? Should this be moved up so that it is only called when
c4093a6a 6665 there have been breakpoints? */
c906108c 6666 annotate_breakpoints_table_end ();
d77f58be
SS
6667
6668 return nr_printable_breakpoints;
c906108c
SS
6669}
6670
ad443146
SS
6671/* Display the value of default-collect in a way that is generally
6672 compatible with the breakpoint list. */
6673
6674static void
6675default_collect_info (void)
6676{
79a45e25
PA
6677 struct ui_out *uiout = current_uiout;
6678
ad443146
SS
6679 /* If it has no value (which is frequently the case), say nothing; a
6680 message like "No default-collect." gets in user's face when it's
6681 not wanted. */
6682 if (!*default_collect)
6683 return;
6684
6685 /* The following phrase lines up nicely with per-tracepoint collect
6686 actions. */
112e8700
SM
6687 uiout->text ("default collect ");
6688 uiout->field_string ("default-collect", default_collect);
6689 uiout->text (" \n");
ad443146
SS
6690}
6691
c906108c 6692static void
0b39b52e 6693info_breakpoints_command (const char *args, int from_tty)
c906108c 6694{
e5a67952 6695 breakpoint_1 (args, 0, NULL);
ad443146
SS
6696
6697 default_collect_info ();
d77f58be
SS
6698}
6699
6700static void
1d12d88f 6701info_watchpoints_command (const char *args, int from_tty)
d77f58be 6702{
e5a67952 6703 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
79a45e25 6704 struct ui_out *uiout = current_uiout;
d77f58be
SS
6705
6706 if (num_printed == 0)
6707 {
e5a67952 6708 if (args == NULL || *args == '\0')
112e8700 6709 uiout->message ("No watchpoints.\n");
d77f58be 6710 else
112e8700 6711 uiout->message ("No watchpoint matching '%s'.\n", args);
d77f58be 6712 }
c906108c
SS
6713}
6714
7a292a7a 6715static void
4495129a 6716maintenance_info_breakpoints (const char *args, int from_tty)
c906108c 6717{
e5a67952 6718 breakpoint_1 (args, 1, NULL);
ad443146
SS
6719
6720 default_collect_info ();
c906108c
SS
6721}
6722
0d381245 6723static int
714835d5 6724breakpoint_has_pc (struct breakpoint *b,
6c95b8df 6725 struct program_space *pspace,
714835d5 6726 CORE_ADDR pc, struct obj_section *section)
0d381245
VP
6727{
6728 struct bp_location *bl = b->loc;
cc59ec59 6729
0d381245
VP
6730 for (; bl; bl = bl->next)
6731 {
6c95b8df
PA
6732 if (bl->pspace == pspace
6733 && bl->address == pc
0d381245
VP
6734 && (!overlay_debugging || bl->section == section))
6735 return 1;
6736 }
6737 return 0;
6738}
6739
672f9b60 6740/* Print a message describing any user-breakpoints set at PC. This
6c95b8df
PA
6741 concerns with logical breakpoints, so we match program spaces, not
6742 address spaces. */
c906108c
SS
6743
6744static void
6c95b8df
PA
6745describe_other_breakpoints (struct gdbarch *gdbarch,
6746 struct program_space *pspace, CORE_ADDR pc,
5af949e3 6747 struct obj_section *section, int thread)
c906108c 6748{
52f0bd74
AC
6749 int others = 0;
6750 struct breakpoint *b;
c906108c
SS
6751
6752 ALL_BREAKPOINTS (b)
672f9b60
KP
6753 others += (user_breakpoint_p (b)
6754 && breakpoint_has_pc (b, pspace, pc, section));
c906108c
SS
6755 if (others > 0)
6756 {
a3f17187
AC
6757 if (others == 1)
6758 printf_filtered (_("Note: breakpoint "));
6759 else /* if (others == ???) */
6760 printf_filtered (_("Note: breakpoints "));
c906108c 6761 ALL_BREAKPOINTS (b)
672f9b60 6762 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
0d381245
VP
6763 {
6764 others--;
6765 printf_filtered ("%d", b->number);
6766 if (b->thread == -1 && thread != -1)
6767 printf_filtered (" (all threads)");
6768 else if (b->thread != -1)
6769 printf_filtered (" (thread %d)", b->thread);
6770 printf_filtered ("%s%s ",
059fb39f 6771 ((b->enable_state == bp_disabled
f8eba3c6 6772 || b->enable_state == bp_call_disabled)
0d381245 6773 ? " (disabled)"
0d381245
VP
6774 : ""),
6775 (others > 1) ? ","
6776 : ((others == 1) ? " and" : ""));
6777 }
a3f17187 6778 printf_filtered (_("also set at pc "));
5af949e3 6779 fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
c906108c
SS
6780 printf_filtered (".\n");
6781 }
6782}
6783\f
c906108c 6784
e4f237da 6785/* Return true iff it is meaningful to use the address member of
244558af
LM
6786 BPT locations. For some breakpoint types, the locations' address members
6787 are irrelevant and it makes no sense to attempt to compare them to other
6788 addresses (or use them for any other purpose either).
e4f237da 6789
4a64f543 6790 More specifically, each of the following breakpoint types will
244558af 6791 always have a zero valued location address and we don't want to mark
4a64f543 6792 breakpoints of any of these types to be a duplicate of an actual
244558af 6793 breakpoint location at address zero:
e4f237da
KB
6794
6795 bp_watchpoint
2d134ed3
PA
6796 bp_catchpoint
6797
6798*/
e4f237da
KB
6799
6800static int
6801breakpoint_address_is_meaningful (struct breakpoint *bpt)
6802{
6803 enum bptype type = bpt->type;
6804
2d134ed3
PA
6805 return (type != bp_watchpoint && type != bp_catchpoint);
6806}
6807
6808/* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6809 true if LOC1 and LOC2 represent the same watchpoint location. */
6810
6811static int
4a64f543
MS
6812watchpoint_locations_match (struct bp_location *loc1,
6813 struct bp_location *loc2)
2d134ed3 6814{
3a5c3e22
PA
6815 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6816 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6817
6818 /* Both of them must exist. */
6819 gdb_assert (w1 != NULL);
6820 gdb_assert (w2 != NULL);
2bdf28a0 6821
4a64f543
MS
6822 /* If the target can evaluate the condition expression in hardware,
6823 then we we need to insert both watchpoints even if they are at
6824 the same place. Otherwise the watchpoint will only trigger when
6825 the condition of whichever watchpoint was inserted evaluates to
6826 true, not giving a chance for GDB to check the condition of the
6827 other watchpoint. */
3a5c3e22 6828 if ((w1->cond_exp
4a64f543
MS
6829 && target_can_accel_watchpoint_condition (loc1->address,
6830 loc1->length,
0cf6dd15 6831 loc1->watchpoint_type,
4d01a485 6832 w1->cond_exp.get ()))
3a5c3e22 6833 || (w2->cond_exp
4a64f543
MS
6834 && target_can_accel_watchpoint_condition (loc2->address,
6835 loc2->length,
0cf6dd15 6836 loc2->watchpoint_type,
4d01a485 6837 w2->cond_exp.get ())))
0cf6dd15
TJB
6838 return 0;
6839
85d721b8
PA
6840 /* Note that this checks the owner's type, not the location's. In
6841 case the target does not support read watchpoints, but does
6842 support access watchpoints, we'll have bp_read_watchpoint
6843 watchpoints with hw_access locations. Those should be considered
6844 duplicates of hw_read locations. The hw_read locations will
6845 become hw_access locations later. */
2d134ed3
PA
6846 return (loc1->owner->type == loc2->owner->type
6847 && loc1->pspace->aspace == loc2->pspace->aspace
6848 && loc1->address == loc2->address
6849 && loc1->length == loc2->length);
e4f237da
KB
6850}
6851
31e77af2 6852/* See breakpoint.h. */
6c95b8df 6853
31e77af2 6854int
accd0bcd
YQ
6855breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6856 const address_space *aspace2, CORE_ADDR addr2)
6c95b8df 6857{
f5656ead 6858 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
6859 || aspace1 == aspace2)
6860 && addr1 == addr2);
6861}
6862
f1310107
TJB
6863/* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6864 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
6865 matches ASPACE2. On targets that have global breakpoints, the address
6866 space doesn't really matter. */
6867
6868static int
accd0bcd
YQ
6869breakpoint_address_match_range (const address_space *aspace1,
6870 CORE_ADDR addr1,
6871 int len1, const address_space *aspace2,
f1310107
TJB
6872 CORE_ADDR addr2)
6873{
f5656ead 6874 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
f1310107
TJB
6875 || aspace1 == aspace2)
6876 && addr2 >= addr1 && addr2 < addr1 + len1);
6877}
6878
6879/* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
6880 a ranged breakpoint. In most targets, a match happens only if ASPACE
6881 matches the breakpoint's address space. On targets that have global
6882 breakpoints, the address space doesn't really matter. */
6883
6884static int
6885breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 6886 const address_space *aspace,
f1310107
TJB
6887 CORE_ADDR addr)
6888{
6889 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6890 aspace, addr)
6891 || (bl->length
6892 && breakpoint_address_match_range (bl->pspace->aspace,
6893 bl->address, bl->length,
6894 aspace, addr)));
6895}
6896
d35ae833
PA
6897/* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6898 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
6899 match happens only if ASPACE matches the breakpoint's address
6900 space. On targets that have global breakpoints, the address space
6901 doesn't really matter. */
6902
6903static int
6904breakpoint_location_address_range_overlap (struct bp_location *bl,
accd0bcd 6905 const address_space *aspace,
d35ae833
PA
6906 CORE_ADDR addr, int len)
6907{
6908 if (gdbarch_has_global_breakpoints (target_gdbarch ())
6909 || bl->pspace->aspace == aspace)
6910 {
6911 int bl_len = bl->length != 0 ? bl->length : 1;
6912
6913 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6914 return 1;
6915 }
6916 return 0;
6917}
6918
1e4d1764
YQ
6919/* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6920 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6921 true, otherwise returns false. */
6922
6923static int
6924tracepoint_locations_match (struct bp_location *loc1,
6925 struct bp_location *loc2)
6926{
6927 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6928 /* Since tracepoint locations are never duplicated with others', tracepoint
6929 locations at the same address of different tracepoints are regarded as
6930 different locations. */
6931 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6932 else
6933 return 0;
6934}
6935
2d134ed3
PA
6936/* Assuming LOC1 and LOC2's types' have meaningful target addresses
6937 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6938 represent the same location. */
6939
6940static int
4a64f543
MS
6941breakpoint_locations_match (struct bp_location *loc1,
6942 struct bp_location *loc2)
2d134ed3 6943{
2bdf28a0
JK
6944 int hw_point1, hw_point2;
6945
6946 /* Both of them must not be in moribund_locations. */
6947 gdb_assert (loc1->owner != NULL);
6948 gdb_assert (loc2->owner != NULL);
6949
6950 hw_point1 = is_hardware_watchpoint (loc1->owner);
6951 hw_point2 = is_hardware_watchpoint (loc2->owner);
2d134ed3
PA
6952
6953 if (hw_point1 != hw_point2)
6954 return 0;
6955 else if (hw_point1)
6956 return watchpoint_locations_match (loc1, loc2);
1e4d1764
YQ
6957 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6958 return tracepoint_locations_match (loc1, loc2);
2d134ed3 6959 else
f1310107
TJB
6960 /* We compare bp_location.length in order to cover ranged breakpoints. */
6961 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6962 loc2->pspace->aspace, loc2->address)
6963 && loc1->length == loc2->length);
2d134ed3
PA
6964}
6965
76897487
KB
6966static void
6967breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6968 int bnum, int have_bnum)
6969{
f63fbe86
MS
6970 /* The longest string possibly returned by hex_string_custom
6971 is 50 chars. These must be at least that big for safety. */
6972 char astr1[64];
6973 char astr2[64];
76897487 6974
bb599908
PH
6975 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6976 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
76897487 6977 if (have_bnum)
8a3fe4f8 6978 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
76897487
KB
6979 bnum, astr1, astr2);
6980 else
8a3fe4f8 6981 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
76897487
KB
6982}
6983
4a64f543
MS
6984/* Adjust a breakpoint's address to account for architectural
6985 constraints on breakpoint placement. Return the adjusted address.
6986 Note: Very few targets require this kind of adjustment. For most
6987 targets, this function is simply the identity function. */
76897487
KB
6988
6989static CORE_ADDR
a6d9a66e
UW
6990adjust_breakpoint_address (struct gdbarch *gdbarch,
6991 CORE_ADDR bpaddr, enum bptype bptype)
76897487 6992{
a6d9a66e 6993 if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
76897487
KB
6994 {
6995 /* Very few targets need any kind of breakpoint adjustment. */
6996 return bpaddr;
6997 }
88f7da05
KB
6998 else if (bptype == bp_watchpoint
6999 || bptype == bp_hardware_watchpoint
7000 || bptype == bp_read_watchpoint
7001 || bptype == bp_access_watchpoint
fe798b75 7002 || bptype == bp_catchpoint)
88f7da05
KB
7003 {
7004 /* Watchpoints and the various bp_catch_* eventpoints should not
7005 have their addresses modified. */
7006 return bpaddr;
7007 }
7c16b83e
PA
7008 else if (bptype == bp_single_step)
7009 {
7010 /* Single-step breakpoints should not have their addresses
7011 modified. If there's any architectural constrain that
7012 applies to this address, then it should have already been
7013 taken into account when the breakpoint was created in the
7014 first place. If we didn't do this, stepping through e.g.,
7015 Thumb-2 IT blocks would break. */
7016 return bpaddr;
7017 }
76897487
KB
7018 else
7019 {
7020 CORE_ADDR adjusted_bpaddr;
7021
7022 /* Some targets have architectural constraints on the placement
7023 of breakpoint instructions. Obtain the adjusted address. */
a6d9a66e 7024 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
76897487
KB
7025
7026 /* An adjusted breakpoint address can significantly alter
7027 a user's expectations. Print a warning if an adjustment
7028 is required. */
7029 if (adjusted_bpaddr != bpaddr)
7030 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7031
7032 return adjusted_bpaddr;
7033 }
7034}
7035
5625a286 7036bp_location::bp_location (const bp_location_ops *ops, breakpoint *owner)
7cc221ef 7037{
5625a286 7038 bp_location *loc = this;
7cc221ef 7039
348d480f
PA
7040 gdb_assert (ops != NULL);
7041
28010a5d
PA
7042 loc->ops = ops;
7043 loc->owner = owner;
b775012e 7044 loc->cond_bytecode = NULL;
0d381245
VP
7045 loc->shlib_disabled = 0;
7046 loc->enabled = 1;
e049a4b5 7047
28010a5d 7048 switch (owner->type)
e049a4b5
DJ
7049 {
7050 case bp_breakpoint:
7c16b83e 7051 case bp_single_step:
e049a4b5
DJ
7052 case bp_until:
7053 case bp_finish:
7054 case bp_longjmp:
7055 case bp_longjmp_resume:
e2e4d78b 7056 case bp_longjmp_call_dummy:
186c406b
TT
7057 case bp_exception:
7058 case bp_exception_resume:
e049a4b5 7059 case bp_step_resume:
2c03e5be 7060 case bp_hp_step_resume:
e049a4b5
DJ
7061 case bp_watchpoint_scope:
7062 case bp_call_dummy:
aa7d318d 7063 case bp_std_terminate:
e049a4b5
DJ
7064 case bp_shlib_event:
7065 case bp_thread_event:
7066 case bp_overlay_event:
4efc6507 7067 case bp_jit_event:
0fd8e87f 7068 case bp_longjmp_master:
aa7d318d 7069 case bp_std_terminate_master:
186c406b 7070 case bp_exception_master:
0e30163f
JK
7071 case bp_gnu_ifunc_resolver:
7072 case bp_gnu_ifunc_resolver_return:
e7e0cddf 7073 case bp_dprintf:
e049a4b5 7074 loc->loc_type = bp_loc_software_breakpoint;
b775012e 7075 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
7076 break;
7077 case bp_hardware_breakpoint:
7078 loc->loc_type = bp_loc_hardware_breakpoint;
b775012e 7079 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
7080 break;
7081 case bp_hardware_watchpoint:
7082 case bp_read_watchpoint:
7083 case bp_access_watchpoint:
7084 loc->loc_type = bp_loc_hardware_watchpoint;
7085 break;
7086 case bp_watchpoint:
ce78b96d 7087 case bp_catchpoint:
15c3d785
PA
7088 case bp_tracepoint:
7089 case bp_fast_tracepoint:
0fb4aa4b 7090 case bp_static_tracepoint:
e049a4b5
DJ
7091 loc->loc_type = bp_loc_other;
7092 break;
7093 default:
e2e0b3e5 7094 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
e049a4b5
DJ
7095 }
7096
f431efe5 7097 loc->refc = 1;
28010a5d
PA
7098}
7099
7100/* Allocate a struct bp_location. */
7101
7102static struct bp_location *
7103allocate_bp_location (struct breakpoint *bpt)
7104{
348d480f
PA
7105 return bpt->ops->allocate_location (bpt);
7106}
7cc221ef 7107
f431efe5
PA
7108static void
7109free_bp_location (struct bp_location *loc)
fe3f5fa8 7110{
348d480f 7111 loc->ops->dtor (loc);
4d01a485 7112 delete loc;
fe3f5fa8
VP
7113}
7114
f431efe5
PA
7115/* Increment reference count. */
7116
7117static void
7118incref_bp_location (struct bp_location *bl)
7119{
7120 ++bl->refc;
7121}
7122
7123/* Decrement reference count. If the reference count reaches 0,
7124 destroy the bp_location. Sets *BLP to NULL. */
7125
7126static void
7127decref_bp_location (struct bp_location **blp)
7128{
0807b50c
PA
7129 gdb_assert ((*blp)->refc > 0);
7130
f431efe5
PA
7131 if (--(*blp)->refc == 0)
7132 free_bp_location (*blp);
7133 *blp = NULL;
7134}
7135
346774a9 7136/* Add breakpoint B at the end of the global breakpoint chain. */
c906108c 7137
b270e6f9
TT
7138static breakpoint *
7139add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
c906108c 7140{
346774a9 7141 struct breakpoint *b1;
b270e6f9 7142 struct breakpoint *result = b.get ();
c906108c 7143
346774a9
PA
7144 /* Add this breakpoint to the end of the chain so that a list of
7145 breakpoints will come out in order of increasing numbers. */
7146
7147 b1 = breakpoint_chain;
7148 if (b1 == 0)
b270e6f9 7149 breakpoint_chain = b.release ();
346774a9
PA
7150 else
7151 {
7152 while (b1->next)
7153 b1 = b1->next;
b270e6f9 7154 b1->next = b.release ();
346774a9 7155 }
b270e6f9
TT
7156
7157 return result;
346774a9
PA
7158}
7159
7160/* Initializes breakpoint B with type BPTYPE and no locations yet. */
7161
7162static void
7163init_raw_breakpoint_without_location (struct breakpoint *b,
7164 struct gdbarch *gdbarch,
28010a5d 7165 enum bptype bptype,
c0a91b2b 7166 const struct breakpoint_ops *ops)
346774a9 7167{
348d480f
PA
7168 gdb_assert (ops != NULL);
7169
28010a5d 7170 b->ops = ops;
4d28f7a8 7171 b->type = bptype;
a6d9a66e 7172 b->gdbarch = gdbarch;
c906108c
SS
7173 b->language = current_language->la_language;
7174 b->input_radix = input_radix;
d0fb5eae 7175 b->related_breakpoint = b;
346774a9
PA
7176}
7177
7178/* Helper to set_raw_breakpoint below. Creates a breakpoint
7179 that has type BPTYPE and has no locations as yet. */
346774a9
PA
7180
7181static struct breakpoint *
7182set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
348d480f 7183 enum bptype bptype,
c0a91b2b 7184 const struct breakpoint_ops *ops)
346774a9 7185{
3b0871f4 7186 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7187
3b0871f4 7188 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
b270e6f9 7189 return add_to_breakpoint_chain (std::move (b));
0d381245
VP
7190}
7191
0e30163f
JK
7192/* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7193 resolutions should be made as the user specified the location explicitly
7194 enough. */
7195
0d381245 7196static void
0e30163f 7197set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
0d381245 7198{
2bdf28a0
JK
7199 gdb_assert (loc->owner != NULL);
7200
0d381245 7201 if (loc->owner->type == bp_breakpoint
1042e4c0 7202 || loc->owner->type == bp_hardware_breakpoint
d77f58be 7203 || is_tracepoint (loc->owner))
0d381245 7204 {
0e30163f 7205 int is_gnu_ifunc;
2c02bd72 7206 const char *function_name;
6a3a010b 7207 CORE_ADDR func_addr;
0e30163f 7208
2c02bd72 7209 find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6a3a010b 7210 &func_addr, NULL, &is_gnu_ifunc);
0e30163f
JK
7211
7212 if (is_gnu_ifunc && !explicit_loc)
7213 {
7214 struct breakpoint *b = loc->owner;
7215
7216 gdb_assert (loc->pspace == current_program_space);
2c02bd72 7217 if (gnu_ifunc_resolve_name (function_name,
0e30163f
JK
7218 &loc->requested_address))
7219 {
7220 /* Recalculate ADDRESS based on new REQUESTED_ADDRESS. */
7221 loc->address = adjust_breakpoint_address (loc->gdbarch,
7222 loc->requested_address,
7223 b->type);
7224 }
7225 else if (b->type == bp_breakpoint && b->loc == loc
7226 && loc->next == NULL && b->related_breakpoint == b)
7227 {
7228 /* Create only the whole new breakpoint of this type but do not
7229 mess more complicated breakpoints with multiple locations. */
7230 b->type = bp_gnu_ifunc_resolver;
6a3a010b
MR
7231 /* Remember the resolver's address for use by the return
7232 breakpoint. */
7233 loc->related_address = func_addr;
0e30163f
JK
7234 }
7235 }
7236
2c02bd72
DE
7237 if (function_name)
7238 loc->function_name = xstrdup (function_name);
0d381245
VP
7239 }
7240}
7241
a6d9a66e 7242/* Attempt to determine architecture of location identified by SAL. */
1bfeeb0f 7243struct gdbarch *
a6d9a66e
UW
7244get_sal_arch (struct symtab_and_line sal)
7245{
7246 if (sal.section)
7247 return get_objfile_arch (sal.section->objfile);
7248 if (sal.symtab)
eb822aa6 7249 return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
a6d9a66e
UW
7250
7251 return NULL;
7252}
7253
346774a9
PA
7254/* Low level routine for partially initializing a breakpoint of type
7255 BPTYPE. The newly created breakpoint's address, section, source
c56053d2 7256 file name, and line number are provided by SAL.
0d381245
VP
7257
7258 It is expected that the caller will complete the initialization of
7259 the newly created breakpoint struct as well as output any status
c56053d2 7260 information regarding the creation of a new breakpoint. */
0d381245 7261
346774a9
PA
7262static void
7263init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
28010a5d 7264 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7265 const struct breakpoint_ops *ops)
0d381245 7266{
28010a5d 7267 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
346774a9 7268
3742cc8b 7269 add_location_to_breakpoint (b, &sal);
0d381245 7270
6c95b8df
PA
7271 if (bptype != bp_catchpoint)
7272 gdb_assert (sal.pspace != NULL);
7273
f8eba3c6
TT
7274 /* Store the program space that was used to set the breakpoint,
7275 except for ordinary breakpoints, which are independent of the
7276 program space. */
7277 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7278 b->pspace = sal.pspace;
346774a9 7279}
c906108c 7280
346774a9
PA
7281/* set_raw_breakpoint is a low level routine for allocating and
7282 partially initializing a breakpoint of type BPTYPE. The newly
7283 created breakpoint's address, section, source file name, and line
7284 number are provided by SAL. The newly created and partially
7285 initialized breakpoint is added to the breakpoint chain and
7286 is also returned as the value of this function.
7287
7288 It is expected that the caller will complete the initialization of
7289 the newly created breakpoint struct as well as output any status
7290 information regarding the creation of a new breakpoint. In
7291 particular, set_raw_breakpoint does NOT set the breakpoint
7292 number! Care should be taken to not allow an error to occur
7293 prior to completing the initialization of the breakpoint. If this
7294 should happen, a bogus breakpoint will be left on the chain. */
7295
7296struct breakpoint *
7297set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 7298 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7299 const struct breakpoint_ops *ops)
346774a9 7300{
3b0871f4 7301 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7302
3b0871f4 7303 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
b270e6f9 7304 return add_to_breakpoint_chain (std::move (b));
c906108c
SS
7305}
7306
53a5351d 7307/* Call this routine when stepping and nexting to enable a breakpoint
186c406b
TT
7308 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7309 initiated the operation. */
c906108c
SS
7310
7311void
186c406b 7312set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
c906108c 7313{
35df4500 7314 struct breakpoint *b, *b_tmp;
5d5658a1 7315 int thread = tp->global_num;
0fd8e87f
UW
7316
7317 /* To avoid having to rescan all objfile symbols at every step,
7318 we maintain a list of continually-inserted but always disabled
7319 longjmp "master" breakpoints. Here, we simply create momentary
7320 clones of those and enable them for the requested thread. */
35df4500 7321 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df 7322 if (b->pspace == current_program_space
186c406b
TT
7323 && (b->type == bp_longjmp_master
7324 || b->type == bp_exception_master))
0fd8e87f 7325 {
06edf0c0
PA
7326 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7327 struct breakpoint *clone;
cc59ec59 7328
e2e4d78b
JK
7329 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7330 after their removal. */
06edf0c0 7331 clone = momentary_breakpoint_from_master (b, type,
c1fc2657 7332 &momentary_breakpoint_ops, 1);
0fd8e87f
UW
7333 clone->thread = thread;
7334 }
186c406b
TT
7335
7336 tp->initiating_frame = frame;
c906108c
SS
7337}
7338
611c83ae 7339/* Delete all longjmp breakpoints from THREAD. */
c906108c 7340void
611c83ae 7341delete_longjmp_breakpoint (int thread)
c906108c 7342{
35df4500 7343 struct breakpoint *b, *b_tmp;
c906108c 7344
35df4500 7345 ALL_BREAKPOINTS_SAFE (b, b_tmp)
186c406b 7346 if (b->type == bp_longjmp || b->type == bp_exception)
611c83ae
PA
7347 {
7348 if (b->thread == thread)
7349 delete_breakpoint (b);
7350 }
c906108c
SS
7351}
7352
f59f708a
PA
7353void
7354delete_longjmp_breakpoint_at_next_stop (int thread)
7355{
7356 struct breakpoint *b, *b_tmp;
7357
7358 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7359 if (b->type == bp_longjmp || b->type == bp_exception)
7360 {
7361 if (b->thread == thread)
7362 b->disposition = disp_del_at_next_stop;
7363 }
7364}
7365
e2e4d78b
JK
7366/* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7367 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7368 pointer to any of them. Return NULL if this system cannot place longjmp
7369 breakpoints. */
7370
7371struct breakpoint *
7372set_longjmp_breakpoint_for_call_dummy (void)
7373{
7374 struct breakpoint *b, *retval = NULL;
7375
7376 ALL_BREAKPOINTS (b)
7377 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7378 {
7379 struct breakpoint *new_b;
7380
7381 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
a1aa2221
LM
7382 &momentary_breakpoint_ops,
7383 1);
5d5658a1 7384 new_b->thread = ptid_to_global_thread_id (inferior_ptid);
e2e4d78b
JK
7385
7386 /* Link NEW_B into the chain of RETVAL breakpoints. */
7387
7388 gdb_assert (new_b->related_breakpoint == new_b);
7389 if (retval == NULL)
7390 retval = new_b;
7391 new_b->related_breakpoint = retval;
7392 while (retval->related_breakpoint != new_b->related_breakpoint)
7393 retval = retval->related_breakpoint;
7394 retval->related_breakpoint = new_b;
7395 }
7396
7397 return retval;
7398}
7399
7400/* Verify all existing dummy frames and their associated breakpoints for
b67a2c6f 7401 TP. Remove those which can no longer be found in the current frame
e2e4d78b
JK
7402 stack.
7403
7404 You should call this function only at places where it is safe to currently
7405 unwind the whole stack. Failed stack unwind would discard live dummy
7406 frames. */
7407
7408void
b67a2c6f 7409check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
e2e4d78b
JK
7410{
7411 struct breakpoint *b, *b_tmp;
7412
7413 ALL_BREAKPOINTS_SAFE (b, b_tmp)
5d5658a1 7414 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
e2e4d78b
JK
7415 {
7416 struct breakpoint *dummy_b = b->related_breakpoint;
7417
7418 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7419 dummy_b = dummy_b->related_breakpoint;
7420 if (dummy_b->type != bp_call_dummy
7421 || frame_find_by_id (dummy_b->frame_id) != NULL)
7422 continue;
7423
b67a2c6f 7424 dummy_frame_discard (dummy_b->frame_id, tp->ptid);
e2e4d78b
JK
7425
7426 while (b->related_breakpoint != b)
7427 {
7428 if (b_tmp == b->related_breakpoint)
7429 b_tmp = b->related_breakpoint->next;
7430 delete_breakpoint (b->related_breakpoint);
7431 }
7432 delete_breakpoint (b);
7433 }
7434}
7435
1900040c
MS
7436void
7437enable_overlay_breakpoints (void)
7438{
52f0bd74 7439 struct breakpoint *b;
1900040c
MS
7440
7441 ALL_BREAKPOINTS (b)
7442 if (b->type == bp_overlay_event)
7443 {
7444 b->enable_state = bp_enabled;
44702360 7445 update_global_location_list (UGLL_MAY_INSERT);
c02f5703 7446 overlay_events_enabled = 1;
1900040c
MS
7447 }
7448}
7449
7450void
7451disable_overlay_breakpoints (void)
7452{
52f0bd74 7453 struct breakpoint *b;
1900040c
MS
7454
7455 ALL_BREAKPOINTS (b)
7456 if (b->type == bp_overlay_event)
7457 {
7458 b->enable_state = bp_disabled;
44702360 7459 update_global_location_list (UGLL_DONT_INSERT);
c02f5703 7460 overlay_events_enabled = 0;
1900040c
MS
7461 }
7462}
7463
aa7d318d
TT
7464/* Set an active std::terminate breakpoint for each std::terminate
7465 master breakpoint. */
7466void
7467set_std_terminate_breakpoint (void)
7468{
35df4500 7469 struct breakpoint *b, *b_tmp;
aa7d318d 7470
35df4500 7471 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7472 if (b->pspace == current_program_space
7473 && b->type == bp_std_terminate_master)
7474 {
06edf0c0 7475 momentary_breakpoint_from_master (b, bp_std_terminate,
a1aa2221 7476 &momentary_breakpoint_ops, 1);
aa7d318d
TT
7477 }
7478}
7479
7480/* Delete all the std::terminate breakpoints. */
7481void
7482delete_std_terminate_breakpoint (void)
7483{
35df4500 7484 struct breakpoint *b, *b_tmp;
aa7d318d 7485
35df4500 7486 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7487 if (b->type == bp_std_terminate)
7488 delete_breakpoint (b);
7489}
7490
c4093a6a 7491struct breakpoint *
a6d9a66e 7492create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
c4093a6a
JM
7493{
7494 struct breakpoint *b;
c4093a6a 7495
06edf0c0
PA
7496 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7497 &internal_breakpoint_ops);
7498
b5de0fa7 7499 b->enable_state = bp_enabled;
f00aae0f 7500 /* location has to be used or breakpoint_re_set will delete me. */
d28cd78a 7501 b->location = new_address_location (b->loc->address, NULL, 0);
c4093a6a 7502
44702360 7503 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 7504
c4093a6a
JM
7505 return b;
7506}
7507
0101ce28
JJ
7508struct lang_and_radix
7509 {
7510 enum language lang;
7511 int radix;
7512 };
7513
4efc6507
DE
7514/* Create a breakpoint for JIT code registration and unregistration. */
7515
7516struct breakpoint *
7517create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7518{
2a7f3dff
PA
7519 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7520 &internal_breakpoint_ops);
4efc6507 7521}
0101ce28 7522
03673fc7
PP
7523/* Remove JIT code registration and unregistration breakpoint(s). */
7524
7525void
7526remove_jit_event_breakpoints (void)
7527{
7528 struct breakpoint *b, *b_tmp;
7529
7530 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7531 if (b->type == bp_jit_event
7532 && b->loc->pspace == current_program_space)
7533 delete_breakpoint (b);
7534}
7535
cae688ec
JJ
7536void
7537remove_solib_event_breakpoints (void)
7538{
35df4500 7539 struct breakpoint *b, *b_tmp;
cae688ec 7540
35df4500 7541 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df
PA
7542 if (b->type == bp_shlib_event
7543 && b->loc->pspace == current_program_space)
cae688ec
JJ
7544 delete_breakpoint (b);
7545}
7546
f37f681c
PA
7547/* See breakpoint.h. */
7548
7549void
7550remove_solib_event_breakpoints_at_next_stop (void)
7551{
7552 struct breakpoint *b, *b_tmp;
7553
7554 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7555 if (b->type == bp_shlib_event
7556 && b->loc->pspace == current_program_space)
7557 b->disposition = disp_del_at_next_stop;
7558}
7559
04086b45
PA
7560/* Helper for create_solib_event_breakpoint /
7561 create_and_insert_solib_event_breakpoint. Allows specifying which
7562 INSERT_MODE to pass through to update_global_location_list. */
7563
7564static struct breakpoint *
7565create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7566 enum ugll_insert_mode insert_mode)
cae688ec
JJ
7567{
7568 struct breakpoint *b;
7569
06edf0c0
PA
7570 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7571 &internal_breakpoint_ops);
04086b45 7572 update_global_location_list_nothrow (insert_mode);
cae688ec
JJ
7573 return b;
7574}
7575
04086b45
PA
7576struct breakpoint *
7577create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7578{
7579 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7580}
7581
f37f681c
PA
7582/* See breakpoint.h. */
7583
7584struct breakpoint *
7585create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7586{
7587 struct breakpoint *b;
7588
04086b45
PA
7589 /* Explicitly tell update_global_location_list to insert
7590 locations. */
7591 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
f37f681c
PA
7592 if (!b->loc->inserted)
7593 {
7594 delete_breakpoint (b);
7595 return NULL;
7596 }
7597 return b;
7598}
7599
cae688ec
JJ
7600/* Disable any breakpoints that are on code in shared libraries. Only
7601 apply to enabled breakpoints, disabled ones can just stay disabled. */
7602
7603void
cb851954 7604disable_breakpoints_in_shlibs (void)
cae688ec 7605{
876fa593 7606 struct bp_location *loc, **locp_tmp;
cae688ec 7607
876fa593 7608 ALL_BP_LOCATIONS (loc, locp_tmp)
cae688ec 7609 {
2bdf28a0 7610 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7611 struct breakpoint *b = loc->owner;
2bdf28a0 7612
4a64f543
MS
7613 /* We apply the check to all breakpoints, including disabled for
7614 those with loc->duplicate set. This is so that when breakpoint
7615 becomes enabled, or the duplicate is removed, gdb will try to
7616 insert all breakpoints. If we don't set shlib_disabled here,
7617 we'll try to insert those breakpoints and fail. */
1042e4c0 7618 if (((b->type == bp_breakpoint)
508ccb1f 7619 || (b->type == bp_jit_event)
1042e4c0 7620 || (b->type == bp_hardware_breakpoint)
d77f58be 7621 || (is_tracepoint (b)))
6c95b8df 7622 && loc->pspace == current_program_space
0d381245 7623 && !loc->shlib_disabled
6c95b8df 7624 && solib_name_from_address (loc->pspace, loc->address)
a77053c2 7625 )
0d381245
VP
7626 {
7627 loc->shlib_disabled = 1;
7628 }
cae688ec
JJ
7629 }
7630}
7631
63644780
NB
7632/* Disable any breakpoints and tracepoints that are in SOLIB upon
7633 notification of unloaded_shlib. Only apply to enabled breakpoints,
7634 disabled ones can just stay disabled. */
84acb35a 7635
75149521 7636static void
84acb35a
JJ
7637disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7638{
876fa593 7639 struct bp_location *loc, **locp_tmp;
84acb35a
JJ
7640 int disabled_shlib_breaks = 0;
7641
876fa593 7642 ALL_BP_LOCATIONS (loc, locp_tmp)
84acb35a 7643 {
2bdf28a0 7644 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7645 struct breakpoint *b = loc->owner;
cc59ec59 7646
1e4d1764 7647 if (solib->pspace == loc->pspace
e2dd7057 7648 && !loc->shlib_disabled
1e4d1764
YQ
7649 && (((b->type == bp_breakpoint
7650 || b->type == bp_jit_event
7651 || b->type == bp_hardware_breakpoint)
7652 && (loc->loc_type == bp_loc_hardware_breakpoint
7653 || loc->loc_type == bp_loc_software_breakpoint))
7654 || is_tracepoint (b))
e2dd7057 7655 && solib_contains_address_p (solib, loc->address))
84acb35a 7656 {
e2dd7057
PP
7657 loc->shlib_disabled = 1;
7658 /* At this point, we cannot rely on remove_breakpoint
7659 succeeding so we must mark the breakpoint as not inserted
7660 to prevent future errors occurring in remove_breakpoints. */
7661 loc->inserted = 0;
8d3788bd
VP
7662
7663 /* This may cause duplicate notifications for the same breakpoint. */
7664 observer_notify_breakpoint_modified (b);
7665
e2dd7057
PP
7666 if (!disabled_shlib_breaks)
7667 {
223ffa71 7668 target_terminal::ours_for_output ();
3e43a32a
MS
7669 warning (_("Temporarily disabling breakpoints "
7670 "for unloaded shared library \"%s\""),
e2dd7057 7671 solib->so_name);
84acb35a 7672 }
e2dd7057 7673 disabled_shlib_breaks = 1;
84acb35a
JJ
7674 }
7675 }
84acb35a
JJ
7676}
7677
63644780
NB
7678/* Disable any breakpoints and tracepoints in OBJFILE upon
7679 notification of free_objfile. Only apply to enabled breakpoints,
7680 disabled ones can just stay disabled. */
7681
7682static void
7683disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7684{
7685 struct breakpoint *b;
7686
7687 if (objfile == NULL)
7688 return;
7689
d03de421
PA
7690 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7691 managed by the user with add-symbol-file/remove-symbol-file.
7692 Similarly to how breakpoints in shared libraries are handled in
7693 response to "nosharedlibrary", mark breakpoints in such modules
08351840
PA
7694 shlib_disabled so they end up uninserted on the next global
7695 location list update. Shared libraries not loaded by the user
7696 aren't handled here -- they're already handled in
7697 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7698 solib_unloaded observer. We skip objfiles that are not
d03de421
PA
7699 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7700 main objfile). */
7701 if ((objfile->flags & OBJF_SHARED) == 0
7702 || (objfile->flags & OBJF_USERLOADED) == 0)
63644780
NB
7703 return;
7704
7705 ALL_BREAKPOINTS (b)
7706 {
7707 struct bp_location *loc;
7708 int bp_modified = 0;
7709
7710 if (!is_breakpoint (b) && !is_tracepoint (b))
7711 continue;
7712
7713 for (loc = b->loc; loc != NULL; loc = loc->next)
7714 {
7715 CORE_ADDR loc_addr = loc->address;
7716
7717 if (loc->loc_type != bp_loc_hardware_breakpoint
7718 && loc->loc_type != bp_loc_software_breakpoint)
7719 continue;
7720
7721 if (loc->shlib_disabled != 0)
7722 continue;
7723
7724 if (objfile->pspace != loc->pspace)
7725 continue;
7726
7727 if (loc->loc_type != bp_loc_hardware_breakpoint
7728 && loc->loc_type != bp_loc_software_breakpoint)
7729 continue;
7730
7731 if (is_addr_in_objfile (loc_addr, objfile))
7732 {
7733 loc->shlib_disabled = 1;
08351840
PA
7734 /* At this point, we don't know whether the object was
7735 unmapped from the inferior or not, so leave the
7736 inserted flag alone. We'll handle failure to
7737 uninsert quietly, in case the object was indeed
7738 unmapped. */
63644780
NB
7739
7740 mark_breakpoint_location_modified (loc);
7741
7742 bp_modified = 1;
7743 }
7744 }
7745
7746 if (bp_modified)
7747 observer_notify_breakpoint_modified (b);
7748 }
7749}
7750
ce78b96d
JB
7751/* FORK & VFORK catchpoints. */
7752
e29a4733 7753/* An instance of this type is used to represent a fork or vfork
c1fc2657
SM
7754 catchpoint. A breakpoint is really of this type iff its ops pointer points
7755 to CATCH_FORK_BREAKPOINT_OPS. */
e29a4733 7756
c1fc2657 7757struct fork_catchpoint : public breakpoint
e29a4733 7758{
e29a4733
PA
7759 /* Process id of a child process whose forking triggered this
7760 catchpoint. This field is only valid immediately after this
7761 catchpoint has triggered. */
7762 ptid_t forked_inferior_pid;
7763};
7764
4a64f543
MS
7765/* Implement the "insert" breakpoint_ops method for fork
7766 catchpoints. */
ce78b96d 7767
77b06cd7
TJB
7768static int
7769insert_catch_fork (struct bp_location *bl)
ce78b96d 7770{
dfd4cc63 7771 return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
7772}
7773
4a64f543
MS
7774/* Implement the "remove" breakpoint_ops method for fork
7775 catchpoints. */
ce78b96d
JB
7776
7777static int
73971819 7778remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 7779{
dfd4cc63 7780 return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
7781}
7782
7783/* Implement the "breakpoint_hit" breakpoint_ops method for fork
7784 catchpoints. */
7785
7786static int
f1310107 7787breakpoint_hit_catch_fork (const struct bp_location *bl,
bd522513 7788 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 7789 const struct target_waitstatus *ws)
ce78b96d 7790{
e29a4733
PA
7791 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7792
f90263c1
TT
7793 if (ws->kind != TARGET_WAITKIND_FORKED)
7794 return 0;
7795
7796 c->forked_inferior_pid = ws->value.related_pid;
7797 return 1;
ce78b96d
JB
7798}
7799
4a64f543
MS
7800/* Implement the "print_it" breakpoint_ops method for fork
7801 catchpoints. */
ce78b96d
JB
7802
7803static enum print_stop_action
348d480f 7804print_it_catch_fork (bpstat bs)
ce78b96d 7805{
36dfb11c 7806 struct ui_out *uiout = current_uiout;
348d480f
PA
7807 struct breakpoint *b = bs->breakpoint_at;
7808 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
e29a4733 7809
ce78b96d 7810 annotate_catchpoint (b->number);
f303dbd6 7811 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 7812 if (b->disposition == disp_del)
112e8700 7813 uiout->text ("Temporary catchpoint ");
36dfb11c 7814 else
112e8700
SM
7815 uiout->text ("Catchpoint ");
7816 if (uiout->is_mi_like_p ())
36dfb11c 7817 {
112e8700
SM
7818 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7819 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 7820 }
112e8700
SM
7821 uiout->field_int ("bkptno", b->number);
7822 uiout->text (" (forked process ");
7823 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
7824 uiout->text ("), ");
ce78b96d
JB
7825 return PRINT_SRC_AND_LOC;
7826}
7827
4a64f543
MS
7828/* Implement the "print_one" breakpoint_ops method for fork
7829 catchpoints. */
ce78b96d
JB
7830
7831static void
a6d9a66e 7832print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 7833{
e29a4733 7834 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 7835 struct value_print_options opts;
79a45e25 7836 struct ui_out *uiout = current_uiout;
79a45b7d
TT
7837
7838 get_user_print_options (&opts);
7839
4a64f543
MS
7840 /* Field 4, the address, is omitted (which makes the columns not
7841 line up too nicely with the headers, but the effect is relatively
7842 readable). */
79a45b7d 7843 if (opts.addressprint)
112e8700 7844 uiout->field_skip ("addr");
ce78b96d 7845 annotate_field (5);
112e8700 7846 uiout->text ("fork");
e29a4733 7847 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
ce78b96d 7848 {
112e8700
SM
7849 uiout->text (", process ");
7850 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
7851 uiout->spaces (1);
ce78b96d 7852 }
8ac3646f 7853
112e8700
SM
7854 if (uiout->is_mi_like_p ())
7855 uiout->field_string ("catch-type", "fork");
ce78b96d
JB
7856}
7857
7858/* Implement the "print_mention" breakpoint_ops method for fork
7859 catchpoints. */
7860
7861static void
7862print_mention_catch_fork (struct breakpoint *b)
7863{
7864 printf_filtered (_("Catchpoint %d (fork)"), b->number);
7865}
7866
6149aea9
PA
7867/* Implement the "print_recreate" breakpoint_ops method for fork
7868 catchpoints. */
7869
7870static void
7871print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7872{
7873 fprintf_unfiltered (fp, "catch fork");
d9b3f62e 7874 print_recreate_thread (b, fp);
6149aea9
PA
7875}
7876
ce78b96d
JB
7877/* The breakpoint_ops structure to be used in fork catchpoints. */
7878
2060206e 7879static struct breakpoint_ops catch_fork_breakpoint_ops;
ce78b96d 7880
4a64f543
MS
7881/* Implement the "insert" breakpoint_ops method for vfork
7882 catchpoints. */
ce78b96d 7883
77b06cd7
TJB
7884static int
7885insert_catch_vfork (struct bp_location *bl)
ce78b96d 7886{
dfd4cc63 7887 return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
7888}
7889
4a64f543
MS
7890/* Implement the "remove" breakpoint_ops method for vfork
7891 catchpoints. */
ce78b96d
JB
7892
7893static int
73971819 7894remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 7895{
dfd4cc63 7896 return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
7897}
7898
7899/* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7900 catchpoints. */
7901
7902static int
f1310107 7903breakpoint_hit_catch_vfork (const struct bp_location *bl,
bd522513 7904 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 7905 const struct target_waitstatus *ws)
ce78b96d 7906{
e29a4733
PA
7907 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7908
f90263c1
TT
7909 if (ws->kind != TARGET_WAITKIND_VFORKED)
7910 return 0;
7911
7912 c->forked_inferior_pid = ws->value.related_pid;
7913 return 1;
ce78b96d
JB
7914}
7915
4a64f543
MS
7916/* Implement the "print_it" breakpoint_ops method for vfork
7917 catchpoints. */
ce78b96d
JB
7918
7919static enum print_stop_action
348d480f 7920print_it_catch_vfork (bpstat bs)
ce78b96d 7921{
36dfb11c 7922 struct ui_out *uiout = current_uiout;
348d480f 7923 struct breakpoint *b = bs->breakpoint_at;
e29a4733
PA
7924 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7925
ce78b96d 7926 annotate_catchpoint (b->number);
f303dbd6 7927 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 7928 if (b->disposition == disp_del)
112e8700 7929 uiout->text ("Temporary catchpoint ");
36dfb11c 7930 else
112e8700
SM
7931 uiout->text ("Catchpoint ");
7932 if (uiout->is_mi_like_p ())
36dfb11c 7933 {
112e8700
SM
7934 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7935 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 7936 }
112e8700
SM
7937 uiout->field_int ("bkptno", b->number);
7938 uiout->text (" (vforked process ");
7939 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
7940 uiout->text ("), ");
ce78b96d
JB
7941 return PRINT_SRC_AND_LOC;
7942}
7943
4a64f543
MS
7944/* Implement the "print_one" breakpoint_ops method for vfork
7945 catchpoints. */
ce78b96d
JB
7946
7947static void
a6d9a66e 7948print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 7949{
e29a4733 7950 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 7951 struct value_print_options opts;
79a45e25 7952 struct ui_out *uiout = current_uiout;
79a45b7d
TT
7953
7954 get_user_print_options (&opts);
4a64f543
MS
7955 /* Field 4, the address, is omitted (which makes the columns not
7956 line up too nicely with the headers, but the effect is relatively
7957 readable). */
79a45b7d 7958 if (opts.addressprint)
112e8700 7959 uiout->field_skip ("addr");
ce78b96d 7960 annotate_field (5);
112e8700 7961 uiout->text ("vfork");
e29a4733 7962 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
ce78b96d 7963 {
112e8700
SM
7964 uiout->text (", process ");
7965 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
7966 uiout->spaces (1);
ce78b96d 7967 }
8ac3646f 7968
112e8700
SM
7969 if (uiout->is_mi_like_p ())
7970 uiout->field_string ("catch-type", "vfork");
ce78b96d
JB
7971}
7972
7973/* Implement the "print_mention" breakpoint_ops method for vfork
7974 catchpoints. */
7975
7976static void
7977print_mention_catch_vfork (struct breakpoint *b)
7978{
7979 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7980}
7981
6149aea9
PA
7982/* Implement the "print_recreate" breakpoint_ops method for vfork
7983 catchpoints. */
7984
7985static void
7986print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7987{
7988 fprintf_unfiltered (fp, "catch vfork");
d9b3f62e 7989 print_recreate_thread (b, fp);
6149aea9
PA
7990}
7991
ce78b96d
JB
7992/* The breakpoint_ops structure to be used in vfork catchpoints. */
7993
2060206e 7994static struct breakpoint_ops catch_vfork_breakpoint_ops;
ce78b96d 7995
edcc5120 7996/* An instance of this type is used to represent an solib catchpoint.
c1fc2657 7997 A breakpoint is really of this type iff its ops pointer points to
edcc5120
TT
7998 CATCH_SOLIB_BREAKPOINT_OPS. */
7999
c1fc2657 8000struct solib_catchpoint : public breakpoint
edcc5120 8001{
c1fc2657 8002 ~solib_catchpoint () override;
edcc5120
TT
8003
8004 /* True for "catch load", false for "catch unload". */
8005 unsigned char is_load;
8006
8007 /* Regular expression to match, if any. COMPILED is only valid when
8008 REGEX is non-NULL. */
8009 char *regex;
2d7cc5c7 8010 std::unique_ptr<compiled_regex> compiled;
edcc5120
TT
8011};
8012
c1fc2657 8013solib_catchpoint::~solib_catchpoint ()
edcc5120 8014{
c1fc2657 8015 xfree (this->regex);
edcc5120
TT
8016}
8017
8018static int
8019insert_catch_solib (struct bp_location *ignore)
8020{
8021 return 0;
8022}
8023
8024static int
73971819 8025remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
edcc5120
TT
8026{
8027 return 0;
8028}
8029
8030static int
8031breakpoint_hit_catch_solib (const struct bp_location *bl,
bd522513 8032 const address_space *aspace,
edcc5120
TT
8033 CORE_ADDR bp_addr,
8034 const struct target_waitstatus *ws)
8035{
8036 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8037 struct breakpoint *other;
8038
8039 if (ws->kind == TARGET_WAITKIND_LOADED)
8040 return 1;
8041
8042 ALL_BREAKPOINTS (other)
8043 {
8044 struct bp_location *other_bl;
8045
8046 if (other == bl->owner)
8047 continue;
8048
8049 if (other->type != bp_shlib_event)
8050 continue;
8051
c1fc2657 8052 if (self->pspace != NULL && other->pspace != self->pspace)
edcc5120
TT
8053 continue;
8054
8055 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8056 {
8057 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8058 return 1;
8059 }
8060 }
8061
8062 return 0;
8063}
8064
8065static void
8066check_status_catch_solib (struct bpstats *bs)
8067{
8068 struct solib_catchpoint *self
8069 = (struct solib_catchpoint *) bs->breakpoint_at;
8070 int ix;
8071
8072 if (self->is_load)
8073 {
8074 struct so_list *iter;
8075
8076 for (ix = 0;
8077 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8078 ix, iter);
8079 ++ix)
8080 {
8081 if (!self->regex
2d7cc5c7 8082 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
edcc5120
TT
8083 return;
8084 }
8085 }
8086 else
8087 {
8088 char *iter;
8089
8090 for (ix = 0;
8091 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8092 ix, iter);
8093 ++ix)
8094 {
8095 if (!self->regex
2d7cc5c7 8096 || self->compiled->exec (iter, 0, NULL, 0) == 0)
edcc5120
TT
8097 return;
8098 }
8099 }
8100
8101 bs->stop = 0;
8102 bs->print_it = print_it_noop;
8103}
8104
8105static enum print_stop_action
8106print_it_catch_solib (bpstat bs)
8107{
8108 struct breakpoint *b = bs->breakpoint_at;
8109 struct ui_out *uiout = current_uiout;
8110
8111 annotate_catchpoint (b->number);
f303dbd6 8112 maybe_print_thread_hit_breakpoint (uiout);
edcc5120 8113 if (b->disposition == disp_del)
112e8700 8114 uiout->text ("Temporary catchpoint ");
edcc5120 8115 else
112e8700
SM
8116 uiout->text ("Catchpoint ");
8117 uiout->field_int ("bkptno", b->number);
8118 uiout->text ("\n");
8119 if (uiout->is_mi_like_p ())
8120 uiout->field_string ("disp", bpdisp_text (b->disposition));
edcc5120
TT
8121 print_solib_event (1);
8122 return PRINT_SRC_AND_LOC;
8123}
8124
8125static void
8126print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8127{
8128 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8129 struct value_print_options opts;
8130 struct ui_out *uiout = current_uiout;
8131 char *msg;
8132
8133 get_user_print_options (&opts);
8134 /* Field 4, the address, is omitted (which makes the columns not
8135 line up too nicely with the headers, but the effect is relatively
8136 readable). */
8137 if (opts.addressprint)
8138 {
8139 annotate_field (4);
112e8700 8140 uiout->field_skip ("addr");
edcc5120
TT
8141 }
8142
8143 annotate_field (5);
8144 if (self->is_load)
8145 {
8146 if (self->regex)
8147 msg = xstrprintf (_("load of library matching %s"), self->regex);
8148 else
8149 msg = xstrdup (_("load of library"));
8150 }
8151 else
8152 {
8153 if (self->regex)
8154 msg = xstrprintf (_("unload of library matching %s"), self->regex);
8155 else
8156 msg = xstrdup (_("unload of library"));
8157 }
112e8700 8158 uiout->field_string ("what", msg);
edcc5120 8159 xfree (msg);
8ac3646f 8160
112e8700
SM
8161 if (uiout->is_mi_like_p ())
8162 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
edcc5120
TT
8163}
8164
8165static void
8166print_mention_catch_solib (struct breakpoint *b)
8167{
8168 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8169
8170 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8171 self->is_load ? "load" : "unload");
8172}
8173
8174static void
8175print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8176{
8177 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8178
8179 fprintf_unfiltered (fp, "%s %s",
8180 b->disposition == disp_del ? "tcatch" : "catch",
8181 self->is_load ? "load" : "unload");
8182 if (self->regex)
8183 fprintf_unfiltered (fp, " %s", self->regex);
8184 fprintf_unfiltered (fp, "\n");
8185}
8186
8187static struct breakpoint_ops catch_solib_breakpoint_ops;
8188
91985142
MG
8189/* Shared helper function (MI and CLI) for creating and installing
8190 a shared object event catchpoint. If IS_LOAD is non-zero then
8191 the events to be caught are load events, otherwise they are
8192 unload events. If IS_TEMP is non-zero the catchpoint is a
8193 temporary one. If ENABLED is non-zero the catchpoint is
8194 created in an enabled state. */
edcc5120 8195
91985142 8196void
a121b7c1 8197add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
edcc5120 8198{
edcc5120 8199 struct gdbarch *gdbarch = get_current_arch ();
edcc5120 8200
edcc5120
TT
8201 if (!arg)
8202 arg = "";
f1735a53 8203 arg = skip_spaces (arg);
edcc5120 8204
36bd8eaa 8205 std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
edcc5120
TT
8206
8207 if (*arg != '\0')
8208 {
2d7cc5c7
PA
8209 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8210 _("Invalid regexp")));
edcc5120
TT
8211 c->regex = xstrdup (arg);
8212 }
8213
8214 c->is_load = is_load;
36bd8eaa 8215 init_catchpoint (c.get (), gdbarch, is_temp, NULL,
edcc5120
TT
8216 &catch_solib_breakpoint_ops);
8217
c1fc2657 8218 c->enable_state = enabled ? bp_enabled : bp_disabled;
91985142 8219
b270e6f9 8220 install_breakpoint (0, std::move (c), 1);
edcc5120
TT
8221}
8222
91985142
MG
8223/* A helper function that does all the work for "catch load" and
8224 "catch unload". */
8225
8226static void
eb4c3f4a 8227catch_load_or_unload (const char *arg, int from_tty, int is_load,
91985142
MG
8228 struct cmd_list_element *command)
8229{
8230 int tempflag;
8231 const int enabled = 1;
8232
8233 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8234
8235 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8236}
8237
edcc5120 8238static void
eb4c3f4a 8239catch_load_command_1 (const char *arg, int from_tty,
edcc5120
TT
8240 struct cmd_list_element *command)
8241{
8242 catch_load_or_unload (arg, from_tty, 1, command);
8243}
8244
8245static void
eb4c3f4a 8246catch_unload_command_1 (const char *arg, int from_tty,
edcc5120
TT
8247 struct cmd_list_element *command)
8248{
8249 catch_load_or_unload (arg, from_tty, 0, command);
8250}
8251
346774a9
PA
8252/* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8253 is non-zero, then make the breakpoint temporary. If COND_STRING is
8254 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8255 the breakpoint_ops structure associated to the catchpoint. */
ce78b96d 8256
ab04a2af 8257void
346774a9
PA
8258init_catchpoint (struct breakpoint *b,
8259 struct gdbarch *gdbarch, int tempflag,
63160a43 8260 const char *cond_string,
c0a91b2b 8261 const struct breakpoint_ops *ops)
c906108c 8262{
51abb421 8263 symtab_and_line sal;
6c95b8df 8264 sal.pspace = current_program_space;
c5aa993b 8265
28010a5d 8266 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
ce78b96d 8267
1b36a34b 8268 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
b5de0fa7 8269 b->disposition = tempflag ? disp_del : disp_donttouch;
346774a9
PA
8270}
8271
28010a5d 8272void
b270e6f9 8273install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
c56053d2 8274{
b270e6f9 8275 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
3a5c3e22 8276 set_breakpoint_number (internal, b);
558a9d82
YQ
8277 if (is_tracepoint (b))
8278 set_tracepoint_count (breakpoint_count);
3a5c3e22
PA
8279 if (!internal)
8280 mention (b);
c56053d2 8281 observer_notify_breakpoint_created (b);
3ea46bff
YQ
8282
8283 if (update_gll)
44702360 8284 update_global_location_list (UGLL_MAY_INSERT);
c56053d2
PA
8285}
8286
9b70b993 8287static void
a6d9a66e 8288create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
63160a43 8289 int tempflag, const char *cond_string,
c0a91b2b 8290 const struct breakpoint_ops *ops)
c906108c 8291{
b270e6f9 8292 std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
ce78b96d 8293
b270e6f9 8294 init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
e29a4733
PA
8295
8296 c->forked_inferior_pid = null_ptid;
8297
b270e6f9 8298 install_breakpoint (0, std::move (c), 1);
c906108c
SS
8299}
8300
fe798b75
JB
8301/* Exec catchpoints. */
8302
b4d90040 8303/* An instance of this type is used to represent an exec catchpoint.
c1fc2657 8304 A breakpoint is really of this type iff its ops pointer points to
b4d90040
PA
8305 CATCH_EXEC_BREAKPOINT_OPS. */
8306
c1fc2657 8307struct exec_catchpoint : public breakpoint
b4d90040 8308{
c1fc2657 8309 ~exec_catchpoint () override;
b4d90040
PA
8310
8311 /* Filename of a program whose exec triggered this catchpoint.
8312 This field is only valid immediately after this catchpoint has
8313 triggered. */
8314 char *exec_pathname;
8315};
8316
c1fc2657 8317/* Exec catchpoint destructor. */
b4d90040 8318
c1fc2657 8319exec_catchpoint::~exec_catchpoint ()
b4d90040 8320{
c1fc2657 8321 xfree (this->exec_pathname);
b4d90040
PA
8322}
8323
77b06cd7
TJB
8324static int
8325insert_catch_exec (struct bp_location *bl)
c906108c 8326{
dfd4cc63 8327 return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
fe798b75 8328}
c906108c 8329
fe798b75 8330static int
73971819 8331remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
fe798b75 8332{
dfd4cc63 8333 return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
fe798b75 8334}
c906108c 8335
fe798b75 8336static int
f1310107 8337breakpoint_hit_catch_exec (const struct bp_location *bl,
bd522513 8338 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 8339 const struct target_waitstatus *ws)
fe798b75 8340{
b4d90040
PA
8341 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8342
f90263c1
TT
8343 if (ws->kind != TARGET_WAITKIND_EXECD)
8344 return 0;
8345
8346 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8347 return 1;
fe798b75 8348}
c906108c 8349
fe798b75 8350static enum print_stop_action
348d480f 8351print_it_catch_exec (bpstat bs)
fe798b75 8352{
36dfb11c 8353 struct ui_out *uiout = current_uiout;
348d480f 8354 struct breakpoint *b = bs->breakpoint_at;
b4d90040
PA
8355 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8356
fe798b75 8357 annotate_catchpoint (b->number);
f303dbd6 8358 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 8359 if (b->disposition == disp_del)
112e8700 8360 uiout->text ("Temporary catchpoint ");
36dfb11c 8361 else
112e8700
SM
8362 uiout->text ("Catchpoint ");
8363 if (uiout->is_mi_like_p ())
36dfb11c 8364 {
112e8700
SM
8365 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8366 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 8367 }
112e8700
SM
8368 uiout->field_int ("bkptno", b->number);
8369 uiout->text (" (exec'd ");
8370 uiout->field_string ("new-exec", c->exec_pathname);
8371 uiout->text ("), ");
36dfb11c 8372
fe798b75 8373 return PRINT_SRC_AND_LOC;
c906108c
SS
8374}
8375
fe798b75 8376static void
a6d9a66e 8377print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
fe798b75 8378{
b4d90040 8379 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
fe798b75 8380 struct value_print_options opts;
79a45e25 8381 struct ui_out *uiout = current_uiout;
fe798b75
JB
8382
8383 get_user_print_options (&opts);
8384
8385 /* Field 4, the address, is omitted (which makes the columns
8386 not line up too nicely with the headers, but the effect
8387 is relatively readable). */
8388 if (opts.addressprint)
112e8700 8389 uiout->field_skip ("addr");
fe798b75 8390 annotate_field (5);
112e8700 8391 uiout->text ("exec");
b4d90040 8392 if (c->exec_pathname != NULL)
fe798b75 8393 {
112e8700
SM
8394 uiout->text (", program \"");
8395 uiout->field_string ("what", c->exec_pathname);
8396 uiout->text ("\" ");
fe798b75 8397 }
8ac3646f 8398
112e8700
SM
8399 if (uiout->is_mi_like_p ())
8400 uiout->field_string ("catch-type", "exec");
fe798b75
JB
8401}
8402
8403static void
8404print_mention_catch_exec (struct breakpoint *b)
8405{
8406 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8407}
8408
6149aea9
PA
8409/* Implement the "print_recreate" breakpoint_ops method for exec
8410 catchpoints. */
8411
8412static void
8413print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8414{
8415 fprintf_unfiltered (fp, "catch exec");
d9b3f62e 8416 print_recreate_thread (b, fp);
6149aea9
PA
8417}
8418
2060206e 8419static struct breakpoint_ops catch_exec_breakpoint_ops;
fe798b75 8420
c906108c 8421static int
fba45db2 8422hw_breakpoint_used_count (void)
c906108c 8423{
c906108c 8424 int i = 0;
f1310107
TJB
8425 struct breakpoint *b;
8426 struct bp_location *bl;
c906108c
SS
8427
8428 ALL_BREAKPOINTS (b)
c5aa993b 8429 {
d6b74ac4 8430 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
f1310107
TJB
8431 for (bl = b->loc; bl; bl = bl->next)
8432 {
8433 /* Special types of hardware breakpoints may use more than
8434 one register. */
348d480f 8435 i += b->ops->resources_needed (bl);
f1310107 8436 }
c5aa993b 8437 }
c906108c
SS
8438
8439 return i;
8440}
8441
a1398e0c
PA
8442/* Returns the resources B would use if it were a hardware
8443 watchpoint. */
8444
c906108c 8445static int
a1398e0c 8446hw_watchpoint_use_count (struct breakpoint *b)
c906108c 8447{
c906108c 8448 int i = 0;
e09342b5 8449 struct bp_location *bl;
c906108c 8450
a1398e0c
PA
8451 if (!breakpoint_enabled (b))
8452 return 0;
8453
8454 for (bl = b->loc; bl; bl = bl->next)
8455 {
8456 /* Special types of hardware watchpoints may use more than
8457 one register. */
8458 i += b->ops->resources_needed (bl);
8459 }
8460
8461 return i;
8462}
8463
8464/* Returns the sum the used resources of all hardware watchpoints of
8465 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8466 the sum of the used resources of all hardware watchpoints of other
8467 types _not_ TYPE. */
8468
8469static int
8470hw_watchpoint_used_count_others (struct breakpoint *except,
8471 enum bptype type, int *other_type_used)
8472{
8473 int i = 0;
8474 struct breakpoint *b;
8475
c906108c
SS
8476 *other_type_used = 0;
8477 ALL_BREAKPOINTS (b)
e09342b5 8478 {
a1398e0c
PA
8479 if (b == except)
8480 continue;
e09342b5
TJB
8481 if (!breakpoint_enabled (b))
8482 continue;
8483
a1398e0c
PA
8484 if (b->type == type)
8485 i += hw_watchpoint_use_count (b);
8486 else if (is_hardware_watchpoint (b))
8487 *other_type_used = 1;
e09342b5
TJB
8488 }
8489
c906108c
SS
8490 return i;
8491}
8492
c906108c 8493void
fba45db2 8494disable_watchpoints_before_interactive_call_start (void)
c906108c 8495{
c5aa993b 8496 struct breakpoint *b;
c906108c
SS
8497
8498 ALL_BREAKPOINTS (b)
c5aa993b 8499 {
cc60f2e3 8500 if (is_watchpoint (b) && breakpoint_enabled (b))
c5aa993b 8501 {
b5de0fa7 8502 b->enable_state = bp_call_disabled;
44702360 8503 update_global_location_list (UGLL_DONT_INSERT);
c5aa993b
JM
8504 }
8505 }
c906108c
SS
8506}
8507
8508void
fba45db2 8509enable_watchpoints_after_interactive_call_stop (void)
c906108c 8510{
c5aa993b 8511 struct breakpoint *b;
c906108c
SS
8512
8513 ALL_BREAKPOINTS (b)
c5aa993b 8514 {
cc60f2e3 8515 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
c5aa993b 8516 {
b5de0fa7 8517 b->enable_state = bp_enabled;
44702360 8518 update_global_location_list (UGLL_MAY_INSERT);
c5aa993b
JM
8519 }
8520 }
c906108c
SS
8521}
8522
8bea4e01
UW
8523void
8524disable_breakpoints_before_startup (void)
8525{
6c95b8df 8526 current_program_space->executing_startup = 1;
44702360 8527 update_global_location_list (UGLL_DONT_INSERT);
8bea4e01
UW
8528}
8529
8530void
8531enable_breakpoints_after_startup (void)
8532{
6c95b8df 8533 current_program_space->executing_startup = 0;
f8eba3c6 8534 breakpoint_re_set ();
8bea4e01
UW
8535}
8536
7c16b83e
PA
8537/* Create a new single-step breakpoint for thread THREAD, with no
8538 locations. */
c906108c 8539
7c16b83e
PA
8540static struct breakpoint *
8541new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8542{
b270e6f9 8543 std::unique_ptr<breakpoint> b (new breakpoint ());
7c16b83e 8544
b270e6f9 8545 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
7c16b83e
PA
8546 &momentary_breakpoint_ops);
8547
8548 b->disposition = disp_donttouch;
8549 b->frame_id = null_frame_id;
8550
8551 b->thread = thread;
8552 gdb_assert (b->thread != 0);
8553
b270e6f9 8554 return add_to_breakpoint_chain (std::move (b));
7c16b83e
PA
8555}
8556
8557/* Set a momentary breakpoint of type TYPE at address specified by
8558 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8559 frame. */
c906108c 8560
454dafbd 8561breakpoint_up
a6d9a66e
UW
8562set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8563 struct frame_id frame_id, enum bptype type)
c906108c 8564{
52f0bd74 8565 struct breakpoint *b;
edb3359d 8566
193facb3
JK
8567 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8568 tail-called one. */
8569 gdb_assert (!frame_id_artificial_p (frame_id));
edb3359d 8570
06edf0c0 8571 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
b5de0fa7
EZ
8572 b->enable_state = bp_enabled;
8573 b->disposition = disp_donttouch;
818dd999 8574 b->frame_id = frame_id;
c906108c 8575
4a64f543
MS
8576 /* If we're debugging a multi-threaded program, then we want
8577 momentary breakpoints to be active in only a single thread of
8578 control. */
39f77062 8579 if (in_thread_list (inferior_ptid))
5d5658a1 8580 b->thread = ptid_to_global_thread_id (inferior_ptid);
c906108c 8581
44702360 8582 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 8583
454dafbd 8584 return breakpoint_up (b);
c906108c 8585}
611c83ae 8586
06edf0c0 8587/* Make a momentary breakpoint based on the master breakpoint ORIG.
a1aa2221
LM
8588 The new breakpoint will have type TYPE, use OPS as its
8589 breakpoint_ops, and will set enabled to LOC_ENABLED. */
e58b0e63 8590
06edf0c0
PA
8591static struct breakpoint *
8592momentary_breakpoint_from_master (struct breakpoint *orig,
8593 enum bptype type,
a1aa2221
LM
8594 const struct breakpoint_ops *ops,
8595 int loc_enabled)
e58b0e63
PA
8596{
8597 struct breakpoint *copy;
8598
06edf0c0 8599 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
e58b0e63 8600 copy->loc = allocate_bp_location (copy);
0e30163f 8601 set_breakpoint_location_function (copy->loc, 1);
e58b0e63 8602
a6d9a66e 8603 copy->loc->gdbarch = orig->loc->gdbarch;
e58b0e63
PA
8604 copy->loc->requested_address = orig->loc->requested_address;
8605 copy->loc->address = orig->loc->address;
8606 copy->loc->section = orig->loc->section;
6c95b8df 8607 copy->loc->pspace = orig->loc->pspace;
55aa24fb 8608 copy->loc->probe = orig->loc->probe;
f8eba3c6 8609 copy->loc->line_number = orig->loc->line_number;
2f202fde 8610 copy->loc->symtab = orig->loc->symtab;
a1aa2221 8611 copy->loc->enabled = loc_enabled;
e58b0e63
PA
8612 copy->frame_id = orig->frame_id;
8613 copy->thread = orig->thread;
6c95b8df 8614 copy->pspace = orig->pspace;
e58b0e63
PA
8615
8616 copy->enable_state = bp_enabled;
8617 copy->disposition = disp_donttouch;
8618 copy->number = internal_breakpoint_number--;
8619
44702360 8620 update_global_location_list_nothrow (UGLL_DONT_INSERT);
e58b0e63
PA
8621 return copy;
8622}
8623
06edf0c0
PA
8624/* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8625 ORIG is NULL. */
8626
8627struct breakpoint *
8628clone_momentary_breakpoint (struct breakpoint *orig)
8629{
8630 /* If there's nothing to clone, then return nothing. */
8631 if (orig == NULL)
8632 return NULL;
8633
a1aa2221 8634 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
06edf0c0
PA
8635}
8636
454dafbd 8637breakpoint_up
a6d9a66e
UW
8638set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8639 enum bptype type)
611c83ae
PA
8640{
8641 struct symtab_and_line sal;
8642
8643 sal = find_pc_line (pc, 0);
8644 sal.pc = pc;
8645 sal.section = find_pc_overlay (pc);
8646 sal.explicit_pc = 1;
8647
a6d9a66e 8648 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
611c83ae 8649}
c906108c 8650\f
c5aa993b 8651
c906108c
SS
8652/* Tell the user we have just set a breakpoint B. */
8653
8654static void
fba45db2 8655mention (struct breakpoint *b)
c906108c 8656{
348d480f 8657 b->ops->print_mention (b);
112e8700 8658 if (current_uiout->is_mi_like_p ())
fb40c209 8659 return;
c906108c
SS
8660 printf_filtered ("\n");
8661}
c906108c 8662\f
c5aa993b 8663
1a853c52
PA
8664static int bp_loc_is_permanent (struct bp_location *loc);
8665
0d381245 8666static struct bp_location *
39d61571 8667add_location_to_breakpoint (struct breakpoint *b,
0d381245
VP
8668 const struct symtab_and_line *sal)
8669{
8670 struct bp_location *loc, **tmp;
3742cc8b
YQ
8671 CORE_ADDR adjusted_address;
8672 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8673
8674 if (loc_gdbarch == NULL)
8675 loc_gdbarch = b->gdbarch;
8676
8677 /* Adjust the breakpoint's address prior to allocating a location.
8678 Once we call allocate_bp_location(), that mostly uninitialized
8679 location will be placed on the location chain. Adjustment of the
8680 breakpoint may cause target_read_memory() to be called and we do
8681 not want its scan of the location chain to find a breakpoint and
8682 location that's only been partially initialized. */
8683 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8684 sal->pc, b->type);
0d381245 8685
d30113d4 8686 /* Sort the locations by their ADDRESS. */
39d61571 8687 loc = allocate_bp_location (b);
d30113d4
JK
8688 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8689 tmp = &((*tmp)->next))
0d381245 8690 ;
d30113d4 8691 loc->next = *tmp;
0d381245 8692 *tmp = loc;
3742cc8b 8693
0d381245 8694 loc->requested_address = sal->pc;
3742cc8b 8695 loc->address = adjusted_address;
6c95b8df 8696 loc->pspace = sal->pspace;
729662a5
TT
8697 loc->probe.probe = sal->probe;
8698 loc->probe.objfile = sal->objfile;
6c95b8df 8699 gdb_assert (loc->pspace != NULL);
0d381245 8700 loc->section = sal->section;
3742cc8b 8701 loc->gdbarch = loc_gdbarch;
f8eba3c6 8702 loc->line_number = sal->line;
2f202fde 8703 loc->symtab = sal->symtab;
4a27f119 8704 loc->symbol = sal->symbol;
f8eba3c6 8705
0e30163f
JK
8706 set_breakpoint_location_function (loc,
8707 sal->explicit_pc || sal->explicit_line);
1a853c52 8708
6ae88661
LM
8709 /* While by definition, permanent breakpoints are already present in the
8710 code, we don't mark the location as inserted. Normally one would expect
8711 that GDB could rely on that breakpoint instruction to stop the program,
8712 thus removing the need to insert its own breakpoint, except that executing
8713 the breakpoint instruction can kill the target instead of reporting a
8714 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8715 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8716 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8717 breakpoint be inserted normally results in QEMU knowing about the GDB
8718 breakpoint, and thus trap before the breakpoint instruction is executed.
8719 (If GDB later needs to continue execution past the permanent breakpoint,
8720 it manually increments the PC, thus avoiding executing the breakpoint
8721 instruction.) */
1a853c52 8722 if (bp_loc_is_permanent (loc))
6ae88661 8723 loc->permanent = 1;
1a853c52 8724
0d381245
VP
8725 return loc;
8726}
514f746b
AR
8727\f
8728
1cf4d951 8729/* See breakpoint.h. */
514f746b 8730
1cf4d951
PA
8731int
8732program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
514f746b
AR
8733{
8734 int len;
8735 CORE_ADDR addr;
1afeeb75 8736 const gdb_byte *bpoint;
514f746b
AR
8737 gdb_byte *target_mem;
8738
1cf4d951
PA
8739 addr = address;
8740 bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8741
8742 /* Software breakpoints unsupported? */
8743 if (bpoint == NULL)
8744 return 0;
8745
224c3ddb 8746 target_mem = (gdb_byte *) alloca (len);
1cf4d951
PA
8747
8748 /* Enable the automatic memory restoration from breakpoints while
8749 we read the memory. Otherwise we could say about our temporary
8750 breakpoints they are permanent. */
cb85b21b
TT
8751 scoped_restore restore_memory
8752 = make_scoped_restore_show_memory_breakpoints (0);
1cf4d951
PA
8753
8754 if (target_read_memory (address, target_mem, len) == 0
8755 && memcmp (target_mem, bpoint, len) == 0)
cb85b21b 8756 return 1;
1cf4d951 8757
cb85b21b 8758 return 0;
1cf4d951
PA
8759}
8760
8761/* Return 1 if LOC is pointing to a permanent breakpoint,
8762 return 0 otherwise. */
8763
8764static int
8765bp_loc_is_permanent (struct bp_location *loc)
8766{
514f746b
AR
8767 gdb_assert (loc != NULL);
8768
244558af
LM
8769 /* If we have a catchpoint or a watchpoint, just return 0. We should not
8770 attempt to read from the addresses the locations of these breakpoint types
8771 point to. program_breakpoint_here_p, below, will attempt to read
8772 memory. */
8773 if (!breakpoint_address_is_meaningful (loc->owner))
8774 return 0;
8775
5ed8105e 8776 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 8777 switch_to_program_space_and_thread (loc->pspace);
5ed8105e 8778 return program_breakpoint_here_p (loc->gdbarch, loc->address);
514f746b
AR
8779}
8780
e7e0cddf
SS
8781/* Build a command list for the dprintf corresponding to the current
8782 settings of the dprintf style options. */
8783
8784static void
8785update_dprintf_command_list (struct breakpoint *b)
8786{
8787 char *dprintf_args = b->extra_string;
8788 char *printf_line = NULL;
8789
8790 if (!dprintf_args)
8791 return;
8792
8793 dprintf_args = skip_spaces (dprintf_args);
8794
8795 /* Allow a comma, as it may have terminated a location, but don't
8796 insist on it. */
8797 if (*dprintf_args == ',')
8798 ++dprintf_args;
8799 dprintf_args = skip_spaces (dprintf_args);
8800
8801 if (*dprintf_args != '"')
8802 error (_("Bad format string, missing '\"'."));
8803
d3ce09f5 8804 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
e7e0cddf 8805 printf_line = xstrprintf ("printf %s", dprintf_args);
d3ce09f5 8806 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
e7e0cddf
SS
8807 {
8808 if (!dprintf_function)
8809 error (_("No function supplied for dprintf call"));
8810
8811 if (dprintf_channel && strlen (dprintf_channel) > 0)
8812 printf_line = xstrprintf ("call (void) %s (%s,%s)",
8813 dprintf_function,
8814 dprintf_channel,
8815 dprintf_args);
8816 else
8817 printf_line = xstrprintf ("call (void) %s (%s)",
8818 dprintf_function,
8819 dprintf_args);
8820 }
d3ce09f5
SS
8821 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8822 {
8823 if (target_can_run_breakpoint_commands ())
8824 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8825 else
8826 {
8827 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8828 printf_line = xstrprintf ("printf %s", dprintf_args);
8829 }
8830 }
e7e0cddf
SS
8831 else
8832 internal_error (__FILE__, __LINE__,
8833 _("Invalid dprintf style."));
8834
f28045c2 8835 gdb_assert (printf_line != NULL);
9d6e6e84 8836 /* Manufacture a printf sequence. */
f28045c2 8837 {
8d749320 8838 struct command_line *printf_cmd_line = XNEW (struct command_line);
e7e0cddf 8839
f28045c2
YQ
8840 printf_cmd_line->control_type = simple_control;
8841 printf_cmd_line->body_count = 0;
8842 printf_cmd_line->body_list = NULL;
9d6e6e84 8843 printf_cmd_line->next = NULL;
f28045c2 8844 printf_cmd_line->line = printf_line;
e7e0cddf 8845
93921405 8846 breakpoint_set_commands (b, command_line_up (printf_cmd_line));
f28045c2 8847 }
e7e0cddf
SS
8848}
8849
8850/* Update all dprintf commands, making their command lists reflect
8851 current style settings. */
8852
8853static void
eb4c3f4a 8854update_dprintf_commands (const char *args, int from_tty,
e7e0cddf
SS
8855 struct cmd_list_element *c)
8856{
8857 struct breakpoint *b;
8858
8859 ALL_BREAKPOINTS (b)
8860 {
8861 if (b->type == bp_dprintf)
8862 update_dprintf_command_list (b);
8863 }
8864}
c3f6f71d 8865
f00aae0f
KS
8866/* Create a breakpoint with SAL as location. Use LOCATION
8867 as a description of the location, and COND_STRING
b35a8b2f
DE
8868 as condition expression. If LOCATION is NULL then create an
8869 "address location" from the address in the SAL. */
018d34a4
VP
8870
8871static void
d9b3f62e 8872init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
6c5b2ebe 8873 gdb::array_view<const symtab_and_line> sals,
ffc2605c 8874 event_location_up &&location,
e1e01040
PA
8875 gdb::unique_xmalloc_ptr<char> filter,
8876 gdb::unique_xmalloc_ptr<char> cond_string,
8877 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
8878 enum bptype type, enum bpdisp disposition,
8879 int thread, int task, int ignore_count,
c0a91b2b 8880 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
8881 int enabled, int internal, unsigned flags,
8882 int display_canonical)
018d34a4 8883{
0d381245 8884 int i;
018d34a4
VP
8885
8886 if (type == bp_hardware_breakpoint)
8887 {
fbbd034e
AS
8888 int target_resources_ok;
8889
8890 i = hw_breakpoint_used_count ();
8891 target_resources_ok =
8892 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
018d34a4
VP
8893 i + 1, 0);
8894 if (target_resources_ok == 0)
8895 error (_("No hardware breakpoint support in the target."));
8896 else if (target_resources_ok < 0)
8897 error (_("Hardware breakpoints used exceeds limit."));
8898 }
8899
6c5b2ebe 8900 gdb_assert (!sals.empty ());
6c95b8df 8901
6c5b2ebe 8902 for (const auto &sal : sals)
0d381245 8903 {
0d381245
VP
8904 struct bp_location *loc;
8905
8906 if (from_tty)
5af949e3
UW
8907 {
8908 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8909 if (!loc_gdbarch)
8910 loc_gdbarch = gdbarch;
8911
8912 describe_other_breakpoints (loc_gdbarch,
6c95b8df 8913 sal.pspace, sal.pc, sal.section, thread);
5af949e3 8914 }
0d381245 8915
6c5b2ebe 8916 if (&sal == &sals[0])
0d381245 8917 {
d9b3f62e 8918 init_raw_breakpoint (b, gdbarch, sal, type, ops);
0d381245 8919 b->thread = thread;
4a306c9a 8920 b->task = task;
855a6e68 8921
e1e01040
PA
8922 b->cond_string = cond_string.release ();
8923 b->extra_string = extra_string.release ();
0d381245 8924 b->ignore_count = ignore_count;
41447f92 8925 b->enable_state = enabled ? bp_enabled : bp_disabled;
0d381245 8926 b->disposition = disposition;
6c95b8df 8927
44f238bb
PA
8928 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8929 b->loc->inserted = 1;
8930
0fb4aa4b
PA
8931 if (type == bp_static_tracepoint)
8932 {
d9b3f62e 8933 struct tracepoint *t = (struct tracepoint *) b;
0fb4aa4b
PA
8934 struct static_tracepoint_marker marker;
8935
983af33b 8936 if (strace_marker_p (b))
0fb4aa4b
PA
8937 {
8938 /* We already know the marker exists, otherwise, we
8939 wouldn't see a sal for it. */
d28cd78a
TT
8940 const char *p
8941 = &event_location_to_string (b->location.get ())[3];
f00aae0f 8942 const char *endp;
0fb4aa4b 8943 char *marker_str;
0fb4aa4b 8944
f1735a53 8945 p = skip_spaces (p);
0fb4aa4b 8946
f1735a53 8947 endp = skip_to_space (p);
0fb4aa4b
PA
8948
8949 marker_str = savestring (p, endp - p);
d9b3f62e 8950 t->static_trace_marker_id = marker_str;
0fb4aa4b 8951
3e43a32a
MS
8952 printf_filtered (_("Probed static tracepoint "
8953 "marker \"%s\"\n"),
d9b3f62e 8954 t->static_trace_marker_id);
0fb4aa4b
PA
8955 }
8956 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8957 {
d9b3f62e 8958 t->static_trace_marker_id = xstrdup (marker.str_id);
0fb4aa4b
PA
8959 release_static_tracepoint_marker (&marker);
8960
3e43a32a
MS
8961 printf_filtered (_("Probed static tracepoint "
8962 "marker \"%s\"\n"),
d9b3f62e 8963 t->static_trace_marker_id);
0fb4aa4b
PA
8964 }
8965 else
3e43a32a
MS
8966 warning (_("Couldn't determine the static "
8967 "tracepoint marker to probe"));
0fb4aa4b
PA
8968 }
8969
0d381245
VP
8970 loc = b->loc;
8971 }
8972 else
018d34a4 8973 {
39d61571 8974 loc = add_location_to_breakpoint (b, &sal);
44f238bb
PA
8975 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8976 loc->inserted = 1;
0d381245
VP
8977 }
8978
8979 if (b->cond_string)
8980 {
bbc13ae3
KS
8981 const char *arg = b->cond_string;
8982
1bb9788d
TT
8983 loc->cond = parse_exp_1 (&arg, loc->address,
8984 block_for_pc (loc->address), 0);
0d381245 8985 if (*arg)
588ae58c 8986 error (_("Garbage '%s' follows condition"), arg);
018d34a4 8987 }
e7e0cddf
SS
8988
8989 /* Dynamic printf requires and uses additional arguments on the
8990 command line, otherwise it's an error. */
8991 if (type == bp_dprintf)
8992 {
8993 if (b->extra_string)
8994 update_dprintf_command_list (b);
8995 else
8996 error (_("Format string required"));
8997 }
8998 else if (b->extra_string)
588ae58c 8999 error (_("Garbage '%s' at end of command"), b->extra_string);
855a6e68 9000 }
018d34a4 9001
56435ebe 9002 b->display_canonical = display_canonical;
f00aae0f 9003 if (location != NULL)
d28cd78a 9004 b->location = std::move (location);
018d34a4 9005 else
d28cd78a 9006 b->location = new_address_location (b->loc->address, NULL, 0);
e1e01040 9007 b->filter = filter.release ();
d9b3f62e 9008}
018d34a4 9009
d9b3f62e
PA
9010static void
9011create_breakpoint_sal (struct gdbarch *gdbarch,
6c5b2ebe 9012 gdb::array_view<const symtab_and_line> sals,
ffc2605c 9013 event_location_up &&location,
e1e01040
PA
9014 gdb::unique_xmalloc_ptr<char> filter,
9015 gdb::unique_xmalloc_ptr<char> cond_string,
9016 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
9017 enum bptype type, enum bpdisp disposition,
9018 int thread, int task, int ignore_count,
c0a91b2b 9019 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
9020 int enabled, int internal, unsigned flags,
9021 int display_canonical)
d9b3f62e 9022{
a5e364af 9023 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
d9b3f62e 9024
a5e364af 9025 init_breakpoint_sal (b.get (), gdbarch,
ffc2605c 9026 sals, std::move (location),
e1e01040
PA
9027 std::move (filter),
9028 std::move (cond_string),
9029 std::move (extra_string),
d9b3f62e
PA
9030 type, disposition,
9031 thread, task, ignore_count,
9032 ops, from_tty,
44f238bb
PA
9033 enabled, internal, flags,
9034 display_canonical);
d9b3f62e 9035
b270e6f9 9036 install_breakpoint (internal, std::move (b), 0);
018d34a4
VP
9037}
9038
9039/* Add SALS.nelts breakpoints to the breakpoint table. For each
9040 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9041 value. COND_STRING, if not NULL, specified the condition to be
9042 used for all breakpoints. Essentially the only case where
9043 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9044 function. In that case, it's still not possible to specify
9045 separate conditions for different overloaded functions, so
9046 we take just a single condition string.
9047
c3f6f71d 9048 NOTE: If the function succeeds, the caller is expected to cleanup
018d34a4 9049 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
c3f6f71d
JM
9050 array contents). If the function fails (error() is called), the
9051 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
4a64f543 9052 COND and SALS arrays and each of those arrays contents. */
c906108c
SS
9053
9054static void
8cdf0e15 9055create_breakpoints_sal (struct gdbarch *gdbarch,
7efd8fc2 9056 struct linespec_result *canonical,
e1e01040
PA
9057 gdb::unique_xmalloc_ptr<char> cond_string,
9058 gdb::unique_xmalloc_ptr<char> extra_string,
8cdf0e15
VP
9059 enum bptype type, enum bpdisp disposition,
9060 int thread, int task, int ignore_count,
c0a91b2b 9061 const struct breakpoint_ops *ops, int from_tty,
44f238bb 9062 int enabled, int internal, unsigned flags)
c906108c 9063{
f8eba3c6 9064 if (canonical->pre_expanded)
6c5b2ebe 9065 gdb_assert (canonical->lsals.size () == 1);
f8eba3c6 9066
6c5b2ebe 9067 for (const auto &lsal : canonical->lsals)
c3f6f71d 9068 {
f00aae0f 9069 /* Note that 'location' can be NULL in the case of a plain
f8eba3c6 9070 'break', without arguments. */
ffc2605c 9071 event_location_up location
f00aae0f 9072 = (canonical->location != NULL
8e9e35b1 9073 ? copy_event_location (canonical->location.get ()) : NULL);
e1e01040 9074 gdb::unique_xmalloc_ptr<char> filter_string
6c5b2ebe 9075 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
0d381245 9076
6c5b2ebe 9077 create_breakpoint_sal (gdbarch, lsal.sals,
ffc2605c 9078 std::move (location),
e1e01040
PA
9079 std::move (filter_string),
9080 std::move (cond_string),
9081 std::move (extra_string),
e7e0cddf 9082 type, disposition,
84f4c1fe 9083 thread, task, ignore_count, ops,
44f238bb 9084 from_tty, enabled, internal, flags,
56435ebe 9085 canonical->special_display);
c3f6f71d 9086 }
c3f6f71d 9087}
c906108c 9088
f00aae0f 9089/* Parse LOCATION which is assumed to be a SAL specification possibly
c3f6f71d 9090 followed by conditionals. On return, SALS contains an array of SAL
f00aae0f
KS
9091 addresses found. LOCATION points to the end of the SAL (for
9092 linespec locations).
9998af43
TJB
9093
9094 The array and the line spec strings are allocated on the heap, it is
9095 the caller's responsibility to free them. */
c906108c 9096
b9362cc7 9097static void
f00aae0f 9098parse_breakpoint_sals (const struct event_location *location,
58438ac1 9099 struct linespec_result *canonical)
c3f6f71d 9100{
f00aae0f
KS
9101 struct symtab_and_line cursal;
9102
9103 if (event_location_type (location) == LINESPEC_LOCATION)
9104 {
9105 const char *address = get_linespec_location (location);
9106
9107 if (address == NULL)
9108 {
9109 /* The last displayed codepoint, if it's valid, is our default
9110 breakpoint address. */
9111 if (last_displayed_sal_is_valid ())
9112 {
f00aae0f
KS
9113 /* Set sal's pspace, pc, symtab, and line to the values
9114 corresponding to the last call to print_frame_info.
9115 Be sure to reinitialize LINE with NOTCURRENT == 0
9116 as the breakpoint line number is inappropriate otherwise.
9117 find_pc_line would adjust PC, re-set it back. */
51abb421
PA
9118 symtab_and_line sal = get_last_displayed_sal ();
9119 CORE_ADDR pc = sal.pc;
9120
f00aae0f
KS
9121 sal = find_pc_line (pc, 0);
9122
9123 /* "break" without arguments is equivalent to "break *PC"
9124 where PC is the last displayed codepoint's address. So
9125 make sure to set sal.explicit_pc to prevent GDB from
9126 trying to expand the list of sals to include all other
9127 instances with the same symtab and line. */
9128 sal.pc = pc;
9129 sal.explicit_pc = 1;
9130
6c5b2ebe
PA
9131 struct linespec_sals lsal;
9132 lsal.sals = {sal};
f00aae0f
KS
9133 lsal.canonical = NULL;
9134
6c5b2ebe 9135 canonical->lsals.push_back (std::move (lsal));
f00aae0f
KS
9136 return;
9137 }
9138 else
9139 error (_("No default breakpoint address now."));
c906108c 9140 }
c906108c 9141 }
f00aae0f
KS
9142
9143 /* Force almost all breakpoints to be in terms of the
9144 current_source_symtab (which is decode_line_1's default).
9145 This should produce the results we want almost all of the
9146 time while leaving default_breakpoint_* alone.
9147
9148 ObjC: However, don't match an Objective-C method name which
9149 may have a '+' or '-' succeeded by a '['. */
9150 cursal = get_current_source_symtab_and_line ();
9151 if (last_displayed_sal_is_valid ())
c906108c 9152 {
f00aae0f 9153 const char *address = NULL;
cc80f267 9154
f00aae0f
KS
9155 if (event_location_type (location) == LINESPEC_LOCATION)
9156 address = get_linespec_location (location);
cc80f267 9157
f00aae0f
KS
9158 if (!cursal.symtab
9159 || (address != NULL
9160 && strchr ("+-", address[0]) != NULL
9161 && address[1] != '['))
9162 {
c2f4122d 9163 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f
KS
9164 get_last_displayed_symtab (),
9165 get_last_displayed_line (),
9166 canonical, NULL, NULL);
9167 return;
9168 }
c906108c 9169 }
f00aae0f 9170
c2f4122d 9171 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f 9172 cursal.symtab, cursal.line, canonical, NULL, NULL);
c3f6f71d 9173}
c906108c 9174
c906108c 9175
c3f6f71d 9176/* Convert each SAL into a real PC. Verify that the PC can be
4a64f543 9177 inserted as a breakpoint. If it can't throw an error. */
c906108c 9178
b9362cc7 9179static void
6c5b2ebe 9180breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
c3f6f71d 9181{
6c5b2ebe
PA
9182 for (auto &sal : sals)
9183 resolve_sal_pc (&sal);
c3f6f71d
JM
9184}
9185
7a697b8d
SS
9186/* Fast tracepoints may have restrictions on valid locations. For
9187 instance, a fast tracepoint using a jump instead of a trap will
9188 likely have to overwrite more bytes than a trap would, and so can
9189 only be placed where the instruction is longer than the jump, or a
9190 multi-instruction sequence does not have a jump into the middle of
9191 it, etc. */
9192
9193static void
9194check_fast_tracepoint_sals (struct gdbarch *gdbarch,
6c5b2ebe 9195 gdb::array_view<const symtab_and_line> sals)
7a697b8d 9196{
6c5b2ebe 9197 int rslt;
7a697b8d
SS
9198 char *msg;
9199 struct cleanup *old_chain;
9200
6c5b2ebe 9201 for (const auto &sal : sals)
7a697b8d 9202 {
f8eba3c6
TT
9203 struct gdbarch *sarch;
9204
6c5b2ebe 9205 sarch = get_sal_arch (sal);
f8eba3c6
TT
9206 /* We fall back to GDBARCH if there is no architecture
9207 associated with SAL. */
9208 if (sarch == NULL)
9209 sarch = gdbarch;
6c5b2ebe 9210 rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg);
7a697b8d
SS
9211 old_chain = make_cleanup (xfree, msg);
9212
9213 if (!rslt)
53c3572a 9214 error (_("May not have a fast tracepoint at %s%s"),
6c5b2ebe 9215 paddress (sarch, sal.pc), (msg ? msg : ""));
7a697b8d
SS
9216
9217 do_cleanups (old_chain);
9218 }
9219}
9220
018d34a4
VP
9221/* Given TOK, a string specification of condition and thread, as
9222 accepted by the 'break' command, extract the condition
9223 string and thread number and set *COND_STRING and *THREAD.
4a64f543 9224 PC identifies the context at which the condition should be parsed.
018d34a4
VP
9225 If no condition is found, *COND_STRING is set to NULL.
9226 If no thread is found, *THREAD is set to -1. */
d634f2de
JB
9227
9228static void
bbc13ae3 9229find_condition_and_thread (const char *tok, CORE_ADDR pc,
e7e0cddf
SS
9230 char **cond_string, int *thread, int *task,
9231 char **rest)
018d34a4
VP
9232{
9233 *cond_string = NULL;
9234 *thread = -1;
ed1d1739
KS
9235 *task = 0;
9236 *rest = NULL;
9237
018d34a4
VP
9238 while (tok && *tok)
9239 {
bbc13ae3 9240 const char *end_tok;
018d34a4 9241 int toklen;
bbc13ae3
KS
9242 const char *cond_start = NULL;
9243 const char *cond_end = NULL;
cc59ec59 9244
f1735a53 9245 tok = skip_spaces (tok);
e7e0cddf
SS
9246
9247 if ((*tok == '"' || *tok == ',') && rest)
9248 {
9249 *rest = savestring (tok, strlen (tok));
9250 return;
9251 }
9252
f1735a53 9253 end_tok = skip_to_space (tok);
d634f2de 9254
018d34a4 9255 toklen = end_tok - tok;
d634f2de 9256
018d34a4
VP
9257 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9258 {
9259 tok = cond_start = end_tok + 1;
4d01a485 9260 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
018d34a4 9261 cond_end = tok;
d634f2de 9262 *cond_string = savestring (cond_start, cond_end - cond_start);
018d34a4
VP
9263 }
9264 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9265 {
5d5658a1
PA
9266 const char *tmptok;
9267 struct thread_info *thr;
d634f2de 9268
018d34a4 9269 tok = end_tok + 1;
5d5658a1 9270 thr = parse_thread_id (tok, &tmptok);
018d34a4
VP
9271 if (tok == tmptok)
9272 error (_("Junk after thread keyword."));
5d5658a1 9273 *thread = thr->global_num;
bbc13ae3 9274 tok = tmptok;
018d34a4 9275 }
4a306c9a
JB
9276 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9277 {
9278 char *tmptok;
9279
9280 tok = end_tok + 1;
bbc13ae3 9281 *task = strtol (tok, &tmptok, 0);
4a306c9a
JB
9282 if (tok == tmptok)
9283 error (_("Junk after task keyword."));
9284 if (!valid_task_id (*task))
b6199126 9285 error (_("Unknown task %d."), *task);
bbc13ae3 9286 tok = tmptok;
4a306c9a 9287 }
e7e0cddf
SS
9288 else if (rest)
9289 {
9290 *rest = savestring (tok, strlen (tok));
ccab2054 9291 return;
e7e0cddf 9292 }
018d34a4
VP
9293 else
9294 error (_("Junk at end of arguments."));
9295 }
9296}
9297
0fb4aa4b
PA
9298/* Decode a static tracepoint marker spec. */
9299
6c5b2ebe 9300static std::vector<symtab_and_line>
f00aae0f 9301decode_static_tracepoint_spec (const char **arg_p)
0fb4aa4b
PA
9302{
9303 VEC(static_tracepoint_marker_p) *markers = NULL;
f00aae0f
KS
9304 const char *p = &(*arg_p)[3];
9305 const char *endp;
0fb4aa4b
PA
9306 int i;
9307
f1735a53 9308 p = skip_spaces (p);
0fb4aa4b 9309
f1735a53 9310 endp = skip_to_space (p);
0fb4aa4b 9311
81b1e71c 9312 std::string marker_str (p, endp - p);
0fb4aa4b 9313
81b1e71c 9314 markers = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
0fb4aa4b 9315 if (VEC_empty(static_tracepoint_marker_p, markers))
81b1e71c
TT
9316 error (_("No known static tracepoint marker named %s"),
9317 marker_str.c_str ());
0fb4aa4b 9318
6c5b2ebe
PA
9319 std::vector<symtab_and_line> sals;
9320 sals.reserve (VEC_length(static_tracepoint_marker_p, markers));
0fb4aa4b 9321
6c5b2ebe 9322 for (i = 0; i < VEC_length(static_tracepoint_marker_p, markers); i++)
0fb4aa4b
PA
9323 {
9324 struct static_tracepoint_marker *marker;
9325
9326 marker = VEC_index (static_tracepoint_marker_p, markers, i);
9327
51abb421 9328 symtab_and_line sal = find_pc_line (marker->address, 0);
6c5b2ebe
PA
9329 sal.pc = marker->address;
9330 sals.push_back (sal);
0fb4aa4b
PA
9331
9332 release_static_tracepoint_marker (marker);
9333 }
9334
0fb4aa4b
PA
9335 *arg_p = endp;
9336 return sals;
9337}
9338
f00aae0f 9339/* See breakpoint.h. */
0101ce28 9340
8cdf0e15
VP
9341int
9342create_breakpoint (struct gdbarch *gdbarch,
e1e01040
PA
9343 const struct event_location *location,
9344 const char *cond_string,
9345 int thread, const char *extra_string,
f00aae0f 9346 int parse_extra,
0fb4aa4b 9347 int tempflag, enum bptype type_wanted,
8cdf0e15
VP
9348 int ignore_count,
9349 enum auto_boolean pending_break_support,
c0a91b2b 9350 const struct breakpoint_ops *ops,
44f238bb
PA
9351 int from_tty, int enabled, int internal,
9352 unsigned flags)
c3f6f71d 9353{
7efd8fc2 9354 struct linespec_result canonical;
80c99de1 9355 struct cleanup *bkpt_chain = NULL;
0101ce28 9356 int pending = 0;
4a306c9a 9357 int task = 0;
86b17b60 9358 int prev_bkpt_count = breakpoint_count;
c3f6f71d 9359
348d480f
PA
9360 gdb_assert (ops != NULL);
9361
f00aae0f
KS
9362 /* If extra_string isn't useful, set it to NULL. */
9363 if (extra_string != NULL && *extra_string == '\0')
9364 extra_string = NULL;
9365
492d29ea 9366 TRY
b78a6381 9367 {
f00aae0f 9368 ops->create_sals_from_location (location, &canonical, type_wanted);
b78a6381 9369 }
492d29ea 9370 CATCH (e, RETURN_MASK_ERROR)
0101ce28 9371 {
492d29ea
PA
9372 /* If caller is interested in rc value from parse, set
9373 value. */
9374 if (e.error == NOT_FOUND_ERROR)
0101ce28 9375 {
05ff989b
AC
9376 /* If pending breakpoint support is turned off, throw
9377 error. */
fa8d40ab
JJ
9378
9379 if (pending_break_support == AUTO_BOOLEAN_FALSE)
723a2275
VP
9380 throw_exception (e);
9381
9382 exception_print (gdb_stderr, e);
fa8d40ab 9383
05ff989b
AC
9384 /* If pending breakpoint support is auto query and the user
9385 selects no, then simply return the error code. */
059fb39f 9386 if (pending_break_support == AUTO_BOOLEAN_AUTO
bfccc43c
YQ
9387 && !nquery (_("Make %s pending on future shared library load? "),
9388 bptype_string (type_wanted)))
fd9b8c24 9389 return 0;
fa8d40ab 9390
05ff989b
AC
9391 /* At this point, either the user was queried about setting
9392 a pending breakpoint and selected yes, or pending
9393 breakpoint behavior is on and thus a pending breakpoint
9394 is defaulted on behalf of the user. */
f00aae0f 9395 pending = 1;
0101ce28 9396 }
492d29ea
PA
9397 else
9398 throw_exception (e);
0101ce28 9399 }
492d29ea
PA
9400 END_CATCH
9401
6c5b2ebe 9402 if (!pending && canonical.lsals.empty ())
492d29ea 9403 return 0;
c3f6f71d 9404
c3f6f71d
JM
9405 /* ----------------------------- SNIP -----------------------------
9406 Anything added to the cleanup chain beyond this point is assumed
9407 to be part of a breakpoint. If the breakpoint create succeeds
80c99de1
PA
9408 then the memory is not reclaimed. */
9409 bkpt_chain = make_cleanup (null_cleanup, 0);
c3f6f71d 9410
c3f6f71d
JM
9411 /* Resolve all line numbers to PC's and verify that the addresses
9412 are ok for the target. */
0101ce28 9413 if (!pending)
f8eba3c6 9414 {
6c5b2ebe
PA
9415 for (auto &lsal : canonical.lsals)
9416 breakpoint_sals_to_pc (lsal.sals);
f8eba3c6 9417 }
c3f6f71d 9418
7a697b8d 9419 /* Fast tracepoints may have additional restrictions on location. */
bfccc43c 9420 if (!pending && type_wanted == bp_fast_tracepoint)
f8eba3c6 9421 {
6c5b2ebe
PA
9422 for (const auto &lsal : canonical.lsals)
9423 check_fast_tracepoint_sals (gdbarch, lsal.sals);
f8eba3c6 9424 }
7a697b8d 9425
c3f6f71d
JM
9426 /* Verify that condition can be parsed, before setting any
9427 breakpoints. Allocate a separate condition expression for each
4a64f543 9428 breakpoint. */
0101ce28 9429 if (!pending)
c3f6f71d 9430 {
e1e01040
PA
9431 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9432 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9433
f00aae0f 9434 if (parse_extra)
72b2ff0e 9435 {
0878d0fa 9436 char *rest;
e1e01040 9437 char *cond;
52d361e1 9438
6c5b2ebe 9439 const linespec_sals &lsal = canonical.lsals[0];
52d361e1 9440
0878d0fa
YQ
9441 /* Here we only parse 'arg' to separate condition
9442 from thread number, so parsing in context of first
9443 sal is OK. When setting the breakpoint we'll
9444 re-parse it in context of each sal. */
9445
6c5b2ebe 9446 find_condition_and_thread (extra_string, lsal.sals[0].pc,
e1e01040
PA
9447 &cond, &thread, &task, &rest);
9448 cond_string_copy.reset (cond);
9449 extra_string_copy.reset (rest);
72b2ff0e 9450 }
2f069f6f 9451 else
72b2ff0e 9452 {
f00aae0f
KS
9453 if (type_wanted != bp_dprintf
9454 && extra_string != NULL && *extra_string != '\0')
9455 error (_("Garbage '%s' at end of location"), extra_string);
0878d0fa
YQ
9456
9457 /* Create a private copy of condition string. */
9458 if (cond_string)
e1e01040 9459 cond_string_copy.reset (xstrdup (cond_string));
0878d0fa
YQ
9460 /* Create a private copy of any extra string. */
9461 if (extra_string)
e1e01040 9462 extra_string_copy.reset (xstrdup (extra_string));
72b2ff0e 9463 }
0fb4aa4b 9464
52d361e1 9465 ops->create_breakpoints_sal (gdbarch, &canonical,
e1e01040
PA
9466 std::move (cond_string_copy),
9467 std::move (extra_string_copy),
9468 type_wanted,
d9b3f62e
PA
9469 tempflag ? disp_del : disp_donttouch,
9470 thread, task, ignore_count, ops,
44f238bb 9471 from_tty, enabled, internal, flags);
c906108c 9472 }
0101ce28
JJ
9473 else
9474 {
a5e364af 9475 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
bfccc43c 9476
a5e364af 9477 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
d28cd78a 9478 b->location = copy_event_location (location);
bfccc43c 9479
f00aae0f
KS
9480 if (parse_extra)
9481 b->cond_string = NULL;
e12c7713
MK
9482 else
9483 {
9484 /* Create a private copy of condition string. */
e1e01040 9485 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
15630549 9486 b->thread = thread;
e12c7713 9487 }
f00aae0f
KS
9488
9489 /* Create a private copy of any extra string. */
e1e01040 9490 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
0101ce28 9491 b->ignore_count = ignore_count;
0101ce28 9492 b->disposition = tempflag ? disp_del : disp_donttouch;
0d381245 9493 b->condition_not_parsed = 1;
41447f92 9494 b->enable_state = enabled ? bp_enabled : bp_disabled;
cc72b2a2
KP
9495 if ((type_wanted != bp_breakpoint
9496 && type_wanted != bp_hardware_breakpoint) || thread != -1)
f8eba3c6 9497 b->pspace = current_program_space;
8bea4e01 9498
b270e6f9 9499 install_breakpoint (internal, std::move (b), 0);
0101ce28
JJ
9500 }
9501
6c5b2ebe 9502 if (canonical.lsals.size () > 1)
95a42b64 9503 {
3e43a32a
MS
9504 warning (_("Multiple breakpoints were set.\nUse the "
9505 "\"delete\" command to delete unwanted breakpoints."));
86b17b60 9506 prev_breakpoint_count = prev_bkpt_count;
95a42b64
TT
9507 }
9508
80c99de1
PA
9509 /* That's it. Discard the cleanups for data inserted into the
9510 breakpoint. */
9511 discard_cleanups (bkpt_chain);
217dc9e2 9512
80c99de1 9513 /* error call may happen here - have BKPT_CHAIN already discarded. */
44702360 9514 update_global_location_list (UGLL_MAY_INSERT);
fd9b8c24
PA
9515
9516 return 1;
c3f6f71d 9517}
c906108c 9518
348d480f 9519/* Set a breakpoint.
72b2ff0e
VP
9520 ARG is a string describing breakpoint address,
9521 condition, and thread.
9522 FLAG specifies if a breakpoint is hardware on,
9523 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9524 and BP_TEMPFLAG. */
348d480f 9525
98deb0da 9526static void
f2fc3015 9527break_command_1 (const char *arg, int flag, int from_tty)
c3f6f71d 9528{
72b2ff0e 9529 int tempflag = flag & BP_TEMPFLAG;
0fb4aa4b
PA
9530 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9531 ? bp_hardware_breakpoint
9532 : bp_breakpoint);
55aa24fb 9533 struct breakpoint_ops *ops;
f00aae0f 9534
ffc2605c 9535 event_location_up location = string_to_event_location (&arg, current_language);
55aa24fb
SDJ
9536
9537 /* Matching breakpoints on probes. */
5b56227b 9538 if (location != NULL
ffc2605c 9539 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
9540 ops = &bkpt_probe_breakpoint_ops;
9541 else
9542 ops = &bkpt_breakpoint_ops;
c3f6f71d 9543
8cdf0e15 9544 create_breakpoint (get_current_arch (),
ffc2605c 9545 location.get (),
f00aae0f 9546 NULL, 0, arg, 1 /* parse arg */,
0fb4aa4b 9547 tempflag, type_wanted,
8cdf0e15
VP
9548 0 /* Ignore count */,
9549 pending_break_support,
55aa24fb 9550 ops,
8cdf0e15 9551 from_tty,
84f4c1fe 9552 1 /* enabled */,
44f238bb
PA
9553 0 /* internal */,
9554 0);
c906108c
SS
9555}
9556
c906108c
SS
9557/* Helper function for break_command_1 and disassemble_command. */
9558
9559void
fba45db2 9560resolve_sal_pc (struct symtab_and_line *sal)
c906108c
SS
9561{
9562 CORE_ADDR pc;
9563
9564 if (sal->pc == 0 && sal->symtab != NULL)
9565 {
9566 if (!find_line_pc (sal->symtab, sal->line, &pc))
8a3fe4f8 9567 error (_("No line %d in file \"%s\"."),
05cba821 9568 sal->line, symtab_to_filename_for_display (sal->symtab));
c906108c 9569 sal->pc = pc;
6a048695 9570
4a64f543
MS
9571 /* If this SAL corresponds to a breakpoint inserted using a line
9572 number, then skip the function prologue if necessary. */
6a048695 9573 if (sal->explicit_line)
059acae7 9574 skip_prologue_sal (sal);
c906108c
SS
9575 }
9576
9577 if (sal->section == 0 && sal->symtab != NULL)
9578 {
346d1dfe 9579 const struct blockvector *bv;
3977b71f 9580 const struct block *b;
c5aa993b 9581 struct symbol *sym;
c906108c 9582
43f3e411
DE
9583 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9584 SYMTAB_COMPUNIT (sal->symtab));
c906108c
SS
9585 if (bv != NULL)
9586 {
7f0df278 9587 sym = block_linkage_function (b);
c906108c
SS
9588 if (sym != NULL)
9589 {
eb822aa6
DE
9590 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9591 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9592 sym);
c906108c
SS
9593 }
9594 else
9595 {
4a64f543
MS
9596 /* It really is worthwhile to have the section, so we'll
9597 just have to look harder. This case can be executed
9598 if we have line numbers but no functions (as can
9599 happen in assembly source). */
c906108c 9600
5ed8105e 9601 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 9602 switch_to_program_space_and_thread (sal->pspace);
c906108c 9603
5ed8105e 9604 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
7cbd4a93 9605 if (msym.minsym)
efd66ac6 9606 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
c906108c
SS
9607 }
9608 }
9609 }
9610}
9611
9612void
0b39b52e 9613break_command (const char *arg, int from_tty)
c906108c 9614{
db107f19 9615 break_command_1 (arg, 0, from_tty);
c906108c
SS
9616}
9617
c906108c 9618void
0b39b52e 9619tbreak_command (const char *arg, int from_tty)
c906108c 9620{
db107f19 9621 break_command_1 (arg, BP_TEMPFLAG, from_tty);
c906108c
SS
9622}
9623
c906108c 9624static void
0b39b52e 9625hbreak_command (const char *arg, int from_tty)
c906108c 9626{
db107f19 9627 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
c906108c
SS
9628}
9629
9630static void
0b39b52e 9631thbreak_command (const char *arg, int from_tty)
c906108c 9632{
db107f19 9633 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
c906108c
SS
9634}
9635
9636static void
ee7ddd71 9637stop_command (const char *arg, int from_tty)
c906108c 9638{
a3f17187 9639 printf_filtered (_("Specify the type of breakpoint to set.\n\
c906108c 9640Usage: stop in <function | address>\n\
a3f17187 9641 stop at <line>\n"));
c906108c
SS
9642}
9643
9644static void
4495129a 9645stopin_command (const char *arg, int from_tty)
c906108c
SS
9646{
9647 int badInput = 0;
9648
c5aa993b 9649 if (arg == (char *) NULL)
c906108c
SS
9650 badInput = 1;
9651 else if (*arg != '*')
9652 {
4495129a 9653 const char *argptr = arg;
c906108c
SS
9654 int hasColon = 0;
9655
4a64f543 9656 /* Look for a ':'. If this is a line number specification, then
53a5351d 9657 say it is bad, otherwise, it should be an address or
4a64f543 9658 function/method name. */
c906108c 9659 while (*argptr && !hasColon)
c5aa993b
JM
9660 {
9661 hasColon = (*argptr == ':');
9662 argptr++;
9663 }
c906108c
SS
9664
9665 if (hasColon)
c5aa993b 9666 badInput = (*argptr != ':'); /* Not a class::method */
c906108c 9667 else
c5aa993b 9668 badInput = isdigit (*arg); /* a simple line number */
c906108c
SS
9669 }
9670
9671 if (badInput)
a3f17187 9672 printf_filtered (_("Usage: stop in <function | address>\n"));
c906108c 9673 else
db107f19 9674 break_command_1 (arg, 0, from_tty);
c906108c
SS
9675}
9676
9677static void
4495129a 9678stopat_command (const char *arg, int from_tty)
c906108c
SS
9679{
9680 int badInput = 0;
9681
c5aa993b 9682 if (arg == (char *) NULL || *arg == '*') /* no line number */
c906108c
SS
9683 badInput = 1;
9684 else
9685 {
4495129a 9686 const char *argptr = arg;
c906108c
SS
9687 int hasColon = 0;
9688
4a64f543
MS
9689 /* Look for a ':'. If there is a '::' then get out, otherwise
9690 it is probably a line number. */
c906108c 9691 while (*argptr && !hasColon)
c5aa993b
JM
9692 {
9693 hasColon = (*argptr == ':');
9694 argptr++;
9695 }
c906108c
SS
9696
9697 if (hasColon)
c5aa993b 9698 badInput = (*argptr == ':'); /* we have class::method */
c906108c 9699 else
c5aa993b 9700 badInput = !isdigit (*arg); /* not a line number */
c906108c
SS
9701 }
9702
9703 if (badInput)
a3f17187 9704 printf_filtered (_("Usage: stop at <line>\n"));
c906108c 9705 else
db107f19 9706 break_command_1 (arg, 0, from_tty);
c906108c
SS
9707}
9708
e7e0cddf
SS
9709/* The dynamic printf command is mostly like a regular breakpoint, but
9710 with a prewired command list consisting of a single output command,
9711 built from extra arguments supplied on the dprintf command
9712 line. */
9713
da821c7b 9714static void
0b39b52e 9715dprintf_command (const char *arg, int from_tty)
e7e0cddf 9716{
ffc2605c 9717 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f
KS
9718
9719 /* If non-NULL, ARG should have been advanced past the location;
9720 the next character must be ','. */
9721 if (arg != NULL)
9722 {
9723 if (arg[0] != ',' || arg[1] == '\0')
9724 error (_("Format string required"));
9725 else
9726 {
9727 /* Skip the comma. */
9728 ++arg;
9729 }
9730 }
9731
e7e0cddf 9732 create_breakpoint (get_current_arch (),
ffc2605c 9733 location.get (),
f00aae0f 9734 NULL, 0, arg, 1 /* parse arg */,
e7e0cddf
SS
9735 0, bp_dprintf,
9736 0 /* Ignore count */,
9737 pending_break_support,
9738 &dprintf_breakpoint_ops,
9739 from_tty,
9740 1 /* enabled */,
9741 0 /* internal */,
9742 0);
9743}
9744
d3ce09f5 9745static void
0b39b52e 9746agent_printf_command (const char *arg, int from_tty)
d3ce09f5
SS
9747{
9748 error (_("May only run agent-printf on the target"));
9749}
9750
f1310107
TJB
9751/* Implement the "breakpoint_hit" breakpoint_ops method for
9752 ranged breakpoints. */
9753
9754static int
9755breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
bd522513 9756 const address_space *aspace,
09ac7c10
TT
9757 CORE_ADDR bp_addr,
9758 const struct target_waitstatus *ws)
f1310107 9759{
09ac7c10 9760 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 9761 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
9762 return 0;
9763
f1310107
TJB
9764 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9765 bl->length, aspace, bp_addr);
9766}
9767
9768/* Implement the "resources_needed" breakpoint_ops method for
9769 ranged breakpoints. */
9770
9771static int
9772resources_needed_ranged_breakpoint (const struct bp_location *bl)
9773{
9774 return target_ranged_break_num_registers ();
9775}
9776
9777/* Implement the "print_it" breakpoint_ops method for
9778 ranged breakpoints. */
9779
9780static enum print_stop_action
348d480f 9781print_it_ranged_breakpoint (bpstat bs)
f1310107 9782{
348d480f 9783 struct breakpoint *b = bs->breakpoint_at;
f1310107 9784 struct bp_location *bl = b->loc;
79a45e25 9785 struct ui_out *uiout = current_uiout;
f1310107
TJB
9786
9787 gdb_assert (b->type == bp_hardware_breakpoint);
9788
9789 /* Ranged breakpoints have only one location. */
9790 gdb_assert (bl && bl->next == NULL);
9791
9792 annotate_breakpoint (b->number);
f303dbd6
PA
9793
9794 maybe_print_thread_hit_breakpoint (uiout);
9795
f1310107 9796 if (b->disposition == disp_del)
112e8700 9797 uiout->text ("Temporary ranged breakpoint ");
f1310107 9798 else
112e8700
SM
9799 uiout->text ("Ranged breakpoint ");
9800 if (uiout->is_mi_like_p ())
f1310107 9801 {
112e8700 9802 uiout->field_string ("reason",
f1310107 9803 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 9804 uiout->field_string ("disp", bpdisp_text (b->disposition));
f1310107 9805 }
112e8700
SM
9806 uiout->field_int ("bkptno", b->number);
9807 uiout->text (", ");
f1310107
TJB
9808
9809 return PRINT_SRC_AND_LOC;
9810}
9811
9812/* Implement the "print_one" breakpoint_ops method for
9813 ranged breakpoints. */
9814
9815static void
9816print_one_ranged_breakpoint (struct breakpoint *b,
9817 struct bp_location **last_loc)
9818{
9819 struct bp_location *bl = b->loc;
9820 struct value_print_options opts;
79a45e25 9821 struct ui_out *uiout = current_uiout;
f1310107
TJB
9822
9823 /* Ranged breakpoints have only one location. */
9824 gdb_assert (bl && bl->next == NULL);
9825
9826 get_user_print_options (&opts);
9827
9828 if (opts.addressprint)
9829 /* We don't print the address range here, it will be printed later
9830 by print_one_detail_ranged_breakpoint. */
112e8700 9831 uiout->field_skip ("addr");
f1310107
TJB
9832 annotate_field (5);
9833 print_breakpoint_location (b, bl);
9834 *last_loc = bl;
9835}
9836
9837/* Implement the "print_one_detail" breakpoint_ops method for
9838 ranged breakpoints. */
9839
9840static void
9841print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9842 struct ui_out *uiout)
9843{
9844 CORE_ADDR address_start, address_end;
9845 struct bp_location *bl = b->loc;
d7e74731 9846 string_file stb;
f1310107
TJB
9847
9848 gdb_assert (bl);
9849
9850 address_start = bl->address;
9851 address_end = address_start + bl->length - 1;
9852
112e8700 9853 uiout->text ("\taddress range: ");
d7e74731
PA
9854 stb.printf ("[%s, %s]",
9855 print_core_address (bl->gdbarch, address_start),
9856 print_core_address (bl->gdbarch, address_end));
112e8700
SM
9857 uiout->field_stream ("addr", stb);
9858 uiout->text ("\n");
f1310107
TJB
9859}
9860
9861/* Implement the "print_mention" breakpoint_ops method for
9862 ranged breakpoints. */
9863
9864static void
9865print_mention_ranged_breakpoint (struct breakpoint *b)
9866{
9867 struct bp_location *bl = b->loc;
79a45e25 9868 struct ui_out *uiout = current_uiout;
f1310107
TJB
9869
9870 gdb_assert (bl);
9871 gdb_assert (b->type == bp_hardware_breakpoint);
9872
112e8700 9873 if (uiout->is_mi_like_p ())
f1310107
TJB
9874 return;
9875
9876 printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9877 b->number, paddress (bl->gdbarch, bl->address),
9878 paddress (bl->gdbarch, bl->address + bl->length - 1));
9879}
9880
9881/* Implement the "print_recreate" breakpoint_ops method for
9882 ranged breakpoints. */
9883
9884static void
9885print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9886{
f00aae0f 9887 fprintf_unfiltered (fp, "break-range %s, %s",
d28cd78a
TT
9888 event_location_to_string (b->location.get ()),
9889 event_location_to_string (b->location_range_end.get ()));
d9b3f62e 9890 print_recreate_thread (b, fp);
f1310107
TJB
9891}
9892
9893/* The breakpoint_ops structure to be used in ranged breakpoints. */
9894
2060206e 9895static struct breakpoint_ops ranged_breakpoint_ops;
f1310107
TJB
9896
9897/* Find the address where the end of the breakpoint range should be
9898 placed, given the SAL of the end of the range. This is so that if
9899 the user provides a line number, the end of the range is set to the
9900 last instruction of the given line. */
9901
9902static CORE_ADDR
9903find_breakpoint_range_end (struct symtab_and_line sal)
9904{
9905 CORE_ADDR end;
9906
9907 /* If the user provided a PC value, use it. Otherwise,
9908 find the address of the end of the given location. */
9909 if (sal.explicit_pc)
9910 end = sal.pc;
9911 else
9912 {
9913 int ret;
9914 CORE_ADDR start;
9915
9916 ret = find_line_pc_range (sal, &start, &end);
9917 if (!ret)
9918 error (_("Could not find location of the end of the range."));
9919
9920 /* find_line_pc_range returns the start of the next line. */
9921 end--;
9922 }
9923
9924 return end;
9925}
9926
9927/* Implement the "break-range" CLI command. */
9928
9929static void
0b39b52e 9930break_range_command (const char *arg, int from_tty)
f1310107 9931{
f2fc3015 9932 const char *arg_start;
f1310107
TJB
9933 struct linespec_result canonical_start, canonical_end;
9934 int bp_count, can_use_bp, length;
9935 CORE_ADDR end;
9936 struct breakpoint *b;
f1310107
TJB
9937
9938 /* We don't support software ranged breakpoints. */
9939 if (target_ranged_break_num_registers () < 0)
9940 error (_("This target does not support hardware ranged breakpoints."));
9941
9942 bp_count = hw_breakpoint_used_count ();
9943 bp_count += target_ranged_break_num_registers ();
9944 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9945 bp_count, 0);
9946 if (can_use_bp < 0)
9947 error (_("Hardware breakpoints used exceeds limit."));
9948
f8eba3c6 9949 arg = skip_spaces (arg);
f1310107
TJB
9950 if (arg == NULL || arg[0] == '\0')
9951 error(_("No address range specified."));
9952
f8eba3c6 9953 arg_start = arg;
ffc2605c
TT
9954 event_location_up start_location = string_to_event_location (&arg,
9955 current_language);
9956 parse_breakpoint_sals (start_location.get (), &canonical_start);
f1310107
TJB
9957
9958 if (arg[0] != ',')
9959 error (_("Too few arguments."));
6c5b2ebe 9960 else if (canonical_start.lsals.empty ())
f1310107 9961 error (_("Could not find location of the beginning of the range."));
f8eba3c6 9962
6c5b2ebe 9963 const linespec_sals &lsal_start = canonical_start.lsals[0];
f8eba3c6 9964
6c5b2ebe
PA
9965 if (canonical_start.lsals.size () > 1
9966 || lsal_start.sals.size () != 1)
f1310107
TJB
9967 error (_("Cannot create a ranged breakpoint with multiple locations."));
9968
6c5b2ebe 9969 const symtab_and_line &sal_start = lsal_start.sals[0];
81b1e71c 9970 std::string addr_string_start (arg_start, arg - arg_start);
f1310107
TJB
9971
9972 arg++; /* Skip the comma. */
f8eba3c6 9973 arg = skip_spaces (arg);
f1310107
TJB
9974
9975 /* Parse the end location. */
9976
f1310107
TJB
9977 arg_start = arg;
9978
f8eba3c6 9979 /* We call decode_line_full directly here instead of using
f1310107
TJB
9980 parse_breakpoint_sals because we need to specify the start location's
9981 symtab and line as the default symtab and line for the end of the
9982 range. This makes it possible to have ranges like "foo.c:27, +14",
9983 where +14 means 14 lines from the start location. */
ffc2605c
TT
9984 event_location_up end_location = string_to_event_location (&arg,
9985 current_language);
9986 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
f8eba3c6
TT
9987 sal_start.symtab, sal_start.line,
9988 &canonical_end, NULL, NULL);
9989
6c5b2ebe 9990 if (canonical_end.lsals.empty ())
f1310107 9991 error (_("Could not find location of the end of the range."));
f8eba3c6 9992
6c5b2ebe
PA
9993 const linespec_sals &lsal_end = canonical_end.lsals[0];
9994 if (canonical_end.lsals.size () > 1
9995 || lsal_end.sals.size () != 1)
f1310107
TJB
9996 error (_("Cannot create a ranged breakpoint with multiple locations."));
9997
6c5b2ebe 9998 const symtab_and_line &sal_end = lsal_end.sals[0];
f1310107
TJB
9999
10000 end = find_breakpoint_range_end (sal_end);
10001 if (sal_start.pc > end)
177b42fe 10002 error (_("Invalid address range, end precedes start."));
f1310107
TJB
10003
10004 length = end - sal_start.pc + 1;
10005 if (length < 0)
10006 /* Length overflowed. */
10007 error (_("Address range too large."));
10008 else if (length == 1)
10009 {
10010 /* This range is simple enough to be handled by
10011 the `hbreak' command. */
81b1e71c 10012 hbreak_command (&addr_string_start[0], 1);
f1310107
TJB
10013
10014 return;
10015 }
10016
10017 /* Now set up the breakpoint. */
10018 b = set_raw_breakpoint (get_current_arch (), sal_start,
348d480f 10019 bp_hardware_breakpoint, &ranged_breakpoint_ops);
f1310107
TJB
10020 set_breakpoint_count (breakpoint_count + 1);
10021 b->number = breakpoint_count;
10022 b->disposition = disp_donttouch;
d28cd78a
TT
10023 b->location = std::move (start_location);
10024 b->location_range_end = std::move (end_location);
f1310107
TJB
10025 b->loc->length = length;
10026
f1310107 10027 mention (b);
8d3788bd 10028 observer_notify_breakpoint_created (b);
44702360 10029 update_global_location_list (UGLL_MAY_INSERT);
f1310107
TJB
10030}
10031
4a64f543
MS
10032/* Return non-zero if EXP is verified as constant. Returned zero
10033 means EXP is variable. Also the constant detection may fail for
10034 some constant expressions and in such case still falsely return
10035 zero. */
2e6e3d9c 10036
65d79d4b
SDJ
10037static int
10038watchpoint_exp_is_const (const struct expression *exp)
10039{
10040 int i = exp->nelts;
10041
10042 while (i > 0)
10043 {
10044 int oplenp, argsp;
10045
10046 /* We are only interested in the descriptor of each element. */
10047 operator_length (exp, i, &oplenp, &argsp);
10048 i -= oplenp;
10049
10050 switch (exp->elts[i].opcode)
10051 {
10052 case BINOP_ADD:
10053 case BINOP_SUB:
10054 case BINOP_MUL:
10055 case BINOP_DIV:
10056 case BINOP_REM:
10057 case BINOP_MOD:
10058 case BINOP_LSH:
10059 case BINOP_RSH:
10060 case BINOP_LOGICAL_AND:
10061 case BINOP_LOGICAL_OR:
10062 case BINOP_BITWISE_AND:
10063 case BINOP_BITWISE_IOR:
10064 case BINOP_BITWISE_XOR:
10065 case BINOP_EQUAL:
10066 case BINOP_NOTEQUAL:
10067 case BINOP_LESS:
10068 case BINOP_GTR:
10069 case BINOP_LEQ:
10070 case BINOP_GEQ:
10071 case BINOP_REPEAT:
10072 case BINOP_COMMA:
10073 case BINOP_EXP:
10074 case BINOP_MIN:
10075 case BINOP_MAX:
10076 case BINOP_INTDIV:
10077 case BINOP_CONCAT:
65d79d4b
SDJ
10078 case TERNOP_COND:
10079 case TERNOP_SLICE:
65d79d4b
SDJ
10080
10081 case OP_LONG:
edd079d9 10082 case OP_FLOAT:
65d79d4b
SDJ
10083 case OP_LAST:
10084 case OP_COMPLEX:
10085 case OP_STRING:
65d79d4b
SDJ
10086 case OP_ARRAY:
10087 case OP_TYPE:
608b4967
TT
10088 case OP_TYPEOF:
10089 case OP_DECLTYPE:
6e72ca20 10090 case OP_TYPEID:
65d79d4b
SDJ
10091 case OP_NAME:
10092 case OP_OBJC_NSSTRING:
10093
10094 case UNOP_NEG:
10095 case UNOP_LOGICAL_NOT:
10096 case UNOP_COMPLEMENT:
10097 case UNOP_ADDR:
10098 case UNOP_HIGH:
aeaa2474 10099 case UNOP_CAST:
9eaf6705
TT
10100
10101 case UNOP_CAST_TYPE:
10102 case UNOP_REINTERPRET_CAST:
10103 case UNOP_DYNAMIC_CAST:
4a64f543
MS
10104 /* Unary, binary and ternary operators: We have to check
10105 their operands. If they are constant, then so is the
10106 result of that operation. For instance, if A and B are
10107 determined to be constants, then so is "A + B".
10108
10109 UNOP_IND is one exception to the rule above, because the
10110 value of *ADDR is not necessarily a constant, even when
10111 ADDR is. */
65d79d4b
SDJ
10112 break;
10113
10114 case OP_VAR_VALUE:
10115 /* Check whether the associated symbol is a constant.
4a64f543 10116
65d79d4b 10117 We use SYMBOL_CLASS rather than TYPE_CONST because it's
4a64f543
MS
10118 possible that a buggy compiler could mark a variable as
10119 constant even when it is not, and TYPE_CONST would return
10120 true in this case, while SYMBOL_CLASS wouldn't.
10121
10122 We also have to check for function symbols because they
10123 are always constant. */
65d79d4b
SDJ
10124 {
10125 struct symbol *s = exp->elts[i + 2].symbol;
10126
10127 if (SYMBOL_CLASS (s) != LOC_BLOCK
10128 && SYMBOL_CLASS (s) != LOC_CONST
10129 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10130 return 0;
10131 break;
10132 }
10133
10134 /* The default action is to return 0 because we are using
10135 the optimistic approach here: If we don't know something,
10136 then it is not a constant. */
10137 default:
10138 return 0;
10139 }
10140 }
10141
10142 return 1;
10143}
10144
c1fc2657 10145/* Watchpoint destructor. */
3a5c3e22 10146
c1fc2657 10147watchpoint::~watchpoint ()
3a5c3e22 10148{
c1fc2657
SM
10149 xfree (this->exp_string);
10150 xfree (this->exp_string_reparse);
10151 value_free (this->val);
3a5c3e22
PA
10152}
10153
348d480f
PA
10154/* Implement the "re_set" breakpoint_ops method for watchpoints. */
10155
10156static void
10157re_set_watchpoint (struct breakpoint *b)
10158{
3a5c3e22
PA
10159 struct watchpoint *w = (struct watchpoint *) b;
10160
348d480f
PA
10161 /* Watchpoint can be either on expression using entirely global
10162 variables, or it can be on local variables.
10163
10164 Watchpoints of the first kind are never auto-deleted, and even
10165 persist across program restarts. Since they can use variables
10166 from shared libraries, we need to reparse expression as libraries
10167 are loaded and unloaded.
10168
10169 Watchpoints on local variables can also change meaning as result
10170 of solib event. For example, if a watchpoint uses both a local
10171 and a global variables in expression, it's a local watchpoint,
10172 but unloading of a shared library will make the expression
10173 invalid. This is not a very common use case, but we still
10174 re-evaluate expression, to avoid surprises to the user.
10175
10176 Note that for local watchpoints, we re-evaluate it only if
10177 watchpoints frame id is still valid. If it's not, it means the
10178 watchpoint is out of scope and will be deleted soon. In fact,
10179 I'm not sure we'll ever be called in this case.
10180
10181 If a local watchpoint's frame id is still valid, then
3a5c3e22 10182 w->exp_valid_block is likewise valid, and we can safely use it.
348d480f 10183
3a5c3e22
PA
10184 Don't do anything about disabled watchpoints, since they will be
10185 reevaluated again when enabled. */
10186 update_watchpoint (w, 1 /* reparse */);
348d480f
PA
10187}
10188
77b06cd7
TJB
10189/* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10190
10191static int
10192insert_watchpoint (struct bp_location *bl)
10193{
3a5c3e22
PA
10194 struct watchpoint *w = (struct watchpoint *) bl->owner;
10195 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10196
10197 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10198 w->cond_exp.get ());
77b06cd7
TJB
10199}
10200
10201/* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10202
10203static int
73971819 10204remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
77b06cd7 10205{
3a5c3e22
PA
10206 struct watchpoint *w = (struct watchpoint *) bl->owner;
10207 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10208
10209 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10210 w->cond_exp.get ());
e09342b5
TJB
10211}
10212
e09342b5 10213static int
348d480f 10214breakpoint_hit_watchpoint (const struct bp_location *bl,
bd522513 10215 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 10216 const struct target_waitstatus *ws)
e09342b5 10217{
348d480f 10218 struct breakpoint *b = bl->owner;
3a5c3e22 10219 struct watchpoint *w = (struct watchpoint *) b;
77b06cd7 10220
348d480f
PA
10221 /* Continuable hardware watchpoints are treated as non-existent if the
10222 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10223 some data address). Otherwise gdb won't stop on a break instruction
10224 in the code (not from a breakpoint) when a hardware watchpoint has
10225 been defined. Also skip watchpoints which we know did not trigger
10226 (did not match the data address). */
10227 if (is_hardware_watchpoint (b)
3a5c3e22 10228 && w->watchpoint_triggered == watch_triggered_no)
348d480f 10229 return 0;
9c06b0b4 10230
348d480f 10231 return 1;
9c06b0b4
TJB
10232}
10233
348d480f
PA
10234static void
10235check_status_watchpoint (bpstat bs)
9c06b0b4 10236{
348d480f 10237 gdb_assert (is_watchpoint (bs->breakpoint_at));
9c06b0b4 10238
348d480f 10239 bpstat_check_watchpoint (bs);
9c06b0b4
TJB
10240}
10241
10242/* Implement the "resources_needed" breakpoint_ops method for
348d480f 10243 hardware watchpoints. */
9c06b0b4
TJB
10244
10245static int
348d480f 10246resources_needed_watchpoint (const struct bp_location *bl)
9c06b0b4 10247{
3a5c3e22
PA
10248 struct watchpoint *w = (struct watchpoint *) bl->owner;
10249 int length = w->exact? 1 : bl->length;
348d480f
PA
10250
10251 return target_region_ok_for_hw_watchpoint (bl->address, length);
9c06b0b4
TJB
10252}
10253
10254/* Implement the "works_in_software_mode" breakpoint_ops method for
348d480f 10255 hardware watchpoints. */
9c06b0b4
TJB
10256
10257static int
348d480f 10258works_in_software_mode_watchpoint (const struct breakpoint *b)
9c06b0b4 10259{
efa80663
PA
10260 /* Read and access watchpoints only work with hardware support. */
10261 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9c06b0b4
TJB
10262}
10263
9c06b0b4 10264static enum print_stop_action
348d480f 10265print_it_watchpoint (bpstat bs)
9c06b0b4 10266{
348d480f 10267 struct breakpoint *b;
348d480f 10268 enum print_stop_action result;
3a5c3e22 10269 struct watchpoint *w;
79a45e25 10270 struct ui_out *uiout = current_uiout;
348d480f
PA
10271
10272 gdb_assert (bs->bp_location_at != NULL);
10273
348d480f 10274 b = bs->breakpoint_at;
3a5c3e22 10275 w = (struct watchpoint *) b;
348d480f 10276
f303dbd6
PA
10277 annotate_watchpoint (b->number);
10278 maybe_print_thread_hit_breakpoint (uiout);
10279
d7e74731
PA
10280 string_file stb;
10281
76f9c9cf 10282 gdb::optional<ui_out_emit_tuple> tuple_emitter;
9c06b0b4
TJB
10283 switch (b->type)
10284 {
348d480f 10285 case bp_watchpoint:
9c06b0b4 10286 case bp_hardware_watchpoint:
112e8700
SM
10287 if (uiout->is_mi_like_p ())
10288 uiout->field_string
10289 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f 10290 mention (b);
76f9c9cf 10291 tuple_emitter.emplace (uiout, "value");
112e8700 10292 uiout->text ("\nOld value = ");
d7e74731 10293 watchpoint_value_print (bs->old_val, &stb);
112e8700
SM
10294 uiout->field_stream ("old", stb);
10295 uiout->text ("\nNew value = ");
d7e74731 10296 watchpoint_value_print (w->val, &stb);
112e8700
SM
10297 uiout->field_stream ("new", stb);
10298 uiout->text ("\n");
348d480f
PA
10299 /* More than one watchpoint may have been triggered. */
10300 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10301 break;
10302
10303 case bp_read_watchpoint:
112e8700
SM
10304 if (uiout->is_mi_like_p ())
10305 uiout->field_string
10306 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f 10307 mention (b);
76f9c9cf 10308 tuple_emitter.emplace (uiout, "value");
112e8700 10309 uiout->text ("\nValue = ");
d7e74731 10310 watchpoint_value_print (w->val, &stb);
112e8700
SM
10311 uiout->field_stream ("value", stb);
10312 uiout->text ("\n");
348d480f 10313 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10314 break;
10315
10316 case bp_access_watchpoint:
348d480f
PA
10317 if (bs->old_val != NULL)
10318 {
112e8700
SM
10319 if (uiout->is_mi_like_p ())
10320 uiout->field_string
10321 ("reason",
348d480f
PA
10322 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10323 mention (b);
76f9c9cf 10324 tuple_emitter.emplace (uiout, "value");
112e8700 10325 uiout->text ("\nOld value = ");
d7e74731 10326 watchpoint_value_print (bs->old_val, &stb);
112e8700
SM
10327 uiout->field_stream ("old", stb);
10328 uiout->text ("\nNew value = ");
348d480f
PA
10329 }
10330 else
10331 {
10332 mention (b);
112e8700
SM
10333 if (uiout->is_mi_like_p ())
10334 uiout->field_string
10335 ("reason",
348d480f 10336 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
76f9c9cf 10337 tuple_emitter.emplace (uiout, "value");
112e8700 10338 uiout->text ("\nValue = ");
348d480f 10339 }
d7e74731 10340 watchpoint_value_print (w->val, &stb);
112e8700
SM
10341 uiout->field_stream ("new", stb);
10342 uiout->text ("\n");
348d480f 10343 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10344 break;
10345 default:
348d480f 10346 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10347 }
10348
348d480f
PA
10349 return result;
10350}
10351
10352/* Implement the "print_mention" breakpoint_ops method for hardware
10353 watchpoints. */
10354
10355static void
10356print_mention_watchpoint (struct breakpoint *b)
10357{
3a5c3e22 10358 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10359 struct ui_out *uiout = current_uiout;
46b9c129 10360 const char *tuple_name;
348d480f
PA
10361
10362 switch (b->type)
10363 {
10364 case bp_watchpoint:
112e8700 10365 uiout->text ("Watchpoint ");
46b9c129 10366 tuple_name = "wpt";
348d480f
PA
10367 break;
10368 case bp_hardware_watchpoint:
112e8700 10369 uiout->text ("Hardware watchpoint ");
46b9c129 10370 tuple_name = "wpt";
348d480f
PA
10371 break;
10372 case bp_read_watchpoint:
112e8700 10373 uiout->text ("Hardware read watchpoint ");
46b9c129 10374 tuple_name = "hw-rwpt";
348d480f
PA
10375 break;
10376 case bp_access_watchpoint:
112e8700 10377 uiout->text ("Hardware access (read/write) watchpoint ");
46b9c129 10378 tuple_name = "hw-awpt";
348d480f
PA
10379 break;
10380 default:
10381 internal_error (__FILE__, __LINE__,
10382 _("Invalid hardware watchpoint type."));
10383 }
10384
46b9c129 10385 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10386 uiout->field_int ("number", b->number);
10387 uiout->text (": ");
10388 uiout->field_string ("exp", w->exp_string);
348d480f
PA
10389}
10390
10391/* Implement the "print_recreate" breakpoint_ops method for
10392 watchpoints. */
10393
10394static void
10395print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10396{
3a5c3e22
PA
10397 struct watchpoint *w = (struct watchpoint *) b;
10398
348d480f
PA
10399 switch (b->type)
10400 {
10401 case bp_watchpoint:
10402 case bp_hardware_watchpoint:
10403 fprintf_unfiltered (fp, "watch");
10404 break;
10405 case bp_read_watchpoint:
10406 fprintf_unfiltered (fp, "rwatch");
10407 break;
10408 case bp_access_watchpoint:
10409 fprintf_unfiltered (fp, "awatch");
10410 break;
10411 default:
10412 internal_error (__FILE__, __LINE__,
10413 _("Invalid watchpoint type."));
10414 }
10415
3a5c3e22 10416 fprintf_unfiltered (fp, " %s", w->exp_string);
d9b3f62e 10417 print_recreate_thread (b, fp);
348d480f
PA
10418}
10419
427cd150
TT
10420/* Implement the "explains_signal" breakpoint_ops method for
10421 watchpoints. */
10422
47591c29 10423static int
427cd150
TT
10424explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10425{
10426 /* A software watchpoint cannot cause a signal other than
10427 GDB_SIGNAL_TRAP. */
10428 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
47591c29 10429 return 0;
427cd150 10430
47591c29 10431 return 1;
427cd150
TT
10432}
10433
348d480f
PA
10434/* The breakpoint_ops structure to be used in hardware watchpoints. */
10435
2060206e 10436static struct breakpoint_ops watchpoint_breakpoint_ops;
348d480f
PA
10437
10438/* Implement the "insert" breakpoint_ops method for
10439 masked hardware watchpoints. */
10440
10441static int
10442insert_masked_watchpoint (struct bp_location *bl)
10443{
3a5c3e22
PA
10444 struct watchpoint *w = (struct watchpoint *) bl->owner;
10445
10446 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10447 bl->watchpoint_type);
10448}
10449
10450/* Implement the "remove" breakpoint_ops method for
10451 masked hardware watchpoints. */
10452
10453static int
73971819 10454remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
348d480f 10455{
3a5c3e22
PA
10456 struct watchpoint *w = (struct watchpoint *) bl->owner;
10457
10458 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10459 bl->watchpoint_type);
10460}
10461
10462/* Implement the "resources_needed" breakpoint_ops method for
10463 masked hardware watchpoints. */
10464
10465static int
10466resources_needed_masked_watchpoint (const struct bp_location *bl)
10467{
3a5c3e22
PA
10468 struct watchpoint *w = (struct watchpoint *) bl->owner;
10469
10470 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
348d480f
PA
10471}
10472
10473/* Implement the "works_in_software_mode" breakpoint_ops method for
10474 masked hardware watchpoints. */
10475
10476static int
10477works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10478{
10479 return 0;
10480}
10481
10482/* Implement the "print_it" breakpoint_ops method for
10483 masked hardware watchpoints. */
10484
10485static enum print_stop_action
10486print_it_masked_watchpoint (bpstat bs)
10487{
10488 struct breakpoint *b = bs->breakpoint_at;
79a45e25 10489 struct ui_out *uiout = current_uiout;
348d480f
PA
10490
10491 /* Masked watchpoints have only one location. */
10492 gdb_assert (b->loc && b->loc->next == NULL);
10493
f303dbd6
PA
10494 annotate_watchpoint (b->number);
10495 maybe_print_thread_hit_breakpoint (uiout);
10496
348d480f
PA
10497 switch (b->type)
10498 {
10499 case bp_hardware_watchpoint:
112e8700
SM
10500 if (uiout->is_mi_like_p ())
10501 uiout->field_string
10502 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f
PA
10503 break;
10504
10505 case bp_read_watchpoint:
112e8700
SM
10506 if (uiout->is_mi_like_p ())
10507 uiout->field_string
10508 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f
PA
10509 break;
10510
10511 case bp_access_watchpoint:
112e8700
SM
10512 if (uiout->is_mi_like_p ())
10513 uiout->field_string
10514 ("reason",
348d480f
PA
10515 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10516 break;
10517 default:
10518 internal_error (__FILE__, __LINE__,
10519 _("Invalid hardware watchpoint type."));
10520 }
10521
10522 mention (b);
112e8700 10523 uiout->text (_("\n\
9c06b0b4
TJB
10524Check the underlying instruction at PC for the memory\n\
10525address and value which triggered this watchpoint.\n"));
112e8700 10526 uiout->text ("\n");
9c06b0b4
TJB
10527
10528 /* More than one watchpoint may have been triggered. */
10529 return PRINT_UNKNOWN;
10530}
10531
10532/* Implement the "print_one_detail" breakpoint_ops method for
10533 masked hardware watchpoints. */
10534
10535static void
10536print_one_detail_masked_watchpoint (const struct breakpoint *b,
10537 struct ui_out *uiout)
10538{
3a5c3e22
PA
10539 struct watchpoint *w = (struct watchpoint *) b;
10540
9c06b0b4
TJB
10541 /* Masked watchpoints have only one location. */
10542 gdb_assert (b->loc && b->loc->next == NULL);
10543
112e8700
SM
10544 uiout->text ("\tmask ");
10545 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10546 uiout->text ("\n");
9c06b0b4
TJB
10547}
10548
10549/* Implement the "print_mention" breakpoint_ops method for
10550 masked hardware watchpoints. */
10551
10552static void
10553print_mention_masked_watchpoint (struct breakpoint *b)
10554{
3a5c3e22 10555 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10556 struct ui_out *uiout = current_uiout;
46b9c129 10557 const char *tuple_name;
9c06b0b4
TJB
10558
10559 switch (b->type)
10560 {
10561 case bp_hardware_watchpoint:
112e8700 10562 uiout->text ("Masked hardware watchpoint ");
46b9c129 10563 tuple_name = "wpt";
9c06b0b4
TJB
10564 break;
10565 case bp_read_watchpoint:
112e8700 10566 uiout->text ("Masked hardware read watchpoint ");
46b9c129 10567 tuple_name = "hw-rwpt";
9c06b0b4
TJB
10568 break;
10569 case bp_access_watchpoint:
112e8700 10570 uiout->text ("Masked hardware access (read/write) watchpoint ");
46b9c129 10571 tuple_name = "hw-awpt";
9c06b0b4
TJB
10572 break;
10573 default:
10574 internal_error (__FILE__, __LINE__,
10575 _("Invalid hardware watchpoint type."));
10576 }
10577
46b9c129 10578 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10579 uiout->field_int ("number", b->number);
10580 uiout->text (": ");
10581 uiout->field_string ("exp", w->exp_string);
9c06b0b4
TJB
10582}
10583
10584/* Implement the "print_recreate" breakpoint_ops method for
10585 masked hardware watchpoints. */
10586
10587static void
10588print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10589{
3a5c3e22 10590 struct watchpoint *w = (struct watchpoint *) b;
9c06b0b4
TJB
10591 char tmp[40];
10592
10593 switch (b->type)
10594 {
10595 case bp_hardware_watchpoint:
10596 fprintf_unfiltered (fp, "watch");
10597 break;
10598 case bp_read_watchpoint:
10599 fprintf_unfiltered (fp, "rwatch");
10600 break;
10601 case bp_access_watchpoint:
10602 fprintf_unfiltered (fp, "awatch");
10603 break;
10604 default:
10605 internal_error (__FILE__, __LINE__,
10606 _("Invalid hardware watchpoint type."));
10607 }
10608
3a5c3e22
PA
10609 sprintf_vma (tmp, w->hw_wp_mask);
10610 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
d9b3f62e 10611 print_recreate_thread (b, fp);
9c06b0b4
TJB
10612}
10613
10614/* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10615
2060206e 10616static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
9c06b0b4
TJB
10617
10618/* Tell whether the given watchpoint is a masked hardware watchpoint. */
10619
10620static int
10621is_masked_watchpoint (const struct breakpoint *b)
10622{
10623 return b->ops == &masked_watchpoint_breakpoint_ops;
10624}
10625
53a5351d
JM
10626/* accessflag: hw_write: watch write,
10627 hw_read: watch read,
10628 hw_access: watch access (read or write) */
c906108c 10629static void
bbc13ae3 10630watch_command_1 (const char *arg, int accessflag, int from_tty,
84f4c1fe 10631 int just_location, int internal)
c906108c 10632{
c1fc2657 10633 struct breakpoint *scope_breakpoint = NULL;
270140bd 10634 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
a1442452 10635 struct value *val, *mark, *result;
bb9d5f81 10636 int saved_bitpos = 0, saved_bitsize = 0;
bbc13ae3
KS
10637 const char *exp_start = NULL;
10638 const char *exp_end = NULL;
10639 const char *tok, *end_tok;
9c06b0b4 10640 int toklen = -1;
bbc13ae3
KS
10641 const char *cond_start = NULL;
10642 const char *cond_end = NULL;
c906108c 10643 enum bptype bp_type;
37e4754d 10644 int thread = -1;
0cf6dd15 10645 int pc = 0;
9c06b0b4
TJB
10646 /* Flag to indicate whether we are going to use masks for
10647 the hardware watchpoint. */
10648 int use_mask = 0;
10649 CORE_ADDR mask = 0;
c906108c 10650
37e4754d
LM
10651 /* Make sure that we actually have parameters to parse. */
10652 if (arg != NULL && arg[0] != '\0')
10653 {
bbc13ae3
KS
10654 const char *value_start;
10655
10656 exp_end = arg + strlen (arg);
37e4754d 10657
9c06b0b4
TJB
10658 /* Look for "parameter value" pairs at the end
10659 of the arguments string. */
bbc13ae3 10660 for (tok = exp_end - 1; tok > arg; tok--)
9c06b0b4
TJB
10661 {
10662 /* Skip whitespace at the end of the argument list. */
10663 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10664 tok--;
10665
10666 /* Find the beginning of the last token.
10667 This is the value of the parameter. */
10668 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10669 tok--;
10670 value_start = tok + 1;
10671
10672 /* Skip whitespace. */
10673 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10674 tok--;
10675
10676 end_tok = tok;
10677
10678 /* Find the beginning of the second to last token.
10679 This is the parameter itself. */
10680 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10681 tok--;
10682 tok++;
10683 toklen = end_tok - tok + 1;
10684
61012eef 10685 if (toklen == 6 && startswith (tok, "thread"))
9c06b0b4 10686 {
5d5658a1 10687 struct thread_info *thr;
9c06b0b4
TJB
10688 /* At this point we've found a "thread" token, which means
10689 the user is trying to set a watchpoint that triggers
10690 only in a specific thread. */
5d5658a1 10691 const char *endp;
37e4754d 10692
9c06b0b4
TJB
10693 if (thread != -1)
10694 error(_("You can specify only one thread."));
37e4754d 10695
9c06b0b4 10696 /* Extract the thread ID from the next token. */
5d5658a1 10697 thr = parse_thread_id (value_start, &endp);
37e4754d 10698
5d5658a1 10699 /* Check if the user provided a valid thread ID. */
9c06b0b4 10700 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
5d5658a1 10701 invalid_thread_id_error (value_start);
9c06b0b4 10702
5d5658a1 10703 thread = thr->global_num;
9c06b0b4 10704 }
61012eef 10705 else if (toklen == 4 && startswith (tok, "mask"))
9c06b0b4
TJB
10706 {
10707 /* We've found a "mask" token, which means the user wants to
10708 create a hardware watchpoint that is going to have the mask
10709 facility. */
10710 struct value *mask_value, *mark;
37e4754d 10711
9c06b0b4
TJB
10712 if (use_mask)
10713 error(_("You can specify only one mask."));
37e4754d 10714
9c06b0b4 10715 use_mask = just_location = 1;
37e4754d 10716
9c06b0b4
TJB
10717 mark = value_mark ();
10718 mask_value = parse_to_comma_and_eval (&value_start);
10719 mask = value_as_address (mask_value);
10720 value_free_to_mark (mark);
10721 }
10722 else
10723 /* We didn't recognize what we found. We should stop here. */
10724 break;
37e4754d 10725
9c06b0b4
TJB
10726 /* Truncate the string and get rid of the "parameter value" pair before
10727 the arguments string is parsed by the parse_exp_1 function. */
bbc13ae3 10728 exp_end = tok;
9c06b0b4 10729 }
37e4754d 10730 }
bbc13ae3
KS
10731 else
10732 exp_end = arg;
37e4754d 10733
bbc13ae3
KS
10734 /* Parse the rest of the arguments. From here on out, everything
10735 is in terms of a newly allocated string instead of the original
10736 ARG. */
c906108c 10737 innermost_block = NULL;
81b1e71c
TT
10738 std::string expression (arg, exp_end - arg);
10739 exp_start = arg = expression.c_str ();
4d01a485 10740 expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
c906108c 10741 exp_end = arg;
fa8a61dc
TT
10742 /* Remove trailing whitespace from the expression before saving it.
10743 This makes the eventual display of the expression string a bit
10744 prettier. */
10745 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10746 --exp_end;
10747
65d79d4b 10748 /* Checking if the expression is not constant. */
4d01a485 10749 if (watchpoint_exp_is_const (exp.get ()))
65d79d4b
SDJ
10750 {
10751 int len;
10752
10753 len = exp_end - exp_start;
10754 while (len > 0 && isspace (exp_start[len - 1]))
10755 len--;
10756 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10757 }
10758
c906108c
SS
10759 exp_valid_block = innermost_block;
10760 mark = value_mark ();
4d01a485 10761 fetch_subexp_value (exp.get (), &pc, &val, &result, NULL, just_location);
06a64a0b 10762
bb9d5f81
PP
10763 if (val != NULL && just_location)
10764 {
10765 saved_bitpos = value_bitpos (val);
10766 saved_bitsize = value_bitsize (val);
10767 }
10768
06a64a0b
TT
10769 if (just_location)
10770 {
9c06b0b4
TJB
10771 int ret;
10772
06a64a0b 10773 exp_valid_block = NULL;
a1442452 10774 val = value_addr (result);
06a64a0b
TT
10775 release_value (val);
10776 value_free_to_mark (mark);
9c06b0b4
TJB
10777
10778 if (use_mask)
10779 {
10780 ret = target_masked_watch_num_registers (value_as_address (val),
10781 mask);
10782 if (ret == -1)
10783 error (_("This target does not support masked watchpoints."));
10784 else if (ret == -2)
10785 error (_("Invalid mask or memory region."));
10786 }
06a64a0b
TT
10787 }
10788 else if (val != NULL)
fa4727a6 10789 release_value (val);
c906108c 10790
f1735a53
TT
10791 tok = skip_spaces (arg);
10792 end_tok = skip_to_space (tok);
c906108c
SS
10793
10794 toklen = end_tok - tok;
10795 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10796 {
60e1c644 10797 innermost_block = NULL;
c906108c 10798 tok = cond_start = end_tok + 1;
4d01a485 10799 parse_exp_1 (&tok, 0, 0, 0);
60e1c644
PA
10800
10801 /* The watchpoint expression may not be local, but the condition
10802 may still be. E.g.: `watch global if local > 0'. */
10803 cond_exp_valid_block = innermost_block;
10804
c906108c
SS
10805 cond_end = tok;
10806 }
10807 if (*tok)
8a3fe4f8 10808 error (_("Junk at end of command."));
c906108c 10809
441d7c93
PA
10810 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10811
10812 /* Save this because create_internal_breakpoint below invalidates
10813 'wp_frame'. */
10814 frame_id watchpoint_frame = get_frame_id (wp_frame);
d983da9c
DJ
10815
10816 /* If the expression is "local", then set up a "watchpoint scope"
10817 breakpoint at the point where we've left the scope of the watchpoint
10818 expression. Create the scope breakpoint before the watchpoint, so
10819 that we will encounter it first in bpstat_stop_status. */
441d7c93 10820 if (exp_valid_block != NULL && wp_frame != NULL)
d983da9c 10821 {
441d7c93
PA
10822 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10823
10824 if (frame_id_p (caller_frame_id))
edb3359d 10825 {
441d7c93
PA
10826 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10827 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10828
edb3359d 10829 scope_breakpoint
441d7c93 10830 = create_internal_breakpoint (caller_arch, caller_pc,
06edf0c0
PA
10831 bp_watchpoint_scope,
10832 &momentary_breakpoint_ops);
d983da9c 10833
441d7c93
PA
10834 /* create_internal_breakpoint could invalidate WP_FRAME. */
10835 wp_frame = NULL;
10836
edb3359d 10837 scope_breakpoint->enable_state = bp_enabled;
d983da9c 10838
edb3359d
DJ
10839 /* Automatically delete the breakpoint when it hits. */
10840 scope_breakpoint->disposition = disp_del;
d983da9c 10841
edb3359d 10842 /* Only break in the proper frame (help with recursion). */
441d7c93 10843 scope_breakpoint->frame_id = caller_frame_id;
d983da9c 10844
edb3359d 10845 /* Set the address at which we will stop. */
441d7c93
PA
10846 scope_breakpoint->loc->gdbarch = caller_arch;
10847 scope_breakpoint->loc->requested_address = caller_pc;
edb3359d 10848 scope_breakpoint->loc->address
a6d9a66e
UW
10849 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10850 scope_breakpoint->loc->requested_address,
edb3359d
DJ
10851 scope_breakpoint->type);
10852 }
d983da9c
DJ
10853 }
10854
e8369a73
AB
10855 /* Now set up the breakpoint. We create all watchpoints as hardware
10856 watchpoints here even if hardware watchpoints are turned off, a call
10857 to update_watchpoint later in this function will cause the type to
10858 drop back to bp_watchpoint (software watchpoint) if required. */
10859
10860 if (accessflag == hw_read)
10861 bp_type = bp_read_watchpoint;
10862 else if (accessflag == hw_access)
10863 bp_type = bp_access_watchpoint;
10864 else
10865 bp_type = bp_hardware_watchpoint;
3a5c3e22 10866
b270e6f9 10867 std::unique_ptr<watchpoint> w (new watchpoint ());
c1fc2657 10868
348d480f 10869 if (use_mask)
b270e6f9 10870 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 10871 &masked_watchpoint_breakpoint_ops);
348d480f 10872 else
b270e6f9 10873 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 10874 &watchpoint_breakpoint_ops);
c1fc2657
SM
10875 w->thread = thread;
10876 w->disposition = disp_donttouch;
10877 w->pspace = current_program_space;
b22e99fd 10878 w->exp = std::move (exp);
3a5c3e22
PA
10879 w->exp_valid_block = exp_valid_block;
10880 w->cond_exp_valid_block = cond_exp_valid_block;
06a64a0b
TT
10881 if (just_location)
10882 {
10883 struct type *t = value_type (val);
10884 CORE_ADDR addr = value_as_address (val);
06a64a0b 10885
43cc5389
TT
10886 w->exp_string_reparse
10887 = current_language->la_watch_location_expression (t, addr).release ();
06a64a0b 10888
3a5c3e22 10889 w->exp_string = xstrprintf ("-location %.*s",
d63d0675 10890 (int) (exp_end - exp_start), exp_start);
06a64a0b
TT
10891 }
10892 else
3a5c3e22 10893 w->exp_string = savestring (exp_start, exp_end - exp_start);
9c06b0b4
TJB
10894
10895 if (use_mask)
10896 {
3a5c3e22 10897 w->hw_wp_mask = mask;
9c06b0b4
TJB
10898 }
10899 else
10900 {
3a5c3e22 10901 w->val = val;
bb9d5f81
PP
10902 w->val_bitpos = saved_bitpos;
10903 w->val_bitsize = saved_bitsize;
3a5c3e22 10904 w->val_valid = 1;
9c06b0b4 10905 }
77b06cd7 10906
c906108c 10907 if (cond_start)
c1fc2657 10908 w->cond_string = savestring (cond_start, cond_end - cond_start);
c906108c 10909 else
c1fc2657 10910 w->cond_string = 0;
c5aa993b 10911
441d7c93 10912 if (frame_id_p (watchpoint_frame))
f6bc2008 10913 {
441d7c93 10914 w->watchpoint_frame = watchpoint_frame;
3a5c3e22 10915 w->watchpoint_thread = inferior_ptid;
f6bc2008 10916 }
c906108c 10917 else
f6bc2008 10918 {
3a5c3e22
PA
10919 w->watchpoint_frame = null_frame_id;
10920 w->watchpoint_thread = null_ptid;
f6bc2008 10921 }
c906108c 10922
d983da9c 10923 if (scope_breakpoint != NULL)
c906108c 10924 {
d983da9c
DJ
10925 /* The scope breakpoint is related to the watchpoint. We will
10926 need to act on them together. */
c1fc2657 10927 w->related_breakpoint = scope_breakpoint;
b270e6f9 10928 scope_breakpoint->related_breakpoint = w.get ();
c906108c 10929 }
d983da9c 10930
06a64a0b
TT
10931 if (!just_location)
10932 value_free_to_mark (mark);
2d134ed3 10933
b270e6f9
TT
10934 /* Finally update the new watchpoint. This creates the locations
10935 that should be inserted. */
10936 update_watchpoint (w.get (), 1);
a9634178 10937
b270e6f9 10938 install_breakpoint (internal, std::move (w), 1);
c906108c
SS
10939}
10940
e09342b5 10941/* Return count of debug registers needed to watch the given expression.
e09342b5 10942 If the watchpoint cannot be handled in hardware return zero. */
c906108c 10943
c906108c 10944static int
a9634178 10945can_use_hardware_watchpoint (struct value *v)
c906108c
SS
10946{
10947 int found_memory_cnt = 0;
2e70b7b9 10948 struct value *head = v;
c906108c
SS
10949
10950 /* Did the user specifically forbid us to use hardware watchpoints? */
c5aa993b 10951 if (!can_use_hw_watchpoints)
c906108c 10952 return 0;
c5aa993b 10953
5c44784c
JM
10954 /* Make sure that the value of the expression depends only upon
10955 memory contents, and values computed from them within GDB. If we
10956 find any register references or function calls, we can't use a
10957 hardware watchpoint.
10958
10959 The idea here is that evaluating an expression generates a series
10960 of values, one holding the value of every subexpression. (The
10961 expression a*b+c has five subexpressions: a, b, a*b, c, and
10962 a*b+c.) GDB's values hold almost enough information to establish
10963 the criteria given above --- they identify memory lvalues,
10964 register lvalues, computed values, etcetera. So we can evaluate
10965 the expression, and then scan the chain of values that leaves
10966 behind to decide whether we can detect any possible change to the
10967 expression's final value using only hardware watchpoints.
10968
10969 However, I don't think that the values returned by inferior
10970 function calls are special in any way. So this function may not
10971 notice that an expression involving an inferior function call
10972 can't be watched with hardware watchpoints. FIXME. */
17cf0ecd 10973 for (; v; v = value_next (v))
c906108c 10974 {
5c44784c 10975 if (VALUE_LVAL (v) == lval_memory)
c906108c 10976 {
8464be76
DJ
10977 if (v != head && value_lazy (v))
10978 /* A lazy memory lvalue in the chain is one that GDB never
10979 needed to fetch; we either just used its address (e.g.,
10980 `a' in `a.b') or we never needed it at all (e.g., `a'
10981 in `a,b'). This doesn't apply to HEAD; if that is
10982 lazy then it was not readable, but watch it anyway. */
5c44784c 10983 ;
53a5351d 10984 else
5c44784c
JM
10985 {
10986 /* Ahh, memory we actually used! Check if we can cover
10987 it with hardware watchpoints. */
df407dfe 10988 struct type *vtype = check_typedef (value_type (v));
2e70b7b9
MS
10989
10990 /* We only watch structs and arrays if user asked for it
10991 explicitly, never if they just happen to appear in a
10992 middle of some value chain. */
10993 if (v == head
10994 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10995 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10996 {
42ae5230 10997 CORE_ADDR vaddr = value_address (v);
e09342b5
TJB
10998 int len;
10999 int num_regs;
11000
a9634178 11001 len = (target_exact_watchpoints
e09342b5
TJB
11002 && is_scalar_type_recursive (vtype))?
11003 1 : TYPE_LENGTH (value_type (v));
2e70b7b9 11004
e09342b5
TJB
11005 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11006 if (!num_regs)
2e70b7b9
MS
11007 return 0;
11008 else
e09342b5 11009 found_memory_cnt += num_regs;
2e70b7b9 11010 }
5c44784c 11011 }
c5aa993b 11012 }
5086187c
AC
11013 else if (VALUE_LVAL (v) != not_lval
11014 && deprecated_value_modifiable (v) == 0)
38b6c3b3 11015 return 0; /* These are values from the history (e.g., $1). */
5086187c 11016 else if (VALUE_LVAL (v) == lval_register)
38b6c3b3 11017 return 0; /* Cannot watch a register with a HW watchpoint. */
c906108c
SS
11018 }
11019
11020 /* The expression itself looks suitable for using a hardware
11021 watchpoint, but give the target machine a chance to reject it. */
11022 return found_memory_cnt;
11023}
11024
8b93c638 11025void
f2fc3015 11026watch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 11027{
84f4c1fe 11028 watch_command_1 (arg, hw_write, from_tty, 0, internal);
06a64a0b
TT
11029}
11030
06a64a0b
TT
11031/* A helper function that looks for the "-location" argument and then
11032 calls watch_command_1. */
11033
11034static void
0b39b52e 11035watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
06a64a0b
TT
11036{
11037 int just_location = 0;
11038
11039 if (arg
11040 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11041 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11042 {
e9cafbcc 11043 arg = skip_spaces (arg);
06a64a0b
TT
11044 just_location = 1;
11045 }
11046
84f4c1fe 11047 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
8b93c638 11048}
8926118c 11049
c5aa993b 11050static void
0b39b52e 11051watch_command (const char *arg, int from_tty)
c906108c 11052{
06a64a0b 11053 watch_maybe_just_location (arg, hw_write, from_tty);
c906108c
SS
11054}
11055
8b93c638 11056void
f2fc3015 11057rwatch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 11058{
84f4c1fe 11059 watch_command_1 (arg, hw_read, from_tty, 0, internal);
8b93c638 11060}
8926118c 11061
c5aa993b 11062static void
0b39b52e 11063rwatch_command (const char *arg, int from_tty)
c906108c 11064{
06a64a0b 11065 watch_maybe_just_location (arg, hw_read, from_tty);
c906108c
SS
11066}
11067
8b93c638 11068void
f2fc3015 11069awatch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 11070{
84f4c1fe 11071 watch_command_1 (arg, hw_access, from_tty, 0, internal);
8b93c638 11072}
8926118c 11073
c5aa993b 11074static void
0b39b52e 11075awatch_command (const char *arg, int from_tty)
c906108c 11076{
06a64a0b 11077 watch_maybe_just_location (arg, hw_access, from_tty);
c906108c 11078}
c906108c 11079\f
c5aa993b 11080
cfc31633
PA
11081/* Data for the FSM that manages the until(location)/advance commands
11082 in infcmd.c. Here because it uses the mechanisms of
11083 breakpoints. */
c906108c 11084
cfc31633 11085struct until_break_fsm
bfec99b2 11086{
cfc31633
PA
11087 /* The base class. */
11088 struct thread_fsm thread_fsm;
11089
11090 /* The thread that as current when the command was executed. */
11091 int thread;
11092
11093 /* The breakpoint set at the destination location. */
11094 struct breakpoint *location_breakpoint;
11095
11096 /* Breakpoint set at the return address in the caller frame. May be
11097 NULL. */
11098 struct breakpoint *caller_breakpoint;
bfec99b2
PA
11099};
11100
8980e177
PA
11101static void until_break_fsm_clean_up (struct thread_fsm *self,
11102 struct thread_info *thread);
11103static int until_break_fsm_should_stop (struct thread_fsm *self,
11104 struct thread_info *thread);
cfc31633
PA
11105static enum async_reply_reason
11106 until_break_fsm_async_reply_reason (struct thread_fsm *self);
11107
11108/* until_break_fsm's vtable. */
11109
11110static struct thread_fsm_ops until_break_fsm_ops =
11111{
11112 NULL, /* dtor */
11113 until_break_fsm_clean_up,
11114 until_break_fsm_should_stop,
11115 NULL, /* return_value */
11116 until_break_fsm_async_reply_reason,
11117};
11118
11119/* Allocate a new until_break_command_fsm. */
11120
11121static struct until_break_fsm *
8980e177 11122new_until_break_fsm (struct interp *cmd_interp, int thread,
454dafbd
TT
11123 breakpoint_up &&location_breakpoint,
11124 breakpoint_up &&caller_breakpoint)
cfc31633
PA
11125{
11126 struct until_break_fsm *sm;
11127
11128 sm = XCNEW (struct until_break_fsm);
8980e177 11129 thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
cfc31633
PA
11130
11131 sm->thread = thread;
454dafbd
TT
11132 sm->location_breakpoint = location_breakpoint.release ();
11133 sm->caller_breakpoint = caller_breakpoint.release ();
cfc31633
PA
11134
11135 return sm;
11136}
11137
11138/* Implementation of the 'should_stop' FSM method for the
11139 until(location)/advance commands. */
11140
11141static int
8980e177
PA
11142until_break_fsm_should_stop (struct thread_fsm *self,
11143 struct thread_info *tp)
cfc31633
PA
11144{
11145 struct until_break_fsm *sm = (struct until_break_fsm *) self;
cfc31633
PA
11146
11147 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11148 sm->location_breakpoint) != NULL
11149 || (sm->caller_breakpoint != NULL
11150 && bpstat_find_breakpoint (tp->control.stop_bpstat,
11151 sm->caller_breakpoint) != NULL))
11152 thread_fsm_set_finished (self);
11153
11154 return 1;
11155}
11156
11157/* Implementation of the 'clean_up' FSM method for the
11158 until(location)/advance commands. */
11159
c2c6d25f 11160static void
8980e177
PA
11161until_break_fsm_clean_up (struct thread_fsm *self,
11162 struct thread_info *thread)
43ff13b4 11163{
cfc31633 11164 struct until_break_fsm *sm = (struct until_break_fsm *) self;
bfec99b2 11165
cfc31633
PA
11166 /* Clean up our temporary breakpoints. */
11167 if (sm->location_breakpoint != NULL)
11168 {
11169 delete_breakpoint (sm->location_breakpoint);
11170 sm->location_breakpoint = NULL;
11171 }
11172 if (sm->caller_breakpoint != NULL)
11173 {
11174 delete_breakpoint (sm->caller_breakpoint);
11175 sm->caller_breakpoint = NULL;
11176 }
11177 delete_longjmp_breakpoint (sm->thread);
11178}
11179
11180/* Implementation of the 'async_reply_reason' FSM method for the
11181 until(location)/advance commands. */
11182
11183static enum async_reply_reason
11184until_break_fsm_async_reply_reason (struct thread_fsm *self)
11185{
11186 return EXEC_ASYNC_LOCATION_REACHED;
43ff13b4
JM
11187}
11188
c906108c 11189void
f2fc3015 11190until_break_command (const char *arg, int from_tty, int anywhere)
c906108c 11191{
8556afb4
PA
11192 struct frame_info *frame;
11193 struct gdbarch *frame_gdbarch;
11194 struct frame_id stack_frame_id;
11195 struct frame_id caller_frame_id;
ffc2605c 11196 struct cleanup *old_chain;
186c406b
TT
11197 int thread;
11198 struct thread_info *tp;
cfc31633 11199 struct until_break_fsm *sm;
c906108c 11200
70509625 11201 clear_proceed_status (0);
c906108c
SS
11202
11203 /* Set a breakpoint where the user wants it and at return from
4a64f543 11204 this function. */
c5aa993b 11205
ffc2605c 11206 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f 11207
6c5b2ebe
PA
11208 std::vector<symtab_and_line> sals
11209 = (last_displayed_sal_is_valid ()
11210 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11211 get_last_displayed_symtab (),
11212 get_last_displayed_line ())
11213 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11214 NULL, (struct symtab *) NULL, 0));
c5aa993b 11215
6c5b2ebe 11216 if (sals.size () != 1)
8a3fe4f8 11217 error (_("Couldn't get information on specified line."));
c5aa993b 11218
6c5b2ebe 11219 symtab_and_line &sal = sals[0];
c5aa993b 11220
c906108c 11221 if (*arg)
8a3fe4f8 11222 error (_("Junk at end of arguments."));
c5aa993b 11223
c906108c 11224 resolve_sal_pc (&sal);
c5aa993b 11225
186c406b 11226 tp = inferior_thread ();
5d5658a1 11227 thread = tp->global_num;
186c406b 11228
883bc8d1
PA
11229 old_chain = make_cleanup (null_cleanup, NULL);
11230
8556afb4
PA
11231 /* Note linespec handling above invalidates the frame chain.
11232 Installing a breakpoint also invalidates the frame chain (as it
11233 may need to switch threads), so do any frame handling before
11234 that. */
11235
11236 frame = get_selected_frame (NULL);
11237 frame_gdbarch = get_frame_arch (frame);
11238 stack_frame_id = get_stack_frame_id (frame);
11239 caller_frame_id = frame_unwind_caller_id (frame);
883bc8d1 11240
ae66c1fc
EZ
11241 /* Keep within the current frame, or in frames called by the current
11242 one. */
edb3359d 11243
454dafbd 11244 breakpoint_up caller_breakpoint;
883bc8d1 11245 if (frame_id_p (caller_frame_id))
c906108c 11246 {
883bc8d1 11247 struct symtab_and_line sal2;
cfc31633 11248 struct gdbarch *caller_gdbarch;
883bc8d1
PA
11249
11250 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11251 sal2.pc = frame_unwind_caller_pc (frame);
cfc31633
PA
11252 caller_gdbarch = frame_unwind_caller_arch (frame);
11253 caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11254 sal2,
11255 caller_frame_id,
11256 bp_until);
186c406b 11257
883bc8d1 11258 set_longjmp_breakpoint (tp, caller_frame_id);
186c406b 11259 make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
c906108c 11260 }
c5aa993b 11261
c70a6932
JK
11262 /* set_momentary_breakpoint could invalidate FRAME. */
11263 frame = NULL;
11264
454dafbd 11265 breakpoint_up location_breakpoint;
883bc8d1
PA
11266 if (anywhere)
11267 /* If the user told us to continue until a specified location,
11268 we don't specify a frame at which we need to stop. */
cfc31633
PA
11269 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11270 null_frame_id, bp_until);
883bc8d1
PA
11271 else
11272 /* Otherwise, specify the selected frame, because we want to stop
11273 only at the very same frame. */
cfc31633
PA
11274 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11275 stack_frame_id, bp_until);
883bc8d1 11276
8980e177 11277 sm = new_until_break_fsm (command_interp (), tp->global_num,
454dafbd
TT
11278 std::move (location_breakpoint),
11279 std::move (caller_breakpoint));
cfc31633 11280 tp->thread_fsm = &sm->thread_fsm;
f107f563 11281
cfc31633 11282 discard_cleanups (old_chain);
f107f563 11283
cfc31633 11284 proceed (-1, GDB_SIGNAL_DEFAULT);
c906108c 11285}
ae66c1fc 11286
c906108c
SS
11287/* This function attempts to parse an optional "if <cond>" clause
11288 from the arg string. If one is not found, it returns NULL.
c5aa993b 11289
c906108c
SS
11290 Else, it returns a pointer to the condition string. (It does not
11291 attempt to evaluate the string against a particular block.) And,
11292 it updates arg to point to the first character following the parsed
4a64f543 11293 if clause in the arg string. */
53a5351d 11294
63160a43
PA
11295const char *
11296ep_parse_optional_if_clause (const char **arg)
c906108c 11297{
63160a43 11298 const char *cond_string;
c5aa993b
JM
11299
11300 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
c906108c 11301 return NULL;
c5aa993b 11302
4a64f543 11303 /* Skip the "if" keyword. */
c906108c 11304 (*arg) += 2;
c5aa993b 11305
c906108c 11306 /* Skip any extra leading whitespace, and record the start of the
4a64f543 11307 condition string. */
f1735a53 11308 *arg = skip_spaces (*arg);
c906108c 11309 cond_string = *arg;
c5aa993b 11310
4a64f543
MS
11311 /* Assume that the condition occupies the remainder of the arg
11312 string. */
c906108c 11313 (*arg) += strlen (cond_string);
c5aa993b 11314
c906108c
SS
11315 return cond_string;
11316}
c5aa993b 11317
c906108c
SS
11318/* Commands to deal with catching events, such as signals, exceptions,
11319 process start/exit, etc. */
c5aa993b
JM
11320
11321typedef enum
11322{
44feb3ce
TT
11323 catch_fork_temporary, catch_vfork_temporary,
11324 catch_fork_permanent, catch_vfork_permanent
c5aa993b
JM
11325}
11326catch_fork_kind;
11327
c906108c 11328static void
eb4c3f4a 11329catch_fork_command_1 (const char *arg, int from_tty,
cc59ec59 11330 struct cmd_list_element *command)
c906108c 11331{
a6d9a66e 11332 struct gdbarch *gdbarch = get_current_arch ();
63160a43 11333 const char *cond_string = NULL;
44feb3ce
TT
11334 catch_fork_kind fork_kind;
11335 int tempflag;
11336
11337 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11338 tempflag = (fork_kind == catch_fork_temporary
11339 || fork_kind == catch_vfork_temporary);
c5aa993b 11340
44feb3ce
TT
11341 if (!arg)
11342 arg = "";
f1735a53 11343 arg = skip_spaces (arg);
c5aa993b 11344
c906108c 11345 /* The allowed syntax is:
c5aa993b
JM
11346 catch [v]fork
11347 catch [v]fork if <cond>
11348
4a64f543 11349 First, check if there's an if clause. */
c906108c 11350 cond_string = ep_parse_optional_if_clause (&arg);
c5aa993b 11351
c906108c 11352 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11353 error (_("Junk at end of arguments."));
c5aa993b 11354
c906108c 11355 /* If this target supports it, create a fork or vfork catchpoint
4a64f543 11356 and enable reporting of such events. */
c5aa993b
JM
11357 switch (fork_kind)
11358 {
44feb3ce
TT
11359 case catch_fork_temporary:
11360 case catch_fork_permanent:
a6d9a66e 11361 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11362 &catch_fork_breakpoint_ops);
c906108c 11363 break;
44feb3ce
TT
11364 case catch_vfork_temporary:
11365 case catch_vfork_permanent:
a6d9a66e 11366 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11367 &catch_vfork_breakpoint_ops);
c906108c 11368 break;
c5aa993b 11369 default:
8a3fe4f8 11370 error (_("unsupported or unknown fork kind; cannot catch it"));
c906108c 11371 break;
c5aa993b 11372 }
c906108c
SS
11373}
11374
11375static void
eb4c3f4a 11376catch_exec_command_1 (const char *arg, int from_tty,
cc59ec59 11377 struct cmd_list_element *command)
c906108c 11378{
a6d9a66e 11379 struct gdbarch *gdbarch = get_current_arch ();
44feb3ce 11380 int tempflag;
63160a43 11381 const char *cond_string = NULL;
c906108c 11382
44feb3ce
TT
11383 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11384
11385 if (!arg)
11386 arg = "";
f1735a53 11387 arg = skip_spaces (arg);
c906108c
SS
11388
11389 /* The allowed syntax is:
c5aa993b
JM
11390 catch exec
11391 catch exec if <cond>
c906108c 11392
4a64f543 11393 First, check if there's an if clause. */
c906108c
SS
11394 cond_string = ep_parse_optional_if_clause (&arg);
11395
11396 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11397 error (_("Junk at end of arguments."));
c906108c 11398
b270e6f9
TT
11399 std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11400 init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
b4d90040
PA
11401 &catch_exec_breakpoint_ops);
11402 c->exec_pathname = NULL;
11403
b270e6f9 11404 install_breakpoint (0, std::move (c), 1);
c906108c 11405}
c5aa993b 11406
9ac4176b 11407void
28010a5d
PA
11408init_ada_exception_breakpoint (struct breakpoint *b,
11409 struct gdbarch *gdbarch,
11410 struct symtab_and_line sal,
f2fc3015 11411 const char *addr_string,
c0a91b2b 11412 const struct breakpoint_ops *ops,
28010a5d 11413 int tempflag,
349774ef 11414 int enabled,
28010a5d 11415 int from_tty)
f7f9143b 11416{
f7f9143b
JB
11417 if (from_tty)
11418 {
5af949e3
UW
11419 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11420 if (!loc_gdbarch)
11421 loc_gdbarch = gdbarch;
11422
6c95b8df
PA
11423 describe_other_breakpoints (loc_gdbarch,
11424 sal.pspace, sal.pc, sal.section, -1);
f7f9143b
JB
11425 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11426 version for exception catchpoints, because two catchpoints
11427 used for different exception names will use the same address.
11428 In this case, a "breakpoint ... also set at..." warning is
4a64f543 11429 unproductive. Besides, the warning phrasing is also a bit
e5dd4106 11430 inappropriate, we should use the word catchpoint, and tell
f7f9143b
JB
11431 the user what type of catchpoint it is. The above is good
11432 enough for now, though. */
11433 }
11434
28010a5d 11435 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
f7f9143b 11436
349774ef 11437 b->enable_state = enabled ? bp_enabled : bp_disabled;
f7f9143b 11438 b->disposition = tempflag ? disp_del : disp_donttouch;
d28cd78a
TT
11439 b->location = string_to_event_location (&addr_string,
11440 language_def (language_ada));
f7f9143b 11441 b->language = language_ada;
f7f9143b
JB
11442}
11443
c906108c 11444static void
981a3fb3 11445catch_command (const char *arg, int from_tty)
c906108c 11446{
44feb3ce 11447 error (_("Catch requires an event name."));
c906108c
SS
11448}
11449\f
11450
11451static void
981a3fb3 11452tcatch_command (const char *arg, int from_tty)
c906108c 11453{
44feb3ce 11454 error (_("Catch requires an event name."));
c906108c
SS
11455}
11456
81b1e71c 11457/* Compare two breakpoints and return a strcmp-like result. */
8a2c437b
TT
11458
11459static int
81b1e71c 11460compare_breakpoints (const breakpoint *a, const breakpoint *b)
8a2c437b 11461{
81b1e71c
TT
11462 uintptr_t ua = (uintptr_t) a;
11463 uintptr_t ub = (uintptr_t) b;
8a2c437b 11464
81b1e71c 11465 if (a->number < b->number)
8a2c437b 11466 return -1;
81b1e71c 11467 else if (a->number > b->number)
8a2c437b
TT
11468 return 1;
11469
11470 /* Now sort by address, in case we see, e..g, two breakpoints with
11471 the number 0. */
11472 if (ua < ub)
11473 return -1;
94b0e70d 11474 return ua > ub ? 1 : 0;
8a2c437b
TT
11475}
11476
80f8a6eb 11477/* Delete breakpoints by address or line. */
c906108c
SS
11478
11479static void
0b39b52e 11480clear_command (const char *arg, int from_tty)
c906108c 11481{
81b1e71c 11482 struct breakpoint *b;
c906108c 11483 int default_match;
c906108c
SS
11484 int i;
11485
6c5b2ebe
PA
11486 std::vector<symtab_and_line> decoded_sals;
11487 symtab_and_line last_sal;
11488 gdb::array_view<symtab_and_line> sals;
c906108c
SS
11489 if (arg)
11490 {
6c5b2ebe
PA
11491 decoded_sals
11492 = decode_line_with_current_source (arg,
11493 (DECODE_LINE_FUNFIRSTLINE
11494 | DECODE_LINE_LIST_MODE));
c906108c 11495 default_match = 0;
6c5b2ebe 11496 sals = decoded_sals;
c906108c
SS
11497 }
11498 else
11499 {
1bfeeb0f
JL
11500 /* Set sal's line, symtab, pc, and pspace to the values
11501 corresponding to the last call to print_frame_info. If the
11502 codepoint is not valid, this will set all the fields to 0. */
51abb421 11503 last_sal = get_last_displayed_sal ();
6c5b2ebe 11504 if (last_sal.symtab == 0)
8a3fe4f8 11505 error (_("No source file specified."));
c906108c 11506
c906108c 11507 default_match = 1;
6c5b2ebe 11508 sals = last_sal;
c906108c
SS
11509 }
11510
4a64f543
MS
11511 /* We don't call resolve_sal_pc here. That's not as bad as it
11512 seems, because all existing breakpoints typically have both
11513 file/line and pc set. So, if clear is given file/line, we can
11514 match this to existing breakpoint without obtaining pc at all.
ed0616c6
VP
11515
11516 We only support clearing given the address explicitly
11517 present in breakpoint table. Say, we've set breakpoint
4a64f543 11518 at file:line. There were several PC values for that file:line,
ed0616c6 11519 due to optimization, all in one block.
4a64f543
MS
11520
11521 We've picked one PC value. If "clear" is issued with another
ed0616c6
VP
11522 PC corresponding to the same file:line, the breakpoint won't
11523 be cleared. We probably can still clear the breakpoint, but
11524 since the other PC value is never presented to user, user
11525 can only find it by guessing, and it does not seem important
11526 to support that. */
11527
4a64f543
MS
11528 /* For each line spec given, delete bps which correspond to it. Do
11529 it in two passes, solely to preserve the current behavior that
11530 from_tty is forced true if we delete more than one
11531 breakpoint. */
c906108c 11532
81b1e71c 11533 std::vector<struct breakpoint *> found;
6c5b2ebe 11534 for (const auto &sal : sals)
c906108c 11535 {
05cba821
JK
11536 const char *sal_fullname;
11537
c906108c 11538 /* If exact pc given, clear bpts at that pc.
c5aa993b
JM
11539 If line given (pc == 0), clear all bpts on specified line.
11540 If defaulting, clear all bpts on default line
c906108c 11541 or at default pc.
c5aa993b
JM
11542
11543 defaulting sal.pc != 0 tests to do
11544
11545 0 1 pc
11546 1 1 pc _and_ line
11547 0 0 line
11548 1 0 <can't happen> */
c906108c 11549
05cba821
JK
11550 sal_fullname = (sal.symtab == NULL
11551 ? NULL : symtab_to_fullname (sal.symtab));
c906108c 11552
4a64f543 11553 /* Find all matching breakpoints and add them to 'found'. */
d6e956e5 11554 ALL_BREAKPOINTS (b)
c5aa993b 11555 {
0d381245 11556 int match = 0;
4a64f543 11557 /* Are we going to delete b? */
cc60f2e3 11558 if (b->type != bp_none && !is_watchpoint (b))
0d381245
VP
11559 {
11560 struct bp_location *loc = b->loc;
11561 for (; loc; loc = loc->next)
11562 {
f8eba3c6
TT
11563 /* If the user specified file:line, don't allow a PC
11564 match. This matches historical gdb behavior. */
11565 int pc_match = (!sal.explicit_line
11566 && sal.pc
11567 && (loc->pspace == sal.pspace)
11568 && (loc->address == sal.pc)
11569 && (!section_is_overlay (loc->section)
11570 || loc->section == sal.section));
4aac40c8
TT
11571 int line_match = 0;
11572
11573 if ((default_match || sal.explicit_line)
2f202fde 11574 && loc->symtab != NULL
05cba821 11575 && sal_fullname != NULL
4aac40c8 11576 && sal.pspace == loc->pspace
05cba821
JK
11577 && loc->line_number == sal.line
11578 && filename_cmp (symtab_to_fullname (loc->symtab),
11579 sal_fullname) == 0)
11580 line_match = 1;
4aac40c8 11581
0d381245
VP
11582 if (pc_match || line_match)
11583 {
11584 match = 1;
11585 break;
11586 }
11587 }
11588 }
11589
11590 if (match)
81b1e71c 11591 found.push_back (b);
c906108c 11592 }
80f8a6eb 11593 }
8a2c437b 11594
80f8a6eb 11595 /* Now go thru the 'found' chain and delete them. */
81b1e71c 11596 if (found.empty ())
80f8a6eb
MS
11597 {
11598 if (arg)
8a3fe4f8 11599 error (_("No breakpoint at %s."), arg);
80f8a6eb 11600 else
8a3fe4f8 11601 error (_("No breakpoint at this line."));
80f8a6eb 11602 }
c906108c 11603
8a2c437b 11604 /* Remove duplicates from the vec. */
81b1e71c
TT
11605 std::sort (found.begin (), found.end (),
11606 [] (const breakpoint *a, const breakpoint *b)
11607 {
11608 return compare_breakpoints (a, b) < 0;
11609 });
11610 found.erase (std::unique (found.begin (), found.end (),
11611 [] (const breakpoint *a, const breakpoint *b)
11612 {
11613 return compare_breakpoints (a, b) == 0;
11614 }),
11615 found.end ());
8a2c437b 11616
81b1e71c 11617 if (found.size () > 1)
4a64f543 11618 from_tty = 1; /* Always report if deleted more than one. */
80f8a6eb 11619 if (from_tty)
a3f17187 11620 {
81b1e71c 11621 if (found.size () == 1)
a3f17187
AC
11622 printf_unfiltered (_("Deleted breakpoint "));
11623 else
11624 printf_unfiltered (_("Deleted breakpoints "));
11625 }
d6e956e5 11626
81b1e71c 11627 for (breakpoint *iter : found)
80f8a6eb 11628 {
c5aa993b 11629 if (from_tty)
81b1e71c
TT
11630 printf_unfiltered ("%d ", iter->number);
11631 delete_breakpoint (iter);
c906108c 11632 }
80f8a6eb
MS
11633 if (from_tty)
11634 putchar_unfiltered ('\n');
c906108c
SS
11635}
11636\f
11637/* Delete breakpoint in BS if they are `delete' breakpoints and
11638 all breakpoints that are marked for deletion, whether hit or not.
11639 This is called after any breakpoint is hit, or after errors. */
11640
11641void
fba45db2 11642breakpoint_auto_delete (bpstat bs)
c906108c 11643{
35df4500 11644 struct breakpoint *b, *b_tmp;
c906108c
SS
11645
11646 for (; bs; bs = bs->next)
f431efe5
PA
11647 if (bs->breakpoint_at
11648 && bs->breakpoint_at->disposition == disp_del
c906108c 11649 && bs->stop)
f431efe5 11650 delete_breakpoint (bs->breakpoint_at);
c906108c 11651
35df4500 11652 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 11653 {
b5de0fa7 11654 if (b->disposition == disp_del_at_next_stop)
c5aa993b
JM
11655 delete_breakpoint (b);
11656 }
c906108c
SS
11657}
11658
4a64f543
MS
11659/* A comparison function for bp_location AP and BP being interfaced to
11660 qsort. Sort elements primarily by their ADDRESS (no matter what
11661 does breakpoint_address_is_meaningful say for its OWNER),
1a853c52 11662 secondarily by ordering first permanent elements and
4a64f543 11663 terciarily just ensuring the array is sorted stable way despite
e5dd4106 11664 qsort being an unstable algorithm. */
876fa593
JK
11665
11666static int
f5336ca5 11667bp_locations_compare (const void *ap, const void *bp)
876fa593 11668{
9a3c8263
SM
11669 const struct bp_location *a = *(const struct bp_location **) ap;
11670 const struct bp_location *b = *(const struct bp_location **) bp;
876fa593
JK
11671
11672 if (a->address != b->address)
11673 return (a->address > b->address) - (a->address < b->address);
11674
dea2aa5f
LM
11675 /* Sort locations at the same address by their pspace number, keeping
11676 locations of the same inferior (in a multi-inferior environment)
11677 grouped. */
11678
11679 if (a->pspace->num != b->pspace->num)
11680 return ((a->pspace->num > b->pspace->num)
11681 - (a->pspace->num < b->pspace->num));
11682
876fa593 11683 /* Sort permanent breakpoints first. */
1a853c52
PA
11684 if (a->permanent != b->permanent)
11685 return (a->permanent < b->permanent) - (a->permanent > b->permanent);
876fa593 11686
c56a97f9
JK
11687 /* Make the internal GDB representation stable across GDB runs
11688 where A and B memory inside GDB can differ. Breakpoint locations of
11689 the same type at the same address can be sorted in arbitrary order. */
876fa593
JK
11690
11691 if (a->owner->number != b->owner->number)
c56a97f9
JK
11692 return ((a->owner->number > b->owner->number)
11693 - (a->owner->number < b->owner->number));
876fa593
JK
11694
11695 return (a > b) - (a < b);
11696}
11697
f5336ca5
PA
11698/* Set bp_locations_placed_address_before_address_max and
11699 bp_locations_shadow_len_after_address_max according to the current
11700 content of the bp_locations array. */
f7545552
TT
11701
11702static void
f5336ca5 11703bp_locations_target_extensions_update (void)
f7545552 11704{
876fa593
JK
11705 struct bp_location *bl, **blp_tmp;
11706
f5336ca5
PA
11707 bp_locations_placed_address_before_address_max = 0;
11708 bp_locations_shadow_len_after_address_max = 0;
876fa593
JK
11709
11710 ALL_BP_LOCATIONS (bl, blp_tmp)
11711 {
11712 CORE_ADDR start, end, addr;
11713
11714 if (!bp_location_has_shadow (bl))
11715 continue;
11716
11717 start = bl->target_info.placed_address;
11718 end = start + bl->target_info.shadow_len;
11719
11720 gdb_assert (bl->address >= start);
11721 addr = bl->address - start;
f5336ca5
PA
11722 if (addr > bp_locations_placed_address_before_address_max)
11723 bp_locations_placed_address_before_address_max = addr;
876fa593
JK
11724
11725 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
11726
11727 gdb_assert (bl->address < end);
11728 addr = end - bl->address;
f5336ca5
PA
11729 if (addr > bp_locations_shadow_len_after_address_max)
11730 bp_locations_shadow_len_after_address_max = addr;
876fa593 11731 }
f7545552
TT
11732}
11733
1e4d1764
YQ
11734/* Download tracepoint locations if they haven't been. */
11735
11736static void
11737download_tracepoint_locations (void)
11738{
7ed2c994 11739 struct breakpoint *b;
dd2e65cc 11740 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
1e4d1764 11741
5ed8105e 11742 scoped_restore_current_pspace_and_thread restore_pspace_thread;
1e4d1764 11743
7ed2c994 11744 ALL_TRACEPOINTS (b)
1e4d1764 11745 {
7ed2c994 11746 struct bp_location *bl;
1e4d1764 11747 struct tracepoint *t;
f2a8bc8a 11748 int bp_location_downloaded = 0;
1e4d1764 11749
7ed2c994 11750 if ((b->type == bp_fast_tracepoint
1e4d1764
YQ
11751 ? !may_insert_fast_tracepoints
11752 : !may_insert_tracepoints))
11753 continue;
11754
dd2e65cc
YQ
11755 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11756 {
11757 if (target_can_download_tracepoint ())
11758 can_download_tracepoint = TRIBOOL_TRUE;
11759 else
11760 can_download_tracepoint = TRIBOOL_FALSE;
11761 }
11762
11763 if (can_download_tracepoint == TRIBOOL_FALSE)
11764 break;
11765
7ed2c994
YQ
11766 for (bl = b->loc; bl; bl = bl->next)
11767 {
11768 /* In tracepoint, locations are _never_ duplicated, so
11769 should_be_inserted is equivalent to
11770 unduplicated_should_be_inserted. */
11771 if (!should_be_inserted (bl) || bl->inserted)
11772 continue;
1e4d1764 11773
7ed2c994 11774 switch_to_program_space_and_thread (bl->pspace);
1e4d1764 11775
7ed2c994 11776 target_download_tracepoint (bl);
1e4d1764 11777
7ed2c994 11778 bl->inserted = 1;
f2a8bc8a 11779 bp_location_downloaded = 1;
7ed2c994
YQ
11780 }
11781 t = (struct tracepoint *) b;
11782 t->number_on_target = b->number;
f2a8bc8a
YQ
11783 if (bp_location_downloaded)
11784 observer_notify_breakpoint_modified (b);
1e4d1764 11785 }
1e4d1764
YQ
11786}
11787
934709f0
PW
11788/* Swap the insertion/duplication state between two locations. */
11789
11790static void
11791swap_insertion (struct bp_location *left, struct bp_location *right)
11792{
11793 const int left_inserted = left->inserted;
11794 const int left_duplicate = left->duplicate;
b775012e 11795 const int left_needs_update = left->needs_update;
934709f0
PW
11796 const struct bp_target_info left_target_info = left->target_info;
11797
1e4d1764
YQ
11798 /* Locations of tracepoints can never be duplicated. */
11799 if (is_tracepoint (left->owner))
11800 gdb_assert (!left->duplicate);
11801 if (is_tracepoint (right->owner))
11802 gdb_assert (!right->duplicate);
11803
934709f0
PW
11804 left->inserted = right->inserted;
11805 left->duplicate = right->duplicate;
b775012e 11806 left->needs_update = right->needs_update;
934709f0
PW
11807 left->target_info = right->target_info;
11808 right->inserted = left_inserted;
11809 right->duplicate = left_duplicate;
b775012e 11810 right->needs_update = left_needs_update;
934709f0
PW
11811 right->target_info = left_target_info;
11812}
11813
b775012e
LM
11814/* Force the re-insertion of the locations at ADDRESS. This is called
11815 once a new/deleted/modified duplicate location is found and we are evaluating
11816 conditions on the target's side. Such conditions need to be updated on
11817 the target. */
11818
11819static void
11820force_breakpoint_reinsertion (struct bp_location *bl)
11821{
11822 struct bp_location **locp = NULL, **loc2p;
11823 struct bp_location *loc;
11824 CORE_ADDR address = 0;
11825 int pspace_num;
11826
11827 address = bl->address;
11828 pspace_num = bl->pspace->num;
11829
11830 /* This is only meaningful if the target is
11831 evaluating conditions and if the user has
11832 opted for condition evaluation on the target's
11833 side. */
11834 if (gdb_evaluates_breakpoint_condition_p ()
11835 || !target_supports_evaluation_of_breakpoint_conditions ())
11836 return;
11837
11838 /* Flag all breakpoint locations with this address and
11839 the same program space as the location
11840 as "its condition has changed". We need to
11841 update the conditions on the target's side. */
11842 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11843 {
11844 loc = *loc2p;
11845
11846 if (!is_breakpoint (loc->owner)
11847 || pspace_num != loc->pspace->num)
11848 continue;
11849
11850 /* Flag the location appropriately. We use a different state to
11851 let everyone know that we already updated the set of locations
11852 with addr bl->address and program space bl->pspace. This is so
11853 we don't have to keep calling these functions just to mark locations
11854 that have already been marked. */
11855 loc->condition_changed = condition_updated;
11856
11857 /* Free the agent expression bytecode as well. We will compute
11858 it later on. */
833177a4 11859 loc->cond_bytecode.reset ();
b775012e
LM
11860 }
11861}
44702360
PA
11862/* Called whether new breakpoints are created, or existing breakpoints
11863 deleted, to update the global location list and recompute which
11864 locations are duplicate of which.
b775012e 11865
04086b45
PA
11866 The INSERT_MODE flag determines whether locations may not, may, or
11867 shall be inserted now. See 'enum ugll_insert_mode' for more
11868 info. */
b60e7edf 11869
0d381245 11870static void
44702360 11871update_global_location_list (enum ugll_insert_mode insert_mode)
0d381245 11872{
74960c60 11873 struct breakpoint *b;
876fa593 11874 struct bp_location **locp, *loc;
b775012e
LM
11875 /* Last breakpoint location address that was marked for update. */
11876 CORE_ADDR last_addr = 0;
11877 /* Last breakpoint location program space that was marked for update. */
11878 int last_pspace_num = -1;
f7545552 11879
2d134ed3
PA
11880 /* Used in the duplicates detection below. When iterating over all
11881 bp_locations, points to the first bp_location of a given address.
11882 Breakpoints and watchpoints of different types are never
11883 duplicates of each other. Keep one pointer for each type of
11884 breakpoint/watchpoint, so we only need to loop over all locations
11885 once. */
11886 struct bp_location *bp_loc_first; /* breakpoint */
11887 struct bp_location *wp_loc_first; /* hardware watchpoint */
11888 struct bp_location *awp_loc_first; /* access watchpoint */
11889 struct bp_location *rwp_loc_first; /* read watchpoint */
876fa593 11890
f5336ca5
PA
11891 /* Saved former bp_locations array which we compare against the newly
11892 built bp_locations from the current state of ALL_BREAKPOINTS. */
81b1e71c 11893 struct bp_location **old_locp;
f5336ca5 11894 unsigned old_locations_count;
81b1e71c 11895 gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
876fa593 11896
f5336ca5
PA
11897 old_locations_count = bp_locations_count;
11898 bp_locations = NULL;
11899 bp_locations_count = 0;
0d381245 11900
74960c60 11901 ALL_BREAKPOINTS (b)
876fa593 11902 for (loc = b->loc; loc; loc = loc->next)
f5336ca5 11903 bp_locations_count++;
876fa593 11904
f5336ca5
PA
11905 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11906 locp = bp_locations;
876fa593
JK
11907 ALL_BREAKPOINTS (b)
11908 for (loc = b->loc; loc; loc = loc->next)
11909 *locp++ = loc;
f5336ca5
PA
11910 qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11911 bp_locations_compare);
876fa593 11912
f5336ca5 11913 bp_locations_target_extensions_update ();
74960c60 11914
4a64f543
MS
11915 /* Identify bp_location instances that are no longer present in the
11916 new list, and therefore should be freed. Note that it's not
11917 necessary that those locations should be removed from inferior --
11918 if there's another location at the same address (previously
11919 marked as duplicate), we don't need to remove/insert the
11920 location.
876fa593 11921
4a64f543
MS
11922 LOCP is kept in sync with OLD_LOCP, each pointing to the current
11923 and former bp_location array state respectively. */
876fa593 11924
f5336ca5 11925 locp = bp_locations;
81b1e71c
TT
11926 for (old_locp = old_locations.get ();
11927 old_locp < old_locations.get () + old_locations_count;
876fa593 11928 old_locp++)
74960c60 11929 {
876fa593 11930 struct bp_location *old_loc = *old_locp;
c7d46a38 11931 struct bp_location **loc2p;
876fa593 11932
e5dd4106 11933 /* Tells if 'old_loc' is found among the new locations. If
4a64f543 11934 not, we have to free it. */
c7d46a38 11935 int found_object = 0;
20874c92
VP
11936 /* Tells if the location should remain inserted in the target. */
11937 int keep_in_target = 0;
11938 int removed = 0;
876fa593 11939
4a64f543
MS
11940 /* Skip LOCP entries which will definitely never be needed.
11941 Stop either at or being the one matching OLD_LOC. */
f5336ca5 11942 while (locp < bp_locations + bp_locations_count
c7d46a38 11943 && (*locp)->address < old_loc->address)
876fa593 11944 locp++;
c7d46a38
PA
11945
11946 for (loc2p = locp;
f5336ca5 11947 (loc2p < bp_locations + bp_locations_count
c7d46a38
PA
11948 && (*loc2p)->address == old_loc->address);
11949 loc2p++)
11950 {
b775012e
LM
11951 /* Check if this is a new/duplicated location or a duplicated
11952 location that had its condition modified. If so, we want to send
11953 its condition to the target if evaluation of conditions is taking
11954 place there. */
11955 if ((*loc2p)->condition_changed == condition_modified
11956 && (last_addr != old_loc->address
11957 || last_pspace_num != old_loc->pspace->num))
c7d46a38 11958 {
b775012e
LM
11959 force_breakpoint_reinsertion (*loc2p);
11960 last_pspace_num = old_loc->pspace->num;
c7d46a38 11961 }
b775012e
LM
11962
11963 if (*loc2p == old_loc)
11964 found_object = 1;
c7d46a38 11965 }
74960c60 11966
b775012e
LM
11967 /* We have already handled this address, update it so that we don't
11968 have to go through updates again. */
11969 last_addr = old_loc->address;
11970
11971 /* Target-side condition evaluation: Handle deleted locations. */
11972 if (!found_object)
11973 force_breakpoint_reinsertion (old_loc);
11974
4a64f543
MS
11975 /* If this location is no longer present, and inserted, look if
11976 there's maybe a new location at the same address. If so,
11977 mark that one inserted, and don't remove this one. This is
11978 needed so that we don't have a time window where a breakpoint
11979 at certain location is not inserted. */
74960c60 11980
876fa593 11981 if (old_loc->inserted)
0d381245 11982 {
4a64f543
MS
11983 /* If the location is inserted now, we might have to remove
11984 it. */
74960c60 11985
876fa593 11986 if (found_object && should_be_inserted (old_loc))
74960c60 11987 {
4a64f543
MS
11988 /* The location is still present in the location list,
11989 and still should be inserted. Don't do anything. */
20874c92 11990 keep_in_target = 1;
74960c60
VP
11991 }
11992 else
11993 {
b775012e
LM
11994 /* This location still exists, but it won't be kept in the
11995 target since it may have been disabled. We proceed to
11996 remove its target-side condition. */
11997
4a64f543
MS
11998 /* The location is either no longer present, or got
11999 disabled. See if there's another location at the
12000 same address, in which case we don't need to remove
12001 this one from the target. */
876fa593 12002
2bdf28a0 12003 /* OLD_LOC comes from existing struct breakpoint. */
876fa593
JK
12004 if (breakpoint_address_is_meaningful (old_loc->owner))
12005 {
876fa593 12006 for (loc2p = locp;
f5336ca5 12007 (loc2p < bp_locations + bp_locations_count
c7d46a38 12008 && (*loc2p)->address == old_loc->address);
876fa593
JK
12009 loc2p++)
12010 {
12011 struct bp_location *loc2 = *loc2p;
12012
2d134ed3 12013 if (breakpoint_locations_match (loc2, old_loc))
c7d46a38 12014 {
85d721b8
PA
12015 /* Read watchpoint locations are switched to
12016 access watchpoints, if the former are not
12017 supported, but the latter are. */
12018 if (is_hardware_watchpoint (old_loc->owner))
12019 {
12020 gdb_assert (is_hardware_watchpoint (loc2->owner));
12021 loc2->watchpoint_type = old_loc->watchpoint_type;
12022 }
12023
934709f0
PW
12024 /* loc2 is a duplicated location. We need to check
12025 if it should be inserted in case it will be
12026 unduplicated. */
12027 if (loc2 != old_loc
12028 && unduplicated_should_be_inserted (loc2))
c7d46a38 12029 {
934709f0 12030 swap_insertion (old_loc, loc2);
c7d46a38
PA
12031 keep_in_target = 1;
12032 break;
12033 }
876fa593
JK
12034 }
12035 }
12036 }
74960c60
VP
12037 }
12038
20874c92
VP
12039 if (!keep_in_target)
12040 {
834c0d03 12041 if (remove_breakpoint (old_loc))
20874c92 12042 {
4a64f543
MS
12043 /* This is just about all we can do. We could keep
12044 this location on the global list, and try to
12045 remove it next time, but there's no particular
12046 reason why we will succeed next time.
20874c92 12047
4a64f543
MS
12048 Note that at this point, old_loc->owner is still
12049 valid, as delete_breakpoint frees the breakpoint
12050 only after calling us. */
3e43a32a
MS
12051 printf_filtered (_("warning: Error removing "
12052 "breakpoint %d\n"),
876fa593 12053 old_loc->owner->number);
20874c92
VP
12054 }
12055 removed = 1;
12056 }
0d381245 12057 }
74960c60
VP
12058
12059 if (!found_object)
1c5cfe86 12060 {
fbea99ea 12061 if (removed && target_is_non_stop_p ()
1cf4d951 12062 && need_moribund_for_location_type (old_loc))
20874c92 12063 {
db82e815
PA
12064 /* This location was removed from the target. In
12065 non-stop mode, a race condition is possible where
12066 we've removed a breakpoint, but stop events for that
12067 breakpoint are already queued and will arrive later.
12068 We apply an heuristic to be able to distinguish such
12069 SIGTRAPs from other random SIGTRAPs: we keep this
12070 breakpoint location for a bit, and will retire it
12071 after we see some number of events. The theory here
12072 is that reporting of events should, "on the average",
12073 be fair, so after a while we'll see events from all
12074 threads that have anything of interest, and no longer
12075 need to keep this breakpoint location around. We
12076 don't hold locations forever so to reduce chances of
12077 mistaking a non-breakpoint SIGTRAP for a breakpoint
12078 SIGTRAP.
12079
12080 The heuristic failing can be disastrous on
12081 decr_pc_after_break targets.
12082
12083 On decr_pc_after_break targets, like e.g., x86-linux,
12084 if we fail to recognize a late breakpoint SIGTRAP,
12085 because events_till_retirement has reached 0 too
12086 soon, we'll fail to do the PC adjustment, and report
12087 a random SIGTRAP to the user. When the user resumes
12088 the inferior, it will most likely immediately crash
2dec564e 12089 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
db82e815
PA
12090 corrupted, because of being resumed e.g., in the
12091 middle of a multi-byte instruction, or skipped a
12092 one-byte instruction. This was actually seen happen
12093 on native x86-linux, and should be less rare on
12094 targets that do not support new thread events, like
12095 remote, due to the heuristic depending on
12096 thread_count.
12097
12098 Mistaking a random SIGTRAP for a breakpoint trap
12099 causes similar symptoms (PC adjustment applied when
12100 it shouldn't), but then again, playing with SIGTRAPs
12101 behind the debugger's back is asking for trouble.
12102
12103 Since hardware watchpoint traps are always
12104 distinguishable from other traps, so we don't need to
12105 apply keep hardware watchpoint moribund locations
12106 around. We simply always ignore hardware watchpoint
12107 traps we can no longer explain. */
12108
876fa593
JK
12109 old_loc->events_till_retirement = 3 * (thread_count () + 1);
12110 old_loc->owner = NULL;
20874c92 12111
876fa593 12112 VEC_safe_push (bp_location_p, moribund_locations, old_loc);
1c5cfe86
PA
12113 }
12114 else
f431efe5
PA
12115 {
12116 old_loc->owner = NULL;
12117 decref_bp_location (&old_loc);
12118 }
20874c92 12119 }
74960c60 12120 }
1c5cfe86 12121
348d480f
PA
12122 /* Rescan breakpoints at the same address and section, marking the
12123 first one as "first" and any others as "duplicates". This is so
12124 that the bpt instruction is only inserted once. If we have a
12125 permanent breakpoint at the same place as BPT, make that one the
12126 official one, and the rest as duplicates. Permanent breakpoints
12127 are sorted first for the same address.
12128
12129 Do the same for hardware watchpoints, but also considering the
12130 watchpoint's type (regular/access/read) and length. */
12131
12132 bp_loc_first = NULL;
12133 wp_loc_first = NULL;
12134 awp_loc_first = NULL;
12135 rwp_loc_first = NULL;
12136 ALL_BP_LOCATIONS (loc, locp)
12137 {
12138 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12139 non-NULL. */
348d480f 12140 struct bp_location **loc_first_p;
d3fbdd86 12141 b = loc->owner;
348d480f 12142
6f380991 12143 if (!unduplicated_should_be_inserted (loc)
348d480f 12144 || !breakpoint_address_is_meaningful (b)
1e4d1764
YQ
12145 /* Don't detect duplicate for tracepoint locations because they are
12146 never duplicated. See the comments in field `duplicate' of
12147 `struct bp_location'. */
348d480f 12148 || is_tracepoint (b))
b775012e
LM
12149 {
12150 /* Clear the condition modification flag. */
12151 loc->condition_changed = condition_unchanged;
12152 continue;
12153 }
348d480f 12154
348d480f
PA
12155 if (b->type == bp_hardware_watchpoint)
12156 loc_first_p = &wp_loc_first;
12157 else if (b->type == bp_read_watchpoint)
12158 loc_first_p = &rwp_loc_first;
12159 else if (b->type == bp_access_watchpoint)
12160 loc_first_p = &awp_loc_first;
12161 else
12162 loc_first_p = &bp_loc_first;
12163
12164 if (*loc_first_p == NULL
12165 || (overlay_debugging && loc->section != (*loc_first_p)->section)
12166 || !breakpoint_locations_match (loc, *loc_first_p))
12167 {
12168 *loc_first_p = loc;
12169 loc->duplicate = 0;
b775012e
LM
12170
12171 if (is_breakpoint (loc->owner) && loc->condition_changed)
12172 {
12173 loc->needs_update = 1;
12174 /* Clear the condition modification flag. */
12175 loc->condition_changed = condition_unchanged;
12176 }
348d480f
PA
12177 continue;
12178 }
12179
934709f0
PW
12180
12181 /* This and the above ensure the invariant that the first location
12182 is not duplicated, and is the inserted one.
12183 All following are marked as duplicated, and are not inserted. */
12184 if (loc->inserted)
12185 swap_insertion (loc, *loc_first_p);
348d480f
PA
12186 loc->duplicate = 1;
12187
b775012e
LM
12188 /* Clear the condition modification flag. */
12189 loc->condition_changed = condition_unchanged;
348d480f
PA
12190 }
12191
a25a5a45 12192 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
b775012e 12193 {
04086b45 12194 if (insert_mode != UGLL_DONT_INSERT)
b775012e
LM
12195 insert_breakpoint_locations ();
12196 else
12197 {
44702360
PA
12198 /* Even though the caller told us to not insert new
12199 locations, we may still need to update conditions on the
12200 target's side of breakpoints that were already inserted
12201 if the target is evaluating breakpoint conditions. We
b775012e
LM
12202 only update conditions for locations that are marked
12203 "needs_update". */
12204 update_inserted_breakpoint_locations ();
12205 }
12206 }
348d480f 12207
04086b45 12208 if (insert_mode != UGLL_DONT_INSERT)
1e4d1764 12209 download_tracepoint_locations ();
348d480f
PA
12210}
12211
12212void
12213breakpoint_retire_moribund (void)
12214{
12215 struct bp_location *loc;
12216 int ix;
12217
12218 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12219 if (--(loc->events_till_retirement) == 0)
12220 {
12221 decref_bp_location (&loc);
12222 VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12223 --ix;
12224 }
12225}
12226
12227static void
44702360 12228update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
348d480f 12229{
348d480f 12230
492d29ea
PA
12231 TRY
12232 {
12233 update_global_location_list (insert_mode);
12234 }
12235 CATCH (e, RETURN_MASK_ERROR)
12236 {
12237 }
12238 END_CATCH
348d480f
PA
12239}
12240
12241/* Clear BKP from a BPS. */
12242
12243static void
12244bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12245{
12246 bpstat bs;
12247
12248 for (bs = bps; bs; bs = bs->next)
12249 if (bs->breakpoint_at == bpt)
12250 {
12251 bs->breakpoint_at = NULL;
12252 bs->old_val = NULL;
12253 /* bs->commands will be freed later. */
12254 }
12255}
12256
12257/* Callback for iterate_over_threads. */
12258static int
12259bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12260{
9a3c8263 12261 struct breakpoint *bpt = (struct breakpoint *) data;
348d480f
PA
12262
12263 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12264 return 0;
12265}
12266
12267/* Helper for breakpoint and tracepoint breakpoint_ops->mention
12268 callbacks. */
12269
12270static void
12271say_where (struct breakpoint *b)
12272{
12273 struct value_print_options opts;
12274
12275 get_user_print_options (&opts);
12276
12277 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12278 single string. */
12279 if (b->loc == NULL)
12280 {
f00aae0f
KS
12281 /* For pending locations, the output differs slightly based
12282 on b->extra_string. If this is non-NULL, it contains either
12283 a condition or dprintf arguments. */
12284 if (b->extra_string == NULL)
12285 {
12286 printf_filtered (_(" (%s) pending."),
d28cd78a 12287 event_location_to_string (b->location.get ()));
f00aae0f
KS
12288 }
12289 else if (b->type == bp_dprintf)
12290 {
12291 printf_filtered (_(" (%s,%s) pending."),
d28cd78a 12292 event_location_to_string (b->location.get ()),
f00aae0f
KS
12293 b->extra_string);
12294 }
12295 else
12296 {
12297 printf_filtered (_(" (%s %s) pending."),
d28cd78a 12298 event_location_to_string (b->location.get ()),
f00aae0f
KS
12299 b->extra_string);
12300 }
348d480f
PA
12301 }
12302 else
12303 {
2f202fde 12304 if (opts.addressprint || b->loc->symtab == NULL)
348d480f
PA
12305 {
12306 printf_filtered (" at ");
12307 fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12308 gdb_stdout);
12309 }
2f202fde 12310 if (b->loc->symtab != NULL)
f8eba3c6
TT
12311 {
12312 /* If there is a single location, we can print the location
12313 more nicely. */
12314 if (b->loc->next == NULL)
12315 printf_filtered (": file %s, line %d.",
05cba821
JK
12316 symtab_to_filename_for_display (b->loc->symtab),
12317 b->loc->line_number);
f8eba3c6
TT
12318 else
12319 /* This is not ideal, but each location may have a
12320 different file name, and this at least reflects the
12321 real situation somewhat. */
f00aae0f 12322 printf_filtered (": %s.",
d28cd78a 12323 event_location_to_string (b->location.get ()));
f8eba3c6 12324 }
348d480f
PA
12325
12326 if (b->loc->next)
12327 {
12328 struct bp_location *loc = b->loc;
12329 int n = 0;
12330 for (; loc; loc = loc->next)
12331 ++n;
12332 printf_filtered (" (%d locations)", n);
12333 }
12334 }
12335}
12336
348d480f
PA
12337/* Default bp_location_ops methods. */
12338
12339static void
12340bp_location_dtor (struct bp_location *self)
12341{
348d480f
PA
12342 xfree (self->function_name);
12343}
12344
12345static const struct bp_location_ops bp_location_ops =
12346{
12347 bp_location_dtor
12348};
12349
c1fc2657 12350/* Destructor for the breakpoint base class. */
348d480f 12351
c1fc2657 12352breakpoint::~breakpoint ()
348d480f 12353{
c1fc2657
SM
12354 xfree (this->cond_string);
12355 xfree (this->extra_string);
12356 xfree (this->filter);
348d480f
PA
12357}
12358
2060206e
PA
12359static struct bp_location *
12360base_breakpoint_allocate_location (struct breakpoint *self)
348d480f 12361{
5625a286 12362 return new bp_location (&bp_location_ops, self);
348d480f
PA
12363}
12364
2060206e
PA
12365static void
12366base_breakpoint_re_set (struct breakpoint *b)
12367{
12368 /* Nothing to re-set. */
12369}
12370
12371#define internal_error_pure_virtual_called() \
12372 gdb_assert_not_reached ("pure virtual function called")
12373
12374static int
12375base_breakpoint_insert_location (struct bp_location *bl)
12376{
12377 internal_error_pure_virtual_called ();
12378}
12379
12380static int
73971819
PA
12381base_breakpoint_remove_location (struct bp_location *bl,
12382 enum remove_bp_reason reason)
2060206e
PA
12383{
12384 internal_error_pure_virtual_called ();
12385}
12386
12387static int
12388base_breakpoint_breakpoint_hit (const struct bp_location *bl,
bd522513 12389 const address_space *aspace,
09ac7c10
TT
12390 CORE_ADDR bp_addr,
12391 const struct target_waitstatus *ws)
2060206e
PA
12392{
12393 internal_error_pure_virtual_called ();
12394}
12395
12396static void
12397base_breakpoint_check_status (bpstat bs)
12398{
12399 /* Always stop. */
12400}
12401
12402/* A "works_in_software_mode" breakpoint_ops method that just internal
12403 errors. */
12404
12405static int
12406base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12407{
12408 internal_error_pure_virtual_called ();
12409}
12410
12411/* A "resources_needed" breakpoint_ops method that just internal
12412 errors. */
12413
12414static int
12415base_breakpoint_resources_needed (const struct bp_location *bl)
12416{
12417 internal_error_pure_virtual_called ();
12418}
12419
12420static enum print_stop_action
12421base_breakpoint_print_it (bpstat bs)
12422{
12423 internal_error_pure_virtual_called ();
12424}
12425
12426static void
12427base_breakpoint_print_one_detail (const struct breakpoint *self,
12428 struct ui_out *uiout)
12429{
12430 /* nothing */
12431}
12432
12433static void
12434base_breakpoint_print_mention (struct breakpoint *b)
12435{
12436 internal_error_pure_virtual_called ();
12437}
12438
12439static void
12440base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12441{
12442 internal_error_pure_virtual_called ();
12443}
12444
983af33b 12445static void
f00aae0f
KS
12446base_breakpoint_create_sals_from_location
12447 (const struct event_location *location,
12448 struct linespec_result *canonical,
12449 enum bptype type_wanted)
983af33b
SDJ
12450{
12451 internal_error_pure_virtual_called ();
12452}
12453
12454static void
12455base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12456 struct linespec_result *c,
e1e01040
PA
12457 gdb::unique_xmalloc_ptr<char> cond_string,
12458 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12459 enum bptype type_wanted,
12460 enum bpdisp disposition,
12461 int thread,
12462 int task, int ignore_count,
12463 const struct breakpoint_ops *o,
12464 int from_tty, int enabled,
44f238bb 12465 int internal, unsigned flags)
983af33b
SDJ
12466{
12467 internal_error_pure_virtual_called ();
12468}
12469
6c5b2ebe 12470static std::vector<symtab_and_line>
f00aae0f
KS
12471base_breakpoint_decode_location (struct breakpoint *b,
12472 const struct event_location *location,
6c5b2ebe 12473 struct program_space *search_pspace)
983af33b
SDJ
12474{
12475 internal_error_pure_virtual_called ();
12476}
12477
ab04a2af
TT
12478/* The default 'explains_signal' method. */
12479
47591c29 12480static int
427cd150 12481base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
ab04a2af 12482{
47591c29 12483 return 1;
ab04a2af
TT
12484}
12485
9d6e6e84
HZ
12486/* The default "after_condition_true" method. */
12487
12488static void
12489base_breakpoint_after_condition_true (struct bpstats *bs)
12490{
12491 /* Nothing to do. */
12492}
12493
ab04a2af 12494struct breakpoint_ops base_breakpoint_ops =
2060206e 12495{
2060206e
PA
12496 base_breakpoint_allocate_location,
12497 base_breakpoint_re_set,
12498 base_breakpoint_insert_location,
12499 base_breakpoint_remove_location,
12500 base_breakpoint_breakpoint_hit,
12501 base_breakpoint_check_status,
12502 base_breakpoint_resources_needed,
12503 base_breakpoint_works_in_software_mode,
12504 base_breakpoint_print_it,
12505 NULL,
12506 base_breakpoint_print_one_detail,
12507 base_breakpoint_print_mention,
983af33b 12508 base_breakpoint_print_recreate,
5f700d83 12509 base_breakpoint_create_sals_from_location,
983af33b 12510 base_breakpoint_create_breakpoints_sal,
5f700d83 12511 base_breakpoint_decode_location,
9d6e6e84
HZ
12512 base_breakpoint_explains_signal,
12513 base_breakpoint_after_condition_true,
2060206e
PA
12514};
12515
12516/* Default breakpoint_ops methods. */
12517
12518static void
348d480f
PA
12519bkpt_re_set (struct breakpoint *b)
12520{
06edf0c0 12521 /* FIXME: is this still reachable? */
9ef9e6a6 12522 if (breakpoint_event_location_empty_p (b))
06edf0c0 12523 {
f00aae0f 12524 /* Anything without a location can't be re-set. */
348d480f 12525 delete_breakpoint (b);
06edf0c0 12526 return;
348d480f 12527 }
06edf0c0
PA
12528
12529 breakpoint_re_set_default (b);
348d480f
PA
12530}
12531
2060206e 12532static int
348d480f
PA
12533bkpt_insert_location (struct bp_location *bl)
12534{
cd6c3b4f
YQ
12535 CORE_ADDR addr = bl->target_info.reqstd_address;
12536
579c6ad9 12537 bl->target_info.kind = breakpoint_kind (bl, &addr);
cd6c3b4f
YQ
12538 bl->target_info.placed_address = addr;
12539
348d480f 12540 if (bl->loc_type == bp_loc_hardware_breakpoint)
7c16b83e 12541 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
348d480f 12542 else
7c16b83e 12543 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
348d480f
PA
12544}
12545
2060206e 12546static int
73971819 12547bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
348d480f
PA
12548{
12549 if (bl->loc_type == bp_loc_hardware_breakpoint)
12550 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12551 else
73971819 12552 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
348d480f
PA
12553}
12554
2060206e 12555static int
348d480f 12556bkpt_breakpoint_hit (const struct bp_location *bl,
bd522513 12557 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 12558 const struct target_waitstatus *ws)
348d480f 12559{
09ac7c10 12560 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 12561 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
12562 return 0;
12563
348d480f
PA
12564 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12565 aspace, bp_addr))
12566 return 0;
12567
12568 if (overlay_debugging /* unmapped overlay section */
12569 && section_is_overlay (bl->section)
12570 && !section_is_mapped (bl->section))
12571 return 0;
12572
12573 return 1;
12574}
12575
cd1608cc
PA
12576static int
12577dprintf_breakpoint_hit (const struct bp_location *bl,
bd522513 12578 const address_space *aspace, CORE_ADDR bp_addr,
cd1608cc
PA
12579 const struct target_waitstatus *ws)
12580{
12581 if (dprintf_style == dprintf_style_agent
12582 && target_can_run_breakpoint_commands ())
12583 {
12584 /* An agent-style dprintf never causes a stop. If we see a trap
12585 for this address it must be for a breakpoint that happens to
12586 be set at the same address. */
12587 return 0;
12588 }
12589
12590 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12591}
12592
2060206e 12593static int
348d480f
PA
12594bkpt_resources_needed (const struct bp_location *bl)
12595{
12596 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12597
12598 return 1;
12599}
12600
2060206e 12601static enum print_stop_action
348d480f
PA
12602bkpt_print_it (bpstat bs)
12603{
348d480f
PA
12604 struct breakpoint *b;
12605 const struct bp_location *bl;
001c8c33 12606 int bp_temp;
79a45e25 12607 struct ui_out *uiout = current_uiout;
348d480f
PA
12608
12609 gdb_assert (bs->bp_location_at != NULL);
12610
12611 bl = bs->bp_location_at;
12612 b = bs->breakpoint_at;
12613
001c8c33
PA
12614 bp_temp = b->disposition == disp_del;
12615 if (bl->address != bl->requested_address)
12616 breakpoint_adjustment_warning (bl->requested_address,
12617 bl->address,
12618 b->number, 1);
12619 annotate_breakpoint (b->number);
f303dbd6
PA
12620 maybe_print_thread_hit_breakpoint (uiout);
12621
001c8c33 12622 if (bp_temp)
112e8700 12623 uiout->text ("Temporary breakpoint ");
001c8c33 12624 else
112e8700
SM
12625 uiout->text ("Breakpoint ");
12626 if (uiout->is_mi_like_p ())
348d480f 12627 {
112e8700 12628 uiout->field_string ("reason",
001c8c33 12629 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 12630 uiout->field_string ("disp", bpdisp_text (b->disposition));
06edf0c0 12631 }
112e8700
SM
12632 uiout->field_int ("bkptno", b->number);
12633 uiout->text (", ");
06edf0c0 12634
001c8c33 12635 return PRINT_SRC_AND_LOC;
06edf0c0
PA
12636}
12637
2060206e 12638static void
06edf0c0
PA
12639bkpt_print_mention (struct breakpoint *b)
12640{
112e8700 12641 if (current_uiout->is_mi_like_p ())
06edf0c0
PA
12642 return;
12643
12644 switch (b->type)
12645 {
12646 case bp_breakpoint:
12647 case bp_gnu_ifunc_resolver:
12648 if (b->disposition == disp_del)
12649 printf_filtered (_("Temporary breakpoint"));
12650 else
12651 printf_filtered (_("Breakpoint"));
12652 printf_filtered (_(" %d"), b->number);
12653 if (b->type == bp_gnu_ifunc_resolver)
12654 printf_filtered (_(" at gnu-indirect-function resolver"));
12655 break;
12656 case bp_hardware_breakpoint:
12657 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12658 break;
e7e0cddf
SS
12659 case bp_dprintf:
12660 printf_filtered (_("Dprintf %d"), b->number);
12661 break;
06edf0c0
PA
12662 }
12663
12664 say_where (b);
12665}
12666
2060206e 12667static void
06edf0c0
PA
12668bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12669{
12670 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12671 fprintf_unfiltered (fp, "tbreak");
12672 else if (tp->type == bp_breakpoint)
12673 fprintf_unfiltered (fp, "break");
12674 else if (tp->type == bp_hardware_breakpoint
12675 && tp->disposition == disp_del)
12676 fprintf_unfiltered (fp, "thbreak");
12677 else if (tp->type == bp_hardware_breakpoint)
12678 fprintf_unfiltered (fp, "hbreak");
12679 else
12680 internal_error (__FILE__, __LINE__,
12681 _("unhandled breakpoint type %d"), (int) tp->type);
12682
f00aae0f 12683 fprintf_unfiltered (fp, " %s",
d28cd78a 12684 event_location_to_string (tp->location.get ()));
f00aae0f
KS
12685
12686 /* Print out extra_string if this breakpoint is pending. It might
12687 contain, for example, conditions that were set by the user. */
12688 if (tp->loc == NULL && tp->extra_string != NULL)
12689 fprintf_unfiltered (fp, " %s", tp->extra_string);
12690
dd11a36c 12691 print_recreate_thread (tp, fp);
06edf0c0
PA
12692}
12693
983af33b 12694static void
f00aae0f
KS
12695bkpt_create_sals_from_location (const struct event_location *location,
12696 struct linespec_result *canonical,
12697 enum bptype type_wanted)
983af33b 12698{
f00aae0f 12699 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
12700}
12701
12702static void
12703bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12704 struct linespec_result *canonical,
e1e01040
PA
12705 gdb::unique_xmalloc_ptr<char> cond_string,
12706 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12707 enum bptype type_wanted,
12708 enum bpdisp disposition,
12709 int thread,
12710 int task, int ignore_count,
12711 const struct breakpoint_ops *ops,
12712 int from_tty, int enabled,
44f238bb 12713 int internal, unsigned flags)
983af33b 12714{
023fa29b 12715 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
12716 std::move (cond_string),
12717 std::move (extra_string),
e7e0cddf 12718 type_wanted,
983af33b
SDJ
12719 disposition, thread, task,
12720 ignore_count, ops, from_tty,
44f238bb 12721 enabled, internal, flags);
983af33b
SDJ
12722}
12723
6c5b2ebe 12724static std::vector<symtab_and_line>
f00aae0f
KS
12725bkpt_decode_location (struct breakpoint *b,
12726 const struct event_location *location,
6c5b2ebe 12727 struct program_space *search_pspace)
983af33b 12728{
6c5b2ebe 12729 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
12730}
12731
06edf0c0
PA
12732/* Virtual table for internal breakpoints. */
12733
12734static void
12735internal_bkpt_re_set (struct breakpoint *b)
12736{
12737 switch (b->type)
12738 {
12739 /* Delete overlay event and longjmp master breakpoints; they
12740 will be reset later by breakpoint_re_set. */
12741 case bp_overlay_event:
12742 case bp_longjmp_master:
12743 case bp_std_terminate_master:
12744 case bp_exception_master:
12745 delete_breakpoint (b);
12746 break;
12747
12748 /* This breakpoint is special, it's set up when the inferior
12749 starts and we really don't want to touch it. */
12750 case bp_shlib_event:
12751
12752 /* Like bp_shlib_event, this breakpoint type is special. Once
12753 it is set up, we do not want to touch it. */
12754 case bp_thread_event:
12755 break;
12756 }
12757}
12758
12759static void
12760internal_bkpt_check_status (bpstat bs)
12761{
a9b3a50f
PA
12762 if (bs->breakpoint_at->type == bp_shlib_event)
12763 {
12764 /* If requested, stop when the dynamic linker notifies GDB of
12765 events. This allows the user to get control and place
12766 breakpoints in initializer routines for dynamically loaded
12767 objects (among other things). */
12768 bs->stop = stop_on_solib_events;
12769 bs->print = stop_on_solib_events;
12770 }
12771 else
12772 bs->stop = 0;
06edf0c0
PA
12773}
12774
12775static enum print_stop_action
12776internal_bkpt_print_it (bpstat bs)
12777{
06edf0c0 12778 struct breakpoint *b;
06edf0c0 12779
06edf0c0
PA
12780 b = bs->breakpoint_at;
12781
06edf0c0
PA
12782 switch (b->type)
12783 {
348d480f
PA
12784 case bp_shlib_event:
12785 /* Did we stop because the user set the stop_on_solib_events
12786 variable? (If so, we report this as a generic, "Stopped due
12787 to shlib event" message.) */
edcc5120 12788 print_solib_event (0);
348d480f
PA
12789 break;
12790
12791 case bp_thread_event:
12792 /* Not sure how we will get here.
12793 GDB should not stop for these breakpoints. */
12794 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
12795 break;
12796
12797 case bp_overlay_event:
12798 /* By analogy with the thread event, GDB should not stop for these. */
12799 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
12800 break;
12801
12802 case bp_longjmp_master:
12803 /* These should never be enabled. */
12804 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
348d480f
PA
12805 break;
12806
12807 case bp_std_terminate_master:
12808 /* These should never be enabled. */
12809 printf_filtered (_("std::terminate Master Breakpoint: "
12810 "gdb should not stop!\n"));
348d480f
PA
12811 break;
12812
12813 case bp_exception_master:
12814 /* These should never be enabled. */
12815 printf_filtered (_("Exception Master Breakpoint: "
12816 "gdb should not stop!\n"));
06edf0c0
PA
12817 break;
12818 }
12819
001c8c33 12820 return PRINT_NOTHING;
06edf0c0
PA
12821}
12822
12823static void
12824internal_bkpt_print_mention (struct breakpoint *b)
12825{
12826 /* Nothing to mention. These breakpoints are internal. */
12827}
12828
06edf0c0
PA
12829/* Virtual table for momentary breakpoints */
12830
12831static void
12832momentary_bkpt_re_set (struct breakpoint *b)
12833{
12834 /* Keep temporary breakpoints, which can be encountered when we step
4d1eb6b4 12835 over a dlopen call and solib_add is resetting the breakpoints.
06edf0c0
PA
12836 Otherwise these should have been blown away via the cleanup chain
12837 or by breakpoint_init_inferior when we rerun the executable. */
12838}
12839
12840static void
12841momentary_bkpt_check_status (bpstat bs)
12842{
12843 /* Nothing. The point of these breakpoints is causing a stop. */
12844}
12845
12846static enum print_stop_action
12847momentary_bkpt_print_it (bpstat bs)
12848{
001c8c33 12849 return PRINT_UNKNOWN;
348d480f
PA
12850}
12851
06edf0c0
PA
12852static void
12853momentary_bkpt_print_mention (struct breakpoint *b)
348d480f 12854{
06edf0c0 12855 /* Nothing to mention. These breakpoints are internal. */
348d480f
PA
12856}
12857
e2e4d78b
JK
12858/* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12859
12860 It gets cleared already on the removal of the first one of such placed
12861 breakpoints. This is OK as they get all removed altogether. */
12862
c1fc2657 12863longjmp_breakpoint::~longjmp_breakpoint ()
e2e4d78b 12864{
c1fc2657 12865 thread_info *tp = find_thread_global_id (this->thread);
e2e4d78b 12866
c1fc2657 12867 if (tp != NULL)
e2e4d78b 12868 tp->initiating_frame = null_frame_id;
e2e4d78b
JK
12869}
12870
55aa24fb
SDJ
12871/* Specific methods for probe breakpoints. */
12872
12873static int
12874bkpt_probe_insert_location (struct bp_location *bl)
12875{
12876 int v = bkpt_insert_location (bl);
12877
12878 if (v == 0)
12879 {
12880 /* The insertion was successful, now let's set the probe's semaphore
12881 if needed. */
0ea5cda8
SDJ
12882 if (bl->probe.probe->pops->set_semaphore != NULL)
12883 bl->probe.probe->pops->set_semaphore (bl->probe.probe,
12884 bl->probe.objfile,
12885 bl->gdbarch);
55aa24fb
SDJ
12886 }
12887
12888 return v;
12889}
12890
12891static int
73971819
PA
12892bkpt_probe_remove_location (struct bp_location *bl,
12893 enum remove_bp_reason reason)
55aa24fb
SDJ
12894{
12895 /* Let's clear the semaphore before removing the location. */
0ea5cda8
SDJ
12896 if (bl->probe.probe->pops->clear_semaphore != NULL)
12897 bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
12898 bl->probe.objfile,
12899 bl->gdbarch);
55aa24fb 12900
73971819 12901 return bkpt_remove_location (bl, reason);
55aa24fb
SDJ
12902}
12903
12904static void
f00aae0f 12905bkpt_probe_create_sals_from_location (const struct event_location *location,
5f700d83 12906 struct linespec_result *canonical,
f00aae0f 12907 enum bptype type_wanted)
55aa24fb
SDJ
12908{
12909 struct linespec_sals lsal;
12910
c2f4122d 12911 lsal.sals = parse_probes (location, NULL, canonical);
8e9e35b1
TT
12912 lsal.canonical
12913 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 12914 canonical->lsals.push_back (std::move (lsal));
55aa24fb
SDJ
12915}
12916
6c5b2ebe 12917static std::vector<symtab_and_line>
f00aae0f
KS
12918bkpt_probe_decode_location (struct breakpoint *b,
12919 const struct event_location *location,
6c5b2ebe 12920 struct program_space *search_pspace)
55aa24fb 12921{
6c5b2ebe
PA
12922 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12923 if (sals.empty ())
55aa24fb 12924 error (_("probe not found"));
6c5b2ebe 12925 return sals;
55aa24fb
SDJ
12926}
12927
348d480f 12928/* The breakpoint_ops structure to be used in tracepoints. */
876fa593 12929
348d480f
PA
12930static void
12931tracepoint_re_set (struct breakpoint *b)
12932{
12933 breakpoint_re_set_default (b);
12934}
876fa593 12935
348d480f
PA
12936static int
12937tracepoint_breakpoint_hit (const struct bp_location *bl,
bd522513 12938 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 12939 const struct target_waitstatus *ws)
348d480f
PA
12940{
12941 /* By definition, the inferior does not report stops at
12942 tracepoints. */
12943 return 0;
74960c60
VP
12944}
12945
12946static void
348d480f
PA
12947tracepoint_print_one_detail (const struct breakpoint *self,
12948 struct ui_out *uiout)
74960c60 12949{
d9b3f62e
PA
12950 struct tracepoint *tp = (struct tracepoint *) self;
12951 if (tp->static_trace_marker_id)
348d480f
PA
12952 {
12953 gdb_assert (self->type == bp_static_tracepoint);
cc59ec59 12954
112e8700
SM
12955 uiout->text ("\tmarker id is ");
12956 uiout->field_string ("static-tracepoint-marker-string-id",
d9b3f62e 12957 tp->static_trace_marker_id);
112e8700 12958 uiout->text ("\n");
348d480f 12959 }
0d381245
VP
12960}
12961
a474d7c2 12962static void
348d480f 12963tracepoint_print_mention (struct breakpoint *b)
a474d7c2 12964{
112e8700 12965 if (current_uiout->is_mi_like_p ())
348d480f 12966 return;
cc59ec59 12967
348d480f
PA
12968 switch (b->type)
12969 {
12970 case bp_tracepoint:
12971 printf_filtered (_("Tracepoint"));
12972 printf_filtered (_(" %d"), b->number);
12973 break;
12974 case bp_fast_tracepoint:
12975 printf_filtered (_("Fast tracepoint"));
12976 printf_filtered (_(" %d"), b->number);
12977 break;
12978 case bp_static_tracepoint:
12979 printf_filtered (_("Static tracepoint"));
12980 printf_filtered (_(" %d"), b->number);
12981 break;
12982 default:
12983 internal_error (__FILE__, __LINE__,
12984 _("unhandled tracepoint type %d"), (int) b->type);
12985 }
12986
12987 say_where (b);
a474d7c2
PA
12988}
12989
348d480f 12990static void
d9b3f62e 12991tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
a474d7c2 12992{
d9b3f62e
PA
12993 struct tracepoint *tp = (struct tracepoint *) self;
12994
12995 if (self->type == bp_fast_tracepoint)
348d480f 12996 fprintf_unfiltered (fp, "ftrace");
c93e8391 12997 else if (self->type == bp_static_tracepoint)
348d480f 12998 fprintf_unfiltered (fp, "strace");
d9b3f62e 12999 else if (self->type == bp_tracepoint)
348d480f
PA
13000 fprintf_unfiltered (fp, "trace");
13001 else
13002 internal_error (__FILE__, __LINE__,
d9b3f62e 13003 _("unhandled tracepoint type %d"), (int) self->type);
cc59ec59 13004
f00aae0f 13005 fprintf_unfiltered (fp, " %s",
d28cd78a 13006 event_location_to_string (self->location.get ()));
d9b3f62e
PA
13007 print_recreate_thread (self, fp);
13008
13009 if (tp->pass_count)
13010 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
a474d7c2
PA
13011}
13012
983af33b 13013static void
f00aae0f
KS
13014tracepoint_create_sals_from_location (const struct event_location *location,
13015 struct linespec_result *canonical,
13016 enum bptype type_wanted)
983af33b 13017{
f00aae0f 13018 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
13019}
13020
13021static void
13022tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13023 struct linespec_result *canonical,
e1e01040
PA
13024 gdb::unique_xmalloc_ptr<char> cond_string,
13025 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13026 enum bptype type_wanted,
13027 enum bpdisp disposition,
13028 int thread,
13029 int task, int ignore_count,
13030 const struct breakpoint_ops *ops,
13031 int from_tty, int enabled,
44f238bb 13032 int internal, unsigned flags)
983af33b 13033{
023fa29b 13034 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
13035 std::move (cond_string),
13036 std::move (extra_string),
e7e0cddf 13037 type_wanted,
983af33b
SDJ
13038 disposition, thread, task,
13039 ignore_count, ops, from_tty,
44f238bb 13040 enabled, internal, flags);
983af33b
SDJ
13041}
13042
6c5b2ebe 13043static std::vector<symtab_and_line>
f00aae0f
KS
13044tracepoint_decode_location (struct breakpoint *b,
13045 const struct event_location *location,
6c5b2ebe 13046 struct program_space *search_pspace)
983af33b 13047{
6c5b2ebe 13048 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
13049}
13050
2060206e 13051struct breakpoint_ops tracepoint_breakpoint_ops;
348d480f 13052
55aa24fb
SDJ
13053/* The breakpoint_ops structure to be use on tracepoints placed in a
13054 static probe. */
13055
13056static void
f00aae0f
KS
13057tracepoint_probe_create_sals_from_location
13058 (const struct event_location *location,
13059 struct linespec_result *canonical,
13060 enum bptype type_wanted)
55aa24fb
SDJ
13061{
13062 /* We use the same method for breakpoint on probes. */
f00aae0f 13063 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
55aa24fb
SDJ
13064}
13065
6c5b2ebe 13066static std::vector<symtab_and_line>
f00aae0f
KS
13067tracepoint_probe_decode_location (struct breakpoint *b,
13068 const struct event_location *location,
6c5b2ebe 13069 struct program_space *search_pspace)
55aa24fb
SDJ
13070{
13071 /* We use the same method for breakpoint on probes. */
6c5b2ebe 13072 return bkpt_probe_decode_location (b, location, search_pspace);
55aa24fb
SDJ
13073}
13074
13075static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13076
5c2b4418
HZ
13077/* Dprintf breakpoint_ops methods. */
13078
13079static void
13080dprintf_re_set (struct breakpoint *b)
13081{
13082 breakpoint_re_set_default (b);
13083
f00aae0f
KS
13084 /* extra_string should never be non-NULL for dprintf. */
13085 gdb_assert (b->extra_string != NULL);
5c2b4418
HZ
13086
13087 /* 1 - connect to target 1, that can run breakpoint commands.
13088 2 - create a dprintf, which resolves fine.
13089 3 - disconnect from target 1
13090 4 - connect to target 2, that can NOT run breakpoint commands.
13091
13092 After steps #3/#4, you'll want the dprintf command list to
13093 be updated, because target 1 and 2 may well return different
13094 answers for target_can_run_breakpoint_commands().
13095 Given absence of finer grained resetting, we get to do
13096 it all the time. */
13097 if (b->extra_string != NULL)
13098 update_dprintf_command_list (b);
13099}
13100
2d9442cc
HZ
13101/* Implement the "print_recreate" breakpoint_ops method for dprintf. */
13102
13103static void
13104dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13105{
f00aae0f 13106 fprintf_unfiltered (fp, "dprintf %s,%s",
d28cd78a 13107 event_location_to_string (tp->location.get ()),
2d9442cc
HZ
13108 tp->extra_string);
13109 print_recreate_thread (tp, fp);
13110}
13111
9d6e6e84
HZ
13112/* Implement the "after_condition_true" breakpoint_ops method for
13113 dprintf.
13114
13115 dprintf's are implemented with regular commands in their command
13116 list, but we run the commands here instead of before presenting the
13117 stop to the user, as dprintf's don't actually cause a stop. This
13118 also makes it so that the commands of multiple dprintfs at the same
13119 address are all handled. */
13120
13121static void
13122dprintf_after_condition_true (struct bpstats *bs)
13123{
04afa70c 13124 struct bpstats tmp_bs;
9d6e6e84
HZ
13125 struct bpstats *tmp_bs_p = &tmp_bs;
13126
13127 /* dprintf's never cause a stop. This wasn't set in the
13128 check_status hook instead because that would make the dprintf's
13129 condition not be evaluated. */
13130 bs->stop = 0;
13131
13132 /* Run the command list here. Take ownership of it instead of
13133 copying. We never want these commands to run later in
13134 bpstat_do_actions, if a breakpoint that causes a stop happens to
13135 be set at same address as this dprintf, or even if running the
13136 commands here throws. */
13137 tmp_bs.commands = bs->commands;
13138 bs->commands = NULL;
9d6e6e84
HZ
13139
13140 bpstat_do_actions_1 (&tmp_bs_p);
13141
13142 /* 'tmp_bs.commands' will usually be NULL by now, but
13143 bpstat_do_actions_1 may return early without processing the whole
13144 list. */
9d6e6e84
HZ
13145}
13146
983af33b
SDJ
13147/* The breakpoint_ops structure to be used on static tracepoints with
13148 markers (`-m'). */
13149
13150static void
f00aae0f 13151strace_marker_create_sals_from_location (const struct event_location *location,
5f700d83 13152 struct linespec_result *canonical,
f00aae0f 13153 enum bptype type_wanted)
983af33b
SDJ
13154{
13155 struct linespec_sals lsal;
f00aae0f 13156 const char *arg_start, *arg;
983af33b 13157
f00aae0f
KS
13158 arg = arg_start = get_linespec_location (location);
13159 lsal.sals = decode_static_tracepoint_spec (&arg);
983af33b 13160
f2fc3015
TT
13161 std::string str (arg_start, arg - arg_start);
13162 const char *ptr = str.c_str ();
13163 canonical->location = new_linespec_location (&ptr);
983af33b 13164
8e9e35b1
TT
13165 lsal.canonical
13166 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 13167 canonical->lsals.push_back (std::move (lsal));
983af33b
SDJ
13168}
13169
13170static void
13171strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13172 struct linespec_result *canonical,
e1e01040
PA
13173 gdb::unique_xmalloc_ptr<char> cond_string,
13174 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13175 enum bptype type_wanted,
13176 enum bpdisp disposition,
13177 int thread,
13178 int task, int ignore_count,
13179 const struct breakpoint_ops *ops,
13180 int from_tty, int enabled,
44f238bb 13181 int internal, unsigned flags)
983af33b 13182{
6c5b2ebe 13183 const linespec_sals &lsal = canonical->lsals[0];
983af33b
SDJ
13184
13185 /* If the user is creating a static tracepoint by marker id
13186 (strace -m MARKER_ID), then store the sals index, so that
13187 breakpoint_re_set can try to match up which of the newly
13188 found markers corresponds to this one, and, don't try to
13189 expand multiple locations for each sal, given than SALS
13190 already should contain all sals for MARKER_ID. */
13191
6c5b2ebe 13192 for (size_t i = 0; i < lsal.sals.size (); i++)
983af33b 13193 {
6c5b2ebe
PA
13194 event_location_up location
13195 = copy_event_location (canonical->location.get ());
983af33b 13196
b270e6f9 13197 std::unique_ptr<tracepoint> tp (new tracepoint ());
6c5b2ebe 13198 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
ffc2605c 13199 std::move (location), NULL,
e1e01040
PA
13200 std::move (cond_string),
13201 std::move (extra_string),
e7e0cddf 13202 type_wanted, disposition,
983af33b 13203 thread, task, ignore_count, ops,
44f238bb 13204 from_tty, enabled, internal, flags,
983af33b
SDJ
13205 canonical->special_display);
13206 /* Given that its possible to have multiple markers with
13207 the same string id, if the user is creating a static
13208 tracepoint by marker id ("strace -m MARKER_ID"), then
13209 store the sals index, so that breakpoint_re_set can
13210 try to match up which of the newly found markers
13211 corresponds to this one */
13212 tp->static_trace_marker_id_idx = i;
13213
b270e6f9 13214 install_breakpoint (internal, std::move (tp), 0);
983af33b
SDJ
13215 }
13216}
13217
6c5b2ebe 13218static std::vector<symtab_and_line>
f00aae0f
KS
13219strace_marker_decode_location (struct breakpoint *b,
13220 const struct event_location *location,
6c5b2ebe 13221 struct program_space *search_pspace)
983af33b
SDJ
13222{
13223 struct tracepoint *tp = (struct tracepoint *) b;
f00aae0f 13224 const char *s = get_linespec_location (location);
983af33b 13225
6c5b2ebe
PA
13226 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13227 if (sals.size () > tp->static_trace_marker_id_idx)
983af33b 13228 {
6c5b2ebe
PA
13229 sals[0] = sals[tp->static_trace_marker_id_idx];
13230 sals.resize (1);
13231 return sals;
983af33b
SDJ
13232 }
13233 else
13234 error (_("marker %s not found"), tp->static_trace_marker_id);
13235}
13236
13237static struct breakpoint_ops strace_marker_breakpoint_ops;
13238
13239static int
13240strace_marker_p (struct breakpoint *b)
13241{
13242 return b->ops == &strace_marker_breakpoint_ops;
13243}
13244
53a5351d 13245/* Delete a breakpoint and clean up all traces of it in the data
f431efe5 13246 structures. */
c906108c
SS
13247
13248void
fba45db2 13249delete_breakpoint (struct breakpoint *bpt)
c906108c 13250{
52f0bd74 13251 struct breakpoint *b;
c906108c 13252
8a3fe4f8 13253 gdb_assert (bpt != NULL);
c906108c 13254
4a64f543
MS
13255 /* Has this bp already been deleted? This can happen because
13256 multiple lists can hold pointers to bp's. bpstat lists are
13257 especial culprits.
13258
13259 One example of this happening is a watchpoint's scope bp. When
13260 the scope bp triggers, we notice that the watchpoint is out of
13261 scope, and delete it. We also delete its scope bp. But the
13262 scope bp is marked "auto-deleting", and is already on a bpstat.
13263 That bpstat is then checked for auto-deleting bp's, which are
13264 deleted.
13265
13266 A real solution to this problem might involve reference counts in
13267 bp's, and/or giving them pointers back to their referencing
13268 bpstat's, and teaching delete_breakpoint to only free a bp's
13269 storage when no more references were extent. A cheaper bandaid
13270 was chosen. */
c906108c
SS
13271 if (bpt->type == bp_none)
13272 return;
13273
4a64f543
MS
13274 /* At least avoid this stale reference until the reference counting
13275 of breakpoints gets resolved. */
d0fb5eae 13276 if (bpt->related_breakpoint != bpt)
e5a0a904 13277 {
d0fb5eae 13278 struct breakpoint *related;
3a5c3e22 13279 struct watchpoint *w;
d0fb5eae
JK
13280
13281 if (bpt->type == bp_watchpoint_scope)
3a5c3e22 13282 w = (struct watchpoint *) bpt->related_breakpoint;
d0fb5eae 13283 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
3a5c3e22
PA
13284 w = (struct watchpoint *) bpt;
13285 else
13286 w = NULL;
13287 if (w != NULL)
13288 watchpoint_del_at_next_stop (w);
d0fb5eae
JK
13289
13290 /* Unlink bpt from the bpt->related_breakpoint ring. */
13291 for (related = bpt; related->related_breakpoint != bpt;
13292 related = related->related_breakpoint);
13293 related->related_breakpoint = bpt->related_breakpoint;
13294 bpt->related_breakpoint = bpt;
e5a0a904
JK
13295 }
13296
a9634178
TJB
13297 /* watch_command_1 creates a watchpoint but only sets its number if
13298 update_watchpoint succeeds in creating its bp_locations. If there's
13299 a problem in that process, we'll be asked to delete the half-created
13300 watchpoint. In that case, don't announce the deletion. */
13301 if (bpt->number)
13302 observer_notify_breakpoint_deleted (bpt);
c906108c 13303
c906108c
SS
13304 if (breakpoint_chain == bpt)
13305 breakpoint_chain = bpt->next;
13306
c906108c
SS
13307 ALL_BREAKPOINTS (b)
13308 if (b->next == bpt)
c5aa993b
JM
13309 {
13310 b->next = bpt->next;
13311 break;
13312 }
c906108c 13313
f431efe5
PA
13314 /* Be sure no bpstat's are pointing at the breakpoint after it's
13315 been freed. */
13316 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
e5dd4106 13317 in all threads for now. Note that we cannot just remove bpstats
f431efe5
PA
13318 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13319 commands are associated with the bpstat; if we remove it here,
13320 then the later call to bpstat_do_actions (&stop_bpstat); in
13321 event-top.c won't do anything, and temporary breakpoints with
13322 commands won't work. */
13323
13324 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13325
4a64f543
MS
13326 /* Now that breakpoint is removed from breakpoint list, update the
13327 global location list. This will remove locations that used to
13328 belong to this breakpoint. Do this before freeing the breakpoint
13329 itself, since remove_breakpoint looks at location's owner. It
13330 might be better design to have location completely
13331 self-contained, but it's not the case now. */
44702360 13332 update_global_location_list (UGLL_DONT_INSERT);
74960c60 13333
4a64f543
MS
13334 /* On the chance that someone will soon try again to delete this
13335 same bp, we mark it as deleted before freeing its storage. */
c906108c 13336 bpt->type = bp_none;
4d01a485 13337 delete bpt;
c906108c
SS
13338}
13339
51be5b68
PA
13340/* Iterator function to call a user-provided callback function once
13341 for each of B and its related breakpoints. */
13342
13343static void
13344iterate_over_related_breakpoints (struct breakpoint *b,
48649e1b 13345 gdb::function_view<void (breakpoint *)> function)
51be5b68
PA
13346{
13347 struct breakpoint *related;
13348
13349 related = b;
13350 do
13351 {
13352 struct breakpoint *next;
13353
13354 /* FUNCTION may delete RELATED. */
13355 next = related->related_breakpoint;
13356
13357 if (next == related)
13358 {
13359 /* RELATED is the last ring entry. */
48649e1b 13360 function (related);
51be5b68
PA
13361
13362 /* FUNCTION may have deleted it, so we'd never reach back to
13363 B. There's nothing left to do anyway, so just break
13364 out. */
13365 break;
13366 }
13367 else
48649e1b 13368 function (related);
51be5b68
PA
13369
13370 related = next;
13371 }
13372 while (related != b);
13373}
95a42b64 13374
4495129a 13375static void
981a3fb3 13376delete_command (const char *arg, int from_tty)
c906108c 13377{
35df4500 13378 struct breakpoint *b, *b_tmp;
c906108c 13379
ea9365bb
TT
13380 dont_repeat ();
13381
c906108c
SS
13382 if (arg == 0)
13383 {
13384 int breaks_to_delete = 0;
13385
46c6471b
PA
13386 /* Delete all breakpoints if no argument. Do not delete
13387 internal breakpoints, these have to be deleted with an
13388 explicit breakpoint number argument. */
c5aa993b 13389 ALL_BREAKPOINTS (b)
46c6471b 13390 if (user_breakpoint_p (b))
973d738b
DJ
13391 {
13392 breaks_to_delete = 1;
13393 break;
13394 }
c906108c
SS
13395
13396 /* Ask user only if there are some breakpoints to delete. */
13397 if (!from_tty
e2e0b3e5 13398 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
c906108c 13399 {
35df4500 13400 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 13401 if (user_breakpoint_p (b))
c5aa993b 13402 delete_breakpoint (b);
c906108c
SS
13403 }
13404 }
13405 else
48649e1b
TT
13406 map_breakpoint_numbers
13407 (arg, [&] (breakpoint *b)
13408 {
13409 iterate_over_related_breakpoints (b, delete_breakpoint);
13410 });
c906108c
SS
13411}
13412
c2f4122d
PA
13413/* Return true if all locations of B bound to PSPACE are pending. If
13414 PSPACE is NULL, all locations of all program spaces are
13415 considered. */
13416
0d381245 13417static int
c2f4122d 13418all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
fe3f5fa8 13419{
c2f4122d
PA
13420 struct bp_location *loc;
13421
13422 for (loc = b->loc; loc != NULL; loc = loc->next)
13423 if ((pspace == NULL
13424 || loc->pspace == pspace)
13425 && !loc->shlib_disabled
8645ff69 13426 && !loc->pspace->executing_startup)
0d381245
VP
13427 return 0;
13428 return 1;
fe3f5fa8
VP
13429}
13430
776592bf
DE
13431/* Subroutine of update_breakpoint_locations to simplify it.
13432 Return non-zero if multiple fns in list LOC have the same name.
13433 Null names are ignored. */
13434
13435static int
13436ambiguous_names_p (struct bp_location *loc)
13437{
13438 struct bp_location *l;
13439 htab_t htab = htab_create_alloc (13, htab_hash_string,
cc59ec59
MS
13440 (int (*) (const void *,
13441 const void *)) streq,
776592bf
DE
13442 NULL, xcalloc, xfree);
13443
13444 for (l = loc; l != NULL; l = l->next)
13445 {
13446 const char **slot;
13447 const char *name = l->function_name;
13448
13449 /* Allow for some names to be NULL, ignore them. */
13450 if (name == NULL)
13451 continue;
13452
13453 slot = (const char **) htab_find_slot (htab, (const void *) name,
13454 INSERT);
4a64f543
MS
13455 /* NOTE: We can assume slot != NULL here because xcalloc never
13456 returns NULL. */
776592bf
DE
13457 if (*slot != NULL)
13458 {
13459 htab_delete (htab);
13460 return 1;
13461 }
13462 *slot = name;
13463 }
13464
13465 htab_delete (htab);
13466 return 0;
13467}
13468
0fb4aa4b
PA
13469/* When symbols change, it probably means the sources changed as well,
13470 and it might mean the static tracepoint markers are no longer at
13471 the same address or line numbers they used to be at last we
13472 checked. Losing your static tracepoints whenever you rebuild is
13473 undesirable. This function tries to resync/rematch gdb static
13474 tracepoints with the markers on the target, for static tracepoints
13475 that have not been set by marker id. Static tracepoint that have
13476 been set by marker id are reset by marker id in breakpoint_re_set.
13477 The heuristic is:
13478
13479 1) For a tracepoint set at a specific address, look for a marker at
13480 the old PC. If one is found there, assume to be the same marker.
13481 If the name / string id of the marker found is different from the
13482 previous known name, assume that means the user renamed the marker
13483 in the sources, and output a warning.
13484
13485 2) For a tracepoint set at a given line number, look for a marker
13486 at the new address of the old line number. If one is found there,
13487 assume to be the same marker. If the name / string id of the
13488 marker found is different from the previous known name, assume that
13489 means the user renamed the marker in the sources, and output a
13490 warning.
13491
13492 3) If a marker is no longer found at the same address or line, it
13493 may mean the marker no longer exists. But it may also just mean
13494 the code changed a bit. Maybe the user added a few lines of code
13495 that made the marker move up or down (in line number terms). Ask
13496 the target for info about the marker with the string id as we knew
13497 it. If found, update line number and address in the matching
13498 static tracepoint. This will get confused if there's more than one
13499 marker with the same ID (possible in UST, although unadvised
13500 precisely because it confuses tools). */
13501
13502static struct symtab_and_line
13503update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13504{
d9b3f62e 13505 struct tracepoint *tp = (struct tracepoint *) b;
0fb4aa4b
PA
13506 struct static_tracepoint_marker marker;
13507 CORE_ADDR pc;
0fb4aa4b
PA
13508
13509 pc = sal.pc;
13510 if (sal.line)
13511 find_line_pc (sal.symtab, sal.line, &pc);
13512
13513 if (target_static_tracepoint_marker_at (pc, &marker))
13514 {
d9b3f62e 13515 if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
0fb4aa4b
PA
13516 warning (_("static tracepoint %d changed probed marker from %s to %s"),
13517 b->number,
d9b3f62e 13518 tp->static_trace_marker_id, marker.str_id);
0fb4aa4b 13519
d9b3f62e
PA
13520 xfree (tp->static_trace_marker_id);
13521 tp->static_trace_marker_id = xstrdup (marker.str_id);
0fb4aa4b
PA
13522 release_static_tracepoint_marker (&marker);
13523
13524 return sal;
13525 }
13526
13527 /* Old marker wasn't found on target at lineno. Try looking it up
13528 by string ID. */
13529 if (!sal.explicit_pc
13530 && sal.line != 0
13531 && sal.symtab != NULL
d9b3f62e 13532 && tp->static_trace_marker_id != NULL)
0fb4aa4b
PA
13533 {
13534 VEC(static_tracepoint_marker_p) *markers;
13535
13536 markers
d9b3f62e 13537 = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
0fb4aa4b
PA
13538
13539 if (!VEC_empty(static_tracepoint_marker_p, markers))
13540 {
0fb4aa4b 13541 struct symbol *sym;
80e1d417 13542 struct static_tracepoint_marker *tpmarker;
79a45e25 13543 struct ui_out *uiout = current_uiout;
67994074 13544 struct explicit_location explicit_loc;
0fb4aa4b 13545
80e1d417 13546 tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
0fb4aa4b 13547
d9b3f62e 13548 xfree (tp->static_trace_marker_id);
80e1d417 13549 tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
0fb4aa4b
PA
13550
13551 warning (_("marker for static tracepoint %d (%s) not "
13552 "found at previous line number"),
d9b3f62e 13553 b->number, tp->static_trace_marker_id);
0fb4aa4b 13554
51abb421 13555 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
80e1d417 13556 sym = find_pc_sect_function (tpmarker->address, NULL);
112e8700 13557 uiout->text ("Now in ");
0fb4aa4b
PA
13558 if (sym)
13559 {
112e8700
SM
13560 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
13561 uiout->text (" at ");
0fb4aa4b 13562 }
112e8700 13563 uiout->field_string ("file",
05cba821 13564 symtab_to_filename_for_display (sal2.symtab));
112e8700 13565 uiout->text (":");
0fb4aa4b 13566
112e8700 13567 if (uiout->is_mi_like_p ())
0fb4aa4b 13568 {
0b0865da 13569 const char *fullname = symtab_to_fullname (sal2.symtab);
0fb4aa4b 13570
112e8700 13571 uiout->field_string ("fullname", fullname);
0fb4aa4b
PA
13572 }
13573
112e8700
SM
13574 uiout->field_int ("line", sal2.line);
13575 uiout->text ("\n");
0fb4aa4b 13576
80e1d417 13577 b->loc->line_number = sal2.line;
2f202fde 13578 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
0fb4aa4b 13579
d28cd78a 13580 b->location.reset (NULL);
67994074
KS
13581 initialize_explicit_location (&explicit_loc);
13582 explicit_loc.source_filename
00e52e53 13583 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
67994074
KS
13584 explicit_loc.line_offset.offset = b->loc->line_number;
13585 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
d28cd78a 13586 b->location = new_explicit_location (&explicit_loc);
0fb4aa4b
PA
13587
13588 /* Might be nice to check if function changed, and warn if
13589 so. */
13590
80e1d417 13591 release_static_tracepoint_marker (tpmarker);
0fb4aa4b
PA
13592 }
13593 }
13594 return sal;
13595}
13596
8d3788bd
VP
13597/* Returns 1 iff locations A and B are sufficiently same that
13598 we don't need to report breakpoint as changed. */
13599
13600static int
13601locations_are_equal (struct bp_location *a, struct bp_location *b)
13602{
13603 while (a && b)
13604 {
13605 if (a->address != b->address)
13606 return 0;
13607
13608 if (a->shlib_disabled != b->shlib_disabled)
13609 return 0;
13610
13611 if (a->enabled != b->enabled)
13612 return 0;
13613
13614 a = a->next;
13615 b = b->next;
13616 }
13617
13618 if ((a == NULL) != (b == NULL))
13619 return 0;
13620
13621 return 1;
13622}
13623
c2f4122d
PA
13624/* Split all locations of B that are bound to PSPACE out of B's
13625 location list to a separate list and return that list's head. If
13626 PSPACE is NULL, hoist out all locations of B. */
13627
13628static struct bp_location *
13629hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13630{
13631 struct bp_location head;
13632 struct bp_location *i = b->loc;
13633 struct bp_location **i_link = &b->loc;
13634 struct bp_location *hoisted = &head;
13635
13636 if (pspace == NULL)
13637 {
13638 i = b->loc;
13639 b->loc = NULL;
13640 return i;
13641 }
13642
13643 head.next = NULL;
13644
13645 while (i != NULL)
13646 {
13647 if (i->pspace == pspace)
13648 {
13649 *i_link = i->next;
13650 i->next = NULL;
13651 hoisted->next = i;
13652 hoisted = i;
13653 }
13654 else
13655 i_link = &i->next;
13656 i = *i_link;
13657 }
13658
13659 return head.next;
13660}
13661
13662/* Create new breakpoint locations for B (a hardware or software
13663 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
13664 zero, then B is a ranged breakpoint. Only recreates locations for
13665 FILTER_PSPACE. Locations of other program spaces are left
13666 untouched. */
f1310107 13667
0e30163f 13668void
0d381245 13669update_breakpoint_locations (struct breakpoint *b,
c2f4122d 13670 struct program_space *filter_pspace,
6c5b2ebe
PA
13671 gdb::array_view<const symtab_and_line> sals,
13672 gdb::array_view<const symtab_and_line> sals_end)
fe3f5fa8
VP
13673{
13674 int i;
c2f4122d 13675 struct bp_location *existing_locations;
0d381245 13676
6c5b2ebe 13677 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
f8eba3c6
TT
13678 {
13679 /* Ranged breakpoints have only one start location and one end
13680 location. */
13681 b->enable_state = bp_disabled;
f8eba3c6
TT
13682 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13683 "multiple locations found\n"),
13684 b->number);
13685 return;
13686 }
f1310107 13687
4a64f543
MS
13688 /* If there's no new locations, and all existing locations are
13689 pending, don't do anything. This optimizes the common case where
13690 all locations are in the same shared library, that was unloaded.
13691 We'd like to retain the location, so that when the library is
13692 loaded again, we don't loose the enabled/disabled status of the
13693 individual locations. */
6c5b2ebe 13694 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
fe3f5fa8
VP
13695 return;
13696
c2f4122d 13697 existing_locations = hoist_existing_locations (b, filter_pspace);
fe3f5fa8 13698
6c5b2ebe 13699 for (const auto &sal : sals)
fe3f5fa8 13700 {
f8eba3c6
TT
13701 struct bp_location *new_loc;
13702
6c5b2ebe 13703 switch_to_program_space_and_thread (sal.pspace);
f8eba3c6 13704
6c5b2ebe 13705 new_loc = add_location_to_breakpoint (b, &sal);
fe3f5fa8 13706
0d381245
VP
13707 /* Reparse conditions, they might contain references to the
13708 old symtab. */
13709 if (b->cond_string != NULL)
13710 {
bbc13ae3 13711 const char *s;
fe3f5fa8 13712
0d381245 13713 s = b->cond_string;
492d29ea 13714 TRY
0d381245 13715 {
6c5b2ebe
PA
13716 new_loc->cond = parse_exp_1 (&s, sal.pc,
13717 block_for_pc (sal.pc),
0d381245
VP
13718 0);
13719 }
492d29ea 13720 CATCH (e, RETURN_MASK_ERROR)
0d381245 13721 {
3e43a32a
MS
13722 warning (_("failed to reevaluate condition "
13723 "for breakpoint %d: %s"),
0d381245
VP
13724 b->number, e.message);
13725 new_loc->enabled = 0;
13726 }
492d29ea 13727 END_CATCH
0d381245 13728 }
fe3f5fa8 13729
6c5b2ebe 13730 if (!sals_end.empty ())
f1310107 13731 {
6c5b2ebe 13732 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
f1310107 13733
6c5b2ebe 13734 new_loc->length = end - sals[0].pc + 1;
f1310107 13735 }
0d381245 13736 }
fe3f5fa8 13737
4a64f543
MS
13738 /* If possible, carry over 'disable' status from existing
13739 breakpoints. */
0d381245
VP
13740 {
13741 struct bp_location *e = existing_locations;
776592bf
DE
13742 /* If there are multiple breakpoints with the same function name,
13743 e.g. for inline functions, comparing function names won't work.
13744 Instead compare pc addresses; this is just a heuristic as things
13745 may have moved, but in practice it gives the correct answer
13746 often enough until a better solution is found. */
13747 int have_ambiguous_names = ambiguous_names_p (b->loc);
13748
0d381245
VP
13749 for (; e; e = e->next)
13750 {
13751 if (!e->enabled && e->function_name)
13752 {
13753 struct bp_location *l = b->loc;
776592bf
DE
13754 if (have_ambiguous_names)
13755 {
13756 for (; l; l = l->next)
f1310107 13757 if (breakpoint_locations_match (e, l))
776592bf
DE
13758 {
13759 l->enabled = 0;
13760 break;
13761 }
13762 }
13763 else
13764 {
13765 for (; l; l = l->next)
13766 if (l->function_name
13767 && strcmp (e->function_name, l->function_name) == 0)
13768 {
13769 l->enabled = 0;
13770 break;
13771 }
13772 }
0d381245
VP
13773 }
13774 }
13775 }
fe3f5fa8 13776
8d3788bd
VP
13777 if (!locations_are_equal (existing_locations, b->loc))
13778 observer_notify_breakpoint_modified (b);
fe3f5fa8
VP
13779}
13780
f00aae0f 13781/* Find the SaL locations corresponding to the given LOCATION.
ef23e705
TJB
13782 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
13783
6c5b2ebe 13784static std::vector<symtab_and_line>
f00aae0f 13785location_to_sals (struct breakpoint *b, struct event_location *location,
c2f4122d 13786 struct program_space *search_pspace, int *found)
ef23e705 13787{
492d29ea 13788 struct gdb_exception exception = exception_none;
ef23e705 13789
983af33b 13790 gdb_assert (b->ops != NULL);
ef23e705 13791
6c5b2ebe
PA
13792 std::vector<symtab_and_line> sals;
13793
492d29ea 13794 TRY
ef23e705 13795 {
6c5b2ebe 13796 sals = b->ops->decode_location (b, location, search_pspace);
ef23e705 13797 }
492d29ea 13798 CATCH (e, RETURN_MASK_ERROR)
ef23e705
TJB
13799 {
13800 int not_found_and_ok = 0;
492d29ea
PA
13801
13802 exception = e;
13803
ef23e705
TJB
13804 /* For pending breakpoints, it's expected that parsing will
13805 fail until the right shared library is loaded. User has
13806 already told to create pending breakpoints and don't need
13807 extra messages. If breakpoint is in bp_shlib_disabled
13808 state, then user already saw the message about that
13809 breakpoint being disabled, and don't want to see more
13810 errors. */
58438ac1 13811 if (e.error == NOT_FOUND_ERROR
c2f4122d
PA
13812 && (b->condition_not_parsed
13813 || (b->loc != NULL
13814 && search_pspace != NULL
13815 && b->loc->pspace != search_pspace)
ef23e705 13816 || (b->loc && b->loc->shlib_disabled)
f8eba3c6 13817 || (b->loc && b->loc->pspace->executing_startup)
ef23e705
TJB
13818 || b->enable_state == bp_disabled))
13819 not_found_and_ok = 1;
13820
13821 if (!not_found_and_ok)
13822 {
13823 /* We surely don't want to warn about the same breakpoint
13824 10 times. One solution, implemented here, is disable
13825 the breakpoint on error. Another solution would be to
13826 have separate 'warning emitted' flag. Since this
13827 happens only when a binary has changed, I don't know
13828 which approach is better. */
13829 b->enable_state = bp_disabled;
13830 throw_exception (e);
13831 }
13832 }
492d29ea 13833 END_CATCH
ef23e705 13834
492d29ea 13835 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
ef23e705 13836 {
6c5b2ebe
PA
13837 for (auto &sal : sals)
13838 resolve_sal_pc (&sal);
f00aae0f 13839 if (b->condition_not_parsed && b->extra_string != NULL)
ef23e705 13840 {
ed1d1739
KS
13841 char *cond_string, *extra_string;
13842 int thread, task;
ef23e705 13843
6c5b2ebe 13844 find_condition_and_thread (b->extra_string, sals[0].pc,
e7e0cddf
SS
13845 &cond_string, &thread, &task,
13846 &extra_string);
f00aae0f 13847 gdb_assert (b->cond_string == NULL);
ef23e705
TJB
13848 if (cond_string)
13849 b->cond_string = cond_string;
13850 b->thread = thread;
13851 b->task = task;
e7e0cddf 13852 if (extra_string)
f00aae0f
KS
13853 {
13854 xfree (b->extra_string);
13855 b->extra_string = extra_string;
13856 }
ef23e705
TJB
13857 b->condition_not_parsed = 0;
13858 }
13859
983af33b 13860 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
6c5b2ebe 13861 sals[0] = update_static_tracepoint (b, sals[0]);
ef23e705 13862
58438ac1
TT
13863 *found = 1;
13864 }
13865 else
13866 *found = 0;
ef23e705
TJB
13867
13868 return sals;
13869}
13870
348d480f
PA
13871/* The default re_set method, for typical hardware or software
13872 breakpoints. Reevaluate the breakpoint and recreate its
13873 locations. */
13874
13875static void
28010a5d 13876breakpoint_re_set_default (struct breakpoint *b)
ef23e705 13877{
c2f4122d 13878 struct program_space *filter_pspace = current_program_space;
6c5b2ebe 13879 std::vector<symtab_and_line> expanded, expanded_end;
ef23e705 13880
6c5b2ebe
PA
13881 int found;
13882 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13883 filter_pspace, &found);
ef23e705 13884 if (found)
6c5b2ebe 13885 expanded = std::move (sals);
ef23e705 13886
f00aae0f 13887 if (b->location_range_end != NULL)
f1310107 13888 {
6c5b2ebe
PA
13889 std::vector<symtab_and_line> sals_end
13890 = location_to_sals (b, b->location_range_end.get (),
13891 filter_pspace, &found);
f1310107 13892 if (found)
6c5b2ebe 13893 expanded_end = std::move (sals_end);
f1310107
TJB
13894 }
13895
c2f4122d 13896 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
28010a5d
PA
13897}
13898
983af33b
SDJ
13899/* Default method for creating SALs from an address string. It basically
13900 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
13901
13902static void
f00aae0f
KS
13903create_sals_from_location_default (const struct event_location *location,
13904 struct linespec_result *canonical,
13905 enum bptype type_wanted)
983af33b 13906{
f00aae0f 13907 parse_breakpoint_sals (location, canonical);
983af33b
SDJ
13908}
13909
13910/* Call create_breakpoints_sal for the given arguments. This is the default
13911 function for the `create_breakpoints_sal' method of
13912 breakpoint_ops. */
13913
13914static void
13915create_breakpoints_sal_default (struct gdbarch *gdbarch,
13916 struct linespec_result *canonical,
e1e01040
PA
13917 gdb::unique_xmalloc_ptr<char> cond_string,
13918 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13919 enum bptype type_wanted,
13920 enum bpdisp disposition,
13921 int thread,
13922 int task, int ignore_count,
13923 const struct breakpoint_ops *ops,
13924 int from_tty, int enabled,
44f238bb 13925 int internal, unsigned flags)
983af33b 13926{
e1e01040
PA
13927 create_breakpoints_sal (gdbarch, canonical,
13928 std::move (cond_string),
13929 std::move (extra_string),
983af33b
SDJ
13930 type_wanted, disposition,
13931 thread, task, ignore_count, ops, from_tty,
44f238bb 13932 enabled, internal, flags);
983af33b
SDJ
13933}
13934
13935/* Decode the line represented by S by calling decode_line_full. This is the
5f700d83 13936 default function for the `decode_location' method of breakpoint_ops. */
983af33b 13937
6c5b2ebe 13938static std::vector<symtab_and_line>
f00aae0f
KS
13939decode_location_default (struct breakpoint *b,
13940 const struct event_location *location,
6c5b2ebe 13941 struct program_space *search_pspace)
983af33b
SDJ
13942{
13943 struct linespec_result canonical;
13944
c2f4122d 13945 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
983af33b
SDJ
13946 (struct symtab *) NULL, 0,
13947 &canonical, multiple_symbols_all,
13948 b->filter);
13949
13950 /* We should get 0 or 1 resulting SALs. */
6c5b2ebe 13951 gdb_assert (canonical.lsals.size () < 2);
983af33b 13952
6c5b2ebe 13953 if (!canonical.lsals.empty ())
983af33b 13954 {
6c5b2ebe
PA
13955 const linespec_sals &lsal = canonical.lsals[0];
13956 return std::move (lsal.sals);
983af33b 13957 }
6c5b2ebe 13958 return {};
983af33b
SDJ
13959}
13960
bf469271 13961/* Reset a breakpoint. */
c906108c 13962
bf469271
PA
13963static void
13964breakpoint_re_set_one (breakpoint *b)
c906108c 13965{
fdf44873
TT
13966 input_radix = b->input_radix;
13967 set_language (b->language);
c906108c 13968
348d480f 13969 b->ops->re_set (b);
c906108c
SS
13970}
13971
c2f4122d
PA
13972/* Re-set breakpoint locations for the current program space.
13973 Locations bound to other program spaces are left untouched. */
13974
c906108c 13975void
69de3c6a 13976breakpoint_re_set (void)
c906108c 13977{
35df4500 13978 struct breakpoint *b, *b_tmp;
2a7f3dff 13979
c5aa993b 13980 {
fdf44873
TT
13981 scoped_restore_current_language save_language;
13982 scoped_restore save_input_radix = make_scoped_restore (&input_radix);
5ed8105e 13983 scoped_restore_current_pspace_and_thread restore_pspace_thread;
e62c965a 13984
5ed8105e
PA
13985 /* Note: we must not try to insert locations until after all
13986 breakpoints have been re-set. Otherwise, e.g., when re-setting
13987 breakpoint 1, we'd insert the locations of breakpoint 2, which
13988 hadn't been re-set yet, and thus may have stale locations. */
4efc6507 13989
5ed8105e
PA
13990 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13991 {
bf469271
PA
13992 TRY
13993 {
13994 breakpoint_re_set_one (b);
13995 }
13996 CATCH (ex, RETURN_MASK_ALL)
13997 {
13998 exception_fprintf (gdb_stderr, ex,
13999 "Error in re-setting breakpoint %d: ",
14000 b->number);
14001 }
14002 END_CATCH
5ed8105e 14003 }
5ed8105e
PA
14004
14005 jit_breakpoint_re_set ();
14006 }
6c95b8df 14007
af02033e
PP
14008 create_overlay_event_breakpoint ();
14009 create_longjmp_master_breakpoint ();
14010 create_std_terminate_master_breakpoint ();
186c406b 14011 create_exception_master_breakpoint ();
2a7f3dff
PA
14012
14013 /* Now we can insert. */
14014 update_global_location_list (UGLL_MAY_INSERT);
c906108c
SS
14015}
14016\f
c906108c
SS
14017/* Reset the thread number of this breakpoint:
14018
14019 - If the breakpoint is for all threads, leave it as-is.
4a64f543 14020 - Else, reset it to the current thread for inferior_ptid. */
c906108c 14021void
fba45db2 14022breakpoint_re_set_thread (struct breakpoint *b)
c906108c
SS
14023{
14024 if (b->thread != -1)
14025 {
39f77062 14026 if (in_thread_list (inferior_ptid))
5d5658a1 14027 b->thread = ptid_to_global_thread_id (inferior_ptid);
6c95b8df
PA
14028
14029 /* We're being called after following a fork. The new fork is
14030 selected as current, and unless this was a vfork will have a
14031 different program space from the original thread. Reset that
14032 as well. */
14033 b->loc->pspace = current_program_space;
c906108c
SS
14034 }
14035}
14036
03ac34d5
MS
14037/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14038 If from_tty is nonzero, it prints a message to that effect,
14039 which ends with a period (no newline). */
14040
c906108c 14041void
fba45db2 14042set_ignore_count (int bptnum, int count, int from_tty)
c906108c 14043{
52f0bd74 14044 struct breakpoint *b;
c906108c
SS
14045
14046 if (count < 0)
14047 count = 0;
14048
14049 ALL_BREAKPOINTS (b)
14050 if (b->number == bptnum)
c5aa993b 14051 {
d77f58be
SS
14052 if (is_tracepoint (b))
14053 {
14054 if (from_tty && count != 0)
14055 printf_filtered (_("Ignore count ignored for tracepoint %d."),
14056 bptnum);
14057 return;
14058 }
14059
c5aa993b 14060 b->ignore_count = count;
221ea385
KS
14061 if (from_tty)
14062 {
14063 if (count == 0)
3e43a32a
MS
14064 printf_filtered (_("Will stop next time "
14065 "breakpoint %d is reached."),
221ea385
KS
14066 bptnum);
14067 else if (count == 1)
a3f17187 14068 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
221ea385
KS
14069 bptnum);
14070 else
3e43a32a
MS
14071 printf_filtered (_("Will ignore next %d "
14072 "crossings of breakpoint %d."),
221ea385
KS
14073 count, bptnum);
14074 }
8d3788bd 14075 observer_notify_breakpoint_modified (b);
c5aa993b
JM
14076 return;
14077 }
c906108c 14078
8a3fe4f8 14079 error (_("No breakpoint number %d."), bptnum);
c906108c
SS
14080}
14081
c906108c
SS
14082/* Command to set ignore-count of breakpoint N to COUNT. */
14083
14084static void
0b39b52e 14085ignore_command (const char *args, int from_tty)
c906108c 14086{
0b39b52e 14087 const char *p = args;
52f0bd74 14088 int num;
c906108c
SS
14089
14090 if (p == 0)
e2e0b3e5 14091 error_no_arg (_("a breakpoint number"));
c5aa993b 14092
c906108c 14093 num = get_number (&p);
5c44784c 14094 if (num == 0)
8a3fe4f8 14095 error (_("bad breakpoint number: '%s'"), args);
c906108c 14096 if (*p == 0)
8a3fe4f8 14097 error (_("Second argument (specified ignore-count) is missing."));
c906108c
SS
14098
14099 set_ignore_count (num,
14100 longest_to_int (value_as_long (parse_and_eval (p))),
14101 from_tty);
221ea385
KS
14102 if (from_tty)
14103 printf_filtered ("\n");
c906108c
SS
14104}
14105\f
d0fe4701
XR
14106
14107/* Call FUNCTION on each of the breakpoints with numbers in the range
14108 defined by BP_NUM_RANGE (an inclusive range). */
c906108c
SS
14109
14110static void
d0fe4701
XR
14111map_breakpoint_number_range (std::pair<int, int> bp_num_range,
14112 gdb::function_view<void (breakpoint *)> function)
c906108c 14113{
d0fe4701
XR
14114 if (bp_num_range.first == 0)
14115 {
14116 warning (_("bad breakpoint number at or near '%d'"),
14117 bp_num_range.first);
14118 }
14119 else
c906108c 14120 {
d0fe4701 14121 struct breakpoint *b, *tmp;
197f0a60 14122
d0fe4701 14123 for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
5c44784c 14124 {
d0fe4701
XR
14125 bool match = false;
14126
5c44784c 14127 ALL_BREAKPOINTS_SAFE (b, tmp)
d0fe4701 14128 if (b->number == i)
5c44784c 14129 {
bfd28288 14130 match = true;
48649e1b 14131 function (b);
11cf8741 14132 break;
5c44784c 14133 }
bfd28288 14134 if (!match)
d0fe4701 14135 printf_unfiltered (_("No breakpoint number %d.\n"), i);
c5aa993b 14136 }
c906108c
SS
14137 }
14138}
14139
d0fe4701
XR
14140/* Call FUNCTION on each of the breakpoints whose numbers are given in
14141 ARGS. */
14142
14143static void
14144map_breakpoint_numbers (const char *args,
14145 gdb::function_view<void (breakpoint *)> function)
14146{
14147 if (args == NULL || *args == '\0')
14148 error_no_arg (_("one or more breakpoint numbers"));
14149
14150 number_or_range_parser parser (args);
14151
14152 while (!parser.finished ())
14153 {
14154 int num = parser.get_number ();
14155 map_breakpoint_number_range (std::make_pair (num, num), function);
14156 }
14157}
14158
14159/* Return the breakpoint location structure corresponding to the
14160 BP_NUM and LOC_NUM values. */
14161
0d381245 14162static struct bp_location *
d0fe4701 14163find_location_by_number (int bp_num, int loc_num)
0d381245 14164{
0d381245 14165 struct breakpoint *b;
0d381245
VP
14166
14167 ALL_BREAKPOINTS (b)
14168 if (b->number == bp_num)
14169 {
14170 break;
14171 }
14172
14173 if (!b || b->number != bp_num)
d0fe4701 14174 error (_("Bad breakpoint number '%d'"), bp_num);
0d381245 14175
0d381245 14176 if (loc_num == 0)
d0fe4701 14177 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245 14178
d0fe4701
XR
14179 int n = 0;
14180 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
14181 if (++n == loc_num)
14182 return loc;
14183
14184 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245
VP
14185}
14186
95e95a6d
PA
14187/* Modes of operation for extract_bp_num. */
14188enum class extract_bp_kind
14189{
14190 /* Extracting a breakpoint number. */
14191 bp,
14192
14193 /* Extracting a location number. */
14194 loc,
14195};
14196
14197/* Extract a breakpoint or location number (as determined by KIND)
14198 from the string starting at START. TRAILER is a character which
14199 can be found after the number. If you don't want a trailer, use
14200 '\0'. If END_OUT is not NULL, it is set to point after the parsed
14201 string. This always returns a positive integer. */
14202
14203static int
14204extract_bp_num (extract_bp_kind kind, const char *start,
14205 int trailer, const char **end_out = NULL)
14206{
14207 const char *end = start;
14208 int num = get_number_trailer (&end, trailer);
14209 if (num < 0)
14210 error (kind == extract_bp_kind::bp
14211 ? _("Negative breakpoint number '%.*s'")
14212 : _("Negative breakpoint location number '%.*s'"),
14213 int (end - start), start);
14214 if (num == 0)
14215 error (kind == extract_bp_kind::bp
14216 ? _("Bad breakpoint number '%.*s'")
14217 : _("Bad breakpoint location number '%.*s'"),
14218 int (end - start), start);
14219
14220 if (end_out != NULL)
14221 *end_out = end;
14222 return num;
14223}
14224
14225/* Extract a breakpoint or location range (as determined by KIND) in
14226 the form NUM1-NUM2 stored at &ARG[arg_offset]. Returns a std::pair
14227 representing the (inclusive) range. The returned pair's elements
14228 are always positive integers. */
14229
14230static std::pair<int, int>
14231extract_bp_or_bp_range (extract_bp_kind kind,
14232 const std::string &arg,
14233 std::string::size_type arg_offset)
14234{
14235 std::pair<int, int> range;
14236 const char *bp_loc = &arg[arg_offset];
14237 std::string::size_type dash = arg.find ('-', arg_offset);
14238 if (dash != std::string::npos)
14239 {
14240 /* bp_loc is a range (x-z). */
14241 if (arg.length () == dash + 1)
14242 error (kind == extract_bp_kind::bp
14243 ? _("Bad breakpoint number at or near: '%s'")
14244 : _("Bad breakpoint location number at or near: '%s'"),
14245 bp_loc);
14246
14247 const char *end;
14248 const char *start_first = bp_loc;
14249 const char *start_second = &arg[dash + 1];
14250 range.first = extract_bp_num (kind, start_first, '-');
14251 range.second = extract_bp_num (kind, start_second, '\0', &end);
14252
14253 if (range.first > range.second)
14254 error (kind == extract_bp_kind::bp
14255 ? _("Inverted breakpoint range at '%.*s'")
14256 : _("Inverted breakpoint location range at '%.*s'"),
14257 int (end - start_first), start_first);
14258 }
14259 else
14260 {
14261 /* bp_loc is a single value. */
14262 range.first = extract_bp_num (kind, bp_loc, '\0');
14263 range.second = range.first;
14264 }
14265 return range;
14266}
14267
d0fe4701
XR
14268/* Extract the breakpoint/location range specified by ARG. Returns
14269 the breakpoint range in BP_NUM_RANGE, and the location range in
14270 BP_LOC_RANGE.
14271
14272 ARG may be in any of the following forms:
14273
14274 x where 'x' is a breakpoint number.
14275 x-y where 'x' and 'y' specify a breakpoint numbers range.
14276 x.y where 'x' is a breakpoint number and 'y' a location number.
14277 x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14278 location number range.
14279*/
14280
cc638e86 14281static void
d0fe4701
XR
14282extract_bp_number_and_location (const std::string &arg,
14283 std::pair<int, int> &bp_num_range,
14284 std::pair<int, int> &bp_loc_range)
14285{
14286 std::string::size_type dot = arg.find ('.');
14287
14288 if (dot != std::string::npos)
14289 {
14290 /* Handle 'x.y' and 'x.y-z' cases. */
14291
14292 if (arg.length () == dot + 1 || dot == 0)
95e95a6d 14293 error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
d0fe4701 14294
95e95a6d
PA
14295 bp_num_range.first
14296 = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14297 bp_num_range.second = bp_num_range.first;
d0fe4701 14298
95e95a6d
PA
14299 bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14300 arg, dot + 1);
d0fe4701
XR
14301 }
14302 else
14303 {
14304 /* Handle x and x-y cases. */
d0fe4701 14305
95e95a6d 14306 bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
d0fe4701
XR
14307 bp_loc_range.first = 0;
14308 bp_loc_range.second = 0;
14309 }
d0fe4701
XR
14310}
14311
14312/* Enable or disable a breakpoint location BP_NUM.LOC_NUM. ENABLE
14313 specifies whether to enable or disable. */
14314
14315static void
14316enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14317{
14318 struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14319 if (loc != NULL)
14320 {
14321 if (loc->enabled != enable)
14322 {
14323 loc->enabled = enable;
14324 mark_breakpoint_location_modified (loc);
14325 }
14326 if (target_supports_enable_disable_tracepoint ()
14327 && current_trace_status ()->running && loc->owner
14328 && is_tracepoint (loc->owner))
14329 target_disable_tracepoint (loc);
14330 }
14331 update_global_location_list (UGLL_DONT_INSERT);
14332}
14333
14334/* Enable or disable a range of breakpoint locations. BP_NUM is the
14335 number of the breakpoint, and BP_LOC_RANGE specifies the
14336 (inclusive) range of location numbers of that breakpoint to
14337 enable/disable. ENABLE specifies whether to enable or disable the
14338 location. */
14339
14340static void
14341enable_disable_breakpoint_location_range (int bp_num,
14342 std::pair<int, int> &bp_loc_range,
14343 bool enable)
14344{
14345 for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14346 enable_disable_bp_num_loc (bp_num, i, enable);
14347}
0d381245 14348
1900040c
MS
14349/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14350 If from_tty is nonzero, it prints a message to that effect,
14351 which ends with a period (no newline). */
14352
c906108c 14353void
fba45db2 14354disable_breakpoint (struct breakpoint *bpt)
c906108c
SS
14355{
14356 /* Never disable a watchpoint scope breakpoint; we want to
14357 hit them when we leave scope so we can delete both the
14358 watchpoint and its scope breakpoint at that time. */
14359 if (bpt->type == bp_watchpoint_scope)
14360 return;
14361
b5de0fa7 14362 bpt->enable_state = bp_disabled;
c906108c 14363
b775012e
LM
14364 /* Mark breakpoint locations modified. */
14365 mark_breakpoint_modified (bpt);
14366
d248b706
KY
14367 if (target_supports_enable_disable_tracepoint ()
14368 && current_trace_status ()->running && is_tracepoint (bpt))
14369 {
14370 struct bp_location *location;
14371
14372 for (location = bpt->loc; location; location = location->next)
14373 target_disable_tracepoint (location);
14374 }
14375
44702360 14376 update_global_location_list (UGLL_DONT_INSERT);
c906108c 14377
8d3788bd 14378 observer_notify_breakpoint_modified (bpt);
c906108c
SS
14379}
14380
d0fe4701
XR
14381/* Enable or disable the breakpoint(s) or breakpoint location(s)
14382 specified in ARGS. ARGS may be in any of the formats handled by
14383 extract_bp_number_and_location. ENABLE specifies whether to enable
14384 or disable the breakpoints/locations. */
14385
c906108c 14386static void
d0fe4701 14387enable_disable_command (const char *args, int from_tty, bool enable)
c906108c 14388{
c906108c 14389 if (args == 0)
46c6471b
PA
14390 {
14391 struct breakpoint *bpt;
14392
14393 ALL_BREAKPOINTS (bpt)
14394 if (user_breakpoint_p (bpt))
d0fe4701
XR
14395 {
14396 if (enable)
14397 enable_breakpoint (bpt);
14398 else
14399 disable_breakpoint (bpt);
14400 }
46c6471b 14401 }
9eaabc75 14402 else
0d381245 14403 {
cb791d59 14404 std::string num = extract_arg (&args);
9eaabc75 14405
cb791d59 14406 while (!num.empty ())
d248b706 14407 {
d0fe4701 14408 std::pair<int, int> bp_num_range, bp_loc_range;
9eaabc75 14409
cc638e86
PA
14410 extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14411
14412 if (bp_loc_range.first == bp_loc_range.second
14413 && bp_loc_range.first == 0)
d0fe4701 14414 {
cc638e86
PA
14415 /* Handle breakpoint ids with formats 'x' or 'x-z'. */
14416 map_breakpoint_number_range (bp_num_range,
14417 enable
14418 ? enable_breakpoint
14419 : disable_breakpoint);
14420 }
14421 else
14422 {
14423 /* Handle breakpoint ids with formats 'x.y' or
14424 'x.y-z'. */
14425 enable_disable_breakpoint_location_range
14426 (bp_num_range.first, bp_loc_range, enable);
b775012e 14427 }
9eaabc75 14428 num = extract_arg (&args);
d248b706 14429 }
0d381245 14430 }
c906108c
SS
14431}
14432
d0fe4701
XR
14433/* The disable command disables the specified breakpoints/locations
14434 (or all defined breakpoints) so they're no longer effective in
14435 stopping the inferior. ARGS may be in any of the forms defined in
14436 extract_bp_number_and_location. */
14437
14438static void
14439disable_command (const char *args, int from_tty)
14440{
14441 enable_disable_command (args, from_tty, false);
14442}
14443
c906108c 14444static void
816338b5
SS
14445enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14446 int count)
c906108c 14447{
afe38095 14448 int target_resources_ok;
c906108c
SS
14449
14450 if (bpt->type == bp_hardware_breakpoint)
14451 {
14452 int i;
c5aa993b 14453 i = hw_breakpoint_used_count ();
53a5351d 14454 target_resources_ok =
d92524f1 14455 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
53a5351d 14456 i + 1, 0);
c906108c 14457 if (target_resources_ok == 0)
8a3fe4f8 14458 error (_("No hardware breakpoint support in the target."));
c906108c 14459 else if (target_resources_ok < 0)
8a3fe4f8 14460 error (_("Hardware breakpoints used exceeds limit."));
c906108c
SS
14461 }
14462
cc60f2e3 14463 if (is_watchpoint (bpt))
c906108c 14464 {
d07205c2 14465 /* Initialize it just to avoid a GCC false warning. */
f486487f 14466 enum enable_state orig_enable_state = bp_disabled;
dde02812 14467
492d29ea 14468 TRY
c906108c 14469 {
3a5c3e22
PA
14470 struct watchpoint *w = (struct watchpoint *) bpt;
14471
1e718ff1
TJB
14472 orig_enable_state = bpt->enable_state;
14473 bpt->enable_state = bp_enabled;
3a5c3e22 14474 update_watchpoint (w, 1 /* reparse */);
c906108c 14475 }
492d29ea 14476 CATCH (e, RETURN_MASK_ALL)
c5aa993b 14477 {
1e718ff1 14478 bpt->enable_state = orig_enable_state;
dde02812
ES
14479 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14480 bpt->number);
14481 return;
c5aa993b 14482 }
492d29ea 14483 END_CATCH
c906108c 14484 }
0101ce28 14485
b775012e
LM
14486 bpt->enable_state = bp_enabled;
14487
14488 /* Mark breakpoint locations modified. */
14489 mark_breakpoint_modified (bpt);
14490
d248b706
KY
14491 if (target_supports_enable_disable_tracepoint ()
14492 && current_trace_status ()->running && is_tracepoint (bpt))
14493 {
14494 struct bp_location *location;
14495
14496 for (location = bpt->loc; location; location = location->next)
14497 target_enable_tracepoint (location);
14498 }
14499
b4c291bb 14500 bpt->disposition = disposition;
816338b5 14501 bpt->enable_count = count;
44702360 14502 update_global_location_list (UGLL_MAY_INSERT);
9c97429f 14503
8d3788bd 14504 observer_notify_breakpoint_modified (bpt);
c906108c
SS
14505}
14506
fe3f5fa8 14507
c906108c 14508void
fba45db2 14509enable_breakpoint (struct breakpoint *bpt)
c906108c 14510{
816338b5 14511 enable_breakpoint_disp (bpt, bpt->disposition, 0);
51be5b68
PA
14512}
14513
d0fe4701
XR
14514/* The enable command enables the specified breakpoints/locations (or
14515 all defined breakpoints) so they once again become (or continue to
14516 be) effective in stopping the inferior. ARGS may be in any of the
14517 forms defined in extract_bp_number_and_location. */
c906108c 14518
c906108c 14519static void
981a3fb3 14520enable_command (const char *args, int from_tty)
c906108c 14521{
d0fe4701 14522 enable_disable_command (args, from_tty, true);
c906108c
SS
14523}
14524
c906108c 14525static void
4495129a 14526enable_once_command (const char *args, int from_tty)
c906108c 14527{
48649e1b
TT
14528 map_breakpoint_numbers
14529 (args, [&] (breakpoint *b)
14530 {
14531 iterate_over_related_breakpoints
14532 (b, [&] (breakpoint *bpt)
14533 {
14534 enable_breakpoint_disp (bpt, disp_disable, 1);
14535 });
14536 });
816338b5
SS
14537}
14538
14539static void
4495129a 14540enable_count_command (const char *args, int from_tty)
816338b5 14541{
b9d61307
SM
14542 int count;
14543
14544 if (args == NULL)
14545 error_no_arg (_("hit count"));
14546
14547 count = get_number (&args);
816338b5 14548
48649e1b
TT
14549 map_breakpoint_numbers
14550 (args, [&] (breakpoint *b)
14551 {
14552 iterate_over_related_breakpoints
14553 (b, [&] (breakpoint *bpt)
14554 {
14555 enable_breakpoint_disp (bpt, disp_disable, count);
14556 });
14557 });
c906108c
SS
14558}
14559
c906108c 14560static void
4495129a 14561enable_delete_command (const char *args, int from_tty)
c906108c 14562{
48649e1b
TT
14563 map_breakpoint_numbers
14564 (args, [&] (breakpoint *b)
14565 {
14566 iterate_over_related_breakpoints
14567 (b, [&] (breakpoint *bpt)
14568 {
14569 enable_breakpoint_disp (bpt, disp_del, 1);
14570 });
14571 });
c906108c
SS
14572}
14573\f
fa8d40ab 14574static void
981a3fb3 14575set_breakpoint_cmd (const char *args, int from_tty)
fa8d40ab
JJ
14576{
14577}
14578
14579static void
981a3fb3 14580show_breakpoint_cmd (const char *args, int from_tty)
fa8d40ab
JJ
14581{
14582}
14583
1f3b5d1b
PP
14584/* Invalidate last known value of any hardware watchpoint if
14585 the memory which that value represents has been written to by
14586 GDB itself. */
14587
14588static void
8de0566d
YQ
14589invalidate_bp_value_on_memory_change (struct inferior *inferior,
14590 CORE_ADDR addr, ssize_t len,
1f3b5d1b
PP
14591 const bfd_byte *data)
14592{
14593 struct breakpoint *bp;
14594
14595 ALL_BREAKPOINTS (bp)
14596 if (bp->enable_state == bp_enabled
3a5c3e22 14597 && bp->type == bp_hardware_watchpoint)
1f3b5d1b 14598 {
3a5c3e22 14599 struct watchpoint *wp = (struct watchpoint *) bp;
1f3b5d1b 14600
3a5c3e22
PA
14601 if (wp->val_valid && wp->val)
14602 {
14603 struct bp_location *loc;
14604
14605 for (loc = bp->loc; loc != NULL; loc = loc->next)
14606 if (loc->loc_type == bp_loc_hardware_watchpoint
14607 && loc->address + loc->length > addr
14608 && addr + len > loc->address)
14609 {
14610 value_free (wp->val);
14611 wp->val = NULL;
14612 wp->val_valid = 0;
14613 }
14614 }
1f3b5d1b
PP
14615 }
14616}
14617
8181d85f
DJ
14618/* Create and insert a breakpoint for software single step. */
14619
14620void
6c95b8df 14621insert_single_step_breakpoint (struct gdbarch *gdbarch,
accd0bcd 14622 const address_space *aspace,
4a64f543 14623 CORE_ADDR next_pc)
8181d85f 14624{
7c16b83e
PA
14625 struct thread_info *tp = inferior_thread ();
14626 struct symtab_and_line sal;
14627 CORE_ADDR pc = next_pc;
8181d85f 14628
34b7e8a6
PA
14629 if (tp->control.single_step_breakpoints == NULL)
14630 {
14631 tp->control.single_step_breakpoints
5d5658a1 14632 = new_single_step_breakpoint (tp->global_num, gdbarch);
34b7e8a6 14633 }
8181d85f 14634
7c16b83e
PA
14635 sal = find_pc_line (pc, 0);
14636 sal.pc = pc;
14637 sal.section = find_pc_overlay (pc);
14638 sal.explicit_pc = 1;
34b7e8a6 14639 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
8181d85f 14640
7c16b83e 14641 update_global_location_list (UGLL_INSERT);
8181d85f
DJ
14642}
14643
93f9a11f
YQ
14644/* Insert single step breakpoints according to the current state. */
14645
14646int
14647insert_single_step_breakpoints (struct gdbarch *gdbarch)
14648{
f5ea389a 14649 struct regcache *regcache = get_current_regcache ();
a0ff9e1a 14650 std::vector<CORE_ADDR> next_pcs;
93f9a11f 14651
f5ea389a 14652 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
93f9a11f 14653
a0ff9e1a 14654 if (!next_pcs.empty ())
93f9a11f 14655 {
f5ea389a 14656 struct frame_info *frame = get_current_frame ();
8b86c959 14657 const address_space *aspace = get_frame_address_space (frame);
93f9a11f 14658
a0ff9e1a 14659 for (CORE_ADDR pc : next_pcs)
93f9a11f
YQ
14660 insert_single_step_breakpoint (gdbarch, aspace, pc);
14661
93f9a11f
YQ
14662 return 1;
14663 }
14664 else
14665 return 0;
14666}
14667
34b7e8a6 14668/* See breakpoint.h. */
f02253f1
HZ
14669
14670int
7c16b83e 14671breakpoint_has_location_inserted_here (struct breakpoint *bp,
accd0bcd 14672 const address_space *aspace,
7c16b83e 14673 CORE_ADDR pc)
1aafd4da 14674{
7c16b83e 14675 struct bp_location *loc;
1aafd4da 14676
7c16b83e
PA
14677 for (loc = bp->loc; loc != NULL; loc = loc->next)
14678 if (loc->inserted
14679 && breakpoint_location_address_match (loc, aspace, pc))
14680 return 1;
1aafd4da 14681
7c16b83e 14682 return 0;
ef370185
JB
14683}
14684
14685/* Check whether a software single-step breakpoint is inserted at
14686 PC. */
14687
14688int
accd0bcd 14689single_step_breakpoint_inserted_here_p (const address_space *aspace,
ef370185
JB
14690 CORE_ADDR pc)
14691{
34b7e8a6
PA
14692 struct breakpoint *bpt;
14693
14694 ALL_BREAKPOINTS (bpt)
14695 {
14696 if (bpt->type == bp_single_step
14697 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14698 return 1;
14699 }
14700 return 0;
1aafd4da
UW
14701}
14702
1042e4c0
SS
14703/* Tracepoint-specific operations. */
14704
14705/* Set tracepoint count to NUM. */
14706static void
14707set_tracepoint_count (int num)
14708{
14709 tracepoint_count = num;
4fa62494 14710 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
1042e4c0
SS
14711}
14712
70221824 14713static void
0b39b52e 14714trace_command (const char *arg, int from_tty)
1042e4c0 14715{
55aa24fb 14716 struct breakpoint_ops *ops;
55aa24fb 14717
ffc2605c
TT
14718 event_location_up location = string_to_event_location (&arg,
14719 current_language);
5b56227b 14720 if (location != NULL
ffc2605c 14721 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
14722 ops = &tracepoint_probe_breakpoint_ops;
14723 else
14724 ops = &tracepoint_breakpoint_ops;
14725
558a9d82 14726 create_breakpoint (get_current_arch (),
ffc2605c 14727 location.get (),
f00aae0f 14728 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14729 0 /* tempflag */,
14730 bp_tracepoint /* type_wanted */,
14731 0 /* Ignore count */,
14732 pending_break_support,
14733 ops,
14734 from_tty,
14735 1 /* enabled */,
14736 0 /* internal */, 0);
1042e4c0
SS
14737}
14738
70221824 14739static void
0b39b52e 14740ftrace_command (const char *arg, int from_tty)
7a697b8d 14741{
ffc2605c
TT
14742 event_location_up location = string_to_event_location (&arg,
14743 current_language);
558a9d82 14744 create_breakpoint (get_current_arch (),
ffc2605c 14745 location.get (),
f00aae0f 14746 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14747 0 /* tempflag */,
14748 bp_fast_tracepoint /* type_wanted */,
14749 0 /* Ignore count */,
14750 pending_break_support,
14751 &tracepoint_breakpoint_ops,
14752 from_tty,
14753 1 /* enabled */,
14754 0 /* internal */, 0);
0fb4aa4b
PA
14755}
14756
14757/* strace command implementation. Creates a static tracepoint. */
14758
70221824 14759static void
0b39b52e 14760strace_command (const char *arg, int from_tty)
0fb4aa4b 14761{
983af33b 14762 struct breakpoint_ops *ops;
ffc2605c 14763 event_location_up location;
983af33b
SDJ
14764
14765 /* Decide if we are dealing with a static tracepoint marker (`-m'),
14766 or with a normal static tracepoint. */
61012eef 14767 if (arg && startswith (arg, "-m") && isspace (arg[2]))
f00aae0f
KS
14768 {
14769 ops = &strace_marker_breakpoint_ops;
14770 location = new_linespec_location (&arg);
14771 }
983af33b 14772 else
f00aae0f
KS
14773 {
14774 ops = &tracepoint_breakpoint_ops;
14775 location = string_to_event_location (&arg, current_language);
14776 }
983af33b 14777
558a9d82 14778 create_breakpoint (get_current_arch (),
ffc2605c 14779 location.get (),
f00aae0f 14780 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14781 0 /* tempflag */,
14782 bp_static_tracepoint /* type_wanted */,
14783 0 /* Ignore count */,
14784 pending_break_support,
14785 ops,
14786 from_tty,
14787 1 /* enabled */,
14788 0 /* internal */, 0);
7a697b8d
SS
14789}
14790
409873ef
SS
14791/* Set up a fake reader function that gets command lines from a linked
14792 list that was acquired during tracepoint uploading. */
14793
14794static struct uploaded_tp *this_utp;
3149d8c1 14795static int next_cmd;
409873ef
SS
14796
14797static char *
14798read_uploaded_action (void)
14799{
14800 char *rslt;
14801
3149d8c1 14802 VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
409873ef 14803
3149d8c1 14804 next_cmd++;
409873ef
SS
14805
14806 return rslt;
14807}
14808
00bf0b85
SS
14809/* Given information about a tracepoint as recorded on a target (which
14810 can be either a live system or a trace file), attempt to create an
14811 equivalent GDB tracepoint. This is not a reliable process, since
14812 the target does not necessarily have all the information used when
14813 the tracepoint was originally defined. */
14814
d9b3f62e 14815struct tracepoint *
00bf0b85 14816create_tracepoint_from_upload (struct uploaded_tp *utp)
d5551862 14817{
f2fc3015
TT
14818 const char *addr_str;
14819 char small_buf[100];
d9b3f62e 14820 struct tracepoint *tp;
fd9b8c24 14821
409873ef
SS
14822 if (utp->at_string)
14823 addr_str = utp->at_string;
14824 else
14825 {
14826 /* In the absence of a source location, fall back to raw
14827 address. Since there is no way to confirm that the address
14828 means the same thing as when the trace was started, warn the
14829 user. */
3e43a32a
MS
14830 warning (_("Uploaded tracepoint %d has no "
14831 "source location, using raw address"),
409873ef 14832 utp->number);
8c042590 14833 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
409873ef
SS
14834 addr_str = small_buf;
14835 }
14836
14837 /* There's not much we can do with a sequence of bytecodes. */
14838 if (utp->cond && !utp->cond_string)
3e43a32a
MS
14839 warning (_("Uploaded tracepoint %d condition "
14840 "has no source form, ignoring it"),
409873ef 14841 utp->number);
d5551862 14842
ffc2605c
TT
14843 event_location_up location = string_to_event_location (&addr_str,
14844 current_language);
8cdf0e15 14845 if (!create_breakpoint (get_current_arch (),
ffc2605c 14846 location.get (),
f00aae0f 14847 utp->cond_string, -1, addr_str,
e7e0cddf 14848 0 /* parse cond/thread */,
8cdf0e15 14849 0 /* tempflag */,
0fb4aa4b 14850 utp->type /* type_wanted */,
8cdf0e15
VP
14851 0 /* Ignore count */,
14852 pending_break_support,
348d480f 14853 &tracepoint_breakpoint_ops,
8cdf0e15 14854 0 /* from_tty */,
84f4c1fe 14855 utp->enabled /* enabled */,
44f238bb
PA
14856 0 /* internal */,
14857 CREATE_BREAKPOINT_FLAGS_INSERTED))
ffc2605c 14858 return NULL;
fd9b8c24 14859
409873ef 14860 /* Get the tracepoint we just created. */
fd9b8c24
PA
14861 tp = get_tracepoint (tracepoint_count);
14862 gdb_assert (tp != NULL);
d5551862 14863
00bf0b85
SS
14864 if (utp->pass > 0)
14865 {
8c042590 14866 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
c1fc2657 14867 tp->number);
00bf0b85 14868
409873ef 14869 trace_pass_command (small_buf, 0);
00bf0b85
SS
14870 }
14871
409873ef
SS
14872 /* If we have uploaded versions of the original commands, set up a
14873 special-purpose "reader" function and call the usual command line
14874 reader, then pass the result to the breakpoint command-setting
14875 function. */
3149d8c1 14876 if (!VEC_empty (char_ptr, utp->cmd_strings))
00bf0b85 14877 {
93921405 14878 command_line_up cmd_list;
00bf0b85 14879
409873ef 14880 this_utp = utp;
3149d8c1 14881 next_cmd = 0;
d5551862 14882
409873ef
SS
14883 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
14884
c1fc2657 14885 breakpoint_set_commands (tp, std::move (cmd_list));
00bf0b85 14886 }
3149d8c1
SS
14887 else if (!VEC_empty (char_ptr, utp->actions)
14888 || !VEC_empty (char_ptr, utp->step_actions))
3e43a32a
MS
14889 warning (_("Uploaded tracepoint %d actions "
14890 "have no source form, ignoring them"),
409873ef 14891 utp->number);
00bf0b85 14892
f196051f 14893 /* Copy any status information that might be available. */
c1fc2657 14894 tp->hit_count = utp->hit_count;
f196051f
SS
14895 tp->traceframe_usage = utp->traceframe_usage;
14896
00bf0b85 14897 return tp;
d9b3f62e 14898}
00bf0b85 14899
1042e4c0
SS
14900/* Print information on tracepoint number TPNUM_EXP, or all if
14901 omitted. */
14902
14903static void
1d12d88f 14904info_tracepoints_command (const char *args, int from_tty)
1042e4c0 14905{
79a45e25 14906 struct ui_out *uiout = current_uiout;
e5a67952 14907 int num_printed;
1042e4c0 14908
e5a67952 14909 num_printed = breakpoint_1 (args, 0, is_tracepoint);
d77f58be
SS
14910
14911 if (num_printed == 0)
1042e4c0 14912 {
e5a67952 14913 if (args == NULL || *args == '\0')
112e8700 14914 uiout->message ("No tracepoints.\n");
d77f58be 14915 else
112e8700 14916 uiout->message ("No tracepoint matching '%s'.\n", args);
1042e4c0 14917 }
ad443146
SS
14918
14919 default_collect_info ();
1042e4c0
SS
14920}
14921
4a64f543 14922/* The 'enable trace' command enables tracepoints.
1042e4c0
SS
14923 Not supported by all targets. */
14924static void
5fed81ff 14925enable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14926{
14927 enable_command (args, from_tty);
14928}
14929
4a64f543 14930/* The 'disable trace' command disables tracepoints.
1042e4c0
SS
14931 Not supported by all targets. */
14932static void
5fed81ff 14933disable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14934{
14935 disable_command (args, from_tty);
14936}
14937
4a64f543 14938/* Remove a tracepoint (or all if no argument). */
1042e4c0 14939static void
4495129a 14940delete_trace_command (const char *arg, int from_tty)
1042e4c0 14941{
35df4500 14942 struct breakpoint *b, *b_tmp;
1042e4c0
SS
14943
14944 dont_repeat ();
14945
14946 if (arg == 0)
14947 {
14948 int breaks_to_delete = 0;
14949
14950 /* Delete all breakpoints if no argument.
14951 Do not delete internal or call-dummy breakpoints, these
4a64f543
MS
14952 have to be deleted with an explicit breakpoint number
14953 argument. */
1042e4c0 14954 ALL_TRACEPOINTS (b)
46c6471b 14955 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0
SS
14956 {
14957 breaks_to_delete = 1;
14958 break;
14959 }
1042e4c0
SS
14960
14961 /* Ask user only if there are some breakpoints to delete. */
14962 if (!from_tty
14963 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14964 {
35df4500 14965 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 14966 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0 14967 delete_breakpoint (b);
1042e4c0
SS
14968 }
14969 }
14970 else
48649e1b
TT
14971 map_breakpoint_numbers
14972 (arg, [&] (breakpoint *b)
14973 {
14974 iterate_over_related_breakpoints (b, delete_breakpoint);
14975 });
1042e4c0
SS
14976}
14977
197f0a60
TT
14978/* Helper function for trace_pass_command. */
14979
14980static void
d9b3f62e 14981trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
197f0a60 14982{
d9b3f62e 14983 tp->pass_count = count;
c1fc2657 14984 observer_notify_breakpoint_modified (tp);
197f0a60
TT
14985 if (from_tty)
14986 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
c1fc2657 14987 tp->number, count);
197f0a60
TT
14988}
14989
1042e4c0
SS
14990/* Set passcount for tracepoint.
14991
14992 First command argument is passcount, second is tracepoint number.
14993 If tracepoint number omitted, apply to most recently defined.
14994 Also accepts special argument "all". */
14995
14996static void
0b39b52e 14997trace_pass_command (const char *args, int from_tty)
1042e4c0 14998{
d9b3f62e 14999 struct tracepoint *t1;
0b39b52e 15000 ULONGEST count;
1042e4c0
SS
15001
15002 if (args == 0 || *args == 0)
3e43a32a
MS
15003 error (_("passcount command requires an "
15004 "argument (count + optional TP num)"));
1042e4c0 15005
0b39b52e 15006 count = strtoulst (args, &args, 10); /* Count comes first, then TP num. */
1042e4c0 15007
529480d0 15008 args = skip_spaces (args);
1042e4c0
SS
15009 if (*args && strncasecmp (args, "all", 3) == 0)
15010 {
d9b3f62e
PA
15011 struct breakpoint *b;
15012
1042e4c0 15013 args += 3; /* Skip special argument "all". */
1042e4c0
SS
15014 if (*args)
15015 error (_("Junk at end of arguments."));
1042e4c0 15016
d9b3f62e 15017 ALL_TRACEPOINTS (b)
197f0a60 15018 {
d9b3f62e 15019 t1 = (struct tracepoint *) b;
197f0a60
TT
15020 trace_pass_set_count (t1, count, from_tty);
15021 }
15022 }
15023 else if (*args == '\0')
1042e4c0 15024 {
5fa1d40e 15025 t1 = get_tracepoint_by_number (&args, NULL);
1042e4c0 15026 if (t1)
197f0a60
TT
15027 trace_pass_set_count (t1, count, from_tty);
15028 }
15029 else
15030 {
bfd28288
PA
15031 number_or_range_parser parser (args);
15032 while (!parser.finished ())
1042e4c0 15033 {
bfd28288 15034 t1 = get_tracepoint_by_number (&args, &parser);
197f0a60
TT
15035 if (t1)
15036 trace_pass_set_count (t1, count, from_tty);
1042e4c0
SS
15037 }
15038 }
1042e4c0
SS
15039}
15040
d9b3f62e 15041struct tracepoint *
1042e4c0
SS
15042get_tracepoint (int num)
15043{
15044 struct breakpoint *t;
15045
15046 ALL_TRACEPOINTS (t)
15047 if (t->number == num)
d9b3f62e 15048 return (struct tracepoint *) t;
1042e4c0
SS
15049
15050 return NULL;
15051}
15052
d5551862
SS
15053/* Find the tracepoint with the given target-side number (which may be
15054 different from the tracepoint number after disconnecting and
15055 reconnecting). */
15056
d9b3f62e 15057struct tracepoint *
d5551862
SS
15058get_tracepoint_by_number_on_target (int num)
15059{
d9b3f62e 15060 struct breakpoint *b;
d5551862 15061
d9b3f62e
PA
15062 ALL_TRACEPOINTS (b)
15063 {
15064 struct tracepoint *t = (struct tracepoint *) b;
15065
15066 if (t->number_on_target == num)
15067 return t;
15068 }
d5551862
SS
15069
15070 return NULL;
15071}
15072
1042e4c0 15073/* Utility: parse a tracepoint number and look it up in the list.
197f0a60 15074 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
5fa1d40e
YQ
15075 If the argument is missing, the most recent tracepoint
15076 (tracepoint_count) is returned. */
15077
d9b3f62e 15078struct tracepoint *
0b39b52e 15079get_tracepoint_by_number (const char **arg,
bfd28288 15080 number_or_range_parser *parser)
1042e4c0 15081{
1042e4c0
SS
15082 struct breakpoint *t;
15083 int tpnum;
0b39b52e 15084 const char *instring = arg == NULL ? NULL : *arg;
1042e4c0 15085
bfd28288 15086 if (parser != NULL)
197f0a60 15087 {
bfd28288
PA
15088 gdb_assert (!parser->finished ());
15089 tpnum = parser->get_number ();
197f0a60
TT
15090 }
15091 else if (arg == NULL || *arg == NULL || ! **arg)
5fa1d40e 15092 tpnum = tracepoint_count;
1042e4c0 15093 else
197f0a60 15094 tpnum = get_number (arg);
1042e4c0
SS
15095
15096 if (tpnum <= 0)
15097 {
15098 if (instring && *instring)
15099 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
15100 instring);
15101 else
5fa1d40e 15102 printf_filtered (_("No previous tracepoint\n"));
1042e4c0
SS
15103 return NULL;
15104 }
15105
15106 ALL_TRACEPOINTS (t)
15107 if (t->number == tpnum)
15108 {
d9b3f62e 15109 return (struct tracepoint *) t;
1042e4c0
SS
15110 }
15111
1042e4c0
SS
15112 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15113 return NULL;
15114}
15115
d9b3f62e
PA
15116void
15117print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15118{
15119 if (b->thread != -1)
15120 fprintf_unfiltered (fp, " thread %d", b->thread);
15121
15122 if (b->task != 0)
15123 fprintf_unfiltered (fp, " task %d", b->task);
15124
15125 fprintf_unfiltered (fp, "\n");
15126}
15127
6149aea9
PA
15128/* Save information on user settable breakpoints (watchpoints, etc) to
15129 a new script file named FILENAME. If FILTER is non-NULL, call it
15130 on each breakpoint and only include the ones for which it returns
15131 non-zero. */
15132
1042e4c0 15133static void
4495129a 15134save_breakpoints (const char *filename, int from_tty,
6149aea9 15135 int (*filter) (const struct breakpoint *))
1042e4c0
SS
15136{
15137 struct breakpoint *tp;
6149aea9 15138 int any = 0;
6149aea9 15139 int extra_trace_bits = 0;
1042e4c0 15140
6149aea9
PA
15141 if (filename == 0 || *filename == 0)
15142 error (_("Argument required (file name in which to save)"));
1042e4c0
SS
15143
15144 /* See if we have anything to save. */
6149aea9 15145 ALL_BREAKPOINTS (tp)
1042e4c0 15146 {
6149aea9 15147 /* Skip internal and momentary breakpoints. */
09d682a4 15148 if (!user_breakpoint_p (tp))
6149aea9
PA
15149 continue;
15150
15151 /* If we have a filter, only save the breakpoints it accepts. */
15152 if (filter && !filter (tp))
15153 continue;
15154
15155 any = 1;
15156
15157 if (is_tracepoint (tp))
15158 {
15159 extra_trace_bits = 1;
15160
15161 /* We can stop searching. */
15162 break;
15163 }
1042e4c0 15164 }
6149aea9
PA
15165
15166 if (!any)
1042e4c0 15167 {
6149aea9 15168 warning (_("Nothing to save."));
1042e4c0
SS
15169 return;
15170 }
15171
ee0c3293 15172 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
d7e74731
PA
15173
15174 stdio_file fp;
15175
ee0c3293 15176 if (!fp.open (expanded_filename.get (), "w"))
6149aea9 15177 error (_("Unable to open file '%s' for saving (%s)"),
ee0c3293 15178 expanded_filename.get (), safe_strerror (errno));
8bf6485c 15179
6149aea9 15180 if (extra_trace_bits)
d7e74731 15181 save_trace_state_variables (&fp);
8bf6485c 15182
6149aea9 15183 ALL_BREAKPOINTS (tp)
1042e4c0 15184 {
6149aea9 15185 /* Skip internal and momentary breakpoints. */
09d682a4 15186 if (!user_breakpoint_p (tp))
6149aea9 15187 continue;
8bf6485c 15188
6149aea9
PA
15189 /* If we have a filter, only save the breakpoints it accepts. */
15190 if (filter && !filter (tp))
15191 continue;
15192
d7e74731 15193 tp->ops->print_recreate (tp, &fp);
1042e4c0 15194
6149aea9
PA
15195 /* Note, we can't rely on tp->number for anything, as we can't
15196 assume the recreated breakpoint numbers will match. Use $bpnum
15197 instead. */
15198
15199 if (tp->cond_string)
d7e74731 15200 fp.printf (" condition $bpnum %s\n", tp->cond_string);
6149aea9
PA
15201
15202 if (tp->ignore_count)
d7e74731 15203 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
6149aea9 15204
2d9442cc 15205 if (tp->type != bp_dprintf && tp->commands)
1042e4c0 15206 {
d7e74731 15207 fp.puts (" commands\n");
a7bdde9e 15208
d7e74731 15209 current_uiout->redirect (&fp);
492d29ea 15210 TRY
1042e4c0 15211 {
d1b0a7bf 15212 print_command_lines (current_uiout, tp->commands.get (), 2);
a7bdde9e 15213 }
492d29ea
PA
15214 CATCH (ex, RETURN_MASK_ALL)
15215 {
112e8700 15216 current_uiout->redirect (NULL);
492d29ea
PA
15217 throw_exception (ex);
15218 }
15219 END_CATCH
1042e4c0 15220
112e8700 15221 current_uiout->redirect (NULL);
d7e74731 15222 fp.puts (" end\n");
1042e4c0 15223 }
6149aea9
PA
15224
15225 if (tp->enable_state == bp_disabled)
d7e74731 15226 fp.puts ("disable $bpnum\n");
6149aea9
PA
15227
15228 /* If this is a multi-location breakpoint, check if the locations
15229 should be individually disabled. Watchpoint locations are
15230 special, and not user visible. */
15231 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15232 {
15233 struct bp_location *loc;
15234 int n = 1;
15235
15236 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15237 if (!loc->enabled)
d7e74731 15238 fp.printf ("disable $bpnum.%d\n", n);
6149aea9 15239 }
1042e4c0 15240 }
8bf6485c 15241
6149aea9 15242 if (extra_trace_bits && *default_collect)
d7e74731 15243 fp.printf ("set default-collect %s\n", default_collect);
8bf6485c 15244
1042e4c0 15245 if (from_tty)
ee0c3293 15246 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
6149aea9
PA
15247}
15248
15249/* The `save breakpoints' command. */
15250
15251static void
4495129a 15252save_breakpoints_command (const char *args, int from_tty)
6149aea9
PA
15253{
15254 save_breakpoints (args, from_tty, NULL);
15255}
15256
15257/* The `save tracepoints' command. */
15258
15259static void
4495129a 15260save_tracepoints_command (const char *args, int from_tty)
6149aea9
PA
15261{
15262 save_breakpoints (args, from_tty, is_tracepoint);
1042e4c0
SS
15263}
15264
15265/* Create a vector of all tracepoints. */
15266
15267VEC(breakpoint_p) *
eeae04df 15268all_tracepoints (void)
1042e4c0
SS
15269{
15270 VEC(breakpoint_p) *tp_vec = 0;
15271 struct breakpoint *tp;
15272
15273 ALL_TRACEPOINTS (tp)
15274 {
15275 VEC_safe_push (breakpoint_p, tp_vec, tp);
15276 }
15277
15278 return tp_vec;
15279}
15280
c906108c 15281\f
629500fa
KS
15282/* This help string is used to consolidate all the help string for specifying
15283 locations used by several commands. */
15284
15285#define LOCATION_HELP_STRING \
15286"Linespecs are colon-separated lists of location parameters, such as\n\
15287source filename, function name, label name, and line number.\n\
15288Example: To specify the start of a label named \"the_top\" in the\n\
15289function \"fact\" in the file \"factorial.c\", use\n\
15290\"factorial.c:fact:the_top\".\n\
15291\n\
15292Address locations begin with \"*\" and specify an exact address in the\n\
15293program. Example: To specify the fourth byte past the start function\n\
15294\"main\", use \"*main + 4\".\n\
15295\n\
15296Explicit locations are similar to linespecs but use an option/argument\n\
15297syntax to specify location parameters.\n\
15298Example: To specify the start of the label named \"the_top\" in the\n\
15299function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15300-function fact -label the_top\".\n"
15301
4a64f543
MS
15302/* This help string is used for the break, hbreak, tbreak and thbreak
15303 commands. It is defined as a macro to prevent duplication.
15304 COMMAND should be a string constant containing the name of the
15305 command. */
629500fa 15306
31e2b00f 15307#define BREAK_ARGS_HELP(command) \
fb7b5af4
SDJ
15308command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15309PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15310probe point. Accepted values are `-probe' (for a generic, automatically\n\
d4777acb
JM
15311guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15312`-probe-dtrace' (for a DTrace probe).\n\
629500fa
KS
15313LOCATION may be a linespec, address, or explicit location as described\n\
15314below.\n\
15315\n\
dc10affe
PA
15316With no LOCATION, uses current execution address of the selected\n\
15317stack frame. This is useful for breaking on return to a stack frame.\n\
31e2b00f
AS
15318\n\
15319THREADNUM is the number from \"info threads\".\n\
15320CONDITION is a boolean expression.\n\
629500fa 15321\n" LOCATION_HELP_STRING "\n\
d41c0fc8
PA
15322Multiple breakpoints at one place are permitted, and useful if their\n\
15323conditions are different.\n\
31e2b00f
AS
15324\n\
15325Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15326
44feb3ce
TT
15327/* List of subcommands for "catch". */
15328static struct cmd_list_element *catch_cmdlist;
15329
15330/* List of subcommands for "tcatch". */
15331static struct cmd_list_element *tcatch_cmdlist;
15332
9ac4176b 15333void
a121b7c1 15334add_catch_command (const char *name, const char *docstring,
eb4c3f4a 15335 cmd_const_sfunc_ftype *sfunc,
625e8578 15336 completer_ftype *completer,
44feb3ce
TT
15337 void *user_data_catch,
15338 void *user_data_tcatch)
15339{
15340 struct cmd_list_element *command;
15341
0450cc4c 15342 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce
TT
15343 &catch_cmdlist);
15344 set_cmd_sfunc (command, sfunc);
15345 set_cmd_context (command, user_data_catch);
a96d9b2e 15346 set_cmd_completer (command, completer);
44feb3ce 15347
0450cc4c 15348 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce
TT
15349 &tcatch_cmdlist);
15350 set_cmd_sfunc (command, sfunc);
15351 set_cmd_context (command, user_data_tcatch);
a96d9b2e 15352 set_cmd_completer (command, completer);
44feb3ce
TT
15353}
15354
6149aea9 15355static void
981a3fb3 15356save_command (const char *arg, int from_tty)
6149aea9 15357{
3e43a32a
MS
15358 printf_unfiltered (_("\"save\" must be followed by "
15359 "the name of a save subcommand.\n"));
635c7e8a 15360 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
6149aea9
PA
15361}
15362
84f4c1fe
PM
15363struct breakpoint *
15364iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15365 void *data)
15366{
35df4500 15367 struct breakpoint *b, *b_tmp;
84f4c1fe 15368
35df4500 15369 ALL_BREAKPOINTS_SAFE (b, b_tmp)
84f4c1fe
PM
15370 {
15371 if ((*callback) (b, data))
15372 return b;
15373 }
15374
15375 return NULL;
15376}
15377
0574c78f
GB
15378/* Zero if any of the breakpoint's locations could be a location where
15379 functions have been inlined, nonzero otherwise. */
15380
15381static int
15382is_non_inline_function (struct breakpoint *b)
15383{
15384 /* The shared library event breakpoint is set on the address of a
15385 non-inline function. */
15386 if (b->type == bp_shlib_event)
15387 return 1;
15388
15389 return 0;
15390}
15391
15392/* Nonzero if the specified PC cannot be a location where functions
15393 have been inlined. */
15394
15395int
accd0bcd 15396pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
09ac7c10 15397 const struct target_waitstatus *ws)
0574c78f
GB
15398{
15399 struct breakpoint *b;
15400 struct bp_location *bl;
15401
15402 ALL_BREAKPOINTS (b)
15403 {
15404 if (!is_non_inline_function (b))
15405 continue;
15406
15407 for (bl = b->loc; bl != NULL; bl = bl->next)
15408 {
15409 if (!bl->shlib_disabled
09ac7c10 15410 && bpstat_check_location (bl, aspace, pc, ws))
0574c78f
GB
15411 return 1;
15412 }
15413 }
15414
15415 return 0;
15416}
15417
2f202fde
JK
15418/* Remove any references to OBJFILE which is going to be freed. */
15419
15420void
15421breakpoint_free_objfile (struct objfile *objfile)
15422{
15423 struct bp_location **locp, *loc;
15424
15425 ALL_BP_LOCATIONS (loc, locp)
eb822aa6 15426 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
2f202fde
JK
15427 loc->symtab = NULL;
15428}
15429
2060206e
PA
15430void
15431initialize_breakpoint_ops (void)
15432{
15433 static int initialized = 0;
15434
15435 struct breakpoint_ops *ops;
15436
15437 if (initialized)
15438 return;
15439 initialized = 1;
15440
15441 /* The breakpoint_ops structure to be inherit by all kinds of
15442 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15443 internal and momentary breakpoints, etc.). */
15444 ops = &bkpt_base_breakpoint_ops;
15445 *ops = base_breakpoint_ops;
15446 ops->re_set = bkpt_re_set;
15447 ops->insert_location = bkpt_insert_location;
15448 ops->remove_location = bkpt_remove_location;
15449 ops->breakpoint_hit = bkpt_breakpoint_hit;
5f700d83 15450 ops->create_sals_from_location = bkpt_create_sals_from_location;
983af33b 15451 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
5f700d83 15452 ops->decode_location = bkpt_decode_location;
2060206e
PA
15453
15454 /* The breakpoint_ops structure to be used in regular breakpoints. */
15455 ops = &bkpt_breakpoint_ops;
15456 *ops = bkpt_base_breakpoint_ops;
15457 ops->re_set = bkpt_re_set;
15458 ops->resources_needed = bkpt_resources_needed;
15459 ops->print_it = bkpt_print_it;
15460 ops->print_mention = bkpt_print_mention;
15461 ops->print_recreate = bkpt_print_recreate;
15462
15463 /* Ranged breakpoints. */
15464 ops = &ranged_breakpoint_ops;
15465 *ops = bkpt_breakpoint_ops;
15466 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15467 ops->resources_needed = resources_needed_ranged_breakpoint;
15468 ops->print_it = print_it_ranged_breakpoint;
15469 ops->print_one = print_one_ranged_breakpoint;
15470 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15471 ops->print_mention = print_mention_ranged_breakpoint;
15472 ops->print_recreate = print_recreate_ranged_breakpoint;
15473
15474 /* Internal breakpoints. */
15475 ops = &internal_breakpoint_ops;
15476 *ops = bkpt_base_breakpoint_ops;
15477 ops->re_set = internal_bkpt_re_set;
15478 ops->check_status = internal_bkpt_check_status;
15479 ops->print_it = internal_bkpt_print_it;
15480 ops->print_mention = internal_bkpt_print_mention;
15481
15482 /* Momentary breakpoints. */
15483 ops = &momentary_breakpoint_ops;
15484 *ops = bkpt_base_breakpoint_ops;
15485 ops->re_set = momentary_bkpt_re_set;
15486 ops->check_status = momentary_bkpt_check_status;
15487 ops->print_it = momentary_bkpt_print_it;
15488 ops->print_mention = momentary_bkpt_print_mention;
15489
55aa24fb
SDJ
15490 /* Probe breakpoints. */
15491 ops = &bkpt_probe_breakpoint_ops;
15492 *ops = bkpt_breakpoint_ops;
15493 ops->insert_location = bkpt_probe_insert_location;
15494 ops->remove_location = bkpt_probe_remove_location;
5f700d83
KS
15495 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15496 ops->decode_location = bkpt_probe_decode_location;
55aa24fb 15497
2060206e
PA
15498 /* Watchpoints. */
15499 ops = &watchpoint_breakpoint_ops;
15500 *ops = base_breakpoint_ops;
15501 ops->re_set = re_set_watchpoint;
15502 ops->insert_location = insert_watchpoint;
15503 ops->remove_location = remove_watchpoint;
15504 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15505 ops->check_status = check_status_watchpoint;
15506 ops->resources_needed = resources_needed_watchpoint;
15507 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15508 ops->print_it = print_it_watchpoint;
15509 ops->print_mention = print_mention_watchpoint;
15510 ops->print_recreate = print_recreate_watchpoint;
427cd150 15511 ops->explains_signal = explains_signal_watchpoint;
2060206e
PA
15512
15513 /* Masked watchpoints. */
15514 ops = &masked_watchpoint_breakpoint_ops;
15515 *ops = watchpoint_breakpoint_ops;
15516 ops->insert_location = insert_masked_watchpoint;
15517 ops->remove_location = remove_masked_watchpoint;
15518 ops->resources_needed = resources_needed_masked_watchpoint;
15519 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15520 ops->print_it = print_it_masked_watchpoint;
15521 ops->print_one_detail = print_one_detail_masked_watchpoint;
15522 ops->print_mention = print_mention_masked_watchpoint;
15523 ops->print_recreate = print_recreate_masked_watchpoint;
15524
15525 /* Tracepoints. */
15526 ops = &tracepoint_breakpoint_ops;
15527 *ops = base_breakpoint_ops;
15528 ops->re_set = tracepoint_re_set;
15529 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15530 ops->print_one_detail = tracepoint_print_one_detail;
15531 ops->print_mention = tracepoint_print_mention;
15532 ops->print_recreate = tracepoint_print_recreate;
5f700d83 15533 ops->create_sals_from_location = tracepoint_create_sals_from_location;
983af33b 15534 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
5f700d83 15535 ops->decode_location = tracepoint_decode_location;
983af33b 15536
55aa24fb
SDJ
15537 /* Probe tracepoints. */
15538 ops = &tracepoint_probe_breakpoint_ops;
15539 *ops = tracepoint_breakpoint_ops;
5f700d83
KS
15540 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15541 ops->decode_location = tracepoint_probe_decode_location;
55aa24fb 15542
983af33b
SDJ
15543 /* Static tracepoints with marker (`-m'). */
15544 ops = &strace_marker_breakpoint_ops;
15545 *ops = tracepoint_breakpoint_ops;
5f700d83 15546 ops->create_sals_from_location = strace_marker_create_sals_from_location;
983af33b 15547 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
5f700d83 15548 ops->decode_location = strace_marker_decode_location;
2060206e
PA
15549
15550 /* Fork catchpoints. */
15551 ops = &catch_fork_breakpoint_ops;
15552 *ops = base_breakpoint_ops;
15553 ops->insert_location = insert_catch_fork;
15554 ops->remove_location = remove_catch_fork;
15555 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15556 ops->print_it = print_it_catch_fork;
15557 ops->print_one = print_one_catch_fork;
15558 ops->print_mention = print_mention_catch_fork;
15559 ops->print_recreate = print_recreate_catch_fork;
15560
15561 /* Vfork catchpoints. */
15562 ops = &catch_vfork_breakpoint_ops;
15563 *ops = base_breakpoint_ops;
15564 ops->insert_location = insert_catch_vfork;
15565 ops->remove_location = remove_catch_vfork;
15566 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15567 ops->print_it = print_it_catch_vfork;
15568 ops->print_one = print_one_catch_vfork;
15569 ops->print_mention = print_mention_catch_vfork;
15570 ops->print_recreate = print_recreate_catch_vfork;
15571
15572 /* Exec catchpoints. */
15573 ops = &catch_exec_breakpoint_ops;
15574 *ops = base_breakpoint_ops;
2060206e
PA
15575 ops->insert_location = insert_catch_exec;
15576 ops->remove_location = remove_catch_exec;
15577 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15578 ops->print_it = print_it_catch_exec;
15579 ops->print_one = print_one_catch_exec;
15580 ops->print_mention = print_mention_catch_exec;
15581 ops->print_recreate = print_recreate_catch_exec;
15582
edcc5120
TT
15583 /* Solib-related catchpoints. */
15584 ops = &catch_solib_breakpoint_ops;
15585 *ops = base_breakpoint_ops;
edcc5120
TT
15586 ops->insert_location = insert_catch_solib;
15587 ops->remove_location = remove_catch_solib;
15588 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15589 ops->check_status = check_status_catch_solib;
15590 ops->print_it = print_it_catch_solib;
15591 ops->print_one = print_one_catch_solib;
15592 ops->print_mention = print_mention_catch_solib;
15593 ops->print_recreate = print_recreate_catch_solib;
e7e0cddf
SS
15594
15595 ops = &dprintf_breakpoint_ops;
15596 *ops = bkpt_base_breakpoint_ops;
5c2b4418 15597 ops->re_set = dprintf_re_set;
e7e0cddf
SS
15598 ops->resources_needed = bkpt_resources_needed;
15599 ops->print_it = bkpt_print_it;
15600 ops->print_mention = bkpt_print_mention;
2d9442cc 15601 ops->print_recreate = dprintf_print_recreate;
9d6e6e84 15602 ops->after_condition_true = dprintf_after_condition_true;
cd1608cc 15603 ops->breakpoint_hit = dprintf_breakpoint_hit;
2060206e
PA
15604}
15605
8bfd80db
YQ
15606/* Chain containing all defined "enable breakpoint" subcommands. */
15607
15608static struct cmd_list_element *enablebreaklist = NULL;
15609
c906108c 15610void
fba45db2 15611_initialize_breakpoint (void)
c906108c
SS
15612{
15613 struct cmd_list_element *c;
15614
2060206e
PA
15615 initialize_breakpoint_ops ();
15616
84acb35a 15617 observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
63644780 15618 observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
1f3b5d1b 15619 observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
84acb35a 15620
55aa24fb 15621 breakpoint_objfile_key
43dce439 15622 = register_objfile_data_with_cleanup (NULL, free_breakpoint_objfile_data);
17450429 15623
c906108c
SS
15624 breakpoint_chain = 0;
15625 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15626 before a breakpoint is set. */
15627 breakpoint_count = 0;
15628
1042e4c0
SS
15629 tracepoint_count = 0;
15630
1bedd215
AC
15631 add_com ("ignore", class_breakpoint, ignore_command, _("\
15632Set ignore-count of breakpoint number N to COUNT.\n\
15633Usage is `ignore N COUNT'."));
c906108c 15634
1bedd215 15635 add_com ("commands", class_breakpoint, commands_command, _("\
18da0c51
MG
15636Set commands to be executed when the given breakpoints are hit.\n\
15637Give a space-separated breakpoint list as argument after \"commands\".\n\
15638A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15639(e.g. `5-7').\n\
c906108c
SS
15640With no argument, the targeted breakpoint is the last one set.\n\
15641The commands themselves follow starting on the next line.\n\
15642Type a line containing \"end\" to indicate the end of them.\n\
15643Give \"silent\" as the first line to make the breakpoint silent;\n\
1bedd215 15644then no output is printed when it is hit, except what the commands print."));
c906108c 15645
d55637df 15646 c = add_com ("condition", class_breakpoint, condition_command, _("\
1bedd215 15647Specify breakpoint number N to break only if COND is true.\n\
c906108c 15648Usage is `condition N COND', where N is an integer and COND is an\n\
1bedd215 15649expression to be evaluated whenever breakpoint N is reached."));
d55637df 15650 set_cmd_completer (c, condition_completer);
c906108c 15651
1bedd215 15652 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
31e2b00f 15653Set a temporary breakpoint.\n\
c906108c
SS
15654Like \"break\" except the breakpoint is only temporary,\n\
15655so it will be deleted when hit. Equivalent to \"break\" followed\n\
31e2b00f
AS
15656by using \"enable delete\" on the breakpoint number.\n\
15657\n"
15658BREAK_ARGS_HELP ("tbreak")));
5ba2abeb 15659 set_cmd_completer (c, location_completer);
c94fdfd0 15660
1bedd215 15661 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
a3be7890 15662Set a hardware assisted breakpoint.\n\
c906108c 15663Like \"break\" except the breakpoint requires hardware support,\n\
31e2b00f
AS
15664some target hardware may not have this support.\n\
15665\n"
15666BREAK_ARGS_HELP ("hbreak")));
5ba2abeb 15667 set_cmd_completer (c, location_completer);
c906108c 15668
1bedd215 15669 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
31e2b00f 15670Set a temporary hardware assisted breakpoint.\n\
c906108c 15671Like \"hbreak\" except the breakpoint is only temporary,\n\
31e2b00f
AS
15672so it will be deleted when hit.\n\
15673\n"
15674BREAK_ARGS_HELP ("thbreak")));
5ba2abeb 15675 set_cmd_completer (c, location_completer);
c906108c 15676
1bedd215
AC
15677 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15678Enable some breakpoints.\n\
c906108c
SS
15679Give breakpoint numbers (separated by spaces) as arguments.\n\
15680With no subcommand, breakpoints are enabled until you command otherwise.\n\
15681This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 15682With a subcommand you can enable temporarily."),
c906108c 15683 &enablelist, "enable ", 1, &cmdlist);
c906108c
SS
15684
15685 add_com_alias ("en", "enable", class_breakpoint, 1);
15686
84951ab5 15687 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
1bedd215 15688Enable some breakpoints.\n\
c906108c
SS
15689Give breakpoint numbers (separated by spaces) as arguments.\n\
15690This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 15691May be abbreviated to simply \"enable\".\n"),
c5aa993b 15692 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
c906108c 15693
1a966eab
AC
15694 add_cmd ("once", no_class, enable_once_command, _("\
15695Enable breakpoints for one hit. Give breakpoint numbers.\n\
15696If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
c906108c
SS
15697 &enablebreaklist);
15698
1a966eab
AC
15699 add_cmd ("delete", no_class, enable_delete_command, _("\
15700Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15701If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15702 &enablebreaklist);
15703
816338b5
SS
15704 add_cmd ("count", no_class, enable_count_command, _("\
15705Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15706If a breakpoint is hit while enabled in this fashion,\n\
15707the count is decremented; when it reaches zero, the breakpoint is disabled."),
15708 &enablebreaklist);
15709
1a966eab
AC
15710 add_cmd ("delete", no_class, enable_delete_command, _("\
15711Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15712If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15713 &enablelist);
15714
1a966eab
AC
15715 add_cmd ("once", no_class, enable_once_command, _("\
15716Enable breakpoints for one hit. Give breakpoint numbers.\n\
15717If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
816338b5
SS
15718 &enablelist);
15719
15720 add_cmd ("count", no_class, enable_count_command, _("\
15721Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15722If a breakpoint is hit while enabled in this fashion,\n\
15723the count is decremented; when it reaches zero, the breakpoint is disabled."),
c906108c
SS
15724 &enablelist);
15725
1bedd215
AC
15726 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15727Disable some breakpoints.\n\
c906108c
SS
15728Arguments are breakpoint numbers with spaces in between.\n\
15729To disable all breakpoints, give no argument.\n\
64b9b334 15730A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
c906108c
SS
15731 &disablelist, "disable ", 1, &cmdlist);
15732 add_com_alias ("dis", "disable", class_breakpoint, 1);
15733 add_com_alias ("disa", "disable", class_breakpoint, 1);
c906108c 15734
1a966eab
AC
15735 add_cmd ("breakpoints", class_alias, disable_command, _("\
15736Disable some breakpoints.\n\
c906108c
SS
15737Arguments are breakpoint numbers with spaces in between.\n\
15738To disable all breakpoints, give no argument.\n\
64b9b334 15739A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
1a966eab 15740This command may be abbreviated \"disable\"."),
c906108c
SS
15741 &disablelist);
15742
1bedd215
AC
15743 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15744Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
15745Arguments are breakpoint numbers with spaces in between.\n\
15746To delete all breakpoints, give no argument.\n\
15747\n\
15748Also a prefix command for deletion of other GDB objects.\n\
1bedd215 15749The \"unset\" command is also an alias for \"delete\"."),
c906108c
SS
15750 &deletelist, "delete ", 1, &cmdlist);
15751 add_com_alias ("d", "delete", class_breakpoint, 1);
7f198e01 15752 add_com_alias ("del", "delete", class_breakpoint, 1);
c906108c 15753
1a966eab
AC
15754 add_cmd ("breakpoints", class_alias, delete_command, _("\
15755Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
15756Arguments are breakpoint numbers with spaces in between.\n\
15757To delete all breakpoints, give no argument.\n\
1a966eab 15758This command may be abbreviated \"delete\"."),
c906108c
SS
15759 &deletelist);
15760
1bedd215 15761 add_com ("clear", class_breakpoint, clear_command, _("\
629500fa
KS
15762Clear breakpoint at specified location.\n\
15763Argument may be a linespec, explicit, or address location as described below.\n\
1bedd215
AC
15764\n\
15765With no argument, clears all breakpoints in the line that the selected frame\n\
629500fa
KS
15766is executing in.\n"
15767"\n" LOCATION_HELP_STRING "\n\
1bedd215 15768See also the \"delete\" command which clears breakpoints by number."));
a6cc4789 15769 add_com_alias ("cl", "clear", class_breakpoint, 1);
c906108c 15770
1bedd215 15771 c = add_com ("break", class_breakpoint, break_command, _("\
629500fa 15772Set breakpoint at specified location.\n"
31e2b00f 15773BREAK_ARGS_HELP ("break")));
5ba2abeb 15774 set_cmd_completer (c, location_completer);
c94fdfd0 15775
c906108c
SS
15776 add_com_alias ("b", "break", class_run, 1);
15777 add_com_alias ("br", "break", class_run, 1);
15778 add_com_alias ("bre", "break", class_run, 1);
15779 add_com_alias ("brea", "break", class_run, 1);
15780
c906108c
SS
15781 if (dbx_commands)
15782 {
1bedd215
AC
15783 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15784Break in function/address or break at a line in the current file."),
c5aa993b
JM
15785 &stoplist, "stop ", 1, &cmdlist);
15786 add_cmd ("in", class_breakpoint, stopin_command,
1a966eab 15787 _("Break in function or address."), &stoplist);
c5aa993b 15788 add_cmd ("at", class_breakpoint, stopat_command,
1a966eab 15789 _("Break at a line in the current file."), &stoplist);
11db9430 15790 add_com ("status", class_info, info_breakpoints_command, _("\
1bedd215 15791Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
15792The \"Type\" column indicates one of:\n\
15793\tbreakpoint - normal breakpoint\n\
15794\twatchpoint - watchpoint\n\
15795The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15796the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15797breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
15798address and file/line number respectively.\n\
15799\n\
15800Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15801are set to the address of the last breakpoint listed unless the command\n\
15802is prefixed with \"server \".\n\n\
c906108c 15803Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 15804breakpoint set."));
c906108c
SS
15805 }
15806
11db9430 15807 add_info ("breakpoints", info_breakpoints_command, _("\
e5a67952 15808Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
c906108c
SS
15809The \"Type\" column indicates one of:\n\
15810\tbreakpoint - normal breakpoint\n\
15811\twatchpoint - watchpoint\n\
15812The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15813the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15814breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
15815address and file/line number respectively.\n\
15816\n\
15817Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15818are set to the address of the last breakpoint listed unless the command\n\
15819is prefixed with \"server \".\n\n\
c906108c 15820Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 15821breakpoint set."));
c906108c 15822
6b04bdb7
MS
15823 add_info_alias ("b", "breakpoints", 1);
15824
1a966eab
AC
15825 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15826Status of all breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
15827The \"Type\" column indicates one of:\n\
15828\tbreakpoint - normal breakpoint\n\
15829\twatchpoint - watchpoint\n\
15830\tlongjmp - internal breakpoint used to step through longjmp()\n\
15831\tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15832\tuntil - internal breakpoint used by the \"until\" command\n\
1a966eab
AC
15833\tfinish - internal breakpoint used by the \"finish\" command\n\
15834The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
c906108c
SS
15835the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15836breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1a966eab
AC
15837address and file/line number respectively.\n\
15838\n\
15839Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15840are set to the address of the last breakpoint listed unless the command\n\
15841is prefixed with \"server \".\n\n\
c906108c 15842Convenience variable \"$bpnum\" contains the number of the last\n\
1a966eab 15843breakpoint set."),
c906108c
SS
15844 &maintenanceinfolist);
15845
44feb3ce
TT
15846 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15847Set catchpoints to catch events."),
15848 &catch_cmdlist, "catch ",
15849 0/*allow-unknown*/, &cmdlist);
15850
15851 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15852Set temporary catchpoints to catch events."),
15853 &tcatch_cmdlist, "tcatch ",
15854 0/*allow-unknown*/, &cmdlist);
15855
44feb3ce
TT
15856 add_catch_command ("fork", _("Catch calls to fork."),
15857 catch_fork_command_1,
a96d9b2e 15858 NULL,
44feb3ce
TT
15859 (void *) (uintptr_t) catch_fork_permanent,
15860 (void *) (uintptr_t) catch_fork_temporary);
15861 add_catch_command ("vfork", _("Catch calls to vfork."),
15862 catch_fork_command_1,
a96d9b2e 15863 NULL,
44feb3ce
TT
15864 (void *) (uintptr_t) catch_vfork_permanent,
15865 (void *) (uintptr_t) catch_vfork_temporary);
15866 add_catch_command ("exec", _("Catch calls to exec."),
15867 catch_exec_command_1,
a96d9b2e
SDJ
15868 NULL,
15869 CATCH_PERMANENT,
15870 CATCH_TEMPORARY);
edcc5120
TT
15871 add_catch_command ("load", _("Catch loads of shared libraries.\n\
15872Usage: catch load [REGEX]\n\
15873If REGEX is given, only stop for libraries matching the regular expression."),
15874 catch_load_command_1,
15875 NULL,
15876 CATCH_PERMANENT,
15877 CATCH_TEMPORARY);
15878 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15879Usage: catch unload [REGEX]\n\
15880If REGEX is given, only stop for libraries matching the regular expression."),
15881 catch_unload_command_1,
15882 NULL,
15883 CATCH_PERMANENT,
15884 CATCH_TEMPORARY);
c5aa993b 15885
1bedd215
AC
15886 c = add_com ("watch", class_breakpoint, watch_command, _("\
15887Set a watchpoint for an expression.\n\
06a64a0b 15888Usage: watch [-l|-location] EXPRESSION\n\
c906108c 15889A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15890an expression changes.\n\
15891If -l or -location is given, this evaluates EXPRESSION and watches\n\
15892the memory to which it refers."));
65d12d83 15893 set_cmd_completer (c, expression_completer);
c906108c 15894
1bedd215
AC
15895 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15896Set a read watchpoint for an expression.\n\
06a64a0b 15897Usage: rwatch [-l|-location] EXPRESSION\n\
c906108c 15898A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15899an expression is read.\n\
15900If -l or -location is given, this evaluates EXPRESSION and watches\n\
15901the memory to which it refers."));
65d12d83 15902 set_cmd_completer (c, expression_completer);
c906108c 15903
1bedd215
AC
15904 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15905Set a watchpoint for an expression.\n\
06a64a0b 15906Usage: awatch [-l|-location] EXPRESSION\n\
c906108c 15907A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15908an expression is either read or written.\n\
15909If -l or -location is given, this evaluates EXPRESSION and watches\n\
15910the memory to which it refers."));
65d12d83 15911 set_cmd_completer (c, expression_completer);
c906108c 15912
11db9430 15913 add_info ("watchpoints", info_watchpoints_command, _("\
e5a67952 15914Status of specified watchpoints (all watchpoints if no argument)."));
c906108c 15915
920d2a44
AC
15916 /* XXX: cagney/2005-02-23: This should be a boolean, and should
15917 respond to changes - contrary to the description. */
85c07804
AC
15918 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15919 &can_use_hw_watchpoints, _("\
15920Set debugger's willingness to use watchpoint hardware."), _("\
15921Show debugger's willingness to use watchpoint hardware."), _("\
c906108c
SS
15922If zero, gdb will not use hardware for new watchpoints, even if\n\
15923such is available. (However, any hardware watchpoints that were\n\
15924created before setting this to nonzero, will continue to use watchpoint\n\
85c07804
AC
15925hardware.)"),
15926 NULL,
920d2a44 15927 show_can_use_hw_watchpoints,
85c07804 15928 &setlist, &showlist);
c906108c
SS
15929
15930 can_use_hw_watchpoints = 1;
fa8d40ab 15931
1042e4c0
SS
15932 /* Tracepoint manipulation commands. */
15933
15934 c = add_com ("trace", class_breakpoint, trace_command, _("\
629500fa 15935Set a tracepoint at specified location.\n\
1042e4c0
SS
15936\n"
15937BREAK_ARGS_HELP ("trace") "\n\
15938Do \"help tracepoints\" for info on other tracepoint commands."));
15939 set_cmd_completer (c, location_completer);
15940
15941 add_com_alias ("tp", "trace", class_alias, 0);
15942 add_com_alias ("tr", "trace", class_alias, 1);
15943 add_com_alias ("tra", "trace", class_alias, 1);
15944 add_com_alias ("trac", "trace", class_alias, 1);
15945
7a697b8d 15946 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
629500fa 15947Set a fast tracepoint at specified location.\n\
7a697b8d
SS
15948\n"
15949BREAK_ARGS_HELP ("ftrace") "\n\
15950Do \"help tracepoints\" for info on other tracepoint commands."));
15951 set_cmd_completer (c, location_completer);
15952
0fb4aa4b 15953 c = add_com ("strace", class_breakpoint, strace_command, _("\
629500fa 15954Set a static tracepoint at location or marker.\n\
0fb4aa4b
PA
15955\n\
15956strace [LOCATION] [if CONDITION]\n\
629500fa
KS
15957LOCATION may be a linespec, explicit, or address location (described below) \n\
15958or -m MARKER_ID.\n\n\
15959If a marker id is specified, probe the marker with that name. With\n\
15960no LOCATION, uses current execution address of the selected stack frame.\n\
0fb4aa4b
PA
15961Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15962This collects arbitrary user data passed in the probe point call to the\n\
15963tracing library. You can inspect it when analyzing the trace buffer,\n\
15964by printing the $_sdata variable like any other convenience variable.\n\
15965\n\
15966CONDITION is a boolean expression.\n\
629500fa 15967\n" LOCATION_HELP_STRING "\n\
d41c0fc8
PA
15968Multiple tracepoints at one place are permitted, and useful if their\n\
15969conditions are different.\n\
0fb4aa4b
PA
15970\n\
15971Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15972Do \"help tracepoints\" for info on other tracepoint commands."));
15973 set_cmd_completer (c, location_completer);
15974
11db9430 15975 add_info ("tracepoints", info_tracepoints_command, _("\
e5a67952 15976Status of specified tracepoints (all tracepoints if no argument).\n\
1042e4c0
SS
15977Convenience variable \"$tpnum\" contains the number of the\n\
15978last tracepoint set."));
15979
15980 add_info_alias ("tp", "tracepoints", 1);
15981
15982 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15983Delete specified tracepoints.\n\
15984Arguments are tracepoint numbers, separated by spaces.\n\
15985No argument means delete all tracepoints."),
15986 &deletelist);
7e20dfcd 15987 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
1042e4c0
SS
15988
15989 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15990Disable specified tracepoints.\n\
15991Arguments are tracepoint numbers, separated by spaces.\n\
15992No argument means disable all tracepoints."),
15993 &disablelist);
15994 deprecate_cmd (c, "disable");
15995
15996 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15997Enable specified tracepoints.\n\
15998Arguments are tracepoint numbers, separated by spaces.\n\
15999No argument means enable all tracepoints."),
16000 &enablelist);
16001 deprecate_cmd (c, "enable");
16002
16003 add_com ("passcount", class_trace, trace_pass_command, _("\
16004Set the passcount for a tracepoint.\n\
16005The trace will end when the tracepoint has been passed 'count' times.\n\
16006Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16007if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16008
6149aea9
PA
16009 add_prefix_cmd ("save", class_breakpoint, save_command,
16010 _("Save breakpoint definitions as a script."),
16011 &save_cmdlist, "save ",
16012 0/*allow-unknown*/, &cmdlist);
16013
16014 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16015Save current breakpoint definitions as a script.\n\
cce7e648 16016This includes all types of breakpoints (breakpoints, watchpoints,\n\
6149aea9
PA
16017catchpoints, tracepoints). Use the 'source' command in another debug\n\
16018session to restore them."),
16019 &save_cmdlist);
16020 set_cmd_completer (c, filename_completer);
16021
16022 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
1042e4c0 16023Save current tracepoint definitions as a script.\n\
6149aea9
PA
16024Use the 'source' command in another debug session to restore them."),
16025 &save_cmdlist);
1042e4c0
SS
16026 set_cmd_completer (c, filename_completer);
16027
6149aea9
PA
16028 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16029 deprecate_cmd (c, "save tracepoints");
16030
1bedd215 16031 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
fa8d40ab
JJ
16032Breakpoint specific settings\n\
16033Configure various breakpoint-specific variables such as\n\
1bedd215 16034pending breakpoint behavior"),
fa8d40ab
JJ
16035 &breakpoint_set_cmdlist, "set breakpoint ",
16036 0/*allow-unknown*/, &setlist);
1bedd215 16037 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
fa8d40ab
JJ
16038Breakpoint specific settings\n\
16039Configure various breakpoint-specific variables such as\n\
1bedd215 16040pending breakpoint behavior"),
fa8d40ab
JJ
16041 &breakpoint_show_cmdlist, "show breakpoint ",
16042 0/*allow-unknown*/, &showlist);
16043
7915a72c
AC
16044 add_setshow_auto_boolean_cmd ("pending", no_class,
16045 &pending_break_support, _("\
16046Set debugger's behavior regarding pending breakpoints."), _("\
16047Show debugger's behavior regarding pending breakpoints."), _("\
6e1d7d6c
AC
16048If on, an unrecognized breakpoint location will cause gdb to create a\n\
16049pending breakpoint. If off, an unrecognized breakpoint location results in\n\
16050an error. If auto, an unrecognized breakpoint location results in a\n\
7915a72c 16051user-query to see if a pending breakpoint should be created."),
2c5b56ce 16052 NULL,
920d2a44 16053 show_pending_break_support,
6e1d7d6c
AC
16054 &breakpoint_set_cmdlist,
16055 &breakpoint_show_cmdlist);
fa8d40ab
JJ
16056
16057 pending_break_support = AUTO_BOOLEAN_AUTO;
765dc015
VP
16058
16059 add_setshow_boolean_cmd ("auto-hw", no_class,
16060 &automatic_hardware_breakpoints, _("\
16061Set automatic usage of hardware breakpoints."), _("\
16062Show automatic usage of hardware breakpoints."), _("\
16063If set, the debugger will automatically use hardware breakpoints for\n\
16064breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
16065a warning will be emitted for such breakpoints."),
16066 NULL,
16067 show_automatic_hardware_breakpoints,
16068 &breakpoint_set_cmdlist,
16069 &breakpoint_show_cmdlist);
74960c60 16070
a25a5a45
PA
16071 add_setshow_boolean_cmd ("always-inserted", class_support,
16072 &always_inserted_mode, _("\
74960c60
VP
16073Set mode for inserting breakpoints."), _("\
16074Show mode for inserting breakpoints."), _("\
a25a5a45
PA
16075When this mode is on, breakpoints are inserted immediately as soon as\n\
16076they're created, kept inserted even when execution stops, and removed\n\
16077only when the user deletes them. When this mode is off (the default),\n\
16078breakpoints are inserted only when execution continues, and removed\n\
16079when execution stops."),
72d0e2c5
YQ
16080 NULL,
16081 &show_always_inserted_mode,
16082 &breakpoint_set_cmdlist,
16083 &breakpoint_show_cmdlist);
f1310107 16084
b775012e
LM
16085 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16086 condition_evaluation_enums,
16087 &condition_evaluation_mode_1, _("\
16088Set mode of breakpoint condition evaluation."), _("\
16089Show mode of breakpoint condition evaluation."), _("\
d1cda5d9 16090When this is set to \"host\", breakpoint conditions will be\n\
b775012e
LM
16091evaluated on the host's side by GDB. When it is set to \"target\",\n\
16092breakpoint conditions will be downloaded to the target (if the target\n\
16093supports such feature) and conditions will be evaluated on the target's side.\n\
16094If this is set to \"auto\" (default), this will be automatically set to\n\
16095\"target\" if it supports condition evaluation, otherwise it will\n\
16096be set to \"gdb\""),
16097 &set_condition_evaluation_mode,
16098 &show_condition_evaluation_mode,
16099 &breakpoint_set_cmdlist,
16100 &breakpoint_show_cmdlist);
16101
f1310107
TJB
16102 add_com ("break-range", class_breakpoint, break_range_command, _("\
16103Set a breakpoint for an address range.\n\
16104break-range START-LOCATION, END-LOCATION\n\
16105where START-LOCATION and END-LOCATION can be one of the following:\n\
16106 LINENUM, for that line in the current file,\n\
16107 FILE:LINENUM, for that line in that file,\n\
16108 +OFFSET, for that number of lines after the current line\n\
16109 or the start of the range\n\
16110 FUNCTION, for the first line in that function,\n\
16111 FILE:FUNCTION, to distinguish among like-named static functions.\n\
16112 *ADDRESS, for the instruction at that address.\n\
16113\n\
16114The breakpoint will stop execution of the inferior whenever it executes\n\
16115an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16116range (including START-LOCATION and END-LOCATION)."));
16117
e7e0cddf 16118 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
629500fa 16119Set a dynamic printf at specified location.\n\
e7e0cddf 16120dprintf location,format string,arg1,arg2,...\n\
629500fa
KS
16121location may be a linespec, explicit, or address location.\n"
16122"\n" LOCATION_HELP_STRING));
e7e0cddf
SS
16123 set_cmd_completer (c, location_completer);
16124
16125 add_setshow_enum_cmd ("dprintf-style", class_support,
16126 dprintf_style_enums, &dprintf_style, _("\
16127Set the style of usage for dynamic printf."), _("\
16128Show the style of usage for dynamic printf."), _("\
16129This setting chooses how GDB will do a dynamic printf.\n\
16130If the value is \"gdb\", then the printing is done by GDB to its own\n\
16131console, as with the \"printf\" command.\n\
16132If the value is \"call\", the print is done by calling a function in your\n\
16133program; by default printf(), but you can choose a different function or\n\
16134output stream by setting dprintf-function and dprintf-channel."),
16135 update_dprintf_commands, NULL,
16136 &setlist, &showlist);
16137
16138 dprintf_function = xstrdup ("printf");
16139 add_setshow_string_cmd ("dprintf-function", class_support,
16140 &dprintf_function, _("\
16141Set the function to use for dynamic printf"), _("\
16142Show the function to use for dynamic printf"), NULL,
16143 update_dprintf_commands, NULL,
16144 &setlist, &showlist);
16145
16146 dprintf_channel = xstrdup ("");
16147 add_setshow_string_cmd ("dprintf-channel", class_support,
16148 &dprintf_channel, _("\
16149Set the channel to use for dynamic printf"), _("\
16150Show the channel to use for dynamic printf"), NULL,
16151 update_dprintf_commands, NULL,
16152 &setlist, &showlist);
16153
d3ce09f5
SS
16154 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16155 &disconnected_dprintf, _("\
16156Set whether dprintf continues after GDB disconnects."), _("\
16157Show whether dprintf continues after GDB disconnects."), _("\
16158Use this to let dprintf commands continue to hit and produce output\n\
16159even if GDB disconnects or detaches from the target."),
16160 NULL,
16161 NULL,
16162 &setlist, &showlist);
16163
16164 add_com ("agent-printf", class_vars, agent_printf_command, _("\
16165agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16166(target agent only) This is useful for formatted output in user-defined commands."));
16167
765dc015 16168 automatic_hardware_breakpoints = 1;
f3b1572e
PA
16169
16170 observer_attach_about_to_proceed (breakpoint_about_to_proceed);
49fa26b0 16171 observer_attach_thread_exit (remove_threaded_breakpoints);
c906108c 16172}
This page took 3.143023 seconds and 4 git commands to generate.