]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/breakpoint.c
Remove free_all_values
[thirdparty/binutils-gdb.git] / gdb / breakpoint.c
CommitLineData
c906108c 1/* Everything about breakpoints, for GDB.
8926118c 2
e2882c85 3 Copyright (C) 1986-2018 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 51#include "solist.h"
76727919 52#include "observable.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
aee1fcdf 882 innermost_block.reset ();
adc36818 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"));
aee1fcdf 887 w->cond_exp_valid_block = innermost_block.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
76727919 906 gdb::observers::breakpoint_modified.notify (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;
d55637df
TT
924
925 if (text[0] == '$')
926 {
927 /* We don't support completion of history indices. */
eb3ff9a5
PA
928 if (!isdigit (text[1]))
929 complete_internalvar (tracker, &text[1]);
930 return;
d55637df
TT
931 }
932
933 /* We're completing the breakpoint number. */
934 len = strlen (text);
935
936 ALL_BREAKPOINTS (b)
58ce7251
SDJ
937 {
938 char number[50];
939
940 xsnprintf (number, sizeof (number), "%d", b->number);
941
942 if (strncmp (number, text, len) == 0)
eb3ff9a5
PA
943 {
944 gdb::unique_xmalloc_ptr<char> copy (xstrdup (number));
945 tracker.add_completion (std::move (copy));
946 }
58ce7251 947 }
d55637df 948
eb3ff9a5 949 return;
d55637df
TT
950 }
951
952 /* We're completing the expression part. */
f1735a53 953 text = skip_spaces (space);
eb3ff9a5 954 expression_completer (cmd, tracker, text, word);
d55637df
TT
955}
956
c906108c
SS
957/* condition N EXP -- set break condition of breakpoint N to EXP. */
958
959static void
0b39b52e 960condition_command (const char *arg, int from_tty)
c906108c 961{
52f0bd74 962 struct breakpoint *b;
0b39b52e 963 const char *p;
52f0bd74 964 int bnum;
c906108c
SS
965
966 if (arg == 0)
e2e0b3e5 967 error_no_arg (_("breakpoint number"));
c906108c
SS
968
969 p = arg;
970 bnum = get_number (&p);
5c44784c 971 if (bnum == 0)
8a3fe4f8 972 error (_("Bad breakpoint argument: '%s'"), arg);
c906108c
SS
973
974 ALL_BREAKPOINTS (b)
975 if (b->number == bnum)
2f069f6f 976 {
6dddc817
DE
977 /* Check if this breakpoint has a "stop" method implemented in an
978 extension language. This method and conditions entered into GDB
979 from the CLI are mutually exclusive. */
980 const struct extension_language_defn *extlang
981 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
982
983 if (extlang != NULL)
984 {
985 error (_("Only one stop condition allowed. There is currently"
986 " a %s stop condition defined for this breakpoint."),
987 ext_lang_capitalized_name (extlang));
988 }
2566ad2d 989 set_breakpoint_condition (b, p, from_tty);
b775012e
LM
990
991 if (is_breakpoint (b))
44702360 992 update_global_location_list (UGLL_MAY_INSERT);
b775012e 993
2f069f6f
JB
994 return;
995 }
c906108c 996
8a3fe4f8 997 error (_("No breakpoint number %d."), bnum);
c906108c
SS
998}
999
a7bdde9e
VP
1000/* Check that COMMAND do not contain commands that are suitable
1001 only for tracepoints and not suitable for ordinary breakpoints.
4a64f543
MS
1002 Throw if any such commands is found. */
1003
a7bdde9e
VP
1004static void
1005check_no_tracepoint_commands (struct command_line *commands)
1006{
1007 struct command_line *c;
cc59ec59 1008
a7bdde9e
VP
1009 for (c = commands; c; c = c->next)
1010 {
1011 int i;
1012
1013 if (c->control_type == while_stepping_control)
3e43a32a
MS
1014 error (_("The 'while-stepping' command can "
1015 "only be used for tracepoints"));
a7bdde9e
VP
1016
1017 for (i = 0; i < c->body_count; ++i)
1018 check_no_tracepoint_commands ((c->body_list)[i]);
1019
1020 /* Not that command parsing removes leading whitespace and comment
4a64f543 1021 lines and also empty lines. So, we only need to check for
a7bdde9e
VP
1022 command directly. */
1023 if (strstr (c->line, "collect ") == c->line)
1024 error (_("The 'collect' command can only be used for tracepoints"));
1025
51661e93
VP
1026 if (strstr (c->line, "teval ") == c->line)
1027 error (_("The 'teval' command can only be used for tracepoints"));
a7bdde9e
VP
1028 }
1029}
1030
c1fc2657 1031struct longjmp_breakpoint : public breakpoint
3b0871f4 1032{
c1fc2657 1033 ~longjmp_breakpoint () override;
3b0871f4
SM
1034};
1035
d77f58be
SS
1036/* Encapsulate tests for different types of tracepoints. */
1037
3b0871f4
SM
1038static bool
1039is_tracepoint_type (bptype type)
d9b3f62e
PA
1040{
1041 return (type == bp_tracepoint
1042 || type == bp_fast_tracepoint
1043 || type == bp_static_tracepoint);
1044}
1045
3b0871f4
SM
1046static bool
1047is_longjmp_type (bptype type)
1048{
1049 return type == bp_longjmp || type == bp_exception;
1050}
1051
a7bdde9e 1052int
d77f58be 1053is_tracepoint (const struct breakpoint *b)
a7bdde9e 1054{
d9b3f62e 1055 return is_tracepoint_type (b->type);
a7bdde9e 1056}
d9b3f62e 1057
a5e364af
SM
1058/* Factory function to create an appropriate instance of breakpoint given
1059 TYPE. */
1060
1061static std::unique_ptr<breakpoint>
1062new_breakpoint_from_type (bptype type)
1063{
1064 breakpoint *b;
1065
1066 if (is_tracepoint_type (type))
c1fc2657 1067 b = new tracepoint ();
3b0871f4 1068 else if (is_longjmp_type (type))
c1fc2657 1069 b = new longjmp_breakpoint ();
a5e364af
SM
1070 else
1071 b = new breakpoint ();
1072
1073 return std::unique_ptr<breakpoint> (b);
1074}
1075
e5dd4106 1076/* A helper function that validates that COMMANDS are valid for a
95a42b64
TT
1077 breakpoint. This function will throw an exception if a problem is
1078 found. */
48cb2d85 1079
95a42b64
TT
1080static void
1081validate_commands_for_breakpoint (struct breakpoint *b,
1082 struct command_line *commands)
48cb2d85 1083{
d77f58be 1084 if (is_tracepoint (b))
a7bdde9e 1085 {
c9a6ce02 1086 struct tracepoint *t = (struct tracepoint *) b;
a7bdde9e
VP
1087 struct command_line *c;
1088 struct command_line *while_stepping = 0;
c9a6ce02
PA
1089
1090 /* Reset the while-stepping step count. The previous commands
1091 might have included a while-stepping action, while the new
1092 ones might not. */
1093 t->step_count = 0;
1094
1095 /* We need to verify that each top-level element of commands is
1096 valid for tracepoints, that there's at most one
1097 while-stepping element, and that the while-stepping's body
1098 has valid tracing commands excluding nested while-stepping.
1099 We also need to validate the tracepoint action line in the
1100 context of the tracepoint --- validate_actionline actually
1101 has side effects, like setting the tracepoint's
1102 while-stepping STEP_COUNT, in addition to checking if the
1103 collect/teval actions parse and make sense in the
1104 tracepoint's context. */
a7bdde9e
VP
1105 for (c = commands; c; c = c->next)
1106 {
a7bdde9e
VP
1107 if (c->control_type == while_stepping_control)
1108 {
1109 if (b->type == bp_fast_tracepoint)
3e43a32a
MS
1110 error (_("The 'while-stepping' command "
1111 "cannot be used for fast tracepoint"));
0fb4aa4b 1112 else if (b->type == bp_static_tracepoint)
3e43a32a
MS
1113 error (_("The 'while-stepping' command "
1114 "cannot be used for static tracepoint"));
a7bdde9e
VP
1115
1116 if (while_stepping)
3e43a32a
MS
1117 error (_("The 'while-stepping' command "
1118 "can be used only once"));
a7bdde9e
VP
1119 else
1120 while_stepping = c;
1121 }
c9a6ce02
PA
1122
1123 validate_actionline (c->line, b);
a7bdde9e
VP
1124 }
1125 if (while_stepping)
1126 {
1127 struct command_line *c2;
1128
1129 gdb_assert (while_stepping->body_count == 1);
1130 c2 = while_stepping->body_list[0];
1131 for (; c2; c2 = c2->next)
1132 {
a7bdde9e
VP
1133 if (c2->control_type == while_stepping_control)
1134 error (_("The 'while-stepping' command cannot be nested"));
1135 }
1136 }
1137 }
1138 else
1139 {
1140 check_no_tracepoint_commands (commands);
1141 }
95a42b64
TT
1142}
1143
0fb4aa4b
PA
1144/* Return a vector of all the static tracepoints set at ADDR. The
1145 caller is responsible for releasing the vector. */
1146
1147VEC(breakpoint_p) *
1148static_tracepoints_here (CORE_ADDR addr)
1149{
1150 struct breakpoint *b;
1151 VEC(breakpoint_p) *found = 0;
1152 struct bp_location *loc;
1153
1154 ALL_BREAKPOINTS (b)
1155 if (b->type == bp_static_tracepoint)
1156 {
1157 for (loc = b->loc; loc; loc = loc->next)
1158 if (loc->address == addr)
1159 VEC_safe_push(breakpoint_p, found, b);
1160 }
1161
1162 return found;
1163}
1164
95a42b64 1165/* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
4a64f543 1166 validate that only allowed commands are included. */
95a42b64
TT
1167
1168void
4a64f543 1169breakpoint_set_commands (struct breakpoint *b,
93921405 1170 command_line_up &&commands)
95a42b64 1171{
93921405 1172 validate_commands_for_breakpoint (b, commands.get ());
a7bdde9e 1173
d1b0a7bf 1174 b->commands = std::move (commands);
76727919 1175 gdb::observers::breakpoint_modified.notify (b);
48cb2d85
VP
1176}
1177
45a43567
TT
1178/* Set the internal `silent' flag on the breakpoint. Note that this
1179 is not the same as the "silent" that may appear in the breakpoint's
1180 commands. */
1181
1182void
1183breakpoint_set_silent (struct breakpoint *b, int silent)
1184{
1185 int old_silent = b->silent;
1186
1187 b->silent = silent;
1188 if (old_silent != silent)
76727919 1189 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1190}
1191
1192/* Set the thread for this breakpoint. If THREAD is -1, make the
1193 breakpoint work for any thread. */
1194
1195void
1196breakpoint_set_thread (struct breakpoint *b, int thread)
1197{
1198 int old_thread = b->thread;
1199
1200 b->thread = thread;
1201 if (old_thread != thread)
76727919 1202 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1203}
1204
1205/* Set the task for this breakpoint. If TASK is 0, make the
1206 breakpoint work for any task. */
1207
1208void
1209breakpoint_set_task (struct breakpoint *b, int task)
1210{
1211 int old_task = b->task;
1212
1213 b->task = task;
1214 if (old_task != task)
76727919 1215 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1216}
1217
95a42b64
TT
1218void
1219check_tracepoint_command (char *line, void *closure)
a7bdde9e 1220{
9a3c8263 1221 struct breakpoint *b = (struct breakpoint *) closure;
cc59ec59 1222
6f937416 1223 validate_actionline (line, b);
a7bdde9e
VP
1224}
1225
95a42b64 1226static void
896b6bda 1227commands_command_1 (const char *arg, int from_tty,
4a64f543 1228 struct command_line *control)
95a42b64 1229{
d1b0a7bf 1230 counted_command_line cmd;
95a42b64 1231
896b6bda
PA
1232 std::string new_arg;
1233
95a42b64
TT
1234 if (arg == NULL || !*arg)
1235 {
86b17b60 1236 if (breakpoint_count - prev_breakpoint_count > 1)
896b6bda
PA
1237 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1238 breakpoint_count);
95a42b64 1239 else if (breakpoint_count > 0)
896b6bda 1240 new_arg = string_printf ("%d", breakpoint_count);
48649e1b
TT
1241 arg = new_arg.c_str ();
1242 }
1243
1244 map_breakpoint_numbers
1245 (arg, [&] (breakpoint *b)
1246 {
1247 if (cmd == NULL)
1248 {
48649e1b 1249 if (control != NULL)
d1b0a7bf 1250 cmd = copy_command_lines (control->body_list[0]);
48649e1b
TT
1251 else
1252 {
81b1e71c
TT
1253 std::string str
1254 = string_printf (_("Type commands for breakpoint(s) "
1255 "%s, one per line."),
1256 arg);
48649e1b 1257
81b1e71c 1258 cmd = read_command_lines (&str[0],
d1b0a7bf
TT
1259 from_tty, 1,
1260 (is_tracepoint (b)
1261 ? check_tracepoint_command : 0),
1262 b);
48649e1b 1263 }
48649e1b
TT
1264 }
1265
1266 /* If a breakpoint was on the list more than once, we don't need to
1267 do anything. */
1268 if (b->commands != cmd)
1269 {
d1b0a7bf 1270 validate_commands_for_breakpoint (b, cmd.get ());
48649e1b 1271 b->commands = cmd;
76727919 1272 gdb::observers::breakpoint_modified.notify (b);
48649e1b
TT
1273 }
1274 });
95a42b64
TT
1275}
1276
1277static void
0b39b52e 1278commands_command (const char *arg, int from_tty)
95a42b64
TT
1279{
1280 commands_command_1 (arg, from_tty, NULL);
c906108c 1281}
40c03ae8
EZ
1282
1283/* Like commands_command, but instead of reading the commands from
1284 input stream, takes them from an already parsed command structure.
1285
1286 This is used by cli-script.c to DTRT with breakpoint commands
1287 that are part of if and while bodies. */
1288enum command_control_type
896b6bda 1289commands_from_control_command (const char *arg, struct command_line *cmd)
40c03ae8 1290{
95a42b64
TT
1291 commands_command_1 (arg, 0, cmd);
1292 return simple_control;
40c03ae8 1293}
876fa593
JK
1294
1295/* Return non-zero if BL->TARGET_INFO contains valid information. */
1296
1297static int
1298bp_location_has_shadow (struct bp_location *bl)
1299{
1300 if (bl->loc_type != bp_loc_software_breakpoint)
1301 return 0;
1302 if (!bl->inserted)
1303 return 0;
1304 if (bl->target_info.shadow_len == 0)
e5dd4106 1305 /* BL isn't valid, or doesn't shadow memory. */
876fa593
JK
1306 return 0;
1307 return 1;
1308}
1309
9d497a19
PA
1310/* Update BUF, which is LEN bytes read from the target address
1311 MEMADDR, by replacing a memory breakpoint with its shadowed
1312 contents.
1313
1314 If READBUF is not NULL, this buffer must not overlap with the of
1315 the breakpoint location's shadow_contents buffer. Otherwise, a
1316 failed assertion internal error will be raised. */
1317
1318static void
1319one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1320 const gdb_byte *writebuf_org,
1321 ULONGEST memaddr, LONGEST len,
1322 struct bp_target_info *target_info,
1323 struct gdbarch *gdbarch)
1324{
1325 /* Now do full processing of the found relevant range of elements. */
1326 CORE_ADDR bp_addr = 0;
1327 int bp_size = 0;
1328 int bptoffset = 0;
1329
1330 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1331 current_program_space->aspace, 0))
1332 {
1333 /* The breakpoint is inserted in a different address space. */
1334 return;
1335 }
1336
1337 /* Addresses and length of the part of the breakpoint that
1338 we need to copy. */
1339 bp_addr = target_info->placed_address;
1340 bp_size = target_info->shadow_len;
1341
1342 if (bp_addr + bp_size <= memaddr)
1343 {
1344 /* The breakpoint is entirely before the chunk of memory we are
1345 reading. */
1346 return;
1347 }
1348
1349 if (bp_addr >= memaddr + len)
1350 {
1351 /* The breakpoint is entirely after the chunk of memory we are
1352 reading. */
1353 return;
1354 }
1355
1356 /* Offset within shadow_contents. */
1357 if (bp_addr < memaddr)
1358 {
1359 /* Only copy the second part of the breakpoint. */
1360 bp_size -= memaddr - bp_addr;
1361 bptoffset = memaddr - bp_addr;
1362 bp_addr = memaddr;
1363 }
1364
1365 if (bp_addr + bp_size > memaddr + len)
1366 {
1367 /* Only copy the first part of the breakpoint. */
1368 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1369 }
1370
1371 if (readbuf != NULL)
1372 {
1373 /* Verify that the readbuf buffer does not overlap with the
1374 shadow_contents buffer. */
1375 gdb_assert (target_info->shadow_contents >= readbuf + len
1376 || readbuf >= (target_info->shadow_contents
1377 + target_info->shadow_len));
1378
1379 /* Update the read buffer with this inserted breakpoint's
1380 shadow. */
1381 memcpy (readbuf + bp_addr - memaddr,
1382 target_info->shadow_contents + bptoffset, bp_size);
1383 }
1384 else
1385 {
1386 const unsigned char *bp;
0d5ed153
MR
1387 CORE_ADDR addr = target_info->reqstd_address;
1388 int placed_size;
9d497a19
PA
1389
1390 /* Update the shadow with what we want to write to memory. */
1391 memcpy (target_info->shadow_contents + bptoffset,
1392 writebuf_org + bp_addr - memaddr, bp_size);
1393
1394 /* Determine appropriate breakpoint contents and size for this
1395 address. */
0d5ed153 1396 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
9d497a19
PA
1397
1398 /* Update the final write buffer with this inserted
1399 breakpoint's INSN. */
1400 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1401 }
1402}
1403
8defab1a 1404/* Update BUF, which is LEN bytes read from the target address MEMADDR,
876fa593
JK
1405 by replacing any memory breakpoints with their shadowed contents.
1406
35c63cd8
JB
1407 If READBUF is not NULL, this buffer must not overlap with any of
1408 the breakpoint location's shadow_contents buffers. Otherwise,
1409 a failed assertion internal error will be raised.
1410
876fa593 1411 The range of shadowed area by each bp_location is:
f5336ca5
PA
1412 bl->address - bp_locations_placed_address_before_address_max
1413 up to bl->address + bp_locations_shadow_len_after_address_max
876fa593
JK
1414 The range we were requested to resolve shadows for is:
1415 memaddr ... memaddr + len
1416 Thus the safe cutoff boundaries for performance optimization are
35df4500 1417 memaddr + len <= (bl->address
f5336ca5 1418 - bp_locations_placed_address_before_address_max)
876fa593 1419 and:
f5336ca5 1420 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
c906108c 1421
8defab1a 1422void
f0ba3972
PA
1423breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1424 const gdb_byte *writebuf_org,
1425 ULONGEST memaddr, LONGEST len)
c906108c 1426{
4a64f543
MS
1427 /* Left boundary, right boundary and median element of our binary
1428 search. */
876fa593
JK
1429 unsigned bc_l, bc_r, bc;
1430
4a64f543
MS
1431 /* Find BC_L which is a leftmost element which may affect BUF
1432 content. It is safe to report lower value but a failure to
1433 report higher one. */
876fa593
JK
1434
1435 bc_l = 0;
f5336ca5 1436 bc_r = bp_locations_count;
876fa593
JK
1437 while (bc_l + 1 < bc_r)
1438 {
35df4500 1439 struct bp_location *bl;
876fa593
JK
1440
1441 bc = (bc_l + bc_r) / 2;
f5336ca5 1442 bl = bp_locations[bc];
876fa593 1443
4a64f543
MS
1444 /* Check first BL->ADDRESS will not overflow due to the added
1445 constant. Then advance the left boundary only if we are sure
1446 the BC element can in no way affect the BUF content (MEMADDR
1447 to MEMADDR + LEN range).
876fa593 1448
f5336ca5 1449 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
4a64f543
MS
1450 offset so that we cannot miss a breakpoint with its shadow
1451 range tail still reaching MEMADDR. */
c5aa993b 1452
f5336ca5 1453 if ((bl->address + bp_locations_shadow_len_after_address_max
35df4500 1454 >= bl->address)
f5336ca5 1455 && (bl->address + bp_locations_shadow_len_after_address_max
35df4500 1456 <= memaddr))
876fa593
JK
1457 bc_l = bc;
1458 else
1459 bc_r = bc;
1460 }
1461
128070bb
PA
1462 /* Due to the binary search above, we need to make sure we pick the
1463 first location that's at BC_L's address. E.g., if there are
1464 multiple locations at the same address, BC_L may end up pointing
1465 at a duplicate location, and miss the "master"/"inserted"
1466 location. Say, given locations L1, L2 and L3 at addresses A and
1467 B:
1468
1469 L1@A, L2@A, L3@B, ...
1470
1471 BC_L could end up pointing at location L2, while the "master"
1472 location could be L1. Since the `loc->inserted' flag is only set
1473 on "master" locations, we'd forget to restore the shadow of L1
1474 and L2. */
1475 while (bc_l > 0
f5336ca5 1476 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
128070bb
PA
1477 bc_l--;
1478
876fa593
JK
1479 /* Now do full processing of the found relevant range of elements. */
1480
f5336ca5 1481 for (bc = bc_l; bc < bp_locations_count; bc++)
c5aa993b 1482 {
f5336ca5 1483 struct bp_location *bl = bp_locations[bc];
876fa593 1484
35df4500
TJB
1485 /* bp_location array has BL->OWNER always non-NULL. */
1486 if (bl->owner->type == bp_none)
8a3fe4f8 1487 warning (_("reading through apparently deleted breakpoint #%d?"),
35df4500 1488 bl->owner->number);
ffce0d52 1489
e5dd4106 1490 /* Performance optimization: any further element can no longer affect BUF
876fa593
JK
1491 content. */
1492
f5336ca5
PA
1493 if (bl->address >= bp_locations_placed_address_before_address_max
1494 && memaddr + len <= (bl->address
1495 - bp_locations_placed_address_before_address_max))
876fa593
JK
1496 break;
1497
35df4500 1498 if (!bp_location_has_shadow (bl))
c5aa993b 1499 continue;
6c95b8df 1500
9d497a19
PA
1501 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1502 memaddr, len, &bl->target_info, bl->gdbarch);
1503 }
c906108c 1504}
9d497a19 1505
c906108c 1506\f
c5aa993b 1507
b775012e
LM
1508/* Return true if BPT is either a software breakpoint or a hardware
1509 breakpoint. */
1510
1511int
1512is_breakpoint (const struct breakpoint *bpt)
1513{
1514 return (bpt->type == bp_breakpoint
e7e0cddf
SS
1515 || bpt->type == bp_hardware_breakpoint
1516 || bpt->type == bp_dprintf);
b775012e
LM
1517}
1518
60e1c644
PA
1519/* Return true if BPT is of any hardware watchpoint kind. */
1520
a5606eee 1521static int
d77f58be 1522is_hardware_watchpoint (const struct breakpoint *bpt)
a5606eee
VP
1523{
1524 return (bpt->type == bp_hardware_watchpoint
1525 || bpt->type == bp_read_watchpoint
1526 || bpt->type == bp_access_watchpoint);
1527}
7270d8f2 1528
60e1c644
PA
1529/* Return true if BPT is of any watchpoint kind, hardware or
1530 software. */
1531
3a5c3e22 1532int
d77f58be 1533is_watchpoint (const struct breakpoint *bpt)
60e1c644
PA
1534{
1535 return (is_hardware_watchpoint (bpt)
1536 || bpt->type == bp_watchpoint);
1537}
1538
3a5c3e22
PA
1539/* Returns true if the current thread and its running state are safe
1540 to evaluate or update watchpoint B. Watchpoints on local
1541 expressions need to be evaluated in the context of the thread that
1542 was current when the watchpoint was created, and, that thread needs
1543 to be stopped to be able to select the correct frame context.
1544 Watchpoints on global expressions can be evaluated on any thread,
1545 and in any state. It is presently left to the target allowing
1546 memory accesses when threads are running. */
f6bc2008
PA
1547
1548static int
3a5c3e22 1549watchpoint_in_thread_scope (struct watchpoint *b)
f6bc2008 1550{
c1fc2657 1551 return (b->pspace == current_program_space
d0d8b0c6
JK
1552 && (ptid_equal (b->watchpoint_thread, null_ptid)
1553 || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1554 && !is_executing (inferior_ptid))));
f6bc2008
PA
1555}
1556
d0fb5eae
JK
1557/* Set watchpoint B to disp_del_at_next_stop, even including its possible
1558 associated bp_watchpoint_scope breakpoint. */
1559
1560static void
3a5c3e22 1561watchpoint_del_at_next_stop (struct watchpoint *w)
d0fb5eae 1562{
c1fc2657 1563 if (w->related_breakpoint != w)
d0fb5eae 1564 {
c1fc2657
SM
1565 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1566 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1567 w->related_breakpoint->disposition = disp_del_at_next_stop;
1568 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1569 w->related_breakpoint = w;
d0fb5eae 1570 }
c1fc2657 1571 w->disposition = disp_del_at_next_stop;
d0fb5eae
JK
1572}
1573
bb9d5f81
PP
1574/* Extract a bitfield value from value VAL using the bit parameters contained in
1575 watchpoint W. */
1576
1577static struct value *
1578extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1579{
1580 struct value *bit_val;
1581
1582 if (val == NULL)
1583 return NULL;
1584
1585 bit_val = allocate_value (value_type (val));
1586
1587 unpack_value_bitfield (bit_val,
1588 w->val_bitpos,
1589 w->val_bitsize,
1590 value_contents_for_printing (val),
1591 value_offset (val),
1592 val);
1593
1594 return bit_val;
1595}
1596
c6d81124
PA
1597/* Allocate a dummy location and add it to B, which must be a software
1598 watchpoint. This is required because even if a software watchpoint
1599 is not watching any memory, bpstat_stop_status requires a location
1600 to be able to report stops. */
1601
1602static void
1603software_watchpoint_add_no_memory_location (struct breakpoint *b,
1604 struct program_space *pspace)
1605{
1606 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1607
1608 b->loc = allocate_bp_location (b);
1609 b->loc->pspace = pspace;
1610 b->loc->address = -1;
1611 b->loc->length = -1;
1612}
1613
1614/* Returns true if B is a software watchpoint that is not watching any
1615 memory (e.g., "watch $pc"). */
1616
1617static int
1618is_no_memory_software_watchpoint (struct breakpoint *b)
1619{
1620 return (b->type == bp_watchpoint
1621 && b->loc != NULL
1622 && b->loc->next == NULL
1623 && b->loc->address == -1
1624 && b->loc->length == -1);
1625}
1626
567e1b4e
JB
1627/* Assuming that B is a watchpoint:
1628 - Reparse watchpoint expression, if REPARSE is non-zero
a5606eee 1629 - Evaluate expression and store the result in B->val
567e1b4e
JB
1630 - Evaluate the condition if there is one, and store the result
1631 in b->loc->cond.
a5606eee
VP
1632 - Update the list of values that must be watched in B->loc.
1633
4a64f543
MS
1634 If the watchpoint disposition is disp_del_at_next_stop, then do
1635 nothing. If this is local watchpoint that is out of scope, delete
1636 it.
1637
1638 Even with `set breakpoint always-inserted on' the watchpoints are
1639 removed + inserted on each stop here. Normal breakpoints must
1640 never be removed because they might be missed by a running thread
1641 when debugging in non-stop mode. On the other hand, hardware
1642 watchpoints (is_hardware_watchpoint; processed here) are specific
1643 to each LWP since they are stored in each LWP's hardware debug
1644 registers. Therefore, such LWP must be stopped first in order to
1645 be able to modify its hardware watchpoints.
1646
1647 Hardware watchpoints must be reset exactly once after being
1648 presented to the user. It cannot be done sooner, because it would
1649 reset the data used to present the watchpoint hit to the user. And
1650 it must not be done later because it could display the same single
1651 watchpoint hit during multiple GDB stops. Note that the latter is
1652 relevant only to the hardware watchpoint types bp_read_watchpoint
1653 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1654 not user-visible - its hit is suppressed if the memory content has
1655 not changed.
1656
1657 The following constraints influence the location where we can reset
1658 hardware watchpoints:
1659
1660 * target_stopped_by_watchpoint and target_stopped_data_address are
1661 called several times when GDB stops.
1662
1663 [linux]
1664 * Multiple hardware watchpoints can be hit at the same time,
1665 causing GDB to stop. GDB only presents one hardware watchpoint
1666 hit at a time as the reason for stopping, and all the other hits
1667 are presented later, one after the other, each time the user
1668 requests the execution to be resumed. Execution is not resumed
1669 for the threads still having pending hit event stored in
1670 LWP_INFO->STATUS. While the watchpoint is already removed from
1671 the inferior on the first stop the thread hit event is kept being
1672 reported from its cached value by linux_nat_stopped_data_address
1673 until the real thread resume happens after the watchpoint gets
1674 presented and thus its LWP_INFO->STATUS gets reset.
1675
1676 Therefore the hardware watchpoint hit can get safely reset on the
1677 watchpoint removal from inferior. */
a79d3c27 1678
b40ce68a 1679static void
3a5c3e22 1680update_watchpoint (struct watchpoint *b, int reparse)
7270d8f2 1681{
a5606eee 1682 int within_current_scope;
a5606eee 1683 struct frame_id saved_frame_id;
66076460 1684 int frame_saved;
a5606eee 1685
f6bc2008
PA
1686 /* If this is a local watchpoint, we only want to check if the
1687 watchpoint frame is in scope if the current thread is the thread
1688 that was used to create the watchpoint. */
1689 if (!watchpoint_in_thread_scope (b))
1690 return;
1691
c1fc2657 1692 if (b->disposition == disp_del_at_next_stop)
a5606eee
VP
1693 return;
1694
66076460 1695 frame_saved = 0;
a5606eee
VP
1696
1697 /* Determine if the watchpoint is within scope. */
1698 if (b->exp_valid_block == NULL)
1699 within_current_scope = 1;
1700 else
1701 {
b5db5dfc
UW
1702 struct frame_info *fi = get_current_frame ();
1703 struct gdbarch *frame_arch = get_frame_arch (fi);
1704 CORE_ADDR frame_pc = get_frame_pc (fi);
1705
c9cf6e20
MG
1706 /* If we're at a point where the stack has been destroyed
1707 (e.g. in a function epilogue), unwinding may not work
1708 properly. Do not attempt to recreate locations at this
b5db5dfc 1709 point. See similar comments in watchpoint_check. */
c9cf6e20 1710 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
b5db5dfc 1711 return;
66076460
DJ
1712
1713 /* Save the current frame's ID so we can restore it after
1714 evaluating the watchpoint expression on its own frame. */
1715 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1716 took a frame parameter, so that we didn't have to change the
1717 selected frame. */
1718 frame_saved = 1;
1719 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1720
a5606eee
VP
1721 fi = frame_find_by_id (b->watchpoint_frame);
1722 within_current_scope = (fi != NULL);
1723 if (within_current_scope)
1724 select_frame (fi);
1725 }
1726
b5db5dfc
UW
1727 /* We don't free locations. They are stored in the bp_location array
1728 and update_global_location_list will eventually delete them and
1729 remove breakpoints if needed. */
c1fc2657 1730 b->loc = NULL;
b5db5dfc 1731
a5606eee
VP
1732 if (within_current_scope && reparse)
1733 {
bbc13ae3 1734 const char *s;
d63d0675 1735
4d01a485 1736 b->exp.reset ();
d63d0675 1737 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1bb9788d 1738 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
a5606eee
VP
1739 /* If the meaning of expression itself changed, the old value is
1740 no longer relevant. We don't want to report a watchpoint hit
1741 to the user when the old value and the new value may actually
1742 be completely different objects. */
fa4727a6
DJ
1743 b->val = NULL;
1744 b->val_valid = 0;
60e1c644
PA
1745
1746 /* Note that unlike with breakpoints, the watchpoint's condition
1747 expression is stored in the breakpoint object, not in the
1748 locations (re)created below. */
c1fc2657 1749 if (b->cond_string != NULL)
60e1c644 1750 {
4d01a485 1751 b->cond_exp.reset ();
60e1c644 1752
c1fc2657 1753 s = b->cond_string;
1bb9788d 1754 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
60e1c644 1755 }
a5606eee 1756 }
a5606eee
VP
1757
1758 /* If we failed to parse the expression, for example because
1759 it refers to a global variable in a not-yet-loaded shared library,
1760 don't try to insert watchpoint. We don't automatically delete
1761 such watchpoint, though, since failure to parse expression
1762 is different from out-of-scope watchpoint. */
e8369a73 1763 if (!target_has_execution)
2d134ed3
PA
1764 {
1765 /* Without execution, memory can't change. No use to try and
1766 set watchpoint locations. The watchpoint will be reset when
1767 the target gains execution, through breakpoint_re_set. */
e8369a73
AB
1768 if (!can_use_hw_watchpoints)
1769 {
c1fc2657
SM
1770 if (b->ops->works_in_software_mode (b))
1771 b->type = bp_watchpoint;
e8369a73 1772 else
638aa5a1
AB
1773 error (_("Can't set read/access watchpoint when "
1774 "hardware watchpoints are disabled."));
e8369a73 1775 }
2d134ed3
PA
1776 }
1777 else if (within_current_scope && b->exp)
a5606eee 1778 {
0cf6dd15 1779 int pc = 0;
fa4727a6 1780 struct value *val_chain, *v, *result, *next;
2d134ed3 1781 struct program_space *frame_pspace;
a5606eee 1782
4d01a485 1783 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
a5606eee 1784
a5606eee
VP
1785 /* Avoid setting b->val if it's already set. The meaning of
1786 b->val is 'the last value' user saw, and we should update
1787 it only if we reported that last value to user. As it
9c06b0b4
TJB
1788 happens, the code that reports it updates b->val directly.
1789 We don't keep track of the memory value for masked
1790 watchpoints. */
c1fc2657 1791 if (!b->val_valid && !is_masked_watchpoint (b))
fa4727a6 1792 {
bb9d5f81 1793 if (b->val_bitsize != 0)
850645cf
TT
1794 v = extract_bitfield_from_watchpoint_value (b, v);
1795 b->val = release_value (v);
fa4727a6
DJ
1796 b->val_valid = 1;
1797 }
a5606eee 1798
2d134ed3
PA
1799 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1800
a5606eee 1801 /* Look at each value on the value chain. */
9fa40276 1802 for (v = val_chain; v; v = value_next (v))
a5606eee
VP
1803 {
1804 /* If it's a memory location, and GDB actually needed
1805 its contents to evaluate the expression, then we
fa4727a6
DJ
1806 must watch it. If the first value returned is
1807 still lazy, that means an error occurred reading it;
1808 watch it anyway in case it becomes readable. */
a5606eee 1809 if (VALUE_LVAL (v) == lval_memory
fa4727a6 1810 && (v == val_chain || ! value_lazy (v)))
a5606eee
VP
1811 {
1812 struct type *vtype = check_typedef (value_type (v));
7270d8f2 1813
a5606eee
VP
1814 /* We only watch structs and arrays if user asked
1815 for it explicitly, never if they just happen to
1816 appear in the middle of some value chain. */
fa4727a6 1817 if (v == result
a5606eee
VP
1818 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1819 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1820 {
1821 CORE_ADDR addr;
f486487f 1822 enum target_hw_bp_type type;
a5606eee 1823 struct bp_location *loc, **tmp;
bb9d5f81
PP
1824 int bitpos = 0, bitsize = 0;
1825
1826 if (value_bitsize (v) != 0)
1827 {
1828 /* Extract the bit parameters out from the bitfield
1829 sub-expression. */
1830 bitpos = value_bitpos (v);
1831 bitsize = value_bitsize (v);
1832 }
1833 else if (v == result && b->val_bitsize != 0)
1834 {
1835 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1836 lvalue whose bit parameters are saved in the fields
1837 VAL_BITPOS and VAL_BITSIZE. */
1838 bitpos = b->val_bitpos;
1839 bitsize = b->val_bitsize;
1840 }
a5606eee 1841
42ae5230 1842 addr = value_address (v);
bb9d5f81
PP
1843 if (bitsize != 0)
1844 {
1845 /* Skip the bytes that don't contain the bitfield. */
1846 addr += bitpos / 8;
1847 }
1848
a5606eee 1849 type = hw_write;
c1fc2657 1850 if (b->type == bp_read_watchpoint)
a5606eee 1851 type = hw_read;
c1fc2657 1852 else if (b->type == bp_access_watchpoint)
a5606eee 1853 type = hw_access;
3a5c3e22 1854
c1fc2657
SM
1855 loc = allocate_bp_location (b);
1856 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
a5606eee
VP
1857 ;
1858 *tmp = loc;
a6d9a66e 1859 loc->gdbarch = get_type_arch (value_type (v));
6c95b8df
PA
1860
1861 loc->pspace = frame_pspace;
f17d9474 1862 loc->address = address_significant (loc->gdbarch, addr);
bb9d5f81
PP
1863
1864 if (bitsize != 0)
1865 {
1866 /* Just cover the bytes that make up the bitfield. */
1867 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1868 }
1869 else
1870 loc->length = TYPE_LENGTH (value_type (v));
1871
a5606eee
VP
1872 loc->watchpoint_type = type;
1873 }
1874 }
9fa40276
TJB
1875 }
1876
1877 /* Change the type of breakpoint between hardware assisted or
1878 an ordinary watchpoint depending on the hardware support
1879 and free hardware slots. REPARSE is set when the inferior
1880 is started. */
a9634178 1881 if (reparse)
9fa40276 1882 {
e09342b5 1883 int reg_cnt;
9fa40276
TJB
1884 enum bp_loc_type loc_type;
1885 struct bp_location *bl;
a5606eee 1886
a9634178 1887 reg_cnt = can_use_hardware_watchpoint (val_chain);
e09342b5
TJB
1888
1889 if (reg_cnt)
9fa40276
TJB
1890 {
1891 int i, target_resources_ok, other_type_used;
a1398e0c 1892 enum bptype type;
9fa40276 1893
a9634178
TJB
1894 /* Use an exact watchpoint when there's only one memory region to be
1895 watched, and only one debug register is needed to watch it. */
1896 b->exact = target_exact_watchpoints && reg_cnt == 1;
1897
9fa40276 1898 /* We need to determine how many resources are already
e09342b5
TJB
1899 used for all other hardware watchpoints plus this one
1900 to see if we still have enough resources to also fit
a1398e0c
PA
1901 this watchpoint in as well. */
1902
1903 /* If this is a software watchpoint, we try to turn it
1904 to a hardware one -- count resources as if B was of
1905 hardware watchpoint type. */
c1fc2657 1906 type = b->type;
a1398e0c
PA
1907 if (type == bp_watchpoint)
1908 type = bp_hardware_watchpoint;
1909
1910 /* This watchpoint may or may not have been placed on
1911 the list yet at this point (it won't be in the list
1912 if we're trying to create it for the first time,
1913 through watch_command), so always account for it
1914 manually. */
1915
1916 /* Count resources used by all watchpoints except B. */
c1fc2657 1917 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
a1398e0c
PA
1918
1919 /* Add in the resources needed for B. */
c1fc2657 1920 i += hw_watchpoint_use_count (b);
a1398e0c
PA
1921
1922 target_resources_ok
1923 = target_can_use_hardware_watchpoint (type, i, other_type_used);
e09342b5 1924 if (target_resources_ok <= 0)
a9634178 1925 {
c1fc2657 1926 int sw_mode = b->ops->works_in_software_mode (b);
9c06b0b4
TJB
1927
1928 if (target_resources_ok == 0 && !sw_mode)
a9634178
TJB
1929 error (_("Target does not support this type of "
1930 "hardware watchpoint."));
9c06b0b4
TJB
1931 else if (target_resources_ok < 0 && !sw_mode)
1932 error (_("There are not enough available hardware "
1933 "resources for this watchpoint."));
a1398e0c
PA
1934
1935 /* Downgrade to software watchpoint. */
c1fc2657 1936 b->type = bp_watchpoint;
a1398e0c
PA
1937 }
1938 else
1939 {
1940 /* If this was a software watchpoint, we've just
1941 found we have enough resources to turn it to a
1942 hardware watchpoint. Otherwise, this is a
1943 nop. */
c1fc2657 1944 b->type = type;
a9634178 1945 }
9fa40276 1946 }
c1fc2657 1947 else if (!b->ops->works_in_software_mode (b))
638aa5a1
AB
1948 {
1949 if (!can_use_hw_watchpoints)
1950 error (_("Can't set read/access watchpoint when "
1951 "hardware watchpoints are disabled."));
1952 else
1953 error (_("Expression cannot be implemented with "
1954 "read/access watchpoint."));
1955 }
9fa40276 1956 else
c1fc2657 1957 b->type = bp_watchpoint;
9fa40276 1958
c1fc2657 1959 loc_type = (b->type == bp_watchpoint? bp_loc_other
9fa40276 1960 : bp_loc_hardware_watchpoint);
c1fc2657 1961 for (bl = b->loc; bl; bl = bl->next)
9fa40276
TJB
1962 bl->loc_type = loc_type;
1963 }
1964
1965 for (v = val_chain; v; v = next)
1966 {
a5606eee
VP
1967 next = value_next (v);
1968 if (v != b->val)
22bc8444 1969 value_decref (v);
a5606eee
VP
1970 }
1971
c7437ca6
PA
1972 /* If a software watchpoint is not watching any memory, then the
1973 above left it without any location set up. But,
1974 bpstat_stop_status requires a location to be able to report
1975 stops, so make sure there's at least a dummy one. */
c1fc2657
SM
1976 if (b->type == bp_watchpoint && b->loc == NULL)
1977 software_watchpoint_add_no_memory_location (b, frame_pspace);
a5606eee
VP
1978 }
1979 else if (!within_current_scope)
7270d8f2 1980 {
ac74f770
MS
1981 printf_filtered (_("\
1982Watchpoint %d deleted because the program has left the block\n\
1983in which its expression is valid.\n"),
c1fc2657 1984 b->number);
d0fb5eae 1985 watchpoint_del_at_next_stop (b);
7270d8f2 1986 }
a5606eee
VP
1987
1988 /* Restore the selected frame. */
66076460
DJ
1989 if (frame_saved)
1990 select_frame (frame_find_by_id (saved_frame_id));
7270d8f2
OF
1991}
1992
a5606eee 1993
74960c60 1994/* Returns 1 iff breakpoint location should be
1e4d1764
YQ
1995 inserted in the inferior. We don't differentiate the type of BL's owner
1996 (breakpoint vs. tracepoint), although insert_location in tracepoint's
1997 breakpoint_ops is not defined, because in insert_bp_location,
1998 tracepoint's insert_location will not be called. */
74960c60 1999static int
35df4500 2000should_be_inserted (struct bp_location *bl)
74960c60 2001{
35df4500 2002 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
74960c60
VP
2003 return 0;
2004
35df4500 2005 if (bl->owner->disposition == disp_del_at_next_stop)
74960c60
VP
2006 return 0;
2007
35df4500 2008 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
74960c60
VP
2009 return 0;
2010
f8eba3c6
TT
2011 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2012 return 0;
2013
56710373
PA
2014 /* This is set for example, when we're attached to the parent of a
2015 vfork, and have detached from the child. The child is running
2016 free, and we expect it to do an exec or exit, at which point the
2017 OS makes the parent schedulable again (and the target reports
2018 that the vfork is done). Until the child is done with the shared
2019 memory region, do not insert breakpoints in the parent, otherwise
2020 the child could still trip on the parent's breakpoints. Since
2021 the parent is blocked anyway, it won't miss any breakpoint. */
35df4500 2022 if (bl->pspace->breakpoints_not_allowed)
56710373
PA
2023 return 0;
2024
31e77af2 2025 /* Don't insert a breakpoint if we're trying to step past its
21edc42f
YQ
2026 location, except if the breakpoint is a single-step breakpoint,
2027 and the breakpoint's thread is the thread which is stepping past
2028 a breakpoint. */
31e77af2
PA
2029 if ((bl->loc_type == bp_loc_software_breakpoint
2030 || bl->loc_type == bp_loc_hardware_breakpoint)
2031 && stepping_past_instruction_at (bl->pspace->aspace,
21edc42f
YQ
2032 bl->address)
2033 /* The single-step breakpoint may be inserted at the location
2034 we're trying to step if the instruction branches to itself.
2035 However, the instruction won't be executed at all and it may
2036 break the semantics of the instruction, for example, the
2037 instruction is a conditional branch or updates some flags.
2038 We can't fix it unless GDB is able to emulate the instruction
2039 or switch to displaced stepping. */
2040 && !(bl->owner->type == bp_single_step
2041 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
e558d7c1
PA
2042 {
2043 if (debug_infrun)
2044 {
2045 fprintf_unfiltered (gdb_stdlog,
2046 "infrun: skipping breakpoint: "
2047 "stepping past insn at: %s\n",
2048 paddress (bl->gdbarch, bl->address));
2049 }
2050 return 0;
2051 }
31e77af2 2052
963f9c80
PA
2053 /* Don't insert watchpoints if we're trying to step past the
2054 instruction that triggered one. */
2055 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2056 && stepping_past_nonsteppable_watchpoint ())
2057 {
2058 if (debug_infrun)
2059 {
2060 fprintf_unfiltered (gdb_stdlog,
2061 "infrun: stepping past non-steppable watchpoint. "
2062 "skipping watchpoint at %s:%d\n",
2063 paddress (bl->gdbarch, bl->address),
2064 bl->length);
2065 }
2066 return 0;
2067 }
2068
74960c60
VP
2069 return 1;
2070}
2071
934709f0
PW
2072/* Same as should_be_inserted but does the check assuming
2073 that the location is not duplicated. */
2074
2075static int
2076unduplicated_should_be_inserted (struct bp_location *bl)
2077{
2078 int result;
2079 const int save_duplicate = bl->duplicate;
2080
2081 bl->duplicate = 0;
2082 result = should_be_inserted (bl);
2083 bl->duplicate = save_duplicate;
2084 return result;
2085}
2086
b775012e
LM
2087/* Parses a conditional described by an expression COND into an
2088 agent expression bytecode suitable for evaluation
2089 by the bytecode interpreter. Return NULL if there was
2090 any error during parsing. */
2091
833177a4 2092static agent_expr_up
b775012e
LM
2093parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2094{
833177a4 2095 if (cond == NULL)
b775012e
LM
2096 return NULL;
2097
833177a4
PA
2098 agent_expr_up aexpr;
2099
b775012e
LM
2100 /* We don't want to stop processing, so catch any errors
2101 that may show up. */
492d29ea 2102 TRY
b775012e 2103 {
036e657b 2104 aexpr = gen_eval_for_expr (scope, cond);
b775012e
LM
2105 }
2106
492d29ea 2107 CATCH (ex, RETURN_MASK_ERROR)
b775012e
LM
2108 {
2109 /* If we got here, it means the condition could not be parsed to a valid
2110 bytecode expression and thus can't be evaluated on the target's side.
2111 It's no use iterating through the conditions. */
b775012e 2112 }
492d29ea 2113 END_CATCH
b775012e
LM
2114
2115 /* We have a valid agent expression. */
2116 return aexpr;
2117}
2118
2119/* Based on location BL, create a list of breakpoint conditions to be
2120 passed on to the target. If we have duplicated locations with different
2121 conditions, we will add such conditions to the list. The idea is that the
2122 target will evaluate the list of conditions and will only notify GDB when
2123 one of them is true. */
2124
2125static void
2126build_target_condition_list (struct bp_location *bl)
2127{
2128 struct bp_location **locp = NULL, **loc2p;
2129 int null_condition_or_parse_error = 0;
2130 int modified = bl->needs_update;
2131 struct bp_location *loc;
2132
8b4f3082 2133 /* Release conditions left over from a previous insert. */
3cde5c42 2134 bl->target_info.conditions.clear ();
8b4f3082 2135
b775012e
LM
2136 /* This is only meaningful if the target is
2137 evaluating conditions and if the user has
2138 opted for condition evaluation on the target's
2139 side. */
2140 if (gdb_evaluates_breakpoint_condition_p ()
2141 || !target_supports_evaluation_of_breakpoint_conditions ())
2142 return;
2143
2144 /* Do a first pass to check for locations with no assigned
2145 conditions or conditions that fail to parse to a valid agent expression
2146 bytecode. If any of these happen, then it's no use to send conditions
2147 to the target since this location will always trigger and generate a
2148 response back to GDB. */
2149 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2150 {
2151 loc = (*loc2p);
2152 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2153 {
2154 if (modified)
2155 {
b775012e
LM
2156 /* Re-parse the conditions since something changed. In that
2157 case we already freed the condition bytecodes (see
2158 force_breakpoint_reinsertion). We just
2159 need to parse the condition to bytecodes again. */
833177a4
PA
2160 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2161 loc->cond.get ());
b775012e
LM
2162 }
2163
2164 /* If we have a NULL bytecode expression, it means something
2165 went wrong or we have a null condition expression. */
2166 if (!loc->cond_bytecode)
2167 {
2168 null_condition_or_parse_error = 1;
2169 break;
2170 }
2171 }
2172 }
2173
2174 /* If any of these happened, it means we will have to evaluate the conditions
2175 for the location's address on gdb's side. It is no use keeping bytecodes
2176 for all the other duplicate locations, thus we free all of them here.
2177
2178 This is so we have a finer control over which locations' conditions are
2179 being evaluated by GDB or the remote stub. */
2180 if (null_condition_or_parse_error)
2181 {
2182 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2183 {
2184 loc = (*loc2p);
2185 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2186 {
2187 /* Only go as far as the first NULL bytecode is
2188 located. */
2189 if (!loc->cond_bytecode)
2190 return;
2191
833177a4 2192 loc->cond_bytecode.reset ();
b775012e
LM
2193 }
2194 }
2195 }
2196
2197 /* No NULL conditions or failed bytecode generation. Build a condition list
2198 for this location's address. */
2199 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2200 {
2201 loc = (*loc2p);
2202 if (loc->cond
2203 && is_breakpoint (loc->owner)
2204 && loc->pspace->num == bl->pspace->num
2205 && loc->owner->enable_state == bp_enabled
2206 && loc->enabled)
3cde5c42
PA
2207 {
2208 /* Add the condition to the vector. This will be used later
2209 to send the conditions to the target. */
2210 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2211 }
b775012e
LM
2212 }
2213
2214 return;
2215}
2216
d3ce09f5
SS
2217/* Parses a command described by string CMD into an agent expression
2218 bytecode suitable for evaluation by the bytecode interpreter.
2219 Return NULL if there was any error during parsing. */
2220
833177a4 2221static agent_expr_up
d3ce09f5
SS
2222parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2223{
bbc13ae3
KS
2224 const char *cmdrest;
2225 const char *format_start, *format_end;
d3ce09f5
SS
2226 struct gdbarch *gdbarch = get_current_arch ();
2227
833177a4 2228 if (cmd == NULL)
d3ce09f5
SS
2229 return NULL;
2230
2231 cmdrest = cmd;
2232
2233 if (*cmdrest == ',')
2234 ++cmdrest;
f1735a53 2235 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2236
2237 if (*cmdrest++ != '"')
2238 error (_("No format string following the location"));
2239
2240 format_start = cmdrest;
2241
8e481c3b 2242 format_pieces fpieces (&cmdrest);
d3ce09f5
SS
2243
2244 format_end = cmdrest;
2245
2246 if (*cmdrest++ != '"')
2247 error (_("Bad format string, non-terminated '\"'."));
2248
f1735a53 2249 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2250
2251 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2252 error (_("Invalid argument syntax"));
2253
2254 if (*cmdrest == ',')
2255 cmdrest++;
f1735a53 2256 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2257
2258 /* For each argument, make an expression. */
2259
8e481c3b 2260 std::vector<struct expression *> argvec;
d3ce09f5
SS
2261 while (*cmdrest != '\0')
2262 {
bbc13ae3 2263 const char *cmd1;
d3ce09f5
SS
2264
2265 cmd1 = cmdrest;
4d01a485 2266 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
8e481c3b 2267 argvec.push_back (expr.release ());
d3ce09f5
SS
2268 cmdrest = cmd1;
2269 if (*cmdrest == ',')
2270 ++cmdrest;
2271 }
2272
833177a4
PA
2273 agent_expr_up aexpr;
2274
d3ce09f5
SS
2275 /* We don't want to stop processing, so catch any errors
2276 that may show up. */
492d29ea 2277 TRY
d3ce09f5 2278 {
036e657b
JB
2279 aexpr = gen_printf (scope, gdbarch, 0, 0,
2280 format_start, format_end - format_start,
8e481c3b 2281 argvec.size (), argvec.data ());
d3ce09f5 2282 }
492d29ea 2283 CATCH (ex, RETURN_MASK_ERROR)
d3ce09f5
SS
2284 {
2285 /* If we got here, it means the command could not be parsed to a valid
2286 bytecode expression and thus can't be evaluated on the target's side.
2287 It's no use iterating through the other commands. */
d3ce09f5 2288 }
492d29ea
PA
2289 END_CATCH
2290
d3ce09f5
SS
2291 /* We have a valid agent expression, return it. */
2292 return aexpr;
2293}
2294
2295/* Based on location BL, create a list of breakpoint commands to be
2296 passed on to the target. If we have duplicated locations with
2297 different commands, we will add any such to the list. */
2298
2299static void
2300build_target_command_list (struct bp_location *bl)
2301{
2302 struct bp_location **locp = NULL, **loc2p;
2303 int null_command_or_parse_error = 0;
2304 int modified = bl->needs_update;
2305 struct bp_location *loc;
2306
3cde5c42
PA
2307 /* Clear commands left over from a previous insert. */
2308 bl->target_info.tcommands.clear ();
8b4f3082 2309
41fac0cf 2310 if (!target_can_run_breakpoint_commands ())
d3ce09f5
SS
2311 return;
2312
41fac0cf
PA
2313 /* For now, limit to agent-style dprintf breakpoints. */
2314 if (dprintf_style != dprintf_style_agent)
d3ce09f5
SS
2315 return;
2316
41fac0cf
PA
2317 /* For now, if we have any duplicate location that isn't a dprintf,
2318 don't install the target-side commands, as that would make the
2319 breakpoint not be reported to the core, and we'd lose
2320 control. */
2321 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2322 {
2323 loc = (*loc2p);
2324 if (is_breakpoint (loc->owner)
2325 && loc->pspace->num == bl->pspace->num
2326 && loc->owner->type != bp_dprintf)
2327 return;
2328 }
2329
d3ce09f5
SS
2330 /* Do a first pass to check for locations with no assigned
2331 conditions or conditions that fail to parse to a valid agent expression
2332 bytecode. If any of these happen, then it's no use to send conditions
2333 to the target since this location will always trigger and generate a
2334 response back to GDB. */
2335 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2336 {
2337 loc = (*loc2p);
2338 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2339 {
2340 if (modified)
2341 {
d3ce09f5
SS
2342 /* Re-parse the commands since something changed. In that
2343 case we already freed the command bytecodes (see
2344 force_breakpoint_reinsertion). We just
2345 need to parse the command to bytecodes again. */
833177a4
PA
2346 loc->cmd_bytecode
2347 = parse_cmd_to_aexpr (bl->address,
2348 loc->owner->extra_string);
d3ce09f5
SS
2349 }
2350
2351 /* If we have a NULL bytecode expression, it means something
2352 went wrong or we have a null command expression. */
2353 if (!loc->cmd_bytecode)
2354 {
2355 null_command_or_parse_error = 1;
2356 break;
2357 }
2358 }
2359 }
2360
2361 /* If anything failed, then we're not doing target-side commands,
2362 and so clean up. */
2363 if (null_command_or_parse_error)
2364 {
2365 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2366 {
2367 loc = (*loc2p);
2368 if (is_breakpoint (loc->owner)
2369 && loc->pspace->num == bl->pspace->num)
2370 {
2371 /* Only go as far as the first NULL bytecode is
2372 located. */
40fb6c5e 2373 if (loc->cmd_bytecode == NULL)
d3ce09f5
SS
2374 return;
2375
833177a4 2376 loc->cmd_bytecode.reset ();
d3ce09f5
SS
2377 }
2378 }
2379 }
2380
2381 /* No NULL commands or failed bytecode generation. Build a command list
2382 for this location's address. */
2383 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2384 {
2385 loc = (*loc2p);
2386 if (loc->owner->extra_string
2387 && is_breakpoint (loc->owner)
2388 && loc->pspace->num == bl->pspace->num
2389 && loc->owner->enable_state == bp_enabled
2390 && loc->enabled)
3cde5c42
PA
2391 {
2392 /* Add the command to the vector. This will be used later
2393 to send the commands to the target. */
2394 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2395 }
d3ce09f5
SS
2396 }
2397
2398 bl->target_info.persist = 0;
2399 /* Maybe flag this location as persistent. */
2400 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2401 bl->target_info.persist = 1;
2402}
2403
833b7ab5
YQ
2404/* Return the kind of breakpoint on address *ADDR. Get the kind
2405 of breakpoint according to ADDR except single-step breakpoint.
2406 Get the kind of single-step breakpoint according to the current
2407 registers state. */
cd6c3b4f
YQ
2408
2409static int
2410breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2411{
833b7ab5
YQ
2412 if (bl->owner->type == bp_single_step)
2413 {
2414 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2415 struct regcache *regcache;
2416
2417 regcache = get_thread_regcache (thr->ptid);
2418
2419 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2420 regcache, addr);
2421 }
2422 else
2423 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
cd6c3b4f
YQ
2424}
2425
35df4500
TJB
2426/* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2427 location. Any error messages are printed to TMP_ERROR_STREAM; and
3fbb6ffa 2428 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
c30eee59
TJB
2429 Returns 0 for success, 1 if the bp_location type is not supported or
2430 -1 for failure.
879bfdc2 2431
4a64f543
MS
2432 NOTE drow/2003-09-09: This routine could be broken down to an
2433 object-style method for each breakpoint or catchpoint type. */
26bb91f3 2434static int
35df4500 2435insert_bp_location (struct bp_location *bl,
26bb91f3 2436 struct ui_file *tmp_error_stream,
3fbb6ffa 2437 int *disabled_breaks,
dd61ec5c
MW
2438 int *hw_breakpoint_error,
2439 int *hw_bp_error_explained_already)
879bfdc2 2440{
688fca4f 2441 gdb_exception bp_excpt = exception_none;
879bfdc2 2442
b775012e 2443 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2444 return 0;
2445
35c63cd8
JB
2446 /* Note we don't initialize bl->target_info, as that wipes out
2447 the breakpoint location's shadow_contents if the breakpoint
2448 is still inserted at that location. This in turn breaks
2449 target_read_memory which depends on these buffers when
2450 a memory read is requested at the breakpoint location:
2451 Once the target_info has been wiped, we fail to see that
2452 we have a breakpoint inserted at that address and thus
2453 read the breakpoint instead of returning the data saved in
2454 the breakpoint location's shadow contents. */
0d5ed153 2455 bl->target_info.reqstd_address = bl->address;
35df4500 2456 bl->target_info.placed_address_space = bl->pspace->aspace;
f1310107 2457 bl->target_info.length = bl->length;
8181d85f 2458
b775012e
LM
2459 /* When working with target-side conditions, we must pass all the conditions
2460 for the same breakpoint address down to the target since GDB will not
2461 insert those locations. With a list of breakpoint conditions, the target
2462 can decide when to stop and notify GDB. */
2463
2464 if (is_breakpoint (bl->owner))
2465 {
2466 build_target_condition_list (bl);
d3ce09f5
SS
2467 build_target_command_list (bl);
2468 /* Reset the modification marker. */
b775012e
LM
2469 bl->needs_update = 0;
2470 }
2471
35df4500
TJB
2472 if (bl->loc_type == bp_loc_software_breakpoint
2473 || bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2474 {
35df4500 2475 if (bl->owner->type != bp_hardware_breakpoint)
765dc015
VP
2476 {
2477 /* If the explicitly specified breakpoint type
2478 is not hardware breakpoint, check the memory map to see
2479 if the breakpoint address is in read only memory or not.
4a64f543 2480
765dc015
VP
2481 Two important cases are:
2482 - location type is not hardware breakpoint, memory
2483 is readonly. We change the type of the location to
2484 hardware breakpoint.
4a64f543
MS
2485 - location type is hardware breakpoint, memory is
2486 read-write. This means we've previously made the
2487 location hardware one, but then the memory map changed,
2488 so we undo.
765dc015 2489
4a64f543
MS
2490 When breakpoints are removed, remove_breakpoints will use
2491 location types we've just set here, the only possible
2492 problem is that memory map has changed during running
2493 program, but it's not going to work anyway with current
2494 gdb. */
765dc015 2495 struct mem_region *mr
0d5ed153 2496 = lookup_mem_region (bl->target_info.reqstd_address);
765dc015
VP
2497
2498 if (mr)
2499 {
2500 if (automatic_hardware_breakpoints)
2501 {
765dc015
VP
2502 enum bp_loc_type new_type;
2503
2504 if (mr->attrib.mode != MEM_RW)
2505 new_type = bp_loc_hardware_breakpoint;
2506 else
2507 new_type = bp_loc_software_breakpoint;
2508
35df4500 2509 if (new_type != bl->loc_type)
765dc015
VP
2510 {
2511 static int said = 0;
cc59ec59 2512
35df4500 2513 bl->loc_type = new_type;
765dc015
VP
2514 if (!said)
2515 {
3e43a32a
MS
2516 fprintf_filtered (gdb_stdout,
2517 _("Note: automatically using "
2518 "hardware breakpoints for "
2519 "read-only addresses.\n"));
765dc015
VP
2520 said = 1;
2521 }
2522 }
2523 }
35df4500 2524 else if (bl->loc_type == bp_loc_software_breakpoint
0fec99e8
PA
2525 && mr->attrib.mode != MEM_RW)
2526 {
2527 fprintf_unfiltered (tmp_error_stream,
2528 _("Cannot insert breakpoint %d.\n"
2529 "Cannot set software breakpoint "
2530 "at read-only address %s\n"),
2531 bl->owner->number,
2532 paddress (bl->gdbarch, bl->address));
2533 return 1;
2534 }
765dc015
VP
2535 }
2536 }
2537
879bfdc2
DJ
2538 /* First check to see if we have to handle an overlay. */
2539 if (overlay_debugging == ovly_off
35df4500
TJB
2540 || bl->section == NULL
2541 || !(section_is_overlay (bl->section)))
879bfdc2
DJ
2542 {
2543 /* No overlay handling: just set the breakpoint. */
492d29ea 2544 TRY
dd61ec5c 2545 {
0000e5cc
PA
2546 int val;
2547
dd61ec5c 2548 val = bl->owner->ops->insert_location (bl);
0000e5cc 2549 if (val)
688fca4f 2550 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
dd61ec5c 2551 }
492d29ea 2552 CATCH (e, RETURN_MASK_ALL)
dd61ec5c 2553 {
688fca4f 2554 bp_excpt = e;
dd61ec5c 2555 }
492d29ea 2556 END_CATCH
879bfdc2
DJ
2557 }
2558 else
2559 {
4a64f543 2560 /* This breakpoint is in an overlay section.
879bfdc2
DJ
2561 Shall we set a breakpoint at the LMA? */
2562 if (!overlay_events_enabled)
2563 {
2564 /* Yes -- overlay event support is not active,
2565 so we must try to set a breakpoint at the LMA.
2566 This will not work for a hardware breakpoint. */
35df4500 2567 if (bl->loc_type == bp_loc_hardware_breakpoint)
8a3fe4f8 2568 warning (_("hardware breakpoint %d not supported in overlay!"),
35df4500 2569 bl->owner->number);
879bfdc2
DJ
2570 else
2571 {
35df4500
TJB
2572 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2573 bl->section);
879bfdc2 2574 /* Set a software (trap) breakpoint at the LMA. */
35df4500 2575 bl->overlay_target_info = bl->target_info;
0d5ed153 2576 bl->overlay_target_info.reqstd_address = addr;
0000e5cc
PA
2577
2578 /* No overlay handling: just set the breakpoint. */
492d29ea 2579 TRY
0000e5cc
PA
2580 {
2581 int val;
2582
579c6ad9 2583 bl->overlay_target_info.kind
cd6c3b4f
YQ
2584 = breakpoint_kind (bl, &addr);
2585 bl->overlay_target_info.placed_address = addr;
0000e5cc
PA
2586 val = target_insert_breakpoint (bl->gdbarch,
2587 &bl->overlay_target_info);
2588 if (val)
688fca4f
PA
2589 bp_excpt
2590 = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
0000e5cc 2591 }
492d29ea 2592 CATCH (e, RETURN_MASK_ALL)
0000e5cc 2593 {
688fca4f 2594 bp_excpt = e;
0000e5cc 2595 }
492d29ea 2596 END_CATCH
0000e5cc 2597
688fca4f 2598 if (bp_excpt.reason != 0)
99361f52 2599 fprintf_unfiltered (tmp_error_stream,
3e43a32a
MS
2600 "Overlay breakpoint %d "
2601 "failed: in ROM?\n",
35df4500 2602 bl->owner->number);
879bfdc2
DJ
2603 }
2604 }
2605 /* Shall we set a breakpoint at the VMA? */
35df4500 2606 if (section_is_mapped (bl->section))
879bfdc2
DJ
2607 {
2608 /* Yes. This overlay section is mapped into memory. */
492d29ea 2609 TRY
dd61ec5c 2610 {
0000e5cc
PA
2611 int val;
2612
dd61ec5c 2613 val = bl->owner->ops->insert_location (bl);
0000e5cc 2614 if (val)
688fca4f 2615 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
dd61ec5c 2616 }
492d29ea 2617 CATCH (e, RETURN_MASK_ALL)
dd61ec5c 2618 {
688fca4f 2619 bp_excpt = e;
dd61ec5c 2620 }
492d29ea 2621 END_CATCH
879bfdc2
DJ
2622 }
2623 else
2624 {
2625 /* No. This breakpoint will not be inserted.
2626 No error, but do not mark the bp as 'inserted'. */
2627 return 0;
2628 }
2629 }
2630
688fca4f 2631 if (bp_excpt.reason != 0)
879bfdc2
DJ
2632 {
2633 /* Can't set the breakpoint. */
0000e5cc
PA
2634
2635 /* In some cases, we might not be able to insert a
2636 breakpoint in a shared library that has already been
2637 removed, but we have not yet processed the shlib unload
2638 event. Unfortunately, some targets that implement
076855f9
PA
2639 breakpoint insertion themselves can't tell why the
2640 breakpoint insertion failed (e.g., the remote target
2641 doesn't define error codes), so we must treat generic
2642 errors as memory errors. */
688fca4f
PA
2643 if (bp_excpt.reason == RETURN_ERROR
2644 && (bp_excpt.error == GENERIC_ERROR
2645 || bp_excpt.error == MEMORY_ERROR)
076855f9 2646 && bl->loc_type == bp_loc_software_breakpoint
08351840 2647 && (solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
2648 || shared_objfile_contains_address_p (bl->pspace,
2649 bl->address)))
879bfdc2 2650 {
4a64f543 2651 /* See also: disable_breakpoints_in_shlibs. */
35df4500 2652 bl->shlib_disabled = 1;
76727919 2653 gdb::observers::breakpoint_modified.notify (bl->owner);
3fbb6ffa
TJB
2654 if (!*disabled_breaks)
2655 {
2656 fprintf_unfiltered (tmp_error_stream,
2657 "Cannot insert breakpoint %d.\n",
2658 bl->owner->number);
2659 fprintf_unfiltered (tmp_error_stream,
2660 "Temporarily disabling shared "
2661 "library breakpoints:\n");
2662 }
2663 *disabled_breaks = 1;
879bfdc2 2664 fprintf_unfiltered (tmp_error_stream,
35df4500 2665 "breakpoint #%d\n", bl->owner->number);
0000e5cc 2666 return 0;
879bfdc2
DJ
2667 }
2668 else
879bfdc2 2669 {
35df4500 2670 if (bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2671 {
0000e5cc 2672 *hw_breakpoint_error = 1;
688fca4f 2673 *hw_bp_error_explained_already = bp_excpt.message != NULL;
dd61ec5c
MW
2674 fprintf_unfiltered (tmp_error_stream,
2675 "Cannot insert hardware breakpoint %d%s",
688fca4f
PA
2676 bl->owner->number,
2677 bp_excpt.message ? ":" : ".\n");
2678 if (bp_excpt.message != NULL)
2679 fprintf_unfiltered (tmp_error_stream, "%s.\n",
2680 bp_excpt.message);
879bfdc2
DJ
2681 }
2682 else
2683 {
688fca4f 2684 if (bp_excpt.message == NULL)
0000e5cc 2685 {
1ccbe998 2686 std::string message
0000e5cc
PA
2687 = memory_error_message (TARGET_XFER_E_IO,
2688 bl->gdbarch, bl->address);
0000e5cc
PA
2689
2690 fprintf_unfiltered (tmp_error_stream,
2691 "Cannot insert breakpoint %d.\n"
2692 "%s\n",
1ccbe998 2693 bl->owner->number, message.c_str ());
0000e5cc
PA
2694 }
2695 else
2696 {
2697 fprintf_unfiltered (tmp_error_stream,
2698 "Cannot insert breakpoint %d: %s\n",
2699 bl->owner->number,
688fca4f 2700 bp_excpt.message);
0000e5cc 2701 }
879bfdc2 2702 }
0000e5cc 2703 return 1;
879bfdc2
DJ
2704
2705 }
2706 }
2707 else
35df4500 2708 bl->inserted = 1;
879bfdc2 2709
0000e5cc 2710 return 0;
879bfdc2
DJ
2711 }
2712
35df4500 2713 else if (bl->loc_type == bp_loc_hardware_watchpoint
879bfdc2 2714 /* NOTE drow/2003-09-08: This state only exists for removing
4a64f543 2715 watchpoints. It's not clear that it's necessary... */
35df4500 2716 && bl->owner->disposition != disp_del_at_next_stop)
879bfdc2 2717 {
0000e5cc
PA
2718 int val;
2719
77b06cd7
TJB
2720 gdb_assert (bl->owner->ops != NULL
2721 && bl->owner->ops->insert_location != NULL);
2722
2723 val = bl->owner->ops->insert_location (bl);
85d721b8
PA
2724
2725 /* If trying to set a read-watchpoint, and it turns out it's not
2726 supported, try emulating one with an access watchpoint. */
35df4500 2727 if (val == 1 && bl->watchpoint_type == hw_read)
85d721b8
PA
2728 {
2729 struct bp_location *loc, **loc_temp;
2730
2731 /* But don't try to insert it, if there's already another
2732 hw_access location that would be considered a duplicate
2733 of this one. */
2734 ALL_BP_LOCATIONS (loc, loc_temp)
35df4500 2735 if (loc != bl
85d721b8 2736 && loc->watchpoint_type == hw_access
35df4500 2737 && watchpoint_locations_match (bl, loc))
85d721b8 2738 {
35df4500
TJB
2739 bl->duplicate = 1;
2740 bl->inserted = 1;
2741 bl->target_info = loc->target_info;
2742 bl->watchpoint_type = hw_access;
85d721b8
PA
2743 val = 0;
2744 break;
2745 }
2746
2747 if (val == 1)
2748 {
77b06cd7
TJB
2749 bl->watchpoint_type = hw_access;
2750 val = bl->owner->ops->insert_location (bl);
2751
2752 if (val)
2753 /* Back to the original value. */
2754 bl->watchpoint_type = hw_read;
85d721b8
PA
2755 }
2756 }
2757
35df4500 2758 bl->inserted = (val == 0);
879bfdc2
DJ
2759 }
2760
35df4500 2761 else if (bl->owner->type == bp_catchpoint)
879bfdc2 2762 {
0000e5cc
PA
2763 int val;
2764
77b06cd7
TJB
2765 gdb_assert (bl->owner->ops != NULL
2766 && bl->owner->ops->insert_location != NULL);
2767
2768 val = bl->owner->ops->insert_location (bl);
2769 if (val)
2770 {
2771 bl->owner->enable_state = bp_disabled;
2772
2773 if (val == 1)
2774 warning (_("\
2775Error inserting catchpoint %d: Your system does not support this type\n\
2776of catchpoint."), bl->owner->number);
2777 else
2778 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2779 }
2780
2781 bl->inserted = (val == 0);
1640b821
DJ
2782
2783 /* We've already printed an error message if there was a problem
2784 inserting this catchpoint, and we've disabled the catchpoint,
2785 so just return success. */
2786 return 0;
879bfdc2
DJ
2787 }
2788
2789 return 0;
2790}
2791
6c95b8df
PA
2792/* This function is called when program space PSPACE is about to be
2793 deleted. It takes care of updating breakpoints to not reference
2794 PSPACE anymore. */
2795
2796void
2797breakpoint_program_space_exit (struct program_space *pspace)
2798{
2799 struct breakpoint *b, *b_temp;
876fa593 2800 struct bp_location *loc, **loc_temp;
6c95b8df
PA
2801
2802 /* Remove any breakpoint that was set through this program space. */
2803 ALL_BREAKPOINTS_SAFE (b, b_temp)
2804 {
2805 if (b->pspace == pspace)
2806 delete_breakpoint (b);
2807 }
2808
2809 /* Breakpoints set through other program spaces could have locations
2810 bound to PSPACE as well. Remove those. */
876fa593 2811 ALL_BP_LOCATIONS (loc, loc_temp)
6c95b8df
PA
2812 {
2813 struct bp_location *tmp;
2814
2815 if (loc->pspace == pspace)
2816 {
2bdf28a0 2817 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6c95b8df
PA
2818 if (loc->owner->loc == loc)
2819 loc->owner->loc = loc->next;
2820 else
2821 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2822 if (tmp->next == loc)
2823 {
2824 tmp->next = loc->next;
2825 break;
2826 }
2827 }
2828 }
2829
2830 /* Now update the global location list to permanently delete the
2831 removed locations above. */
44702360 2832 update_global_location_list (UGLL_DONT_INSERT);
6c95b8df
PA
2833}
2834
74960c60
VP
2835/* Make sure all breakpoints are inserted in inferior.
2836 Throws exception on any error.
2837 A breakpoint that is already inserted won't be inserted
2838 again, so calling this function twice is safe. */
2839void
2840insert_breakpoints (void)
2841{
2842 struct breakpoint *bpt;
2843
2844 ALL_BREAKPOINTS (bpt)
2845 if (is_hardware_watchpoint (bpt))
3a5c3e22
PA
2846 {
2847 struct watchpoint *w = (struct watchpoint *) bpt;
2848
2849 update_watchpoint (w, 0 /* don't reparse. */);
2850 }
74960c60 2851
04086b45
PA
2852 /* Updating watchpoints creates new locations, so update the global
2853 location list. Explicitly tell ugll to insert locations and
2854 ignore breakpoints_always_inserted_mode. */
2855 update_global_location_list (UGLL_INSERT);
74960c60
VP
2856}
2857
20388dd6
YQ
2858/* Invoke CALLBACK for each of bp_location. */
2859
2860void
2861iterate_over_bp_locations (walk_bp_location_callback callback)
2862{
2863 struct bp_location *loc, **loc_tmp;
2864
2865 ALL_BP_LOCATIONS (loc, loc_tmp)
2866 {
2867 callback (loc, NULL);
2868 }
2869}
2870
b775012e
LM
2871/* This is used when we need to synch breakpoint conditions between GDB and the
2872 target. It is the case with deleting and disabling of breakpoints when using
2873 always-inserted mode. */
2874
2875static void
2876update_inserted_breakpoint_locations (void)
2877{
2878 struct bp_location *bl, **blp_tmp;
2879 int error_flag = 0;
2880 int val = 0;
2881 int disabled_breaks = 0;
2882 int hw_breakpoint_error = 0;
dd61ec5c 2883 int hw_bp_details_reported = 0;
b775012e 2884
d7e74731 2885 string_file tmp_error_stream;
b775012e
LM
2886
2887 /* Explicitly mark the warning -- this will only be printed if
2888 there was an error. */
d7e74731 2889 tmp_error_stream.puts ("Warning:\n");
b775012e 2890
5ed8105e 2891 scoped_restore_current_pspace_and_thread restore_pspace_thread;
b775012e
LM
2892
2893 ALL_BP_LOCATIONS (bl, blp_tmp)
2894 {
2895 /* We only want to update software breakpoints and hardware
2896 breakpoints. */
2897 if (!is_breakpoint (bl->owner))
2898 continue;
2899
2900 /* We only want to update locations that are already inserted
2901 and need updating. This is to avoid unwanted insertion during
2902 deletion of breakpoints. */
2903 if (!bl->inserted || (bl->inserted && !bl->needs_update))
2904 continue;
2905
2906 switch_to_program_space_and_thread (bl->pspace);
2907
2908 /* For targets that support global breakpoints, there's no need
2909 to select an inferior to insert breakpoint to. In fact, even
2910 if we aren't attached to any process yet, we should still
2911 insert breakpoints. */
f5656ead 2912 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
b775012e
LM
2913 && ptid_equal (inferior_ptid, null_ptid))
2914 continue;
2915
d7e74731 2916 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 2917 &hw_breakpoint_error, &hw_bp_details_reported);
b775012e
LM
2918 if (val)
2919 error_flag = val;
2920 }
2921
2922 if (error_flag)
2923 {
223ffa71 2924 target_terminal::ours_for_output ();
b775012e
LM
2925 error_stream (tmp_error_stream);
2926 }
b775012e
LM
2927}
2928
c30eee59 2929/* Used when starting or continuing the program. */
c906108c 2930
74960c60
VP
2931static void
2932insert_breakpoint_locations (void)
c906108c 2933{
a5606eee 2934 struct breakpoint *bpt;
35df4500 2935 struct bp_location *bl, **blp_tmp;
eacd795a 2936 int error_flag = 0;
c906108c 2937 int val = 0;
3fbb6ffa 2938 int disabled_breaks = 0;
81d0cc19 2939 int hw_breakpoint_error = 0;
dd61ec5c 2940 int hw_bp_error_explained_already = 0;
c906108c 2941
d7e74731
PA
2942 string_file tmp_error_stream;
2943
81d0cc19
GS
2944 /* Explicitly mark the warning -- this will only be printed if
2945 there was an error. */
d7e74731 2946 tmp_error_stream.puts ("Warning:\n");
6c95b8df 2947
5ed8105e 2948 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 2949
35df4500 2950 ALL_BP_LOCATIONS (bl, blp_tmp)
879bfdc2 2951 {
b775012e 2952 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2953 continue;
2954
4a64f543
MS
2955 /* There is no point inserting thread-specific breakpoints if
2956 the thread no longer exists. ALL_BP_LOCATIONS bp_location
2957 has BL->OWNER always non-NULL. */
35df4500 2958 if (bl->owner->thread != -1
5d5658a1 2959 && !valid_global_thread_id (bl->owner->thread))
f365de73
AS
2960 continue;
2961
35df4500 2962 switch_to_program_space_and_thread (bl->pspace);
6c95b8df
PA
2963
2964 /* For targets that support global breakpoints, there's no need
2965 to select an inferior to insert breakpoint to. In fact, even
2966 if we aren't attached to any process yet, we should still
2967 insert breakpoints. */
f5656ead 2968 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
2969 && ptid_equal (inferior_ptid, null_ptid))
2970 continue;
2971
d7e74731 2972 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 2973 &hw_breakpoint_error, &hw_bp_error_explained_already);
879bfdc2 2974 if (val)
eacd795a 2975 error_flag = val;
879bfdc2 2976 }
c906108c 2977
4a64f543
MS
2978 /* If we failed to insert all locations of a watchpoint, remove
2979 them, as half-inserted watchpoint is of limited use. */
a5606eee
VP
2980 ALL_BREAKPOINTS (bpt)
2981 {
2982 int some_failed = 0;
2983 struct bp_location *loc;
2984
2985 if (!is_hardware_watchpoint (bpt))
2986 continue;
2987
d6b74ac4 2988 if (!breakpoint_enabled (bpt))
a5606eee 2989 continue;
74960c60
VP
2990
2991 if (bpt->disposition == disp_del_at_next_stop)
2992 continue;
a5606eee
VP
2993
2994 for (loc = bpt->loc; loc; loc = loc->next)
56710373 2995 if (!loc->inserted && should_be_inserted (loc))
a5606eee
VP
2996 {
2997 some_failed = 1;
2998 break;
2999 }
3000 if (some_failed)
3001 {
3002 for (loc = bpt->loc; loc; loc = loc->next)
3003 if (loc->inserted)
834c0d03 3004 remove_breakpoint (loc);
a5606eee
VP
3005
3006 hw_breakpoint_error = 1;
d7e74731
PA
3007 tmp_error_stream.printf ("Could not insert "
3008 "hardware watchpoint %d.\n",
3009 bpt->number);
eacd795a 3010 error_flag = -1;
a5606eee
VP
3011 }
3012 }
3013
eacd795a 3014 if (error_flag)
81d0cc19
GS
3015 {
3016 /* If a hardware breakpoint or watchpoint was inserted, add a
3017 message about possibly exhausted resources. */
dd61ec5c 3018 if (hw_breakpoint_error && !hw_bp_error_explained_already)
81d0cc19 3019 {
d7e74731 3020 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
c6510018 3021You may have requested too many hardware breakpoints/watchpoints.\n");
81d0cc19 3022 }
223ffa71 3023 target_terminal::ours_for_output ();
81d0cc19
GS
3024 error_stream (tmp_error_stream);
3025 }
c906108c
SS
3026}
3027
c30eee59
TJB
3028/* Used when the program stops.
3029 Returns zero if successful, or non-zero if there was a problem
3030 removing a breakpoint location. */
3031
c906108c 3032int
fba45db2 3033remove_breakpoints (void)
c906108c 3034{
35df4500 3035 struct bp_location *bl, **blp_tmp;
3a1bae8e 3036 int val = 0;
c906108c 3037
35df4500 3038 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3039 {
1e4d1764 3040 if (bl->inserted && !is_tracepoint (bl->owner))
834c0d03 3041 val |= remove_breakpoint (bl);
c5aa993b 3042 }
3a1bae8e 3043 return val;
c906108c
SS
3044}
3045
49fa26b0
PA
3046/* When a thread exits, remove breakpoints that are related to
3047 that thread. */
3048
3049static void
3050remove_threaded_breakpoints (struct thread_info *tp, int silent)
3051{
3052 struct breakpoint *b, *b_tmp;
3053
3054 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3055 {
5d5658a1 3056 if (b->thread == tp->global_num && user_breakpoint_p (b))
49fa26b0
PA
3057 {
3058 b->disposition = disp_del_at_next_stop;
3059
3060 printf_filtered (_("\
43792cf0
PA
3061Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3062 b->number, print_thread_id (tp));
49fa26b0
PA
3063
3064 /* Hide it from the user. */
3065 b->number = 0;
3066 }
3067 }
3068}
3069
6c95b8df
PA
3070/* Remove breakpoints of process PID. */
3071
3072int
3073remove_breakpoints_pid (int pid)
3074{
35df4500 3075 struct bp_location *bl, **blp_tmp;
6c95b8df
PA
3076 int val;
3077 struct inferior *inf = find_inferior_pid (pid);
3078
35df4500 3079 ALL_BP_LOCATIONS (bl, blp_tmp)
6c95b8df 3080 {
35df4500 3081 if (bl->pspace != inf->pspace)
6c95b8df
PA
3082 continue;
3083
fc126975 3084 if (bl->inserted && !bl->target_info.persist)
6c95b8df 3085 {
834c0d03 3086 val = remove_breakpoint (bl);
6c95b8df
PA
3087 if (val != 0)
3088 return val;
3089 }
3090 }
3091 return 0;
3092}
3093
e58b0e63
PA
3094static int internal_breakpoint_number = -1;
3095
84f4c1fe
PM
3096/* Set the breakpoint number of B, depending on the value of INTERNAL.
3097 If INTERNAL is non-zero, the breakpoint number will be populated
3098 from internal_breakpoint_number and that variable decremented.
e5dd4106 3099 Otherwise the breakpoint number will be populated from
84f4c1fe
PM
3100 breakpoint_count and that value incremented. Internal breakpoints
3101 do not set the internal var bpnum. */
3102static void
3103set_breakpoint_number (int internal, struct breakpoint *b)
3104{
3105 if (internal)
3106 b->number = internal_breakpoint_number--;
3107 else
3108 {
3109 set_breakpoint_count (breakpoint_count + 1);
3110 b->number = breakpoint_count;
3111 }
3112}
3113
e62c965a 3114static struct breakpoint *
a6d9a66e 3115create_internal_breakpoint (struct gdbarch *gdbarch,
06edf0c0 3116 CORE_ADDR address, enum bptype type,
c0a91b2b 3117 const struct breakpoint_ops *ops)
e62c965a 3118{
51abb421 3119 symtab_and_line sal;
e62c965a
PP
3120 sal.pc = address;
3121 sal.section = find_pc_overlay (sal.pc);
6c95b8df 3122 sal.pspace = current_program_space;
e62c965a 3123
51abb421 3124 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
e62c965a
PP
3125 b->number = internal_breakpoint_number--;
3126 b->disposition = disp_donttouch;
3127
3128 return b;
3129}
3130
17450429
PP
3131static const char *const longjmp_names[] =
3132 {
3133 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3134 };
3135#define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3136
3137/* Per-objfile data private to breakpoint.c. */
3138struct breakpoint_objfile_data
3139{
3140 /* Minimal symbol for "_ovly_debug_event" (if any). */
43dce439 3141 struct bound_minimal_symbol overlay_msym {};
17450429
PP
3142
3143 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
43dce439 3144 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
17450429 3145
28106bc2 3146 /* True if we have looked for longjmp probes. */
43dce439 3147 int longjmp_searched = 0;
28106bc2 3148
45461e0d
SM
3149 /* SystemTap probe points for longjmp (if any). These are non-owning
3150 references. */
3151 std::vector<probe *> longjmp_probes;
28106bc2 3152
17450429 3153 /* Minimal symbol for "std::terminate()" (if any). */
43dce439 3154 struct bound_minimal_symbol terminate_msym {};
17450429
PP
3155
3156 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
43dce439 3157 struct bound_minimal_symbol exception_msym {};
28106bc2
SDJ
3158
3159 /* True if we have looked for exception probes. */
43dce439 3160 int exception_searched = 0;
28106bc2 3161
45461e0d
SM
3162 /* SystemTap probe points for unwinding (if any). These are non-owning
3163 references. */
3164 std::vector<probe *> exception_probes;
17450429
PP
3165};
3166
3167static const struct objfile_data *breakpoint_objfile_key;
3168
3169/* Minimal symbol not found sentinel. */
3170static struct minimal_symbol msym_not_found;
3171
3172/* Returns TRUE if MSYM point to the "not found" sentinel. */
3173
3174static int
3175msym_not_found_p (const struct minimal_symbol *msym)
3176{
3177 return msym == &msym_not_found;
3178}
3179
3180/* Return per-objfile data needed by breakpoint.c.
3181 Allocate the data if necessary. */
3182
3183static struct breakpoint_objfile_data *
3184get_breakpoint_objfile_data (struct objfile *objfile)
3185{
3186 struct breakpoint_objfile_data *bp_objfile_data;
3187
9a3c8263
SM
3188 bp_objfile_data = ((struct breakpoint_objfile_data *)
3189 objfile_data (objfile, breakpoint_objfile_key));
17450429
PP
3190 if (bp_objfile_data == NULL)
3191 {
43dce439 3192 bp_objfile_data = new breakpoint_objfile_data ();
17450429
PP
3193 set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3194 }
3195 return bp_objfile_data;
3196}
3197
28106bc2 3198static void
43dce439 3199free_breakpoint_objfile_data (struct objfile *obj, void *data)
28106bc2 3200{
9a3c8263
SM
3201 struct breakpoint_objfile_data *bp_objfile_data
3202 = (struct breakpoint_objfile_data *) data;
28106bc2 3203
43dce439 3204 delete bp_objfile_data;
28106bc2
SDJ
3205}
3206
e62c965a 3207static void
af02033e 3208create_overlay_event_breakpoint (void)
e62c965a 3209{
69de3c6a 3210 struct objfile *objfile;
af02033e 3211 const char *const func_name = "_ovly_debug_event";
e62c965a 3212
69de3c6a
PP
3213 ALL_OBJFILES (objfile)
3214 {
3215 struct breakpoint *b;
17450429
PP
3216 struct breakpoint_objfile_data *bp_objfile_data;
3217 CORE_ADDR addr;
67994074 3218 struct explicit_location explicit_loc;
69de3c6a 3219
17450429
PP
3220 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3221
3b7344d5 3222 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
17450429
PP
3223 continue;
3224
3b7344d5 3225 if (bp_objfile_data->overlay_msym.minsym == NULL)
17450429 3226 {
3b7344d5 3227 struct bound_minimal_symbol m;
17450429
PP
3228
3229 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3230 if (m.minsym == NULL)
17450429
PP
3231 {
3232 /* Avoid future lookups in this objfile. */
3b7344d5 3233 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
17450429
PP
3234 continue;
3235 }
3236 bp_objfile_data->overlay_msym = m;
3237 }
e62c965a 3238
77e371c0 3239 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
17450429 3240 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
06edf0c0
PA
3241 bp_overlay_event,
3242 &internal_breakpoint_ops);
67994074
KS
3243 initialize_explicit_location (&explicit_loc);
3244 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3245 b->location = new_explicit_location (&explicit_loc);
e62c965a 3246
69de3c6a
PP
3247 if (overlay_debugging == ovly_auto)
3248 {
3249 b->enable_state = bp_enabled;
3250 overlay_events_enabled = 1;
3251 }
3252 else
3253 {
3254 b->enable_state = bp_disabled;
3255 overlay_events_enabled = 0;
3256 }
e62c965a 3257 }
e62c965a
PP
3258}
3259
0fd8e87f 3260static void
af02033e 3261create_longjmp_master_breakpoint (void)
0fd8e87f 3262{
6c95b8df 3263 struct program_space *pspace;
6c95b8df 3264
5ed8105e 3265 scoped_restore_current_program_space restore_pspace;
0fd8e87f 3266
6c95b8df 3267 ALL_PSPACES (pspace)
af02033e
PP
3268 {
3269 struct objfile *objfile;
3270
3271 set_current_program_space (pspace);
3272
3273 ALL_OBJFILES (objfile)
0fd8e87f 3274 {
af02033e
PP
3275 int i;
3276 struct gdbarch *gdbarch;
17450429 3277 struct breakpoint_objfile_data *bp_objfile_data;
0fd8e87f 3278
af02033e 3279 gdbarch = get_objfile_arch (objfile);
0fd8e87f 3280
17450429
PP
3281 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3282
28106bc2
SDJ
3283 if (!bp_objfile_data->longjmp_searched)
3284 {
45461e0d
SM
3285 std::vector<probe *> ret
3286 = find_probes_in_objfile (objfile, "libc", "longjmp");
25f9533e 3287
45461e0d 3288 if (!ret.empty ())
25f9533e
SDJ
3289 {
3290 /* We are only interested in checking one element. */
45461e0d 3291 probe *p = ret[0];
25f9533e 3292
935676c9 3293 if (!p->can_evaluate_arguments ())
25f9533e
SDJ
3294 {
3295 /* We cannot use the probe interface here, because it does
3296 not know how to evaluate arguments. */
45461e0d 3297 ret.clear ();
25f9533e
SDJ
3298 }
3299 }
3300 bp_objfile_data->longjmp_probes = ret;
28106bc2
SDJ
3301 bp_objfile_data->longjmp_searched = 1;
3302 }
3303
45461e0d 3304 if (!bp_objfile_data->longjmp_probes.empty ())
28106bc2 3305 {
28106bc2
SDJ
3306 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3307
45461e0d 3308 for (probe *p : bp_objfile_data->longjmp_probes)
28106bc2
SDJ
3309 {
3310 struct breakpoint *b;
3311
729662a5 3312 b = create_internal_breakpoint (gdbarch,
935676c9 3313 p->get_relocated_address (objfile),
28106bc2
SDJ
3314 bp_longjmp_master,
3315 &internal_breakpoint_ops);
d28cd78a 3316 b->location = new_probe_location ("-probe-stap libc:longjmp");
28106bc2
SDJ
3317 b->enable_state = bp_disabled;
3318 }
3319
3320 continue;
3321 }
3322
0569175e
TSD
3323 if (!gdbarch_get_longjmp_target_p (gdbarch))
3324 continue;
3325
17450429 3326 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
af02033e
PP
3327 {
3328 struct breakpoint *b;
af02033e 3329 const char *func_name;
17450429 3330 CORE_ADDR addr;
67994074 3331 struct explicit_location explicit_loc;
6c95b8df 3332
3b7344d5 3333 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
af02033e 3334 continue;
0fd8e87f 3335
17450429 3336 func_name = longjmp_names[i];
3b7344d5 3337 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
17450429 3338 {
3b7344d5 3339 struct bound_minimal_symbol m;
17450429
PP
3340
3341 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3342 if (m.minsym == NULL)
17450429
PP
3343 {
3344 /* Prevent future lookups in this objfile. */
3b7344d5 3345 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
17450429
PP
3346 continue;
3347 }
3348 bp_objfile_data->longjmp_msym[i] = m;
3349 }
3350
77e371c0 3351 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
06edf0c0
PA
3352 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3353 &internal_breakpoint_ops);
67994074
KS
3354 initialize_explicit_location (&explicit_loc);
3355 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3356 b->location = new_explicit_location (&explicit_loc);
af02033e
PP
3357 b->enable_state = bp_disabled;
3358 }
0fd8e87f 3359 }
af02033e 3360 }
0fd8e87f
UW
3361}
3362
af02033e 3363/* Create a master std::terminate breakpoint. */
aa7d318d 3364static void
af02033e 3365create_std_terminate_master_breakpoint (void)
aa7d318d
TT
3366{
3367 struct program_space *pspace;
af02033e 3368 const char *const func_name = "std::terminate()";
aa7d318d 3369
5ed8105e 3370 scoped_restore_current_program_space restore_pspace;
aa7d318d
TT
3371
3372 ALL_PSPACES (pspace)
17450429
PP
3373 {
3374 struct objfile *objfile;
3375 CORE_ADDR addr;
3376
3377 set_current_program_space (pspace);
3378
aa7d318d
TT
3379 ALL_OBJFILES (objfile)
3380 {
3381 struct breakpoint *b;
17450429 3382 struct breakpoint_objfile_data *bp_objfile_data;
67994074 3383 struct explicit_location explicit_loc;
aa7d318d 3384
17450429 3385 bp_objfile_data = get_breakpoint_objfile_data (objfile);
aa7d318d 3386
3b7344d5 3387 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
17450429
PP
3388 continue;
3389
3b7344d5 3390 if (bp_objfile_data->terminate_msym.minsym == NULL)
17450429 3391 {
3b7344d5 3392 struct bound_minimal_symbol m;
17450429
PP
3393
3394 m = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5
TT
3395 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3396 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
17450429
PP
3397 {
3398 /* Prevent future lookups in this objfile. */
3b7344d5 3399 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
17450429
PP
3400 continue;
3401 }
3402 bp_objfile_data->terminate_msym = m;
3403 }
aa7d318d 3404
77e371c0 3405 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
17450429 3406 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
06edf0c0
PA
3407 bp_std_terminate_master,
3408 &internal_breakpoint_ops);
67994074
KS
3409 initialize_explicit_location (&explicit_loc);
3410 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3411 b->location = new_explicit_location (&explicit_loc);
aa7d318d
TT
3412 b->enable_state = bp_disabled;
3413 }
17450429 3414 }
aa7d318d
TT
3415}
3416
186c406b
TT
3417/* Install a master breakpoint on the unwinder's debug hook. */
3418
70221824 3419static void
186c406b
TT
3420create_exception_master_breakpoint (void)
3421{
3422 struct objfile *objfile;
17450429 3423 const char *const func_name = "_Unwind_DebugHook";
186c406b
TT
3424
3425 ALL_OBJFILES (objfile)
3426 {
17450429
PP
3427 struct breakpoint *b;
3428 struct gdbarch *gdbarch;
3429 struct breakpoint_objfile_data *bp_objfile_data;
3430 CORE_ADDR addr;
67994074 3431 struct explicit_location explicit_loc;
17450429
PP
3432
3433 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3434
28106bc2
SDJ
3435 /* We prefer the SystemTap probe point if it exists. */
3436 if (!bp_objfile_data->exception_searched)
3437 {
45461e0d
SM
3438 std::vector<probe *> ret
3439 = find_probes_in_objfile (objfile, "libgcc", "unwind");
25f9533e 3440
45461e0d 3441 if (!ret.empty ())
25f9533e
SDJ
3442 {
3443 /* We are only interested in checking one element. */
45461e0d 3444 probe *p = ret[0];
25f9533e 3445
935676c9 3446 if (!p->can_evaluate_arguments ())
25f9533e
SDJ
3447 {
3448 /* We cannot use the probe interface here, because it does
3449 not know how to evaluate arguments. */
45461e0d 3450 ret.clear ();
25f9533e
SDJ
3451 }
3452 }
3453 bp_objfile_data->exception_probes = ret;
28106bc2
SDJ
3454 bp_objfile_data->exception_searched = 1;
3455 }
3456
45461e0d 3457 if (!bp_objfile_data->exception_probes.empty ())
28106bc2
SDJ
3458 {
3459 struct gdbarch *gdbarch = get_objfile_arch (objfile);
45461e0d
SM
3460
3461 for (probe *p : bp_objfile_data->exception_probes)
28106bc2
SDJ
3462 {
3463 struct breakpoint *b;
3464
729662a5 3465 b = create_internal_breakpoint (gdbarch,
935676c9 3466 p->get_relocated_address (objfile),
28106bc2
SDJ
3467 bp_exception_master,
3468 &internal_breakpoint_ops);
d28cd78a 3469 b->location = new_probe_location ("-probe-stap libgcc:unwind");
28106bc2
SDJ
3470 b->enable_state = bp_disabled;
3471 }
3472
3473 continue;
3474 }
3475
3476 /* Otherwise, try the hook function. */
3477
3b7344d5 3478 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
17450429
PP
3479 continue;
3480
3481 gdbarch = get_objfile_arch (objfile);
186c406b 3482
3b7344d5 3483 if (bp_objfile_data->exception_msym.minsym == NULL)
186c406b 3484 {
3b7344d5 3485 struct bound_minimal_symbol debug_hook;
186c406b 3486
17450429 3487 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5 3488 if (debug_hook.minsym == NULL)
17450429 3489 {
3b7344d5 3490 bp_objfile_data->exception_msym.minsym = &msym_not_found;
17450429
PP
3491 continue;
3492 }
3493
3494 bp_objfile_data->exception_msym = debug_hook;
186c406b 3495 }
17450429 3496
77e371c0 3497 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
17450429
PP
3498 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3499 &current_target);
06edf0c0
PA
3500 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3501 &internal_breakpoint_ops);
67994074
KS
3502 initialize_explicit_location (&explicit_loc);
3503 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3504 b->location = new_explicit_location (&explicit_loc);
17450429 3505 b->enable_state = bp_disabled;
186c406b 3506 }
186c406b
TT
3507}
3508
9ef9e6a6
KS
3509/* Does B have a location spec? */
3510
3511static int
3512breakpoint_event_location_empty_p (const struct breakpoint *b)
3513{
d28cd78a 3514 return b->location != NULL && event_location_empty_p (b->location.get ());
9ef9e6a6
KS
3515}
3516
c906108c 3517void
fba45db2 3518update_breakpoints_after_exec (void)
c906108c 3519{
35df4500 3520 struct breakpoint *b, *b_tmp;
876fa593 3521 struct bp_location *bploc, **bplocp_tmp;
c906108c 3522
25b22b0a
PA
3523 /* We're about to delete breakpoints from GDB's lists. If the
3524 INSERTED flag is true, GDB will try to lift the breakpoints by
3525 writing the breakpoints' "shadow contents" back into memory. The
3526 "shadow contents" are NOT valid after an exec, so GDB should not
3527 do that. Instead, the target is responsible from marking
3528 breakpoints out as soon as it detects an exec. We don't do that
3529 here instead, because there may be other attempts to delete
3530 breakpoints after detecting an exec and before reaching here. */
876fa593 3531 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
6c95b8df
PA
3532 if (bploc->pspace == current_program_space)
3533 gdb_assert (!bploc->inserted);
c906108c 3534
35df4500 3535 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3536 {
6c95b8df
PA
3537 if (b->pspace != current_program_space)
3538 continue;
3539
4a64f543 3540 /* Solib breakpoints must be explicitly reset after an exec(). */
c5aa993b
JM
3541 if (b->type == bp_shlib_event)
3542 {
3543 delete_breakpoint (b);
3544 continue;
3545 }
c906108c 3546
4a64f543 3547 /* JIT breakpoints must be explicitly reset after an exec(). */
4efc6507
DE
3548 if (b->type == bp_jit_event)
3549 {
3550 delete_breakpoint (b);
3551 continue;
3552 }
3553
1900040c 3554 /* Thread event breakpoints must be set anew after an exec(),
0fd8e87f
UW
3555 as must overlay event and longjmp master breakpoints. */
3556 if (b->type == bp_thread_event || b->type == bp_overlay_event
186c406b
TT
3557 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3558 || b->type == bp_exception_master)
c4093a6a
JM
3559 {
3560 delete_breakpoint (b);
3561 continue;
3562 }
3563
4a64f543 3564 /* Step-resume breakpoints are meaningless after an exec(). */
2c03e5be 3565 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
c5aa993b
JM
3566 {
3567 delete_breakpoint (b);
3568 continue;
3569 }
3570
7c16b83e
PA
3571 /* Just like single-step breakpoints. */
3572 if (b->type == bp_single_step)
3573 {
3574 delete_breakpoint (b);
3575 continue;
3576 }
3577
611c83ae
PA
3578 /* Longjmp and longjmp-resume breakpoints are also meaningless
3579 after an exec. */
186c406b 3580 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
e2e4d78b 3581 || b->type == bp_longjmp_call_dummy
186c406b 3582 || b->type == bp_exception || b->type == bp_exception_resume)
611c83ae
PA
3583 {
3584 delete_breakpoint (b);
3585 continue;
3586 }
3587
ce78b96d
JB
3588 if (b->type == bp_catchpoint)
3589 {
3590 /* For now, none of the bp_catchpoint breakpoints need to
3591 do anything at this point. In the future, if some of
3592 the catchpoints need to something, we will need to add
3593 a new method, and call this method from here. */
3594 continue;
3595 }
3596
c5aa993b
JM
3597 /* bp_finish is a special case. The only way we ought to be able
3598 to see one of these when an exec() has happened, is if the user
3599 caught a vfork, and then said "finish". Ordinarily a finish just
3600 carries them to the call-site of the current callee, by setting
3601 a temporary bp there and resuming. But in this case, the finish
3602 will carry them entirely through the vfork & exec.
3603
3604 We don't want to allow a bp_finish to remain inserted now. But
3605 we can't safely delete it, 'cause finish_command has a handle to
3606 the bp on a bpstat, and will later want to delete it. There's a
3607 chance (and I've seen it happen) that if we delete the bp_finish
3608 here, that its storage will get reused by the time finish_command
3609 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3610 We really must allow finish_command to delete a bp_finish.
3611
e5dd4106 3612 In the absence of a general solution for the "how do we know
53a5351d
JM
3613 it's safe to delete something others may have handles to?"
3614 problem, what we'll do here is just uninsert the bp_finish, and
3615 let finish_command delete it.
3616
3617 (We know the bp_finish is "doomed" in the sense that it's
3618 momentary, and will be deleted as soon as finish_command sees
3619 the inferior stopped. So it doesn't matter that the bp's
3620 address is probably bogus in the new a.out, unlike e.g., the
3621 solib breakpoints.) */
c5aa993b 3622
c5aa993b
JM
3623 if (b->type == bp_finish)
3624 {
3625 continue;
3626 }
3627
3628 /* Without a symbolic address, we have little hope of the
3629 pre-exec() address meaning the same thing in the post-exec()
4a64f543 3630 a.out. */
9ef9e6a6 3631 if (breakpoint_event_location_empty_p (b))
c5aa993b
JM
3632 {
3633 delete_breakpoint (b);
3634 continue;
3635 }
c5aa993b 3636 }
c906108c
SS
3637}
3638
3639int
d80ee84f 3640detach_breakpoints (ptid_t ptid)
c906108c 3641{
35df4500 3642 struct bp_location *bl, **blp_tmp;
3a1bae8e 3643 int val = 0;
2989a365 3644 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
6c95b8df 3645 struct inferior *inf = current_inferior ();
c5aa993b 3646
dfd4cc63 3647 if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
8a3fe4f8 3648 error (_("Cannot detach breakpoints of inferior_ptid"));
c5aa993b 3649
6c95b8df 3650 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
d80ee84f 3651 inferior_ptid = ptid;
35df4500 3652 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3653 {
35df4500 3654 if (bl->pspace != inf->pspace)
6c95b8df
PA
3655 continue;
3656
bd9673a4
PW
3657 /* This function must physically remove breakpoints locations
3658 from the specified ptid, without modifying the breakpoint
3659 package's state. Locations of type bp_loc_other are only
3660 maintained at GDB side. So, there is no need to remove
3661 these bp_loc_other locations. Moreover, removing these
3662 would modify the breakpoint package's state. */
3663 if (bl->loc_type == bp_loc_other)
3664 continue;
3665
35df4500 3666 if (bl->inserted)
b2b6a7da 3667 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
c5aa993b 3668 }
d03285ec 3669
3a1bae8e 3670 return val;
c906108c
SS
3671}
3672
35df4500 3673/* Remove the breakpoint location BL from the current address space.
6c95b8df
PA
3674 Note that this is used to detach breakpoints from a child fork.
3675 When we get here, the child isn't in the inferior list, and neither
3676 do we have objects to represent its address space --- we should
35df4500 3677 *not* look at bl->pspace->aspace here. */
6c95b8df 3678
c906108c 3679static int
b2b6a7da 3680remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
c906108c
SS
3681{
3682 int val;
c5aa993b 3683
35df4500
TJB
3684 /* BL is never in moribund_locations by our callers. */
3685 gdb_assert (bl->owner != NULL);
2bdf28a0 3686
74960c60
VP
3687 /* The type of none suggests that owner is actually deleted.
3688 This should not ever happen. */
35df4500 3689 gdb_assert (bl->owner->type != bp_none);
0bde7532 3690
35df4500
TJB
3691 if (bl->loc_type == bp_loc_software_breakpoint
3692 || bl->loc_type == bp_loc_hardware_breakpoint)
c906108c 3693 {
c02f5703
MS
3694 /* "Normal" instruction breakpoint: either the standard
3695 trap-instruction bp (bp_breakpoint), or a
3696 bp_hardware_breakpoint. */
3697
3698 /* First check to see if we have to handle an overlay. */
3699 if (overlay_debugging == ovly_off
35df4500
TJB
3700 || bl->section == NULL
3701 || !(section_is_overlay (bl->section)))
c02f5703
MS
3702 {
3703 /* No overlay handling: just remove the breakpoint. */
08351840
PA
3704
3705 /* If we're trying to uninsert a memory breakpoint that we
3706 know is set in a dynamic object that is marked
3707 shlib_disabled, then either the dynamic object was
3708 removed with "remove-symbol-file" or with
3709 "nosharedlibrary". In the former case, we don't know
3710 whether another dynamic object might have loaded over the
3711 breakpoint's address -- the user might well let us know
3712 about it next with add-symbol-file (the whole point of
d03de421 3713 add-symbol-file is letting the user manually maintain a
08351840
PA
3714 list of dynamically loaded objects). If we have the
3715 breakpoint's shadow memory, that is, this is a software
3716 breakpoint managed by GDB, check whether the breakpoint
3717 is still inserted in memory, to avoid overwriting wrong
3718 code with stale saved shadow contents. Note that HW
3719 breakpoints don't have shadow memory, as they're
3720 implemented using a mechanism that is not dependent on
3721 being able to modify the target's memory, and as such
3722 they should always be removed. */
3723 if (bl->shlib_disabled
3724 && bl->target_info.shadow_len != 0
3725 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3726 val = 0;
3727 else
73971819 3728 val = bl->owner->ops->remove_location (bl, reason);
c02f5703 3729 }
c906108c
SS
3730 else
3731 {
4a64f543 3732 /* This breakpoint is in an overlay section.
c02f5703
MS
3733 Did we set a breakpoint at the LMA? */
3734 if (!overlay_events_enabled)
3735 {
3736 /* Yes -- overlay event support is not active, so we
3737 should have set a breakpoint at the LMA. Remove it.
3738 */
c02f5703
MS
3739 /* Ignore any failures: if the LMA is in ROM, we will
3740 have already warned when we failed to insert it. */
35df4500
TJB
3741 if (bl->loc_type == bp_loc_hardware_breakpoint)
3742 target_remove_hw_breakpoint (bl->gdbarch,
3743 &bl->overlay_target_info);
c02f5703 3744 else
35df4500 3745 target_remove_breakpoint (bl->gdbarch,
73971819
PA
3746 &bl->overlay_target_info,
3747 reason);
c02f5703
MS
3748 }
3749 /* Did we set a breakpoint at the VMA?
3750 If so, we will have marked the breakpoint 'inserted'. */
35df4500 3751 if (bl->inserted)
c906108c 3752 {
c02f5703
MS
3753 /* Yes -- remove it. Previously we did not bother to
3754 remove the breakpoint if the section had been
3755 unmapped, but let's not rely on that being safe. We
3756 don't know what the overlay manager might do. */
aa67235e
UW
3757
3758 /* However, we should remove *software* breakpoints only
3759 if the section is still mapped, or else we overwrite
3760 wrong code with the saved shadow contents. */
348d480f
PA
3761 if (bl->loc_type == bp_loc_hardware_breakpoint
3762 || section_is_mapped (bl->section))
73971819 3763 val = bl->owner->ops->remove_location (bl, reason);
aa67235e
UW
3764 else
3765 val = 0;
c906108c 3766 }
c02f5703
MS
3767 else
3768 {
3769 /* No -- not inserted, so no need to remove. No error. */
3770 val = 0;
3771 }
c906108c 3772 }
879d1e6b 3773
08351840
PA
3774 /* In some cases, we might not be able to remove a breakpoint in
3775 a shared library that has already been removed, but we have
3776 not yet processed the shlib unload event. Similarly for an
3777 unloaded add-symbol-file object - the user might not yet have
3778 had the chance to remove-symbol-file it. shlib_disabled will
3779 be set if the library/object has already been removed, but
3780 the breakpoint hasn't been uninserted yet, e.g., after
3781 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3782 always-inserted mode. */
076855f9 3783 if (val
08351840
PA
3784 && (bl->loc_type == bp_loc_software_breakpoint
3785 && (bl->shlib_disabled
3786 || solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
3787 || shared_objfile_contains_address_p (bl->pspace,
3788 bl->address))))
879d1e6b
UW
3789 val = 0;
3790
c906108c
SS
3791 if (val)
3792 return val;
b2b6a7da 3793 bl->inserted = (reason == DETACH_BREAKPOINT);
c906108c 3794 }
35df4500 3795 else if (bl->loc_type == bp_loc_hardware_watchpoint)
c906108c 3796 {
77b06cd7
TJB
3797 gdb_assert (bl->owner->ops != NULL
3798 && bl->owner->ops->remove_location != NULL);
3799
b2b6a7da 3800 bl->inserted = (reason == DETACH_BREAKPOINT);
73971819 3801 bl->owner->ops->remove_location (bl, reason);
2e70b7b9 3802
c906108c 3803 /* Failure to remove any of the hardware watchpoints comes here. */
b2b6a7da 3804 if (reason == REMOVE_BREAKPOINT && bl->inserted)
8a3fe4f8 3805 warning (_("Could not remove hardware watchpoint %d."),
35df4500 3806 bl->owner->number);
c906108c 3807 }
35df4500
TJB
3808 else if (bl->owner->type == bp_catchpoint
3809 && breakpoint_enabled (bl->owner)
3810 && !bl->duplicate)
ce78b96d 3811 {
77b06cd7
TJB
3812 gdb_assert (bl->owner->ops != NULL
3813 && bl->owner->ops->remove_location != NULL);
ce78b96d 3814
73971819 3815 val = bl->owner->ops->remove_location (bl, reason);
ce78b96d
JB
3816 if (val)
3817 return val;
77b06cd7 3818
b2b6a7da 3819 bl->inserted = (reason == DETACH_BREAKPOINT);
ce78b96d 3820 }
c906108c
SS
3821
3822 return 0;
3823}
3824
6c95b8df 3825static int
834c0d03 3826remove_breakpoint (struct bp_location *bl)
6c95b8df 3827{
35df4500
TJB
3828 /* BL is never in moribund_locations by our callers. */
3829 gdb_assert (bl->owner != NULL);
2bdf28a0 3830
6c95b8df
PA
3831 /* The type of none suggests that owner is actually deleted.
3832 This should not ever happen. */
35df4500 3833 gdb_assert (bl->owner->type != bp_none);
6c95b8df 3834
5ed8105e 3835 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 3836
35df4500 3837 switch_to_program_space_and_thread (bl->pspace);
6c95b8df 3838
5ed8105e 3839 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
6c95b8df
PA
3840}
3841
c906108c
SS
3842/* Clear the "inserted" flag in all breakpoints. */
3843
25b22b0a 3844void
fba45db2 3845mark_breakpoints_out (void)
c906108c 3846{
35df4500 3847 struct bp_location *bl, **blp_tmp;
c906108c 3848
35df4500 3849 ALL_BP_LOCATIONS (bl, blp_tmp)
66c4b3e8 3850 if (bl->pspace == current_program_space)
35df4500 3851 bl->inserted = 0;
c906108c
SS
3852}
3853
53a5351d
JM
3854/* Clear the "inserted" flag in all breakpoints and delete any
3855 breakpoints which should go away between runs of the program.
c906108c
SS
3856
3857 Plus other such housekeeping that has to be done for breakpoints
3858 between runs.
3859
53a5351d
JM
3860 Note: this function gets called at the end of a run (by
3861 generic_mourn_inferior) and when a run begins (by
4a64f543 3862 init_wait_for_inferior). */
c906108c
SS
3863
3864
3865
3866void
fba45db2 3867breakpoint_init_inferior (enum inf_context context)
c906108c 3868{
35df4500 3869 struct breakpoint *b, *b_tmp;
870f88f7 3870 struct bp_location *bl;
1c5cfe86 3871 int ix;
6c95b8df 3872 struct program_space *pspace = current_program_space;
c906108c 3873
50c71eaf
PA
3874 /* If breakpoint locations are shared across processes, then there's
3875 nothing to do. */
f5656ead 3876 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
50c71eaf
PA
3877 return;
3878
1a853c52 3879 mark_breakpoints_out ();
075f6582 3880
35df4500 3881 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3882 {
6c95b8df
PA
3883 if (b->loc && b->loc->pspace != pspace)
3884 continue;
3885
c5aa993b
JM
3886 switch (b->type)
3887 {
3888 case bp_call_dummy:
e2e4d78b 3889 case bp_longjmp_call_dummy:
c906108c 3890
c5aa993b 3891 /* If the call dummy breakpoint is at the entry point it will
ab92d69b
PA
3892 cause problems when the inferior is rerun, so we better get
3893 rid of it. */
3894
3895 case bp_watchpoint_scope:
3896
3897 /* Also get rid of scope breakpoints. */
3898
3899 case bp_shlib_event:
3900
3901 /* Also remove solib event breakpoints. Their addresses may
3902 have changed since the last time we ran the program.
3903 Actually we may now be debugging against different target;
3904 and so the solib backend that installed this breakpoint may
3905 not be used in by the target. E.g.,
3906
3907 (gdb) file prog-linux
3908 (gdb) run # native linux target
3909 ...
3910 (gdb) kill
3911 (gdb) file prog-win.exe
3912 (gdb) tar rem :9999 # remote Windows gdbserver.
3913 */
c906108c 3914
f59f708a
PA
3915 case bp_step_resume:
3916
3917 /* Also remove step-resume breakpoints. */
3918
7c16b83e
PA
3919 case bp_single_step:
3920
3921 /* Also remove single-step breakpoints. */
3922
c5aa993b
JM
3923 delete_breakpoint (b);
3924 break;
c906108c 3925
c5aa993b
JM
3926 case bp_watchpoint:
3927 case bp_hardware_watchpoint:
3928 case bp_read_watchpoint:
3929 case bp_access_watchpoint:
3a5c3e22
PA
3930 {
3931 struct watchpoint *w = (struct watchpoint *) b;
c906108c 3932
3a5c3e22
PA
3933 /* Likewise for watchpoints on local expressions. */
3934 if (w->exp_valid_block != NULL)
3935 delete_breakpoint (b);
63000888 3936 else
3a5c3e22 3937 {
63000888
PA
3938 /* Get rid of existing locations, which are no longer
3939 valid. New ones will be created in
3940 update_watchpoint, when the inferior is restarted.
3941 The next update_global_location_list call will
3942 garbage collect them. */
3943 b->loc = NULL;
3944
3945 if (context == inf_starting)
3946 {
3947 /* Reset val field to force reread of starting value in
3948 insert_breakpoints. */
850645cf 3949 w->val.reset (nullptr);
63000888
PA
3950 w->val_valid = 0;
3951 }
3952 }
3a5c3e22 3953 }
c5aa993b
JM
3954 break;
3955 default:
c5aa993b
JM
3956 break;
3957 }
3958 }
1c5cfe86
PA
3959
3960 /* Get rid of the moribund locations. */
35df4500
TJB
3961 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3962 decref_bp_location (&bl);
1c5cfe86 3963 VEC_free (bp_location_p, moribund_locations);
c906108c
SS
3964}
3965
6c95b8df
PA
3966/* These functions concern about actual breakpoints inserted in the
3967 target --- to e.g. check if we need to do decr_pc adjustment or if
3968 we need to hop over the bkpt --- so we check for address space
3969 match, not program space. */
3970
c2c6d25f
JM
3971/* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3972 exists at PC. It returns ordinary_breakpoint_here if it's an
3973 ordinary breakpoint, or permanent_breakpoint_here if it's a
3974 permanent breakpoint.
3975 - When continuing from a location with an ordinary breakpoint, we
3976 actually single step once before calling insert_breakpoints.
e5dd4106 3977 - When continuing from a location with a permanent breakpoint, we
c2c6d25f
JM
3978 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3979 the target, to advance the PC past the breakpoint. */
c906108c 3980
c2c6d25f 3981enum breakpoint_here
accd0bcd 3982breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 3983{
35df4500 3984 struct bp_location *bl, **blp_tmp;
c2c6d25f 3985 int any_breakpoint_here = 0;
c906108c 3986
35df4500 3987 ALL_BP_LOCATIONS (bl, blp_tmp)
075f6582 3988 {
35df4500
TJB
3989 if (bl->loc_type != bp_loc_software_breakpoint
3990 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
3991 continue;
3992
f1310107 3993 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
35df4500 3994 if ((breakpoint_enabled (bl->owner)
1a853c52 3995 || bl->permanent)
f1310107 3996 && breakpoint_location_address_match (bl, aspace, pc))
075f6582
DJ
3997 {
3998 if (overlay_debugging
35df4500
TJB
3999 && section_is_overlay (bl->section)
4000 && !section_is_mapped (bl->section))
075f6582 4001 continue; /* unmapped overlay -- can't be a match */
1a853c52 4002 else if (bl->permanent)
075f6582
DJ
4003 return permanent_breakpoint_here;
4004 else
4005 any_breakpoint_here = 1;
4006 }
4007 }
c906108c 4008
f486487f 4009 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
c906108c
SS
4010}
4011
d35ae833
PA
4012/* See breakpoint.h. */
4013
4014int
accd0bcd 4015breakpoint_in_range_p (const address_space *aspace,
d35ae833
PA
4016 CORE_ADDR addr, ULONGEST len)
4017{
4018 struct bp_location *bl, **blp_tmp;
4019
4020 ALL_BP_LOCATIONS (bl, blp_tmp)
4021 {
4022 if (bl->loc_type != bp_loc_software_breakpoint
4023 && bl->loc_type != bp_loc_hardware_breakpoint)
4024 continue;
4025
4026 if ((breakpoint_enabled (bl->owner)
4027 || bl->permanent)
4028 && breakpoint_location_address_range_overlap (bl, aspace,
4029 addr, len))
4030 {
4031 if (overlay_debugging
4032 && section_is_overlay (bl->section)
4033 && !section_is_mapped (bl->section))
4034 {
4035 /* Unmapped overlay -- can't be a match. */
4036 continue;
4037 }
4038
4039 return 1;
4040 }
4041 }
4042
4043 return 0;
4044}
4045
1c5cfe86
PA
4046/* Return true if there's a moribund breakpoint at PC. */
4047
4048int
accd0bcd 4049moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
1c5cfe86
PA
4050{
4051 struct bp_location *loc;
4052 int ix;
4053
4054 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
f1310107 4055 if (breakpoint_location_address_match (loc, aspace, pc))
1c5cfe86
PA
4056 return 1;
4057
4058 return 0;
4059}
c2c6d25f 4060
f7ce857f
PA
4061/* Returns non-zero iff BL is inserted at PC, in address space
4062 ASPACE. */
4063
4064static int
4065bp_location_inserted_here_p (struct bp_location *bl,
accd0bcd 4066 const address_space *aspace, CORE_ADDR pc)
f7ce857f
PA
4067{
4068 if (bl->inserted
4069 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4070 aspace, pc))
4071 {
4072 if (overlay_debugging
4073 && section_is_overlay (bl->section)
4074 && !section_is_mapped (bl->section))
4075 return 0; /* unmapped overlay -- can't be a match */
4076 else
4077 return 1;
4078 }
4079 return 0;
4080}
4081
a1fd2fa5 4082/* Returns non-zero iff there's a breakpoint inserted at PC. */
c906108c
SS
4083
4084int
accd0bcd 4085breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 4086{
f7ce857f 4087 struct bp_location **blp, **blp_tmp = NULL;
c906108c 4088
f7ce857f 4089 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
c5aa993b 4090 {
f7ce857f
PA
4091 struct bp_location *bl = *blp;
4092
35df4500
TJB
4093 if (bl->loc_type != bp_loc_software_breakpoint
4094 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4095 continue;
4096
f7ce857f
PA
4097 if (bp_location_inserted_here_p (bl, aspace, pc))
4098 return 1;
c5aa993b 4099 }
c36b740a
VP
4100 return 0;
4101}
4102
a1fd2fa5
PA
4103/* This function returns non-zero iff there is a software breakpoint
4104 inserted at PC. */
c36b740a
VP
4105
4106int
accd0bcd 4107software_breakpoint_inserted_here_p (const address_space *aspace,
a1fd2fa5 4108 CORE_ADDR pc)
4fa8626c 4109{
f7ce857f 4110 struct bp_location **blp, **blp_tmp = NULL;
4fa8626c 4111
f7ce857f 4112 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4fa8626c 4113 {
f7ce857f
PA
4114 struct bp_location *bl = *blp;
4115
35df4500 4116 if (bl->loc_type != bp_loc_software_breakpoint)
4fa8626c
DJ
4117 continue;
4118
f7ce857f
PA
4119 if (bp_location_inserted_here_p (bl, aspace, pc))
4120 return 1;
4fa8626c
DJ
4121 }
4122
4123 return 0;
9c02b525
PA
4124}
4125
4126/* See breakpoint.h. */
4127
4128int
accd0bcd 4129hardware_breakpoint_inserted_here_p (const address_space *aspace,
9c02b525
PA
4130 CORE_ADDR pc)
4131{
4132 struct bp_location **blp, **blp_tmp = NULL;
9c02b525
PA
4133
4134 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4135 {
4136 struct bp_location *bl = *blp;
4137
4138 if (bl->loc_type != bp_loc_hardware_breakpoint)
4139 continue;
4140
4141 if (bp_location_inserted_here_p (bl, aspace, pc))
4142 return 1;
4143 }
4144
4145 return 0;
4fa8626c
DJ
4146}
4147
9093389c 4148int
accd0bcd 4149hardware_watchpoint_inserted_in_range (const address_space *aspace,
9093389c
PA
4150 CORE_ADDR addr, ULONGEST len)
4151{
4152 struct breakpoint *bpt;
4153
4154 ALL_BREAKPOINTS (bpt)
4155 {
4156 struct bp_location *loc;
4157
4158 if (bpt->type != bp_hardware_watchpoint
4159 && bpt->type != bp_access_watchpoint)
4160 continue;
4161
4162 if (!breakpoint_enabled (bpt))
4163 continue;
4164
4165 for (loc = bpt->loc; loc; loc = loc->next)
4166 if (loc->pspace->aspace == aspace && loc->inserted)
4167 {
4168 CORE_ADDR l, h;
4169
4170 /* Check for intersection. */
768adc05
PA
4171 l = std::max<CORE_ADDR> (loc->address, addr);
4172 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
9093389c
PA
4173 if (l < h)
4174 return 1;
4175 }
4176 }
4177 return 0;
4178}
c906108c 4179\f
c5aa993b 4180
c906108c
SS
4181/* bpstat stuff. External routines' interfaces are documented
4182 in breakpoint.h. */
4183
4184int
c326b90e 4185is_catchpoint (struct breakpoint *ep)
c906108c 4186{
533be4dd 4187 return (ep->type == bp_catchpoint);
c906108c
SS
4188}
4189
f431efe5
PA
4190/* Frees any storage that is part of a bpstat. Does not walk the
4191 'next' chain. */
4192
04afa70c 4193bpstats::~bpstats ()
198757a8 4194{
04afa70c
TT
4195 if (bp_location_at != NULL)
4196 decref_bp_location (&bp_location_at);
198757a8
VP
4197}
4198
c906108c
SS
4199/* Clear a bpstat so that it says we are not at any breakpoint.
4200 Also free any storage that is part of a bpstat. */
4201
4202void
fba45db2 4203bpstat_clear (bpstat *bsp)
c906108c
SS
4204{
4205 bpstat p;
4206 bpstat q;
4207
4208 if (bsp == 0)
4209 return;
4210 p = *bsp;
4211 while (p != NULL)
4212 {
4213 q = p->next;
04afa70c 4214 delete p;
c906108c
SS
4215 p = q;
4216 }
4217 *bsp = NULL;
4218}
4219
04afa70c
TT
4220bpstats::bpstats (const bpstats &other)
4221 : next (NULL),
4222 bp_location_at (other.bp_location_at),
4223 breakpoint_at (other.breakpoint_at),
4224 commands (other.commands),
04afa70c
TT
4225 print (other.print),
4226 stop (other.stop),
4227 print_it (other.print_it)
4228{
850645cf
TT
4229 if (other.old_val != NULL)
4230 old_val = release_value (value_copy (other.old_val.get ()));
04afa70c 4231 incref_bp_location (bp_location_at);
04afa70c
TT
4232}
4233
c906108c
SS
4234/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4235 is part of the bpstat is copied as well. */
4236
4237bpstat
fba45db2 4238bpstat_copy (bpstat bs)
c906108c
SS
4239{
4240 bpstat p = NULL;
4241 bpstat tmp;
4242 bpstat retval = NULL;
4243
4244 if (bs == NULL)
4245 return bs;
4246
4247 for (; bs != NULL; bs = bs->next)
4248 {
04afa70c 4249 tmp = new bpstats (*bs);
31cc81e9 4250
c906108c
SS
4251 if (p == NULL)
4252 /* This is the first thing in the chain. */
4253 retval = tmp;
4254 else
4255 p->next = tmp;
4256 p = tmp;
4257 }
4258 p->next = NULL;
4259 return retval;
4260}
4261
4a64f543 4262/* Find the bpstat associated with this breakpoint. */
c906108c
SS
4263
4264bpstat
fba45db2 4265bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
c906108c 4266{
c5aa993b
JM
4267 if (bsp == NULL)
4268 return NULL;
c906108c 4269
c5aa993b
JM
4270 for (; bsp != NULL; bsp = bsp->next)
4271 {
f431efe5 4272 if (bsp->breakpoint_at == breakpoint)
c5aa993b
JM
4273 return bsp;
4274 }
c906108c
SS
4275 return NULL;
4276}
4277
ab04a2af
TT
4278/* See breakpoint.h. */
4279
47591c29 4280int
427cd150 4281bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
ab04a2af 4282{
ab04a2af
TT
4283 for (; bsp != NULL; bsp = bsp->next)
4284 {
427cd150
TT
4285 if (bsp->breakpoint_at == NULL)
4286 {
4287 /* A moribund location can never explain a signal other than
4288 GDB_SIGNAL_TRAP. */
4289 if (sig == GDB_SIGNAL_TRAP)
47591c29 4290 return 1;
427cd150
TT
4291 }
4292 else
47591c29
PA
4293 {
4294 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4295 sig))
4296 return 1;
4297 }
ab04a2af
TT
4298 }
4299
47591c29 4300 return 0;
ab04a2af
TT
4301}
4302
4a64f543
MS
4303/* Put in *NUM the breakpoint number of the first breakpoint we are
4304 stopped at. *BSP upon return is a bpstat which points to the
4305 remaining breakpoints stopped at (but which is not guaranteed to be
4306 good for anything but further calls to bpstat_num).
4307
8671a17b
PA
4308 Return 0 if passed a bpstat which does not indicate any breakpoints.
4309 Return -1 if stopped at a breakpoint that has been deleted since
4310 we set it.
4311 Return 1 otherwise. */
c906108c
SS
4312
4313int
8671a17b 4314bpstat_num (bpstat *bsp, int *num)
c906108c
SS
4315{
4316 struct breakpoint *b;
4317
4318 if ((*bsp) == NULL)
4319 return 0; /* No more breakpoint values */
8671a17b 4320
4a64f543
MS
4321 /* We assume we'll never have several bpstats that correspond to a
4322 single breakpoint -- otherwise, this function might return the
4323 same number more than once and this will look ugly. */
f431efe5 4324 b = (*bsp)->breakpoint_at;
8671a17b
PA
4325 *bsp = (*bsp)->next;
4326 if (b == NULL)
4327 return -1; /* breakpoint that's been deleted since */
4328
4329 *num = b->number; /* We have its number */
4330 return 1;
c906108c
SS
4331}
4332
e93ca019 4333/* See breakpoint.h. */
c906108c
SS
4334
4335void
e93ca019 4336bpstat_clear_actions (void)
c906108c 4337{
e93ca019
JK
4338 struct thread_info *tp;
4339 bpstat bs;
4340
4341 if (ptid_equal (inferior_ptid, null_ptid))
4342 return;
4343
4344 tp = find_thread_ptid (inferior_ptid);
4345 if (tp == NULL)
4346 return;
4347
4348 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
c906108c 4349 {
d1b0a7bf 4350 bs->commands = NULL;
850645cf 4351 bs->old_val.reset (nullptr);
c906108c
SS
4352 }
4353}
4354
f3b1572e
PA
4355/* Called when a command is about to proceed the inferior. */
4356
4357static void
4358breakpoint_about_to_proceed (void)
4359{
4360 if (!ptid_equal (inferior_ptid, null_ptid))
4361 {
4362 struct thread_info *tp = inferior_thread ();
4363
4364 /* Allow inferior function calls in breakpoint commands to not
4365 interrupt the command list. When the call finishes
4366 successfully, the inferior will be standing at the same
4367 breakpoint as if nothing happened. */
16c381f0 4368 if (tp->control.in_infcall)
f3b1572e
PA
4369 return;
4370 }
4371
4372 breakpoint_proceeded = 1;
4373}
4374
abf85f46
JK
4375/* Return non-zero iff CMD as the first line of a command sequence is `silent'
4376 or its equivalent. */
4377
4378static int
4379command_line_is_silent (struct command_line *cmd)
4380{
4f45d445 4381 return cmd && (strcmp ("silent", cmd->line) == 0);
abf85f46
JK
4382}
4383
4a64f543
MS
4384/* Execute all the commands associated with all the breakpoints at
4385 this location. Any of these commands could cause the process to
4386 proceed beyond this point, etc. We look out for such changes by
4387 checking the global "breakpoint_proceeded" after each command.
c906108c 4388
347bddb7
PA
4389 Returns true if a breakpoint command resumed the inferior. In that
4390 case, it is the caller's responsibility to recall it again with the
4391 bpstat of the current thread. */
4392
4393static int
4394bpstat_do_actions_1 (bpstat *bsp)
c906108c
SS
4395{
4396 bpstat bs;
347bddb7 4397 int again = 0;
c906108c
SS
4398
4399 /* Avoid endless recursion if a `source' command is contained
4400 in bs->commands. */
4401 if (executing_breakpoint_commands)
347bddb7 4402 return 0;
c906108c 4403
81b1e71c
TT
4404 scoped_restore save_executing
4405 = make_scoped_restore (&executing_breakpoint_commands, 1);
c906108c 4406
1ac32117 4407 scoped_restore preventer = prevent_dont_repeat ();
cf6c5ffb 4408
4a64f543 4409 /* This pointer will iterate over the list of bpstat's. */
c906108c
SS
4410 bs = *bsp;
4411
4412 breakpoint_proceeded = 0;
4413 for (; bs != NULL; bs = bs->next)
4414 {
d1b0a7bf 4415 struct command_line *cmd = NULL;
6c50ab1c
JB
4416
4417 /* Take ownership of the BSP's command tree, if it has one.
4418
4419 The command tree could legitimately contain commands like
4420 'step' and 'next', which call clear_proceed_status, which
4421 frees stop_bpstat's command tree. To make sure this doesn't
4422 free the tree we're executing out from under us, we need to
4423 take ownership of the tree ourselves. Since a given bpstat's
4424 commands are only executed once, we don't need to copy it; we
4425 can clear the pointer in the bpstat, and make sure we free
4426 the tree when we're done. */
d1b0a7bf 4427 counted_command_line ccmd = bs->commands;
9add0f1b 4428 bs->commands = NULL;
d1b0a7bf
TT
4429 if (ccmd != NULL)
4430 cmd = ccmd.get ();
abf85f46
JK
4431 if (command_line_is_silent (cmd))
4432 {
4433 /* The action has been already done by bpstat_stop_status. */
4434 cmd = cmd->next;
4435 }
6c50ab1c 4436
c906108c
SS
4437 while (cmd != NULL)
4438 {
4439 execute_control_command (cmd);
4440
4441 if (breakpoint_proceeded)
4442 break;
4443 else
4444 cmd = cmd->next;
4445 }
6c50ab1c 4446
c906108c 4447 if (breakpoint_proceeded)
32c1e744 4448 {
cb814510 4449 if (current_ui->async)
347bddb7
PA
4450 /* If we are in async mode, then the target might be still
4451 running, not stopped at any breakpoint, so nothing for
4452 us to do here -- just return to the event loop. */
4453 ;
32c1e744
VP
4454 else
4455 /* In sync mode, when execute_control_command returns
4456 we're already standing on the next breakpoint.
347bddb7
PA
4457 Breakpoint commands for that stop were not run, since
4458 execute_command does not run breakpoint commands --
4459 only command_line_handler does, but that one is not
4460 involved in execution of breakpoint commands. So, we
4461 can now execute breakpoint commands. It should be
4462 noted that making execute_command do bpstat actions is
4463 not an option -- in this case we'll have recursive
4464 invocation of bpstat for each breakpoint with a
4465 command, and can easily blow up GDB stack. Instead, we
4466 return true, which will trigger the caller to recall us
4467 with the new stop_bpstat. */
4468 again = 1;
4469 break;
32c1e744 4470 }
c906108c 4471 }
347bddb7
PA
4472 return again;
4473}
4474
4475void
4476bpstat_do_actions (void)
4477{
353d1d73
JK
4478 struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4479
347bddb7
PA
4480 /* Do any commands attached to breakpoint we are stopped at. */
4481 while (!ptid_equal (inferior_ptid, null_ptid)
4482 && target_has_execution
4483 && !is_exited (inferior_ptid)
4484 && !is_executing (inferior_ptid))
4485 /* Since in sync mode, bpstat_do_actions may resume the inferior,
4486 and only return when it is stopped at the next breakpoint, we
4487 keep doing breakpoint actions until it returns false to
4488 indicate the inferior was not resumed. */
16c381f0 4489 if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
347bddb7 4490 break;
353d1d73
JK
4491
4492 discard_cleanups (cleanup_if_error);
c906108c
SS
4493}
4494
fa4727a6
DJ
4495/* Print out the (old or new) value associated with a watchpoint. */
4496
4497static void
4498watchpoint_value_print (struct value *val, struct ui_file *stream)
4499{
4500 if (val == NULL)
4501 fprintf_unfiltered (stream, _("<unreadable>"));
4502 else
79a45b7d
TT
4503 {
4504 struct value_print_options opts;
4505 get_user_print_options (&opts);
4506 value_print (val, stream, &opts);
4507 }
fa4727a6
DJ
4508}
4509
f303dbd6
PA
4510/* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4511 debugging multiple threads. */
4512
4513void
4514maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4515{
112e8700 4516 if (uiout->is_mi_like_p ())
f303dbd6
PA
4517 return;
4518
112e8700 4519 uiout->text ("\n");
f303dbd6
PA
4520
4521 if (show_thread_that_caused_stop ())
4522 {
4523 const char *name;
4524 struct thread_info *thr = inferior_thread ();
4525
112e8700
SM
4526 uiout->text ("Thread ");
4527 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
f303dbd6
PA
4528
4529 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4530 if (name != NULL)
4531 {
112e8700
SM
4532 uiout->text (" \"");
4533 uiout->field_fmt ("name", "%s", name);
4534 uiout->text ("\"");
f303dbd6
PA
4535 }
4536
112e8700 4537 uiout->text (" hit ");
f303dbd6
PA
4538 }
4539}
4540
e514a9d6 4541/* Generic routine for printing messages indicating why we
4a64f543 4542 stopped. The behavior of this function depends on the value
e514a9d6
JM
4543 'print_it' in the bpstat structure. Under some circumstances we
4544 may decide not to print anything here and delegate the task to
4a64f543 4545 normal_stop(). */
e514a9d6
JM
4546
4547static enum print_stop_action
4548print_bp_stop_message (bpstat bs)
4549{
4550 switch (bs->print_it)
4551 {
4552 case print_it_noop:
4a64f543 4553 /* Nothing should be printed for this bpstat entry. */
e514a9d6
JM
4554 return PRINT_UNKNOWN;
4555 break;
4556
4557 case print_it_done:
4558 /* We still want to print the frame, but we already printed the
4a64f543 4559 relevant messages. */
e514a9d6
JM
4560 return PRINT_SRC_AND_LOC;
4561 break;
4562
4563 case print_it_normal:
4f8d1dc6 4564 {
f431efe5
PA
4565 struct breakpoint *b = bs->breakpoint_at;
4566
1a6a67de
TJB
4567 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4568 which has since been deleted. */
4569 if (b == NULL)
4570 return PRINT_UNKNOWN;
4571
348d480f
PA
4572 /* Normal case. Call the breakpoint's print_it method. */
4573 return b->ops->print_it (bs);
4f8d1dc6 4574 }
348d480f 4575 break;
3086aeae 4576
e514a9d6 4577 default:
8e65ff28 4578 internal_error (__FILE__, __LINE__,
e2e0b3e5 4579 _("print_bp_stop_message: unrecognized enum value"));
e514a9d6 4580 break;
c906108c 4581 }
c906108c
SS
4582}
4583
edcc5120
TT
4584/* A helper function that prints a shared library stopped event. */
4585
4586static void
4587print_solib_event (int is_catchpoint)
4588{
6fb16ce6 4589 bool any_deleted = !current_program_space->deleted_solibs.empty ();
edcc5120
TT
4590 int any_added
4591 = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4592
4593 if (!is_catchpoint)
4594 {
4595 if (any_added || any_deleted)
112e8700 4596 current_uiout->text (_("Stopped due to shared library event:\n"));
edcc5120 4597 else
112e8700
SM
4598 current_uiout->text (_("Stopped due to shared library event (no "
4599 "libraries added or removed)\n"));
edcc5120
TT
4600 }
4601
112e8700
SM
4602 if (current_uiout->is_mi_like_p ())
4603 current_uiout->field_string ("reason",
4604 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
edcc5120
TT
4605
4606 if (any_deleted)
4607 {
112e8700 4608 current_uiout->text (_(" Inferior unloaded "));
10f489e5 4609 ui_out_emit_list list_emitter (current_uiout, "removed");
6fb16ce6 4610 for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
edcc5120 4611 {
6fb16ce6
SM
4612 const std::string &name = current_program_space->deleted_solibs[ix];
4613
edcc5120 4614 if (ix > 0)
112e8700
SM
4615 current_uiout->text (" ");
4616 current_uiout->field_string ("library", name);
4617 current_uiout->text ("\n");
edcc5120 4618 }
edcc5120
TT
4619 }
4620
4621 if (any_added)
4622 {
4623 struct so_list *iter;
4624 int ix;
edcc5120 4625
112e8700 4626 current_uiout->text (_(" Inferior loaded "));
10f489e5 4627 ui_out_emit_list list_emitter (current_uiout, "added");
edcc5120
TT
4628 for (ix = 0;
4629 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4630 ix, iter);
4631 ++ix)
4632 {
4633 if (ix > 0)
112e8700
SM
4634 current_uiout->text (" ");
4635 current_uiout->field_string ("library", iter->so_name);
4636 current_uiout->text ("\n");
edcc5120 4637 }
edcc5120
TT
4638 }
4639}
4640
e514a9d6
JM
4641/* Print a message indicating what happened. This is called from
4642 normal_stop(). The input to this routine is the head of the bpstat
36dfb11c
TT
4643 list - a list of the eventpoints that caused this stop. KIND is
4644 the target_waitkind for the stopping event. This
e514a9d6
JM
4645 routine calls the generic print routine for printing a message
4646 about reasons for stopping. This will print (for example) the
4647 "Breakpoint n," part of the output. The return value of this
4648 routine is one of:
c906108c 4649
4a64f543 4650 PRINT_UNKNOWN: Means we printed nothing.
917317f4 4651 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4a64f543 4652 code to print the location. An example is
c5aa993b
JM
4653 "Breakpoint 1, " which should be followed by
4654 the location.
917317f4 4655 PRINT_SRC_ONLY: Means we printed something, but there is no need
c5aa993b
JM
4656 to also print the location part of the message.
4657 An example is the catch/throw messages, which
4a64f543 4658 don't require a location appended to the end.
917317f4 4659 PRINT_NOTHING: We have done some printing and we don't need any
4a64f543 4660 further info to be printed. */
c906108c 4661
917317f4 4662enum print_stop_action
36dfb11c 4663bpstat_print (bpstat bs, int kind)
c906108c 4664{
f486487f 4665 enum print_stop_action val;
c5aa993b 4666
c906108c 4667 /* Maybe another breakpoint in the chain caused us to stop.
53a5351d
JM
4668 (Currently all watchpoints go on the bpstat whether hit or not.
4669 That probably could (should) be changed, provided care is taken
c906108c 4670 with respect to bpstat_explains_signal). */
e514a9d6
JM
4671 for (; bs; bs = bs->next)
4672 {
4673 val = print_bp_stop_message (bs);
4674 if (val == PRINT_SRC_ONLY
4675 || val == PRINT_SRC_AND_LOC
4676 || val == PRINT_NOTHING)
4677 return val;
4678 }
c906108c 4679
36dfb11c
TT
4680 /* If we had hit a shared library event breakpoint,
4681 print_bp_stop_message would print out this message. If we hit an
4682 OS-level shared library event, do the same thing. */
4683 if (kind == TARGET_WAITKIND_LOADED)
4684 {
edcc5120 4685 print_solib_event (0);
36dfb11c
TT
4686 return PRINT_NOTHING;
4687 }
4688
e514a9d6 4689 /* We reached the end of the chain, or we got a null BS to start
4a64f543 4690 with and nothing was printed. */
917317f4 4691 return PRINT_UNKNOWN;
c906108c
SS
4692}
4693
bf469271 4694/* Evaluate the boolean expression EXP and return the result. */
c906108c 4695
bf469271
PA
4696static bool
4697breakpoint_cond_eval (expression *exp)
c906108c 4698{
278cd55f 4699 struct value *mark = value_mark ();
bf469271 4700 bool res = value_true (evaluate_expression (exp));
cc59ec59 4701
c906108c 4702 value_free_to_mark (mark);
bf469271 4703 return res;
c906108c
SS
4704}
4705
5760d0ab 4706/* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
c906108c 4707
04afa70c
TT
4708bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4709 : next (NULL),
4710 bp_location_at (bl),
4711 breakpoint_at (bl->owner),
4712 commands (NULL),
04afa70c
TT
4713 print (0),
4714 stop (0),
4715 print_it (print_it_normal)
c906108c 4716{
f431efe5 4717 incref_bp_location (bl);
04afa70c
TT
4718 **bs_link_pointer = this;
4719 *bs_link_pointer = &next;
4720}
4721
4722bpstats::bpstats ()
4723 : next (NULL),
4724 bp_location_at (NULL),
4725 breakpoint_at (NULL),
4726 commands (NULL),
04afa70c
TT
4727 print (0),
4728 stop (0),
4729 print_it (print_it_normal)
4730{
c906108c
SS
4731}
4732\f
d983da9c
DJ
4733/* The target has stopped with waitstatus WS. Check if any hardware
4734 watchpoints have triggered, according to the target. */
4735
4736int
4737watchpoints_triggered (struct target_waitstatus *ws)
4738{
d92524f1 4739 int stopped_by_watchpoint = target_stopped_by_watchpoint ();
d983da9c
DJ
4740 CORE_ADDR addr;
4741 struct breakpoint *b;
4742
4743 if (!stopped_by_watchpoint)
4744 {
4745 /* We were not stopped by a watchpoint. Mark all watchpoints
4746 as not triggered. */
4747 ALL_BREAKPOINTS (b)
cc60f2e3 4748 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4749 {
4750 struct watchpoint *w = (struct watchpoint *) b;
4751
4752 w->watchpoint_triggered = watch_triggered_no;
4753 }
d983da9c
DJ
4754
4755 return 0;
4756 }
4757
4758 if (!target_stopped_data_address (&current_target, &addr))
4759 {
4760 /* We were stopped by a watchpoint, but we don't know where.
4761 Mark all watchpoints as unknown. */
4762 ALL_BREAKPOINTS (b)
cc60f2e3 4763 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4764 {
4765 struct watchpoint *w = (struct watchpoint *) b;
4766
4767 w->watchpoint_triggered = watch_triggered_unknown;
4768 }
d983da9c 4769
3c4797ba 4770 return 1;
d983da9c
DJ
4771 }
4772
4773 /* The target could report the data address. Mark watchpoints
4774 affected by this data address as triggered, and all others as not
4775 triggered. */
4776
4777 ALL_BREAKPOINTS (b)
cc60f2e3 4778 if (is_hardware_watchpoint (b))
d983da9c 4779 {
3a5c3e22 4780 struct watchpoint *w = (struct watchpoint *) b;
a5606eee 4781 struct bp_location *loc;
d983da9c 4782
3a5c3e22 4783 w->watchpoint_triggered = watch_triggered_no;
a5606eee 4784 for (loc = b->loc; loc; loc = loc->next)
9c06b0b4 4785 {
3a5c3e22 4786 if (is_masked_watchpoint (b))
9c06b0b4 4787 {
3a5c3e22
PA
4788 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4789 CORE_ADDR start = loc->address & w->hw_wp_mask;
9c06b0b4
TJB
4790
4791 if (newaddr == start)
4792 {
3a5c3e22 4793 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4794 break;
4795 }
4796 }
4797 /* Exact match not required. Within range is sufficient. */
4798 else if (target_watchpoint_addr_within_range (&current_target,
4799 addr, loc->address,
4800 loc->length))
4801 {
3a5c3e22 4802 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4803 break;
4804 }
4805 }
d983da9c
DJ
4806 }
4807
4808 return 1;
4809}
4810
bf469271
PA
4811/* Possible return values for watchpoint_check. */
4812enum wp_check_result
4813 {
4814 /* The watchpoint has been deleted. */
4815 WP_DELETED = 1,
4816
4817 /* The value has changed. */
4818 WP_VALUE_CHANGED = 2,
4819
4820 /* The value has not changed. */
4821 WP_VALUE_NOT_CHANGED = 3,
4822
4823 /* Ignore this watchpoint, no matter if the value changed or not. */
4824 WP_IGNORE = 4,
4825 };
c906108c
SS
4826
4827#define BP_TEMPFLAG 1
4828#define BP_HARDWAREFLAG 2
4829
4a64f543 4830/* Evaluate watchpoint condition expression and check if its value
bf469271 4831 changed. */
553e4c11 4832
bf469271
PA
4833static wp_check_result
4834watchpoint_check (bpstat bs)
c906108c 4835{
3a5c3e22 4836 struct watchpoint *b;
c906108c
SS
4837 struct frame_info *fr;
4838 int within_current_scope;
4839
f431efe5 4840 /* BS is built from an existing struct breakpoint. */
2bdf28a0 4841 gdb_assert (bs->breakpoint_at != NULL);
3a5c3e22 4842 b = (struct watchpoint *) bs->breakpoint_at;
d0fb5eae 4843
f6bc2008
PA
4844 /* If this is a local watchpoint, we only want to check if the
4845 watchpoint frame is in scope if the current thread is the thread
4846 that was used to create the watchpoint. */
4847 if (!watchpoint_in_thread_scope (b))
60e1c644 4848 return WP_IGNORE;
f6bc2008 4849
c906108c
SS
4850 if (b->exp_valid_block == NULL)
4851 within_current_scope = 1;
4852 else
4853 {
edb3359d
DJ
4854 struct frame_info *frame = get_current_frame ();
4855 struct gdbarch *frame_arch = get_frame_arch (frame);
4856 CORE_ADDR frame_pc = get_frame_pc (frame);
4857
c9cf6e20 4858 /* stack_frame_destroyed_p() returns a non-zero value if we're
4a64f543
MS
4859 still in the function but the stack frame has already been
4860 invalidated. Since we can't rely on the values of local
4861 variables after the stack has been destroyed, we are treating
4862 the watchpoint in that state as `not changed' without further
4863 checking. Don't mark watchpoints as changed if the current
4864 frame is in an epilogue - even if they are in some other
4865 frame, our view of the stack is likely to be wrong and
4866 frame_find_by_id could error out. */
c9cf6e20 4867 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
60e1c644 4868 return WP_IGNORE;
a0f49112 4869
101dcfbe 4870 fr = frame_find_by_id (b->watchpoint_frame);
c906108c 4871 within_current_scope = (fr != NULL);
69fbadd5
DJ
4872
4873 /* If we've gotten confused in the unwinder, we might have
4874 returned a frame that can't describe this variable. */
edb3359d
DJ
4875 if (within_current_scope)
4876 {
4877 struct symbol *function;
4878
4879 function = get_frame_function (fr);
4880 if (function == NULL
4881 || !contained_in (b->exp_valid_block,
4882 SYMBOL_BLOCK_VALUE (function)))
4883 within_current_scope = 0;
4884 }
69fbadd5 4885
edb3359d 4886 if (within_current_scope)
c906108c
SS
4887 /* If we end up stopping, the current frame will get selected
4888 in normal_stop. So this call to select_frame won't affect
4889 the user. */
0f7d239c 4890 select_frame (fr);
c906108c 4891 }
c5aa993b 4892
c906108c
SS
4893 if (within_current_scope)
4894 {
4a64f543
MS
4895 /* We use value_{,free_to_}mark because it could be a *long*
4896 time before we return to the command level and call
4897 free_all_values. We can't call free_all_values because we
4898 might be in the middle of evaluating a function call. */
c906108c 4899
0cf6dd15 4900 int pc = 0;
9c06b0b4 4901 struct value *mark;
fa4727a6
DJ
4902 struct value *new_val;
4903
c1fc2657 4904 if (is_masked_watchpoint (b))
9c06b0b4
TJB
4905 /* Since we don't know the exact trigger address (from
4906 stopped_data_address), just tell the user we've triggered
4907 a mask watchpoint. */
4908 return WP_VALUE_CHANGED;
4909
4910 mark = value_mark ();
4d01a485 4911 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
218d2fc6 4912
bb9d5f81
PP
4913 if (b->val_bitsize != 0)
4914 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4915
4a64f543
MS
4916 /* We use value_equal_contents instead of value_equal because
4917 the latter coerces an array to a pointer, thus comparing just
4918 the address of the array instead of its contents. This is
4919 not what we want. */
fa4727a6 4920 if ((b->val != NULL) != (new_val != NULL)
850645cf
TT
4921 || (b->val != NULL && !value_equal_contents (b->val.get (),
4922 new_val)))
c906108c 4923 {
c906108c 4924 bs->old_val = b->val;
850645cf 4925 b->val = release_value (new_val);
fa4727a6 4926 b->val_valid = 1;
850645cf
TT
4927 if (new_val != NULL)
4928 value_free_to_mark (mark);
c906108c
SS
4929 return WP_VALUE_CHANGED;
4930 }
4931 else
4932 {
60e1c644 4933 /* Nothing changed. */
c906108c 4934 value_free_to_mark (mark);
c906108c
SS
4935 return WP_VALUE_NOT_CHANGED;
4936 }
4937 }
4938 else
4939 {
4940 /* This seems like the only logical thing to do because
c5aa993b
JM
4941 if we temporarily ignored the watchpoint, then when
4942 we reenter the block in which it is valid it contains
4943 garbage (in the case of a function, it may have two
4944 garbage values, one before and one after the prologue).
4945 So we can't even detect the first assignment to it and
4946 watch after that (since the garbage may or may not equal
4947 the first value assigned). */
348d480f
PA
4948 /* We print all the stop information in
4949 breakpoint_ops->print_it, but in this case, by the time we
4950 call breakpoint_ops->print_it this bp will be deleted
4951 already. So we have no choice but print the information
4952 here. */
468afe6c 4953
0e454242 4954 SWITCH_THRU_ALL_UIS ()
468afe6c
PA
4955 {
4956 struct ui_out *uiout = current_uiout;
4957
112e8700
SM
4958 if (uiout->is_mi_like_p ())
4959 uiout->field_string
4960 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4961 uiout->text ("\nWatchpoint ");
c1fc2657 4962 uiout->field_int ("wpnum", b->number);
112e8700 4963 uiout->text (" deleted because the program has left the block in\n"
468afe6c
PA
4964 "which its expression is valid.\n");
4965 }
4ce44c66 4966
cdac0397 4967 /* Make sure the watchpoint's commands aren't executed. */
d1b0a7bf 4968 b->commands = NULL;
d0fb5eae 4969 watchpoint_del_at_next_stop (b);
c906108c
SS
4970
4971 return WP_DELETED;
4972 }
4973}
4974
18a18393 4975/* Return true if it looks like target has stopped due to hitting
348d480f
PA
4976 breakpoint location BL. This function does not check if we should
4977 stop, only if BL explains the stop. */
4978
18a18393 4979static int
6c95b8df 4980bpstat_check_location (const struct bp_location *bl,
accd0bcd 4981 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 4982 const struct target_waitstatus *ws)
18a18393
VP
4983{
4984 struct breakpoint *b = bl->owner;
4985
348d480f 4986 /* BL is from an existing breakpoint. */
2bdf28a0
JK
4987 gdb_assert (b != NULL);
4988
bd522513 4989 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
18a18393
VP
4990}
4991
3a5c3e22
PA
4992/* Determine if the watched values have actually changed, and we
4993 should stop. If not, set BS->stop to 0. */
4994
18a18393
VP
4995static void
4996bpstat_check_watchpoint (bpstat bs)
4997{
2bdf28a0 4998 const struct bp_location *bl;
3a5c3e22 4999 struct watchpoint *b;
2bdf28a0
JK
5000
5001 /* BS is built for existing struct breakpoint. */
f431efe5 5002 bl = bs->bp_location_at;
2bdf28a0 5003 gdb_assert (bl != NULL);
3a5c3e22 5004 b = (struct watchpoint *) bs->breakpoint_at;
2bdf28a0 5005 gdb_assert (b != NULL);
18a18393 5006
18a18393 5007 {
18a18393
VP
5008 int must_check_value = 0;
5009
c1fc2657 5010 if (b->type == bp_watchpoint)
18a18393
VP
5011 /* For a software watchpoint, we must always check the
5012 watched value. */
5013 must_check_value = 1;
5014 else if (b->watchpoint_triggered == watch_triggered_yes)
5015 /* We have a hardware watchpoint (read, write, or access)
5016 and the target earlier reported an address watched by
5017 this watchpoint. */
5018 must_check_value = 1;
5019 else if (b->watchpoint_triggered == watch_triggered_unknown
c1fc2657 5020 && b->type == bp_hardware_watchpoint)
18a18393
VP
5021 /* We were stopped by a hardware watchpoint, but the target could
5022 not report the data address. We must check the watchpoint's
5023 value. Access and read watchpoints are out of luck; without
5024 a data address, we can't figure it out. */
5025 must_check_value = 1;
3a5c3e22 5026
18a18393
VP
5027 if (must_check_value)
5028 {
bf469271
PA
5029 wp_check_result e;
5030
5031 TRY
5032 {
5033 e = watchpoint_check (bs);
5034 }
5035 CATCH (ex, RETURN_MASK_ALL)
5036 {
5037 exception_fprintf (gdb_stderr, ex,
5038 "Error evaluating expression "
5039 "for watchpoint %d\n",
5040 b->number);
5041
5042 SWITCH_THRU_ALL_UIS ()
5043 {
5044 printf_filtered (_("Watchpoint %d deleted.\n"),
5045 b->number);
5046 }
5047 watchpoint_del_at_next_stop (b);
5048 e = WP_DELETED;
5049 }
5050 END_CATCH
5051
18a18393
VP
5052 switch (e)
5053 {
5054 case WP_DELETED:
5055 /* We've already printed what needs to be printed. */
5056 bs->print_it = print_it_done;
5057 /* Stop. */
5058 break;
60e1c644
PA
5059 case WP_IGNORE:
5060 bs->print_it = print_it_noop;
5061 bs->stop = 0;
5062 break;
18a18393 5063 case WP_VALUE_CHANGED:
c1fc2657 5064 if (b->type == bp_read_watchpoint)
18a18393 5065 {
85d721b8
PA
5066 /* There are two cases to consider here:
5067
4a64f543 5068 1. We're watching the triggered memory for reads.
85d721b8
PA
5069 In that case, trust the target, and always report
5070 the watchpoint hit to the user. Even though
5071 reads don't cause value changes, the value may
5072 have changed since the last time it was read, and
5073 since we're not trapping writes, we will not see
5074 those, and as such we should ignore our notion of
5075 old value.
5076
4a64f543 5077 2. We're watching the triggered memory for both
85d721b8
PA
5078 reads and writes. There are two ways this may
5079 happen:
5080
4a64f543 5081 2.1. This is a target that can't break on data
85d721b8
PA
5082 reads only, but can break on accesses (reads or
5083 writes), such as e.g., x86. We detect this case
5084 at the time we try to insert read watchpoints.
5085
4a64f543 5086 2.2. Otherwise, the target supports read
85d721b8
PA
5087 watchpoints, but, the user set an access or write
5088 watchpoint watching the same memory as this read
5089 watchpoint.
5090
5091 If we're watching memory writes as well as reads,
5092 ignore watchpoint hits when we find that the
5093 value hasn't changed, as reads don't cause
5094 changes. This still gives false positives when
5095 the program writes the same value to memory as
5096 what there was already in memory (we will confuse
5097 it for a read), but it's much better than
5098 nothing. */
5099
5100 int other_write_watchpoint = 0;
5101
5102 if (bl->watchpoint_type == hw_read)
5103 {
5104 struct breakpoint *other_b;
5105
5106 ALL_BREAKPOINTS (other_b)
3a5c3e22
PA
5107 if (other_b->type == bp_hardware_watchpoint
5108 || other_b->type == bp_access_watchpoint)
85d721b8 5109 {
3a5c3e22
PA
5110 struct watchpoint *other_w =
5111 (struct watchpoint *) other_b;
5112
5113 if (other_w->watchpoint_triggered
5114 == watch_triggered_yes)
5115 {
5116 other_write_watchpoint = 1;
5117 break;
5118 }
85d721b8
PA
5119 }
5120 }
5121
5122 if (other_write_watchpoint
5123 || bl->watchpoint_type == hw_access)
5124 {
5125 /* We're watching the same memory for writes,
5126 and the value changed since the last time we
5127 updated it, so this trap must be for a write.
5128 Ignore it. */
5129 bs->print_it = print_it_noop;
5130 bs->stop = 0;
5131 }
18a18393
VP
5132 }
5133 break;
5134 case WP_VALUE_NOT_CHANGED:
c1fc2657
SM
5135 if (b->type == bp_hardware_watchpoint
5136 || b->type == bp_watchpoint)
18a18393
VP
5137 {
5138 /* Don't stop: write watchpoints shouldn't fire if
5139 the value hasn't changed. */
5140 bs->print_it = print_it_noop;
5141 bs->stop = 0;
5142 }
5143 /* Stop. */
5144 break;
5145 default:
5146 /* Can't happen. */
18a18393
VP
5147 break;
5148 }
5149 }
5150 else /* must_check_value == 0 */
5151 {
5152 /* This is a case where some watchpoint(s) triggered, but
5153 not at the address of this watchpoint, or else no
5154 watchpoint triggered after all. So don't print
5155 anything for this watchpoint. */
5156 bs->print_it = print_it_noop;
5157 bs->stop = 0;
5158 }
5159 }
5160}
5161
7d4df6a4
DE
5162/* For breakpoints that are currently marked as telling gdb to stop,
5163 check conditions (condition proper, frame, thread and ignore count)
18a18393
VP
5164 of breakpoint referred to by BS. If we should not stop for this
5165 breakpoint, set BS->stop to 0. */
f431efe5 5166
18a18393
VP
5167static void
5168bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5169{
2bdf28a0
JK
5170 const struct bp_location *bl;
5171 struct breakpoint *b;
bf469271
PA
5172 /* Assume stop. */
5173 bool condition_result = true;
7d4df6a4
DE
5174 struct expression *cond;
5175
5176 gdb_assert (bs->stop);
2bdf28a0
JK
5177
5178 /* BS is built for existing struct breakpoint. */
f431efe5 5179 bl = bs->bp_location_at;
2bdf28a0 5180 gdb_assert (bl != NULL);
f431efe5 5181 b = bs->breakpoint_at;
2bdf28a0 5182 gdb_assert (b != NULL);
18a18393 5183
b775012e
LM
5184 /* Even if the target evaluated the condition on its end and notified GDB, we
5185 need to do so again since GDB does not know if we stopped due to a
5186 breakpoint or a single step breakpoint. */
5187
18a18393 5188 if (frame_id_p (b->frame_id)
edb3359d 5189 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
18a18393 5190 {
7d4df6a4
DE
5191 bs->stop = 0;
5192 return;
5193 }
60e1c644 5194
12ab52e9
PA
5195 /* If this is a thread/task-specific breakpoint, don't waste cpu
5196 evaluating the condition if this isn't the specified
5197 thread/task. */
5d5658a1 5198 if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
12ab52e9
PA
5199 || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5200
6c1b0f7b
DE
5201 {
5202 bs->stop = 0;
5203 return;
5204 }
5205
6dddc817
DE
5206 /* Evaluate extension language breakpoints that have a "stop" method
5207 implemented. */
5208 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
7371cf6d 5209
7d4df6a4
DE
5210 if (is_watchpoint (b))
5211 {
5212 struct watchpoint *w = (struct watchpoint *) b;
3a5c3e22 5213
4d01a485 5214 cond = w->cond_exp.get ();
7d4df6a4
DE
5215 }
5216 else
4d01a485 5217 cond = bl->cond.get ();
60e1c644 5218
7d4df6a4
DE
5219 if (cond && b->disposition != disp_del_at_next_stop)
5220 {
5221 int within_current_scope = 1;
5222 struct watchpoint * w;
60e1c644 5223
7d4df6a4
DE
5224 /* We use value_mark and value_free_to_mark because it could
5225 be a long time before we return to the command level and
5226 call free_all_values. We can't call free_all_values
5227 because we might be in the middle of evaluating a
5228 function call. */
5229 struct value *mark = value_mark ();
5230
5231 if (is_watchpoint (b))
5232 w = (struct watchpoint *) b;
5233 else
5234 w = NULL;
5235
5236 /* Need to select the frame, with all that implies so that
5237 the conditions will have the right context. Because we
5238 use the frame, we will not see an inlined function's
5239 variables when we arrive at a breakpoint at the start
5240 of the inlined function; the current frame will be the
5241 call site. */
5242 if (w == NULL || w->cond_exp_valid_block == NULL)
5243 select_frame (get_current_frame ());
5244 else
18a18393 5245 {
7d4df6a4
DE
5246 struct frame_info *frame;
5247
5248 /* For local watchpoint expressions, which particular
5249 instance of a local is being watched matters, so we
5250 keep track of the frame to evaluate the expression
5251 in. To evaluate the condition however, it doesn't
5252 really matter which instantiation of the function
5253 where the condition makes sense triggers the
5254 watchpoint. This allows an expression like "watch
5255 global if q > 10" set in `func', catch writes to
5256 global on all threads that call `func', or catch
5257 writes on all recursive calls of `func' by a single
5258 thread. We simply always evaluate the condition in
5259 the innermost frame that's executing where it makes
5260 sense to evaluate the condition. It seems
5261 intuitive. */
5262 frame = block_innermost_frame (w->cond_exp_valid_block);
5263 if (frame != NULL)
5264 select_frame (frame);
5265 else
5266 within_current_scope = 0;
18a18393 5267 }
7d4df6a4 5268 if (within_current_scope)
bf469271
PA
5269 {
5270 TRY
5271 {
5272 condition_result = breakpoint_cond_eval (cond);
5273 }
5274 CATCH (ex, RETURN_MASK_ALL)
5275 {
5276 exception_fprintf (gdb_stderr, ex,
5277 "Error in testing breakpoint condition:\n");
5278 }
5279 END_CATCH
5280 }
7d4df6a4 5281 else
18a18393 5282 {
7d4df6a4
DE
5283 warning (_("Watchpoint condition cannot be tested "
5284 "in the current scope"));
5285 /* If we failed to set the right context for this
5286 watchpoint, unconditionally report it. */
18a18393 5287 }
7d4df6a4
DE
5288 /* FIXME-someday, should give breakpoint #. */
5289 value_free_to_mark (mark);
18a18393 5290 }
7d4df6a4 5291
bf469271 5292 if (cond && !condition_result)
7d4df6a4
DE
5293 {
5294 bs->stop = 0;
5295 }
7d4df6a4
DE
5296 else if (b->ignore_count > 0)
5297 {
5298 b->ignore_count--;
5299 bs->stop = 0;
5300 /* Increase the hit count even though we don't stop. */
5301 ++(b->hit_count);
76727919 5302 gdb::observers::breakpoint_modified.notify (b);
7d4df6a4 5303 }
18a18393
VP
5304}
5305
1cf4d951
PA
5306/* Returns true if we need to track moribund locations of LOC's type
5307 on the current target. */
5308
5309static int
5310need_moribund_for_location_type (struct bp_location *loc)
5311{
5312 return ((loc->loc_type == bp_loc_software_breakpoint
5313 && !target_supports_stopped_by_sw_breakpoint ())
5314 || (loc->loc_type == bp_loc_hardware_breakpoint
5315 && !target_supports_stopped_by_hw_breakpoint ()));
5316}
5317
18a18393 5318
9709f61c 5319/* Get a bpstat associated with having just stopped at address
d983da9c 5320 BP_ADDR in thread PTID.
c906108c 5321
d983da9c 5322 Determine whether we stopped at a breakpoint, etc, or whether we
4a64f543
MS
5323 don't understand this stop. Result is a chain of bpstat's such
5324 that:
c906108c 5325
c5aa993b 5326 if we don't understand the stop, the result is a null pointer.
c906108c 5327
c5aa993b 5328 if we understand why we stopped, the result is not null.
c906108c 5329
c5aa993b
JM
5330 Each element of the chain refers to a particular breakpoint or
5331 watchpoint at which we have stopped. (We may have stopped for
5332 several reasons concurrently.)
c906108c 5333
c5aa993b
JM
5334 Each element of the chain has valid next, breakpoint_at,
5335 commands, FIXME??? fields. */
c906108c
SS
5336
5337bpstat
accd0bcd 5338bpstat_stop_status (const address_space *aspace,
09ac7c10
TT
5339 CORE_ADDR bp_addr, ptid_t ptid,
5340 const struct target_waitstatus *ws)
c906108c 5341{
0d381245 5342 struct breakpoint *b = NULL;
afe38095 5343 struct bp_location *bl;
20874c92 5344 struct bp_location *loc;
5760d0ab
JK
5345 /* First item of allocated bpstat's. */
5346 bpstat bs_head = NULL, *bs_link = &bs_head;
c906108c 5347 /* Pointer to the last thing in the chain currently. */
5760d0ab 5348 bpstat bs;
20874c92 5349 int ix;
429374b8 5350 int need_remove_insert;
f431efe5 5351 int removed_any;
c906108c 5352
f431efe5
PA
5353 /* First, build the bpstat chain with locations that explain a
5354 target stop, while being careful to not set the target running,
5355 as that may invalidate locations (in particular watchpoint
5356 locations are recreated). Resuming will happen here with
5357 breakpoint conditions or watchpoint expressions that include
5358 inferior function calls. */
c5aa993b 5359
429374b8
JK
5360 ALL_BREAKPOINTS (b)
5361 {
1a853c52 5362 if (!breakpoint_enabled (b))
429374b8 5363 continue;
a5606eee 5364
429374b8
JK
5365 for (bl = b->loc; bl != NULL; bl = bl->next)
5366 {
4a64f543
MS
5367 /* For hardware watchpoints, we look only at the first
5368 location. The watchpoint_check function will work on the
5369 entire expression, not the individual locations. For
5370 read watchpoints, the watchpoints_triggered function has
5371 checked all locations already. */
429374b8
JK
5372 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5373 break;
18a18393 5374
f6592439 5375 if (!bl->enabled || bl->shlib_disabled)
429374b8 5376 continue;
c5aa993b 5377
09ac7c10 5378 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
429374b8 5379 continue;
c5aa993b 5380
4a64f543
MS
5381 /* Come here if it's a watchpoint, or if the break address
5382 matches. */
c5aa993b 5383
04afa70c 5384 bs = new bpstats (bl, &bs_link); /* Alloc a bpstat to
4a64f543 5385 explain stop. */
c5aa993b 5386
f431efe5
PA
5387 /* Assume we stop. Should we find a watchpoint that is not
5388 actually triggered, or if the condition of the breakpoint
5389 evaluates as false, we'll reset 'stop' to 0. */
429374b8
JK
5390 bs->stop = 1;
5391 bs->print = 1;
d983da9c 5392
f431efe5
PA
5393 /* If this is a scope breakpoint, mark the associated
5394 watchpoint as triggered so that we will handle the
5395 out-of-scope event. We'll get to the watchpoint next
5396 iteration. */
d0fb5eae 5397 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
3a5c3e22
PA
5398 {
5399 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5400
5401 w->watchpoint_triggered = watch_triggered_yes;
5402 }
f431efe5
PA
5403 }
5404 }
5405
7c16b83e 5406 /* Check if a moribund breakpoint explains the stop. */
1cf4d951
PA
5407 if (!target_supports_stopped_by_sw_breakpoint ()
5408 || !target_supports_stopped_by_hw_breakpoint ())
f431efe5 5409 {
1cf4d951 5410 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
f431efe5 5411 {
1cf4d951
PA
5412 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5413 && need_moribund_for_location_type (loc))
5414 {
04afa70c 5415 bs = new bpstats (loc, &bs_link);
1cf4d951
PA
5416 /* For hits of moribund locations, we should just proceed. */
5417 bs->stop = 0;
5418 bs->print = 0;
5419 bs->print_it = print_it_noop;
5420 }
f431efe5
PA
5421 }
5422 }
5423
edcc5120
TT
5424 /* A bit of special processing for shlib breakpoints. We need to
5425 process solib loading here, so that the lists of loaded and
5426 unloaded libraries are correct before we handle "catch load" and
5427 "catch unload". */
5428 for (bs = bs_head; bs != NULL; bs = bs->next)
5429 {
5d268276 5430 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
edcc5120
TT
5431 {
5432 handle_solib_event ();
5433 break;
5434 }
5435 }
5436
f431efe5
PA
5437 /* Now go through the locations that caused the target to stop, and
5438 check whether we're interested in reporting this stop to higher
5439 layers, or whether we should resume the target transparently. */
5440
5441 removed_any = 0;
5442
5760d0ab 5443 for (bs = bs_head; bs != NULL; bs = bs->next)
f431efe5
PA
5444 {
5445 if (!bs->stop)
5446 continue;
5447
f431efe5 5448 b = bs->breakpoint_at;
348d480f
PA
5449 b->ops->check_status (bs);
5450 if (bs->stop)
28010a5d 5451 {
348d480f 5452 bpstat_check_breakpoint_conditions (bs, ptid);
f431efe5 5453
429374b8
JK
5454 if (bs->stop)
5455 {
5456 ++(b->hit_count);
76727919 5457 gdb::observers::breakpoint_modified.notify (b);
c906108c 5458
4a64f543 5459 /* We will stop here. */
429374b8
JK
5460 if (b->disposition == disp_disable)
5461 {
816338b5 5462 --(b->enable_count);
1a853c52 5463 if (b->enable_count <= 0)
429374b8 5464 b->enable_state = bp_disabled;
f431efe5 5465 removed_any = 1;
429374b8
JK
5466 }
5467 if (b->silent)
5468 bs->print = 0;
5469 bs->commands = b->commands;
abf85f46 5470 if (command_line_is_silent (bs->commands
d1b0a7bf 5471 ? bs->commands.get () : NULL))
abf85f46 5472 bs->print = 0;
9d6e6e84
HZ
5473
5474 b->ops->after_condition_true (bs);
429374b8
JK
5475 }
5476
348d480f 5477 }
a9b3a50f
PA
5478
5479 /* Print nothing for this entry if we don't stop or don't
5480 print. */
5481 if (!bs->stop || !bs->print)
5482 bs->print_it = print_it_noop;
429374b8 5483 }
876fa593 5484
d983da9c
DJ
5485 /* If we aren't stopping, the value of some hardware watchpoint may
5486 not have changed, but the intermediate memory locations we are
5487 watching may have. Don't bother if we're stopping; this will get
5488 done later. */
d832cb68 5489 need_remove_insert = 0;
5760d0ab
JK
5490 if (! bpstat_causes_stop (bs_head))
5491 for (bs = bs_head; bs != NULL; bs = bs->next)
d983da9c 5492 if (!bs->stop
f431efe5
PA
5493 && bs->breakpoint_at
5494 && is_hardware_watchpoint (bs->breakpoint_at))
d983da9c 5495 {
3a5c3e22
PA
5496 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5497
5498 update_watchpoint (w, 0 /* don't reparse. */);
d832cb68 5499 need_remove_insert = 1;
d983da9c
DJ
5500 }
5501
d832cb68 5502 if (need_remove_insert)
44702360 5503 update_global_location_list (UGLL_MAY_INSERT);
f431efe5 5504 else if (removed_any)
44702360 5505 update_global_location_list (UGLL_DONT_INSERT);
d832cb68 5506
5760d0ab 5507 return bs_head;
c906108c 5508}
628fe4e4
JK
5509
5510static void
5511handle_jit_event (void)
5512{
5513 struct frame_info *frame;
5514 struct gdbarch *gdbarch;
5515
243a9253
PA
5516 if (debug_infrun)
5517 fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5518
628fe4e4
JK
5519 /* Switch terminal for any messages produced by
5520 breakpoint_re_set. */
223ffa71 5521 target_terminal::ours_for_output ();
628fe4e4
JK
5522
5523 frame = get_current_frame ();
5524 gdbarch = get_frame_arch (frame);
5525
5526 jit_event_handler (gdbarch);
5527
223ffa71 5528 target_terminal::inferior ();
628fe4e4
JK
5529}
5530
5531/* Prepare WHAT final decision for infrun. */
5532
5533/* Decide what infrun needs to do with this bpstat. */
5534
c906108c 5535struct bpstat_what
0e30163f 5536bpstat_what (bpstat bs_head)
c906108c 5537{
c906108c 5538 struct bpstat_what retval;
0e30163f 5539 bpstat bs;
c906108c 5540
628fe4e4 5541 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
aa7d318d 5542 retval.call_dummy = STOP_NONE;
186c406b 5543 retval.is_longjmp = 0;
628fe4e4 5544
0e30163f 5545 for (bs = bs_head; bs != NULL; bs = bs->next)
c906108c 5546 {
628fe4e4
JK
5547 /* Extract this BS's action. After processing each BS, we check
5548 if its action overrides all we've seem so far. */
5549 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5550 enum bptype bptype;
5551
c906108c 5552 if (bs->breakpoint_at == NULL)
628fe4e4
JK
5553 {
5554 /* I suspect this can happen if it was a momentary
5555 breakpoint which has since been deleted. */
5556 bptype = bp_none;
5557 }
20874c92 5558 else
f431efe5 5559 bptype = bs->breakpoint_at->type;
628fe4e4
JK
5560
5561 switch (bptype)
c906108c
SS
5562 {
5563 case bp_none:
628fe4e4 5564 break;
c906108c
SS
5565 case bp_breakpoint:
5566 case bp_hardware_breakpoint:
7c16b83e 5567 case bp_single_step:
c906108c
SS
5568 case bp_until:
5569 case bp_finish:
a9b3a50f 5570 case bp_shlib_event:
c906108c
SS
5571 if (bs->stop)
5572 {
5573 if (bs->print)
628fe4e4 5574 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5575 else
628fe4e4 5576 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5577 }
5578 else
628fe4e4 5579 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5580 break;
5581 case bp_watchpoint:
5582 case bp_hardware_watchpoint:
5583 case bp_read_watchpoint:
5584 case bp_access_watchpoint:
5585 if (bs->stop)
5586 {
5587 if (bs->print)
628fe4e4 5588 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5589 else
628fe4e4 5590 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5591 }
5592 else
628fe4e4
JK
5593 {
5594 /* There was a watchpoint, but we're not stopping.
5595 This requires no further action. */
5596 }
c906108c
SS
5597 break;
5598 case bp_longjmp:
e2e4d78b 5599 case bp_longjmp_call_dummy:
186c406b 5600 case bp_exception:
0a39bb32
PA
5601 if (bs->stop)
5602 {
5603 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5604 retval.is_longjmp = bptype != bp_exception;
5605 }
5606 else
5607 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5608 break;
5609 case bp_longjmp_resume:
186c406b 5610 case bp_exception_resume:
0a39bb32
PA
5611 if (bs->stop)
5612 {
5613 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5614 retval.is_longjmp = bptype == bp_longjmp_resume;
5615 }
5616 else
5617 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5618 break;
5619 case bp_step_resume:
5620 if (bs->stop)
628fe4e4
JK
5621 this_action = BPSTAT_WHAT_STEP_RESUME;
5622 else
c906108c 5623 {
628fe4e4
JK
5624 /* It is for the wrong frame. */
5625 this_action = BPSTAT_WHAT_SINGLE;
c906108c 5626 }
c906108c 5627 break;
2c03e5be
PA
5628 case bp_hp_step_resume:
5629 if (bs->stop)
5630 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5631 else
5632 {
5633 /* It is for the wrong frame. */
5634 this_action = BPSTAT_WHAT_SINGLE;
5635 }
5636 break;
c906108c 5637 case bp_watchpoint_scope:
c4093a6a 5638 case bp_thread_event:
1900040c 5639 case bp_overlay_event:
0fd8e87f 5640 case bp_longjmp_master:
aa7d318d 5641 case bp_std_terminate_master:
186c406b 5642 case bp_exception_master:
628fe4e4 5643 this_action = BPSTAT_WHAT_SINGLE;
c4093a6a 5644 break;
ce78b96d 5645 case bp_catchpoint:
c5aa993b
JM
5646 if (bs->stop)
5647 {
5648 if (bs->print)
628fe4e4 5649 this_action = BPSTAT_WHAT_STOP_NOISY;
c5aa993b 5650 else
628fe4e4 5651 this_action = BPSTAT_WHAT_STOP_SILENT;
c5aa993b
JM
5652 }
5653 else
628fe4e4
JK
5654 {
5655 /* There was a catchpoint, but we're not stopping.
5656 This requires no further action. */
5657 }
5658 break;
628fe4e4 5659 case bp_jit_event:
628fe4e4 5660 this_action = BPSTAT_WHAT_SINGLE;
c5aa993b 5661 break;
c906108c 5662 case bp_call_dummy:
53a5351d
JM
5663 /* Make sure the action is stop (silent or noisy),
5664 so infrun.c pops the dummy frame. */
aa7d318d 5665 retval.call_dummy = STOP_STACK_DUMMY;
628fe4e4 5666 this_action = BPSTAT_WHAT_STOP_SILENT;
aa7d318d
TT
5667 break;
5668 case bp_std_terminate:
5669 /* Make sure the action is stop (silent or noisy),
5670 so infrun.c pops the dummy frame. */
aa7d318d 5671 retval.call_dummy = STOP_STD_TERMINATE;
628fe4e4 5672 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c 5673 break;
1042e4c0 5674 case bp_tracepoint:
7a697b8d 5675 case bp_fast_tracepoint:
0fb4aa4b 5676 case bp_static_tracepoint:
1042e4c0
SS
5677 /* Tracepoint hits should not be reported back to GDB, and
5678 if one got through somehow, it should have been filtered
5679 out already. */
5680 internal_error (__FILE__, __LINE__,
7a697b8d 5681 _("bpstat_what: tracepoint encountered"));
0e30163f
JK
5682 break;
5683 case bp_gnu_ifunc_resolver:
5684 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5685 this_action = BPSTAT_WHAT_SINGLE;
5686 break;
5687 case bp_gnu_ifunc_resolver_return:
5688 /* The breakpoint will be removed, execution will restart from the
5689 PC of the former breakpoint. */
5690 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5691 break;
e7e0cddf
SS
5692
5693 case bp_dprintf:
a11cfd87
HZ
5694 if (bs->stop)
5695 this_action = BPSTAT_WHAT_STOP_SILENT;
5696 else
5697 this_action = BPSTAT_WHAT_SINGLE;
e7e0cddf
SS
5698 break;
5699
628fe4e4
JK
5700 default:
5701 internal_error (__FILE__, __LINE__,
5702 _("bpstat_what: unhandled bptype %d"), (int) bptype);
c906108c 5703 }
628fe4e4 5704
325fac50 5705 retval.main_action = std::max (retval.main_action, this_action);
c906108c 5706 }
628fe4e4 5707
243a9253
PA
5708 return retval;
5709}
628fe4e4 5710
243a9253
PA
5711void
5712bpstat_run_callbacks (bpstat bs_head)
5713{
5714 bpstat bs;
628fe4e4 5715
0e30163f
JK
5716 for (bs = bs_head; bs != NULL; bs = bs->next)
5717 {
5718 struct breakpoint *b = bs->breakpoint_at;
5719
5720 if (b == NULL)
5721 continue;
5722 switch (b->type)
5723 {
243a9253
PA
5724 case bp_jit_event:
5725 handle_jit_event ();
5726 break;
0e30163f
JK
5727 case bp_gnu_ifunc_resolver:
5728 gnu_ifunc_resolver_stop (b);
5729 break;
5730 case bp_gnu_ifunc_resolver_return:
5731 gnu_ifunc_resolver_return_stop (b);
5732 break;
5733 }
5734 }
c906108c
SS
5735}
5736
5737/* Nonzero if we should step constantly (e.g. watchpoints on machines
5738 without hardware support). This isn't related to a specific bpstat,
5739 just to things like whether watchpoints are set. */
5740
c5aa993b 5741int
fba45db2 5742bpstat_should_step (void)
c906108c
SS
5743{
5744 struct breakpoint *b;
cc59ec59 5745
c906108c 5746 ALL_BREAKPOINTS (b)
717a8278 5747 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
3172dc30 5748 return 1;
c906108c
SS
5749 return 0;
5750}
5751
67822962
PA
5752int
5753bpstat_causes_stop (bpstat bs)
5754{
5755 for (; bs != NULL; bs = bs->next)
5756 if (bs->stop)
5757 return 1;
5758
5759 return 0;
5760}
5761
c906108c 5762\f
c5aa993b 5763
170b53b2
UW
5764/* Compute a string of spaces suitable to indent the next line
5765 so it starts at the position corresponding to the table column
5766 named COL_NAME in the currently active table of UIOUT. */
5767
5768static char *
5769wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5770{
5771 static char wrap_indent[80];
5772 int i, total_width, width, align;
c5209615 5773 const char *text;
170b53b2
UW
5774
5775 total_width = 0;
112e8700 5776 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
170b53b2
UW
5777 {
5778 if (strcmp (text, col_name) == 0)
5779 {
5780 gdb_assert (total_width < sizeof wrap_indent);
5781 memset (wrap_indent, ' ', total_width);
5782 wrap_indent[total_width] = 0;
5783
5784 return wrap_indent;
5785 }
5786
5787 total_width += width + 1;
5788 }
5789
5790 return NULL;
5791}
5792
b775012e
LM
5793/* Determine if the locations of this breakpoint will have their conditions
5794 evaluated by the target, host or a mix of both. Returns the following:
5795
5796 "host": Host evals condition.
5797 "host or target": Host or Target evals condition.
5798 "target": Target evals condition.
5799*/
5800
5801static const char *
5802bp_condition_evaluator (struct breakpoint *b)
5803{
5804 struct bp_location *bl;
5805 char host_evals = 0;
5806 char target_evals = 0;
5807
5808 if (!b)
5809 return NULL;
5810
5811 if (!is_breakpoint (b))
5812 return NULL;
5813
5814 if (gdb_evaluates_breakpoint_condition_p ()
5815 || !target_supports_evaluation_of_breakpoint_conditions ())
5816 return condition_evaluation_host;
5817
5818 for (bl = b->loc; bl; bl = bl->next)
5819 {
5820 if (bl->cond_bytecode)
5821 target_evals++;
5822 else
5823 host_evals++;
5824 }
5825
5826 if (host_evals && target_evals)
5827 return condition_evaluation_both;
5828 else if (target_evals)
5829 return condition_evaluation_target;
5830 else
5831 return condition_evaluation_host;
5832}
5833
5834/* Determine the breakpoint location's condition evaluator. This is
5835 similar to bp_condition_evaluator, but for locations. */
5836
5837static const char *
5838bp_location_condition_evaluator (struct bp_location *bl)
5839{
5840 if (bl && !is_breakpoint (bl->owner))
5841 return NULL;
5842
5843 if (gdb_evaluates_breakpoint_condition_p ()
5844 || !target_supports_evaluation_of_breakpoint_conditions ())
5845 return condition_evaluation_host;
5846
5847 if (bl && bl->cond_bytecode)
5848 return condition_evaluation_target;
5849 else
5850 return condition_evaluation_host;
5851}
5852
859825b8
JK
5853/* Print the LOC location out of the list of B->LOC locations. */
5854
170b53b2
UW
5855static void
5856print_breakpoint_location (struct breakpoint *b,
5857 struct bp_location *loc)
0d381245 5858{
79a45e25 5859 struct ui_out *uiout = current_uiout;
5ed8105e
PA
5860
5861 scoped_restore_current_program_space restore_pspace;
6c95b8df 5862
859825b8
JK
5863 if (loc != NULL && loc->shlib_disabled)
5864 loc = NULL;
5865
6c95b8df
PA
5866 if (loc != NULL)
5867 set_current_program_space (loc->pspace);
5868
56435ebe 5869 if (b->display_canonical)
d28cd78a 5870 uiout->field_string ("what", event_location_to_string (b->location.get ()));
2f202fde 5871 else if (loc && loc->symtab)
0d381245 5872 {
4a27f119
KS
5873 const struct symbol *sym = loc->symbol;
5874
5875 if (sym == NULL)
5876 sym = find_pc_sect_function (loc->address, loc->section);
5877
0d381245
VP
5878 if (sym)
5879 {
112e8700
SM
5880 uiout->text ("in ");
5881 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
5882 uiout->text (" ");
5883 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5884 uiout->text ("at ");
0d381245 5885 }
112e8700 5886 uiout->field_string ("file",
05cba821 5887 symtab_to_filename_for_display (loc->symtab));
112e8700 5888 uiout->text (":");
05cba821 5889
112e8700
SM
5890 if (uiout->is_mi_like_p ())
5891 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
0d381245 5892
112e8700 5893 uiout->field_int ("line", loc->line_number);
0d381245 5894 }
859825b8 5895 else if (loc)
0d381245 5896 {
d7e74731 5897 string_file stb;
170b53b2 5898
d7e74731 5899 print_address_symbolic (loc->gdbarch, loc->address, &stb,
22e722e1 5900 demangle, "");
112e8700 5901 uiout->field_stream ("at", stb);
0d381245 5902 }
859825b8 5903 else
f00aae0f 5904 {
d28cd78a
TT
5905 uiout->field_string ("pending",
5906 event_location_to_string (b->location.get ()));
f00aae0f
KS
5907 /* If extra_string is available, it could be holding a condition
5908 or dprintf arguments. In either case, make sure it is printed,
5909 too, but only for non-MI streams. */
112e8700 5910 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
f00aae0f
KS
5911 {
5912 if (b->type == bp_dprintf)
112e8700 5913 uiout->text (",");
f00aae0f 5914 else
112e8700
SM
5915 uiout->text (" ");
5916 uiout->text (b->extra_string);
f00aae0f
KS
5917 }
5918 }
6c95b8df 5919
b775012e
LM
5920 if (loc && is_breakpoint (b)
5921 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5922 && bp_condition_evaluator (b) == condition_evaluation_both)
5923 {
112e8700
SM
5924 uiout->text (" (");
5925 uiout->field_string ("evaluated-by",
b775012e 5926 bp_location_condition_evaluator (loc));
112e8700 5927 uiout->text (")");
b775012e 5928 }
0d381245
VP
5929}
5930
269b11a2
PA
5931static const char *
5932bptype_string (enum bptype type)
c906108c 5933{
c4093a6a
JM
5934 struct ep_type_description
5935 {
5936 enum bptype type;
a121b7c1 5937 const char *description;
c4093a6a
JM
5938 };
5939 static struct ep_type_description bptypes[] =
c906108c 5940 {
c5aa993b
JM
5941 {bp_none, "?deleted?"},
5942 {bp_breakpoint, "breakpoint"},
c906108c 5943 {bp_hardware_breakpoint, "hw breakpoint"},
7c16b83e 5944 {bp_single_step, "sw single-step"},
c5aa993b
JM
5945 {bp_until, "until"},
5946 {bp_finish, "finish"},
5947 {bp_watchpoint, "watchpoint"},
c906108c 5948 {bp_hardware_watchpoint, "hw watchpoint"},
c5aa993b
JM
5949 {bp_read_watchpoint, "read watchpoint"},
5950 {bp_access_watchpoint, "acc watchpoint"},
5951 {bp_longjmp, "longjmp"},
5952 {bp_longjmp_resume, "longjmp resume"},
e2e4d78b 5953 {bp_longjmp_call_dummy, "longjmp for call dummy"},
186c406b
TT
5954 {bp_exception, "exception"},
5955 {bp_exception_resume, "exception resume"},
c5aa993b 5956 {bp_step_resume, "step resume"},
2c03e5be 5957 {bp_hp_step_resume, "high-priority step resume"},
c5aa993b
JM
5958 {bp_watchpoint_scope, "watchpoint scope"},
5959 {bp_call_dummy, "call dummy"},
aa7d318d 5960 {bp_std_terminate, "std::terminate"},
c5aa993b 5961 {bp_shlib_event, "shlib events"},
c4093a6a 5962 {bp_thread_event, "thread events"},
1900040c 5963 {bp_overlay_event, "overlay events"},
0fd8e87f 5964 {bp_longjmp_master, "longjmp master"},
aa7d318d 5965 {bp_std_terminate_master, "std::terminate master"},
186c406b 5966 {bp_exception_master, "exception master"},
ce78b96d 5967 {bp_catchpoint, "catchpoint"},
1042e4c0 5968 {bp_tracepoint, "tracepoint"},
7a697b8d 5969 {bp_fast_tracepoint, "fast tracepoint"},
0fb4aa4b 5970 {bp_static_tracepoint, "static tracepoint"},
e7e0cddf 5971 {bp_dprintf, "dprintf"},
4efc6507 5972 {bp_jit_event, "jit events"},
0e30163f
JK
5973 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5974 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
c5aa993b 5975 };
269b11a2
PA
5976
5977 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5978 || ((int) type != bptypes[(int) type].type))
5979 internal_error (__FILE__, __LINE__,
5980 _("bptypes table does not describe type #%d."),
5981 (int) type);
5982
5983 return bptypes[(int) type].description;
5984}
5985
998580f1
MK
5986/* For MI, output a field named 'thread-groups' with a list as the value.
5987 For CLI, prefix the list with the string 'inf'. */
5988
5989static void
5990output_thread_groups (struct ui_out *uiout,
5991 const char *field_name,
5c632425 5992 const std::vector<int> &inf_nums,
998580f1
MK
5993 int mi_only)
5994{
112e8700 5995 int is_mi = uiout->is_mi_like_p ();
998580f1
MK
5996
5997 /* For backward compatibility, don't display inferiors in CLI unless
5998 there are several. Always display them for MI. */
5999 if (!is_mi && mi_only)
6000 return;
6001
10f489e5 6002 ui_out_emit_list list_emitter (uiout, field_name);
752eb8b4 6003
5c632425 6004 for (size_t i = 0; i < inf_nums.size (); i++)
998580f1
MK
6005 {
6006 if (is_mi)
6007 {
6008 char mi_group[10];
6009
5c632425 6010 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
112e8700 6011 uiout->field_string (NULL, mi_group);
998580f1
MK
6012 }
6013 else
6014 {
6015 if (i == 0)
112e8700 6016 uiout->text (" inf ");
998580f1 6017 else
112e8700 6018 uiout->text (", ");
998580f1 6019
5c632425 6020 uiout->text (plongest (inf_nums[i]));
998580f1
MK
6021 }
6022 }
998580f1
MK
6023}
6024
269b11a2
PA
6025/* Print B to gdb_stdout. */
6026
6027static void
6028print_one_breakpoint_location (struct breakpoint *b,
6029 struct bp_location *loc,
6030 int loc_number,
6031 struct bp_location **last_loc,
269b11a2
PA
6032 int allflag)
6033{
6034 struct command_line *l;
c2c6d25f 6035 static char bpenables[] = "nynny";
c906108c 6036
79a45e25 6037 struct ui_out *uiout = current_uiout;
0d381245
VP
6038 int header_of_multiple = 0;
6039 int part_of_multiple = (loc != NULL);
79a45b7d
TT
6040 struct value_print_options opts;
6041
6042 get_user_print_options (&opts);
0d381245
VP
6043
6044 gdb_assert (!loc || loc_number != 0);
4a64f543
MS
6045 /* See comment in print_one_breakpoint concerning treatment of
6046 breakpoints with single disabled location. */
0d381245
VP
6047 if (loc == NULL
6048 && (b->loc != NULL
6049 && (b->loc->next != NULL || !b->loc->enabled)))
6050 header_of_multiple = 1;
6051 if (loc == NULL)
6052 loc = b->loc;
6053
c4093a6a
JM
6054 annotate_record ();
6055
6056 /* 1 */
6057 annotate_field (0);
0d381245
VP
6058 if (part_of_multiple)
6059 {
6060 char *formatted;
0c6773c1 6061 formatted = xstrprintf ("%d.%d", b->number, loc_number);
112e8700 6062 uiout->field_string ("number", formatted);
0d381245
VP
6063 xfree (formatted);
6064 }
6065 else
6066 {
112e8700 6067 uiout->field_int ("number", b->number);
0d381245 6068 }
c4093a6a
JM
6069
6070 /* 2 */
6071 annotate_field (1);
0d381245 6072 if (part_of_multiple)
112e8700 6073 uiout->field_skip ("type");
269b11a2 6074 else
112e8700 6075 uiout->field_string ("type", bptype_string (b->type));
c4093a6a
JM
6076
6077 /* 3 */
6078 annotate_field (2);
0d381245 6079 if (part_of_multiple)
112e8700 6080 uiout->field_skip ("disp");
0d381245 6081 else
112e8700 6082 uiout->field_string ("disp", bpdisp_text (b->disposition));
0d381245 6083
c4093a6a
JM
6084
6085 /* 4 */
6086 annotate_field (3);
0d381245 6087 if (part_of_multiple)
112e8700 6088 uiout->field_string ("enabled", loc->enabled ? "y" : "n");
0d381245 6089 else
112e8700
SM
6090 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6091 uiout->spaces (2);
0d381245 6092
c4093a6a
JM
6093
6094 /* 5 and 6 */
3086aeae 6095 if (b->ops != NULL && b->ops->print_one != NULL)
0d381245 6096 {
4a64f543
MS
6097 /* Although the print_one can possibly print all locations,
6098 calling it here is not likely to get any nice result. So,
6099 make sure there's just one location. */
0d381245 6100 gdb_assert (b->loc == NULL || b->loc->next == NULL);
a6d9a66e 6101 b->ops->print_one (b, last_loc);
0d381245 6102 }
3086aeae
DJ
6103 else
6104 switch (b->type)
6105 {
6106 case bp_none:
6107 internal_error (__FILE__, __LINE__,
e2e0b3e5 6108 _("print_one_breakpoint: bp_none encountered\n"));
3086aeae 6109 break;
c906108c 6110
3086aeae
DJ
6111 case bp_watchpoint:
6112 case bp_hardware_watchpoint:
6113 case bp_read_watchpoint:
6114 case bp_access_watchpoint:
3a5c3e22
PA
6115 {
6116 struct watchpoint *w = (struct watchpoint *) b;
6117
6118 /* Field 4, the address, is omitted (which makes the columns
6119 not line up too nicely with the headers, but the effect
6120 is relatively readable). */
6121 if (opts.addressprint)
112e8700 6122 uiout->field_skip ("addr");
3a5c3e22 6123 annotate_field (5);
112e8700 6124 uiout->field_string ("what", w->exp_string);
3a5c3e22 6125 }
3086aeae
DJ
6126 break;
6127
3086aeae
DJ
6128 case bp_breakpoint:
6129 case bp_hardware_breakpoint:
7c16b83e 6130 case bp_single_step:
3086aeae
DJ
6131 case bp_until:
6132 case bp_finish:
6133 case bp_longjmp:
6134 case bp_longjmp_resume:
e2e4d78b 6135 case bp_longjmp_call_dummy:
186c406b
TT
6136 case bp_exception:
6137 case bp_exception_resume:
3086aeae 6138 case bp_step_resume:
2c03e5be 6139 case bp_hp_step_resume:
3086aeae
DJ
6140 case bp_watchpoint_scope:
6141 case bp_call_dummy:
aa7d318d 6142 case bp_std_terminate:
3086aeae
DJ
6143 case bp_shlib_event:
6144 case bp_thread_event:
6145 case bp_overlay_event:
0fd8e87f 6146 case bp_longjmp_master:
aa7d318d 6147 case bp_std_terminate_master:
186c406b 6148 case bp_exception_master:
1042e4c0 6149 case bp_tracepoint:
7a697b8d 6150 case bp_fast_tracepoint:
0fb4aa4b 6151 case bp_static_tracepoint:
e7e0cddf 6152 case bp_dprintf:
4efc6507 6153 case bp_jit_event:
0e30163f
JK
6154 case bp_gnu_ifunc_resolver:
6155 case bp_gnu_ifunc_resolver_return:
79a45b7d 6156 if (opts.addressprint)
3086aeae
DJ
6157 {
6158 annotate_field (4);
54e52265 6159 if (header_of_multiple)
112e8700 6160 uiout->field_string ("addr", "<MULTIPLE>");
e9bbd7c5 6161 else if (b->loc == NULL || loc->shlib_disabled)
112e8700 6162 uiout->field_string ("addr", "<PENDING>");
0101ce28 6163 else
112e8700 6164 uiout->field_core_addr ("addr",
5af949e3 6165 loc->gdbarch, loc->address);
3086aeae
DJ
6166 }
6167 annotate_field (5);
0d381245 6168 if (!header_of_multiple)
170b53b2 6169 print_breakpoint_location (b, loc);
0d381245 6170 if (b->loc)
a6d9a66e 6171 *last_loc = b->loc;
3086aeae
DJ
6172 break;
6173 }
c906108c 6174
6c95b8df 6175
998580f1 6176 if (loc != NULL && !header_of_multiple)
6c95b8df
PA
6177 {
6178 struct inferior *inf;
5c632425 6179 std::vector<int> inf_nums;
998580f1 6180 int mi_only = 1;
6c95b8df 6181
998580f1 6182 ALL_INFERIORS (inf)
6c95b8df
PA
6183 {
6184 if (inf->pspace == loc->pspace)
5c632425 6185 inf_nums.push_back (inf->num);
6c95b8df 6186 }
998580f1
MK
6187
6188 /* For backward compatibility, don't display inferiors in CLI unless
6189 there are several. Always display for MI. */
6190 if (allflag
6191 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6192 && (number_of_program_spaces () > 1
6193 || number_of_inferiors () > 1)
6194 /* LOC is for existing B, it cannot be in
6195 moribund_locations and thus having NULL OWNER. */
6196 && loc->owner->type != bp_catchpoint))
6197 mi_only = 0;
5c632425 6198 output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6c95b8df
PA
6199 }
6200
4a306c9a 6201 if (!part_of_multiple)
c4093a6a 6202 {
4a306c9a
JB
6203 if (b->thread != -1)
6204 {
6205 /* FIXME: This seems to be redundant and lost here; see the
4a64f543 6206 "stop only in" line a little further down. */
112e8700
SM
6207 uiout->text (" thread ");
6208 uiout->field_int ("thread", b->thread);
4a306c9a
JB
6209 }
6210 else if (b->task != 0)
6211 {
112e8700
SM
6212 uiout->text (" task ");
6213 uiout->field_int ("task", b->task);
4a306c9a 6214 }
c4093a6a 6215 }
f1310107 6216
112e8700 6217 uiout->text ("\n");
f1310107 6218
348d480f 6219 if (!part_of_multiple)
f1310107
TJB
6220 b->ops->print_one_detail (b, uiout);
6221
0d381245 6222 if (part_of_multiple && frame_id_p (b->frame_id))
c4093a6a
JM
6223 {
6224 annotate_field (6);
112e8700 6225 uiout->text ("\tstop only in stack frame at ");
e5dd4106 6226 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
818dd999 6227 the frame ID. */
112e8700 6228 uiout->field_core_addr ("frame",
5af949e3 6229 b->gdbarch, b->frame_id.stack_addr);
112e8700 6230 uiout->text ("\n");
c4093a6a
JM
6231 }
6232
28010a5d 6233 if (!part_of_multiple && b->cond_string)
c4093a6a
JM
6234 {
6235 annotate_field (7);
d77f58be 6236 if (is_tracepoint (b))
112e8700 6237 uiout->text ("\ttrace only if ");
1042e4c0 6238 else
112e8700
SM
6239 uiout->text ("\tstop only if ");
6240 uiout->field_string ("cond", b->cond_string);
b775012e
LM
6241
6242 /* Print whether the target is doing the breakpoint's condition
6243 evaluation. If GDB is doing the evaluation, don't print anything. */
6244 if (is_breakpoint (b)
6245 && breakpoint_condition_evaluation_mode ()
6246 == condition_evaluation_target)
6247 {
112e8700
SM
6248 uiout->text (" (");
6249 uiout->field_string ("evaluated-by",
b775012e 6250 bp_condition_evaluator (b));
112e8700 6251 uiout->text (" evals)");
b775012e 6252 }
112e8700 6253 uiout->text ("\n");
0101ce28
JJ
6254 }
6255
0d381245 6256 if (!part_of_multiple && b->thread != -1)
c4093a6a 6257 {
4a64f543 6258 /* FIXME should make an annotation for this. */
112e8700
SM
6259 uiout->text ("\tstop only in thread ");
6260 if (uiout->is_mi_like_p ())
6261 uiout->field_int ("thread", b->thread);
5d5658a1
PA
6262 else
6263 {
6264 struct thread_info *thr = find_thread_global_id (b->thread);
6265
112e8700 6266 uiout->field_string ("thread", print_thread_id (thr));
5d5658a1 6267 }
112e8700 6268 uiout->text ("\n");
c4093a6a
JM
6269 }
6270
556ec64d
YQ
6271 if (!part_of_multiple)
6272 {
6273 if (b->hit_count)
31f56a27
YQ
6274 {
6275 /* FIXME should make an annotation for this. */
6276 if (is_catchpoint (b))
112e8700 6277 uiout->text ("\tcatchpoint");
31f56a27 6278 else if (is_tracepoint (b))
112e8700 6279 uiout->text ("\ttracepoint");
31f56a27 6280 else
112e8700
SM
6281 uiout->text ("\tbreakpoint");
6282 uiout->text (" already hit ");
6283 uiout->field_int ("times", b->hit_count);
31f56a27 6284 if (b->hit_count == 1)
112e8700 6285 uiout->text (" time\n");
31f56a27 6286 else
112e8700 6287 uiout->text (" times\n");
31f56a27 6288 }
556ec64d
YQ
6289 else
6290 {
31f56a27 6291 /* Output the count also if it is zero, but only if this is mi. */
112e8700
SM
6292 if (uiout->is_mi_like_p ())
6293 uiout->field_int ("times", b->hit_count);
556ec64d
YQ
6294 }
6295 }
8b93c638 6296
0d381245 6297 if (!part_of_multiple && b->ignore_count)
c4093a6a
JM
6298 {
6299 annotate_field (8);
112e8700
SM
6300 uiout->text ("\tignore next ");
6301 uiout->field_int ("ignore", b->ignore_count);
6302 uiout->text (" hits\n");
c4093a6a 6303 }
059fb39f 6304
816338b5
SS
6305 /* Note that an enable count of 1 corresponds to "enable once"
6306 behavior, which is reported by the combination of enablement and
6307 disposition, so we don't need to mention it here. */
6308 if (!part_of_multiple && b->enable_count > 1)
6309 {
6310 annotate_field (8);
112e8700 6311 uiout->text ("\tdisable after ");
816338b5
SS
6312 /* Tweak the wording to clarify that ignore and enable counts
6313 are distinct, and have additive effect. */
6314 if (b->ignore_count)
112e8700 6315 uiout->text ("additional ");
816338b5 6316 else
112e8700
SM
6317 uiout->text ("next ");
6318 uiout->field_int ("enable", b->enable_count);
6319 uiout->text (" hits\n");
816338b5
SS
6320 }
6321
f196051f
SS
6322 if (!part_of_multiple && is_tracepoint (b))
6323 {
6324 struct tracepoint *tp = (struct tracepoint *) b;
6325
6326 if (tp->traceframe_usage)
6327 {
112e8700
SM
6328 uiout->text ("\ttrace buffer usage ");
6329 uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6330 uiout->text (" bytes\n");
f196051f
SS
6331 }
6332 }
d3ce09f5 6333
d1b0a7bf 6334 l = b->commands ? b->commands.get () : NULL;
059fb39f 6335 if (!part_of_multiple && l)
c4093a6a
JM
6336 {
6337 annotate_field (9);
2e783024 6338 ui_out_emit_tuple tuple_emitter (uiout, "script");
8b93c638 6339 print_command_lines (uiout, l, 4);
c4093a6a 6340 }
d24317b4 6341
d9b3f62e 6342 if (is_tracepoint (b))
1042e4c0 6343 {
d9b3f62e
PA
6344 struct tracepoint *t = (struct tracepoint *) b;
6345
6346 if (!part_of_multiple && t->pass_count)
6347 {
6348 annotate_field (10);
112e8700
SM
6349 uiout->text ("\tpass count ");
6350 uiout->field_int ("pass", t->pass_count);
6351 uiout->text (" \n");
d9b3f62e 6352 }
f2a8bc8a
YQ
6353
6354 /* Don't display it when tracepoint or tracepoint location is
6355 pending. */
6356 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6357 {
6358 annotate_field (11);
6359
112e8700
SM
6360 if (uiout->is_mi_like_p ())
6361 uiout->field_string ("installed",
f2a8bc8a
YQ
6362 loc->inserted ? "y" : "n");
6363 else
6364 {
6365 if (loc->inserted)
112e8700 6366 uiout->text ("\t");
f2a8bc8a 6367 else
112e8700
SM
6368 uiout->text ("\tnot ");
6369 uiout->text ("installed on target\n");
f2a8bc8a
YQ
6370 }
6371 }
1042e4c0
SS
6372 }
6373
112e8700 6374 if (uiout->is_mi_like_p () && !part_of_multiple)
d24317b4 6375 {
3a5c3e22
PA
6376 if (is_watchpoint (b))
6377 {
6378 struct watchpoint *w = (struct watchpoint *) b;
6379
112e8700 6380 uiout->field_string ("original-location", w->exp_string);
3a5c3e22 6381 }
f00aae0f 6382 else if (b->location != NULL
d28cd78a 6383 && event_location_to_string (b->location.get ()) != NULL)
112e8700 6384 uiout->field_string ("original-location",
d28cd78a 6385 event_location_to_string (b->location.get ()));
d24317b4 6386 }
c4093a6a 6387}
c5aa993b 6388
0d381245
VP
6389static void
6390print_one_breakpoint (struct breakpoint *b,
4a64f543 6391 struct bp_location **last_loc,
6c95b8df 6392 int allflag)
0d381245 6393{
79a45e25 6394 struct ui_out *uiout = current_uiout;
8d3788bd 6395
2e783024
TT
6396 {
6397 ui_out_emit_tuple tuple_emitter (uiout, "bkpt");
8d3788bd 6398
2e783024
TT
6399 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6400 }
0d381245
VP
6401
6402 /* If this breakpoint has custom print function,
6403 it's already printed. Otherwise, print individual
6404 locations, if any. */
6405 if (b->ops == NULL || b->ops->print_one == NULL)
6406 {
4a64f543
MS
6407 /* If breakpoint has a single location that is disabled, we
6408 print it as if it had several locations, since otherwise it's
6409 hard to represent "breakpoint enabled, location disabled"
6410 situation.
6411
6412 Note that while hardware watchpoints have several locations
a3be7890 6413 internally, that's not a property exposed to user. */
0d381245 6414 if (b->loc
a5606eee 6415 && !is_hardware_watchpoint (b)
8d3788bd 6416 && (b->loc->next || !b->loc->enabled))
0d381245
VP
6417 {
6418 struct bp_location *loc;
6419 int n = 1;
8d3788bd 6420
0d381245 6421 for (loc = b->loc; loc; loc = loc->next, ++n)
8d3788bd 6422 {
2e783024 6423 ui_out_emit_tuple tuple_emitter (uiout, NULL);
8d3788bd 6424 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
8d3788bd 6425 }
0d381245
VP
6426 }
6427 }
6428}
6429
a6d9a66e
UW
6430static int
6431breakpoint_address_bits (struct breakpoint *b)
6432{
6433 int print_address_bits = 0;
6434 struct bp_location *loc;
6435
c6d81124
PA
6436 /* Software watchpoints that aren't watching memory don't have an
6437 address to print. */
6438 if (is_no_memory_software_watchpoint (b))
6439 return 0;
6440
a6d9a66e
UW
6441 for (loc = b->loc; loc; loc = loc->next)
6442 {
c7437ca6
PA
6443 int addr_bit;
6444
c7437ca6 6445 addr_bit = gdbarch_addr_bit (loc->gdbarch);
a6d9a66e
UW
6446 if (addr_bit > print_address_bits)
6447 print_address_bits = addr_bit;
6448 }
6449
6450 return print_address_bits;
6451}
0d381245 6452
65630365 6453/* See breakpoint.h. */
c5aa993b 6454
65630365
PA
6455void
6456print_breakpoint (breakpoint *b)
c4093a6a 6457{
a6d9a66e 6458 struct bp_location *dummy_loc = NULL;
65630365 6459 print_one_breakpoint (b, &dummy_loc, 0);
c4093a6a 6460}
c5aa993b 6461
09d682a4
TT
6462/* Return true if this breakpoint was set by the user, false if it is
6463 internal or momentary. */
6464
6465int
6466user_breakpoint_p (struct breakpoint *b)
6467{
46c6471b 6468 return b->number > 0;
09d682a4
TT
6469}
6470
93daf339
TT
6471/* See breakpoint.h. */
6472
6473int
6474pending_breakpoint_p (struct breakpoint *b)
6475{
6476 return b->loc == NULL;
6477}
6478
7f3b0473 6479/* Print information on user settable breakpoint (watchpoint, etc)
d77f58be
SS
6480 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6481 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6482 FILTER is non-NULL, call it on each breakpoint and only include the
6483 ones for which it returns non-zero. Return the total number of
6484 breakpoints listed. */
c906108c 6485
d77f58be 6486static int
4495129a 6487breakpoint_1 (const char *args, int allflag,
4a64f543 6488 int (*filter) (const struct breakpoint *))
c4093a6a 6489{
52f0bd74 6490 struct breakpoint *b;
a6d9a66e 6491 struct bp_location *last_loc = NULL;
7f3b0473 6492 int nr_printable_breakpoints;
79a45b7d 6493 struct value_print_options opts;
a6d9a66e 6494 int print_address_bits = 0;
269b11a2 6495 int print_type_col_width = 14;
79a45e25 6496 struct ui_out *uiout = current_uiout;
269b11a2 6497
79a45b7d
TT
6498 get_user_print_options (&opts);
6499
4a64f543
MS
6500 /* Compute the number of rows in the table, as well as the size
6501 required for address fields. */
7f3b0473
AC
6502 nr_printable_breakpoints = 0;
6503 ALL_BREAKPOINTS (b)
e5a67952
MS
6504 {
6505 /* If we have a filter, only list the breakpoints it accepts. */
6506 if (filter && !filter (b))
6507 continue;
6508
6509 /* If we have an "args" string, it is a list of breakpoints to
6510 accept. Skip the others. */
6511 if (args != NULL && *args != '\0')
6512 {
6513 if (allflag && parse_and_eval_long (args) != b->number)
6514 continue;
6515 if (!allflag && !number_is_in_list (args, b->number))
6516 continue;
6517 }
269b11a2 6518
e5a67952
MS
6519 if (allflag || user_breakpoint_p (b))
6520 {
6521 int addr_bit, type_len;
a6d9a66e 6522
e5a67952
MS
6523 addr_bit = breakpoint_address_bits (b);
6524 if (addr_bit > print_address_bits)
6525 print_address_bits = addr_bit;
269b11a2 6526
e5a67952
MS
6527 type_len = strlen (bptype_string (b->type));
6528 if (type_len > print_type_col_width)
6529 print_type_col_width = type_len;
6530
6531 nr_printable_breakpoints++;
6532 }
6533 }
7f3b0473 6534
4a2b031d
TT
6535 {
6536 ui_out_emit_table table_emitter (uiout,
6537 opts.addressprint ? 6 : 5,
6538 nr_printable_breakpoints,
6539 "BreakpointTable");
6540
6541 if (nr_printable_breakpoints > 0)
6542 annotate_breakpoints_headers ();
6543 if (nr_printable_breakpoints > 0)
6544 annotate_field (0);
6545 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6546 if (nr_printable_breakpoints > 0)
6547 annotate_field (1);
6548 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6549 if (nr_printable_breakpoints > 0)
6550 annotate_field (2);
6551 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6552 if (nr_printable_breakpoints > 0)
6553 annotate_field (3);
6554 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6555 if (opts.addressprint)
6556 {
6557 if (nr_printable_breakpoints > 0)
6558 annotate_field (4);
6559 if (print_address_bits <= 32)
6560 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6561 else
6562 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6563 }
6564 if (nr_printable_breakpoints > 0)
6565 annotate_field (5);
6566 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6567 uiout->table_body ();
6568 if (nr_printable_breakpoints > 0)
6569 annotate_breakpoints_table ();
6570
6571 ALL_BREAKPOINTS (b)
6572 {
6573 QUIT;
6574 /* If we have a filter, only list the breakpoints it accepts. */
6575 if (filter && !filter (b))
6576 continue;
e5a67952 6577
4a2b031d
TT
6578 /* If we have an "args" string, it is a list of breakpoints to
6579 accept. Skip the others. */
e5a67952 6580
4a2b031d
TT
6581 if (args != NULL && *args != '\0')
6582 {
6583 if (allflag) /* maintenance info breakpoint */
6584 {
6585 if (parse_and_eval_long (args) != b->number)
6586 continue;
6587 }
6588 else /* all others */
6589 {
6590 if (!number_is_in_list (args, b->number))
6591 continue;
6592 }
6593 }
6594 /* We only print out user settable breakpoints unless the
6595 allflag is set. */
6596 if (allflag || user_breakpoint_p (b))
6597 print_one_breakpoint (b, &last_loc, allflag);
6598 }
6599 }
698384cd 6600
7f3b0473 6601 if (nr_printable_breakpoints == 0)
c906108c 6602 {
4a64f543
MS
6603 /* If there's a filter, let the caller decide how to report
6604 empty list. */
d77f58be
SS
6605 if (!filter)
6606 {
e5a67952 6607 if (args == NULL || *args == '\0')
112e8700 6608 uiout->message ("No breakpoints or watchpoints.\n");
d77f58be 6609 else
112e8700 6610 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
e5a67952 6611 args);
d77f58be 6612 }
c906108c
SS
6613 }
6614 else
c4093a6a 6615 {
a6d9a66e
UW
6616 if (last_loc && !server_command)
6617 set_next_address (last_loc->gdbarch, last_loc->address);
c4093a6a 6618 }
c906108c 6619
4a64f543 6620 /* FIXME? Should this be moved up so that it is only called when
c4093a6a 6621 there have been breakpoints? */
c906108c 6622 annotate_breakpoints_table_end ();
d77f58be
SS
6623
6624 return nr_printable_breakpoints;
c906108c
SS
6625}
6626
ad443146
SS
6627/* Display the value of default-collect in a way that is generally
6628 compatible with the breakpoint list. */
6629
6630static void
6631default_collect_info (void)
6632{
79a45e25
PA
6633 struct ui_out *uiout = current_uiout;
6634
ad443146
SS
6635 /* If it has no value (which is frequently the case), say nothing; a
6636 message like "No default-collect." gets in user's face when it's
6637 not wanted. */
6638 if (!*default_collect)
6639 return;
6640
6641 /* The following phrase lines up nicely with per-tracepoint collect
6642 actions. */
112e8700
SM
6643 uiout->text ("default collect ");
6644 uiout->field_string ("default-collect", default_collect);
6645 uiout->text (" \n");
ad443146
SS
6646}
6647
c906108c 6648static void
0b39b52e 6649info_breakpoints_command (const char *args, int from_tty)
c906108c 6650{
e5a67952 6651 breakpoint_1 (args, 0, NULL);
ad443146
SS
6652
6653 default_collect_info ();
d77f58be
SS
6654}
6655
6656static void
1d12d88f 6657info_watchpoints_command (const char *args, int from_tty)
d77f58be 6658{
e5a67952 6659 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
79a45e25 6660 struct ui_out *uiout = current_uiout;
d77f58be
SS
6661
6662 if (num_printed == 0)
6663 {
e5a67952 6664 if (args == NULL || *args == '\0')
112e8700 6665 uiout->message ("No watchpoints.\n");
d77f58be 6666 else
112e8700 6667 uiout->message ("No watchpoint matching '%s'.\n", args);
d77f58be 6668 }
c906108c
SS
6669}
6670
7a292a7a 6671static void
4495129a 6672maintenance_info_breakpoints (const char *args, int from_tty)
c906108c 6673{
e5a67952 6674 breakpoint_1 (args, 1, NULL);
ad443146
SS
6675
6676 default_collect_info ();
c906108c
SS
6677}
6678
0d381245 6679static int
714835d5 6680breakpoint_has_pc (struct breakpoint *b,
6c95b8df 6681 struct program_space *pspace,
714835d5 6682 CORE_ADDR pc, struct obj_section *section)
0d381245
VP
6683{
6684 struct bp_location *bl = b->loc;
cc59ec59 6685
0d381245
VP
6686 for (; bl; bl = bl->next)
6687 {
6c95b8df
PA
6688 if (bl->pspace == pspace
6689 && bl->address == pc
0d381245
VP
6690 && (!overlay_debugging || bl->section == section))
6691 return 1;
6692 }
6693 return 0;
6694}
6695
672f9b60 6696/* Print a message describing any user-breakpoints set at PC. This
6c95b8df
PA
6697 concerns with logical breakpoints, so we match program spaces, not
6698 address spaces. */
c906108c
SS
6699
6700static void
6c95b8df
PA
6701describe_other_breakpoints (struct gdbarch *gdbarch,
6702 struct program_space *pspace, CORE_ADDR pc,
5af949e3 6703 struct obj_section *section, int thread)
c906108c 6704{
52f0bd74
AC
6705 int others = 0;
6706 struct breakpoint *b;
c906108c
SS
6707
6708 ALL_BREAKPOINTS (b)
672f9b60
KP
6709 others += (user_breakpoint_p (b)
6710 && breakpoint_has_pc (b, pspace, pc, section));
c906108c
SS
6711 if (others > 0)
6712 {
a3f17187
AC
6713 if (others == 1)
6714 printf_filtered (_("Note: breakpoint "));
6715 else /* if (others == ???) */
6716 printf_filtered (_("Note: breakpoints "));
c906108c 6717 ALL_BREAKPOINTS (b)
672f9b60 6718 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
0d381245
VP
6719 {
6720 others--;
6721 printf_filtered ("%d", b->number);
6722 if (b->thread == -1 && thread != -1)
6723 printf_filtered (" (all threads)");
6724 else if (b->thread != -1)
6725 printf_filtered (" (thread %d)", b->thread);
6726 printf_filtered ("%s%s ",
059fb39f 6727 ((b->enable_state == bp_disabled
f8eba3c6 6728 || b->enable_state == bp_call_disabled)
0d381245 6729 ? " (disabled)"
0d381245
VP
6730 : ""),
6731 (others > 1) ? ","
6732 : ((others == 1) ? " and" : ""));
6733 }
a3f17187 6734 printf_filtered (_("also set at pc "));
5af949e3 6735 fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
c906108c
SS
6736 printf_filtered (".\n");
6737 }
6738}
6739\f
c906108c 6740
e4f237da 6741/* Return true iff it is meaningful to use the address member of
244558af
LM
6742 BPT locations. For some breakpoint types, the locations' address members
6743 are irrelevant and it makes no sense to attempt to compare them to other
6744 addresses (or use them for any other purpose either).
e4f237da 6745
4a64f543 6746 More specifically, each of the following breakpoint types will
244558af 6747 always have a zero valued location address and we don't want to mark
4a64f543 6748 breakpoints of any of these types to be a duplicate of an actual
244558af 6749 breakpoint location at address zero:
e4f237da
KB
6750
6751 bp_watchpoint
2d134ed3
PA
6752 bp_catchpoint
6753
6754*/
e4f237da
KB
6755
6756static int
6757breakpoint_address_is_meaningful (struct breakpoint *bpt)
6758{
6759 enum bptype type = bpt->type;
6760
2d134ed3
PA
6761 return (type != bp_watchpoint && type != bp_catchpoint);
6762}
6763
6764/* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6765 true if LOC1 and LOC2 represent the same watchpoint location. */
6766
6767static int
4a64f543
MS
6768watchpoint_locations_match (struct bp_location *loc1,
6769 struct bp_location *loc2)
2d134ed3 6770{
3a5c3e22
PA
6771 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6772 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6773
6774 /* Both of them must exist. */
6775 gdb_assert (w1 != NULL);
6776 gdb_assert (w2 != NULL);
2bdf28a0 6777
4a64f543
MS
6778 /* If the target can evaluate the condition expression in hardware,
6779 then we we need to insert both watchpoints even if they are at
6780 the same place. Otherwise the watchpoint will only trigger when
6781 the condition of whichever watchpoint was inserted evaluates to
6782 true, not giving a chance for GDB to check the condition of the
6783 other watchpoint. */
3a5c3e22 6784 if ((w1->cond_exp
4a64f543
MS
6785 && target_can_accel_watchpoint_condition (loc1->address,
6786 loc1->length,
0cf6dd15 6787 loc1->watchpoint_type,
4d01a485 6788 w1->cond_exp.get ()))
3a5c3e22 6789 || (w2->cond_exp
4a64f543
MS
6790 && target_can_accel_watchpoint_condition (loc2->address,
6791 loc2->length,
0cf6dd15 6792 loc2->watchpoint_type,
4d01a485 6793 w2->cond_exp.get ())))
0cf6dd15
TJB
6794 return 0;
6795
85d721b8
PA
6796 /* Note that this checks the owner's type, not the location's. In
6797 case the target does not support read watchpoints, but does
6798 support access watchpoints, we'll have bp_read_watchpoint
6799 watchpoints with hw_access locations. Those should be considered
6800 duplicates of hw_read locations. The hw_read locations will
6801 become hw_access locations later. */
2d134ed3
PA
6802 return (loc1->owner->type == loc2->owner->type
6803 && loc1->pspace->aspace == loc2->pspace->aspace
6804 && loc1->address == loc2->address
6805 && loc1->length == loc2->length);
e4f237da
KB
6806}
6807
31e77af2 6808/* See breakpoint.h. */
6c95b8df 6809
31e77af2 6810int
accd0bcd
YQ
6811breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6812 const address_space *aspace2, CORE_ADDR addr2)
6c95b8df 6813{
f5656ead 6814 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
6815 || aspace1 == aspace2)
6816 && addr1 == addr2);
6817}
6818
f1310107
TJB
6819/* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6820 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
6821 matches ASPACE2. On targets that have global breakpoints, the address
6822 space doesn't really matter. */
6823
6824static int
accd0bcd
YQ
6825breakpoint_address_match_range (const address_space *aspace1,
6826 CORE_ADDR addr1,
6827 int len1, const address_space *aspace2,
f1310107
TJB
6828 CORE_ADDR addr2)
6829{
f5656ead 6830 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
f1310107
TJB
6831 || aspace1 == aspace2)
6832 && addr2 >= addr1 && addr2 < addr1 + len1);
6833}
6834
6835/* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
6836 a ranged breakpoint. In most targets, a match happens only if ASPACE
6837 matches the breakpoint's address space. On targets that have global
6838 breakpoints, the address space doesn't really matter. */
6839
6840static int
6841breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 6842 const address_space *aspace,
f1310107
TJB
6843 CORE_ADDR addr)
6844{
6845 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6846 aspace, addr)
6847 || (bl->length
6848 && breakpoint_address_match_range (bl->pspace->aspace,
6849 bl->address, bl->length,
6850 aspace, addr)));
6851}
6852
d35ae833
PA
6853/* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6854 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
6855 match happens only if ASPACE matches the breakpoint's address
6856 space. On targets that have global breakpoints, the address space
6857 doesn't really matter. */
6858
6859static int
6860breakpoint_location_address_range_overlap (struct bp_location *bl,
accd0bcd 6861 const address_space *aspace,
d35ae833
PA
6862 CORE_ADDR addr, int len)
6863{
6864 if (gdbarch_has_global_breakpoints (target_gdbarch ())
6865 || bl->pspace->aspace == aspace)
6866 {
6867 int bl_len = bl->length != 0 ? bl->length : 1;
6868
6869 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6870 return 1;
6871 }
6872 return 0;
6873}
6874
1e4d1764
YQ
6875/* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6876 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6877 true, otherwise returns false. */
6878
6879static int
6880tracepoint_locations_match (struct bp_location *loc1,
6881 struct bp_location *loc2)
6882{
6883 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6884 /* Since tracepoint locations are never duplicated with others', tracepoint
6885 locations at the same address of different tracepoints are regarded as
6886 different locations. */
6887 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6888 else
6889 return 0;
6890}
6891
2d134ed3
PA
6892/* Assuming LOC1 and LOC2's types' have meaningful target addresses
6893 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6894 represent the same location. */
6895
6896static int
4a64f543
MS
6897breakpoint_locations_match (struct bp_location *loc1,
6898 struct bp_location *loc2)
2d134ed3 6899{
2bdf28a0
JK
6900 int hw_point1, hw_point2;
6901
6902 /* Both of them must not be in moribund_locations. */
6903 gdb_assert (loc1->owner != NULL);
6904 gdb_assert (loc2->owner != NULL);
6905
6906 hw_point1 = is_hardware_watchpoint (loc1->owner);
6907 hw_point2 = is_hardware_watchpoint (loc2->owner);
2d134ed3
PA
6908
6909 if (hw_point1 != hw_point2)
6910 return 0;
6911 else if (hw_point1)
6912 return watchpoint_locations_match (loc1, loc2);
1e4d1764
YQ
6913 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6914 return tracepoint_locations_match (loc1, loc2);
2d134ed3 6915 else
f1310107
TJB
6916 /* We compare bp_location.length in order to cover ranged breakpoints. */
6917 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6918 loc2->pspace->aspace, loc2->address)
6919 && loc1->length == loc2->length);
2d134ed3
PA
6920}
6921
76897487
KB
6922static void
6923breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6924 int bnum, int have_bnum)
6925{
f63fbe86
MS
6926 /* The longest string possibly returned by hex_string_custom
6927 is 50 chars. These must be at least that big for safety. */
6928 char astr1[64];
6929 char astr2[64];
76897487 6930
bb599908
PH
6931 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6932 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
76897487 6933 if (have_bnum)
8a3fe4f8 6934 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
76897487
KB
6935 bnum, astr1, astr2);
6936 else
8a3fe4f8 6937 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
76897487
KB
6938}
6939
4a64f543
MS
6940/* Adjust a breakpoint's address to account for architectural
6941 constraints on breakpoint placement. Return the adjusted address.
6942 Note: Very few targets require this kind of adjustment. For most
6943 targets, this function is simply the identity function. */
76897487
KB
6944
6945static CORE_ADDR
a6d9a66e
UW
6946adjust_breakpoint_address (struct gdbarch *gdbarch,
6947 CORE_ADDR bpaddr, enum bptype bptype)
76897487 6948{
a0de8c21
YQ
6949 if (bptype == bp_watchpoint
6950 || bptype == bp_hardware_watchpoint
6951 || bptype == bp_read_watchpoint
6952 || bptype == bp_access_watchpoint
6953 || bptype == bp_catchpoint)
88f7da05
KB
6954 {
6955 /* Watchpoints and the various bp_catch_* eventpoints should not
6956 have their addresses modified. */
6957 return bpaddr;
6958 }
7c16b83e
PA
6959 else if (bptype == bp_single_step)
6960 {
6961 /* Single-step breakpoints should not have their addresses
6962 modified. If there's any architectural constrain that
6963 applies to this address, then it should have already been
6964 taken into account when the breakpoint was created in the
6965 first place. If we didn't do this, stepping through e.g.,
6966 Thumb-2 IT blocks would break. */
6967 return bpaddr;
6968 }
76897487
KB
6969 else
6970 {
a0de8c21
YQ
6971 CORE_ADDR adjusted_bpaddr = bpaddr;
6972
6973 if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6974 {
6975 /* Some targets have architectural constraints on the placement
6976 of breakpoint instructions. Obtain the adjusted address. */
6977 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6978 }
76897487 6979
a0de8c21 6980 adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
76897487
KB
6981
6982 /* An adjusted breakpoint address can significantly alter
6983 a user's expectations. Print a warning if an adjustment
6984 is required. */
6985 if (adjusted_bpaddr != bpaddr)
6986 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6987
6988 return adjusted_bpaddr;
6989 }
6990}
6991
5625a286 6992bp_location::bp_location (const bp_location_ops *ops, breakpoint *owner)
7cc221ef 6993{
5625a286 6994 bp_location *loc = this;
7cc221ef 6995
348d480f
PA
6996 gdb_assert (ops != NULL);
6997
28010a5d
PA
6998 loc->ops = ops;
6999 loc->owner = owner;
b775012e 7000 loc->cond_bytecode = NULL;
0d381245
VP
7001 loc->shlib_disabled = 0;
7002 loc->enabled = 1;
e049a4b5 7003
28010a5d 7004 switch (owner->type)
e049a4b5
DJ
7005 {
7006 case bp_breakpoint:
7c16b83e 7007 case bp_single_step:
e049a4b5
DJ
7008 case bp_until:
7009 case bp_finish:
7010 case bp_longjmp:
7011 case bp_longjmp_resume:
e2e4d78b 7012 case bp_longjmp_call_dummy:
186c406b
TT
7013 case bp_exception:
7014 case bp_exception_resume:
e049a4b5 7015 case bp_step_resume:
2c03e5be 7016 case bp_hp_step_resume:
e049a4b5
DJ
7017 case bp_watchpoint_scope:
7018 case bp_call_dummy:
aa7d318d 7019 case bp_std_terminate:
e049a4b5
DJ
7020 case bp_shlib_event:
7021 case bp_thread_event:
7022 case bp_overlay_event:
4efc6507 7023 case bp_jit_event:
0fd8e87f 7024 case bp_longjmp_master:
aa7d318d 7025 case bp_std_terminate_master:
186c406b 7026 case bp_exception_master:
0e30163f
JK
7027 case bp_gnu_ifunc_resolver:
7028 case bp_gnu_ifunc_resolver_return:
e7e0cddf 7029 case bp_dprintf:
e049a4b5 7030 loc->loc_type = bp_loc_software_breakpoint;
b775012e 7031 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
7032 break;
7033 case bp_hardware_breakpoint:
7034 loc->loc_type = bp_loc_hardware_breakpoint;
b775012e 7035 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
7036 break;
7037 case bp_hardware_watchpoint:
7038 case bp_read_watchpoint:
7039 case bp_access_watchpoint:
7040 loc->loc_type = bp_loc_hardware_watchpoint;
7041 break;
7042 case bp_watchpoint:
ce78b96d 7043 case bp_catchpoint:
15c3d785
PA
7044 case bp_tracepoint:
7045 case bp_fast_tracepoint:
0fb4aa4b 7046 case bp_static_tracepoint:
e049a4b5
DJ
7047 loc->loc_type = bp_loc_other;
7048 break;
7049 default:
e2e0b3e5 7050 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
e049a4b5
DJ
7051 }
7052
f431efe5 7053 loc->refc = 1;
28010a5d
PA
7054}
7055
7056/* Allocate a struct bp_location. */
7057
7058static struct bp_location *
7059allocate_bp_location (struct breakpoint *bpt)
7060{
348d480f
PA
7061 return bpt->ops->allocate_location (bpt);
7062}
7cc221ef 7063
f431efe5
PA
7064static void
7065free_bp_location (struct bp_location *loc)
fe3f5fa8 7066{
348d480f 7067 loc->ops->dtor (loc);
4d01a485 7068 delete loc;
fe3f5fa8
VP
7069}
7070
f431efe5
PA
7071/* Increment reference count. */
7072
7073static void
7074incref_bp_location (struct bp_location *bl)
7075{
7076 ++bl->refc;
7077}
7078
7079/* Decrement reference count. If the reference count reaches 0,
7080 destroy the bp_location. Sets *BLP to NULL. */
7081
7082static void
7083decref_bp_location (struct bp_location **blp)
7084{
0807b50c
PA
7085 gdb_assert ((*blp)->refc > 0);
7086
f431efe5
PA
7087 if (--(*blp)->refc == 0)
7088 free_bp_location (*blp);
7089 *blp = NULL;
7090}
7091
346774a9 7092/* Add breakpoint B at the end of the global breakpoint chain. */
c906108c 7093
b270e6f9
TT
7094static breakpoint *
7095add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
c906108c 7096{
346774a9 7097 struct breakpoint *b1;
b270e6f9 7098 struct breakpoint *result = b.get ();
c906108c 7099
346774a9
PA
7100 /* Add this breakpoint to the end of the chain so that a list of
7101 breakpoints will come out in order of increasing numbers. */
7102
7103 b1 = breakpoint_chain;
7104 if (b1 == 0)
b270e6f9 7105 breakpoint_chain = b.release ();
346774a9
PA
7106 else
7107 {
7108 while (b1->next)
7109 b1 = b1->next;
b270e6f9 7110 b1->next = b.release ();
346774a9 7111 }
b270e6f9
TT
7112
7113 return result;
346774a9
PA
7114}
7115
7116/* Initializes breakpoint B with type BPTYPE and no locations yet. */
7117
7118static void
7119init_raw_breakpoint_without_location (struct breakpoint *b,
7120 struct gdbarch *gdbarch,
28010a5d 7121 enum bptype bptype,
c0a91b2b 7122 const struct breakpoint_ops *ops)
346774a9 7123{
348d480f
PA
7124 gdb_assert (ops != NULL);
7125
28010a5d 7126 b->ops = ops;
4d28f7a8 7127 b->type = bptype;
a6d9a66e 7128 b->gdbarch = gdbarch;
c906108c
SS
7129 b->language = current_language->la_language;
7130 b->input_radix = input_radix;
d0fb5eae 7131 b->related_breakpoint = b;
346774a9
PA
7132}
7133
7134/* Helper to set_raw_breakpoint below. Creates a breakpoint
7135 that has type BPTYPE and has no locations as yet. */
346774a9
PA
7136
7137static struct breakpoint *
7138set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
348d480f 7139 enum bptype bptype,
c0a91b2b 7140 const struct breakpoint_ops *ops)
346774a9 7141{
3b0871f4 7142 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7143
3b0871f4 7144 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
b270e6f9 7145 return add_to_breakpoint_chain (std::move (b));
0d381245
VP
7146}
7147
0e30163f
JK
7148/* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7149 resolutions should be made as the user specified the location explicitly
7150 enough. */
7151
0d381245 7152static void
0e30163f 7153set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
0d381245 7154{
2bdf28a0
JK
7155 gdb_assert (loc->owner != NULL);
7156
0d381245 7157 if (loc->owner->type == bp_breakpoint
1042e4c0 7158 || loc->owner->type == bp_hardware_breakpoint
d77f58be 7159 || is_tracepoint (loc->owner))
0d381245 7160 {
0e30163f 7161 int is_gnu_ifunc;
2c02bd72 7162 const char *function_name;
6a3a010b 7163 CORE_ADDR func_addr;
0e30163f 7164
2c02bd72 7165 find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6a3a010b 7166 &func_addr, NULL, &is_gnu_ifunc);
0e30163f
JK
7167
7168 if (is_gnu_ifunc && !explicit_loc)
7169 {
7170 struct breakpoint *b = loc->owner;
7171
7172 gdb_assert (loc->pspace == current_program_space);
2c02bd72 7173 if (gnu_ifunc_resolve_name (function_name,
0e30163f
JK
7174 &loc->requested_address))
7175 {
7176 /* Recalculate ADDRESS based on new REQUESTED_ADDRESS. */
7177 loc->address = adjust_breakpoint_address (loc->gdbarch,
7178 loc->requested_address,
7179 b->type);
7180 }
7181 else if (b->type == bp_breakpoint && b->loc == loc
7182 && loc->next == NULL && b->related_breakpoint == b)
7183 {
7184 /* Create only the whole new breakpoint of this type but do not
7185 mess more complicated breakpoints with multiple locations. */
7186 b->type = bp_gnu_ifunc_resolver;
6a3a010b
MR
7187 /* Remember the resolver's address for use by the return
7188 breakpoint. */
7189 loc->related_address = func_addr;
0e30163f
JK
7190 }
7191 }
7192
2c02bd72
DE
7193 if (function_name)
7194 loc->function_name = xstrdup (function_name);
0d381245
VP
7195 }
7196}
7197
a6d9a66e 7198/* Attempt to determine architecture of location identified by SAL. */
1bfeeb0f 7199struct gdbarch *
a6d9a66e
UW
7200get_sal_arch (struct symtab_and_line sal)
7201{
7202 if (sal.section)
7203 return get_objfile_arch (sal.section->objfile);
7204 if (sal.symtab)
eb822aa6 7205 return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
a6d9a66e
UW
7206
7207 return NULL;
7208}
7209
346774a9
PA
7210/* Low level routine for partially initializing a breakpoint of type
7211 BPTYPE. The newly created breakpoint's address, section, source
c56053d2 7212 file name, and line number are provided by SAL.
0d381245
VP
7213
7214 It is expected that the caller will complete the initialization of
7215 the newly created breakpoint struct as well as output any status
c56053d2 7216 information regarding the creation of a new breakpoint. */
0d381245 7217
346774a9
PA
7218static void
7219init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
28010a5d 7220 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7221 const struct breakpoint_ops *ops)
0d381245 7222{
28010a5d 7223 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
346774a9 7224
3742cc8b 7225 add_location_to_breakpoint (b, &sal);
0d381245 7226
6c95b8df
PA
7227 if (bptype != bp_catchpoint)
7228 gdb_assert (sal.pspace != NULL);
7229
f8eba3c6
TT
7230 /* Store the program space that was used to set the breakpoint,
7231 except for ordinary breakpoints, which are independent of the
7232 program space. */
7233 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7234 b->pspace = sal.pspace;
346774a9 7235}
c906108c 7236
346774a9
PA
7237/* set_raw_breakpoint is a low level routine for allocating and
7238 partially initializing a breakpoint of type BPTYPE. The newly
7239 created breakpoint's address, section, source file name, and line
7240 number are provided by SAL. The newly created and partially
7241 initialized breakpoint is added to the breakpoint chain and
7242 is also returned as the value of this function.
7243
7244 It is expected that the caller will complete the initialization of
7245 the newly created breakpoint struct as well as output any status
7246 information regarding the creation of a new breakpoint. In
7247 particular, set_raw_breakpoint does NOT set the breakpoint
7248 number! Care should be taken to not allow an error to occur
7249 prior to completing the initialization of the breakpoint. If this
7250 should happen, a bogus breakpoint will be left on the chain. */
7251
7252struct breakpoint *
7253set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 7254 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7255 const struct breakpoint_ops *ops)
346774a9 7256{
3b0871f4 7257 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7258
3b0871f4 7259 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
b270e6f9 7260 return add_to_breakpoint_chain (std::move (b));
c906108c
SS
7261}
7262
53a5351d 7263/* Call this routine when stepping and nexting to enable a breakpoint
186c406b
TT
7264 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7265 initiated the operation. */
c906108c
SS
7266
7267void
186c406b 7268set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
c906108c 7269{
35df4500 7270 struct breakpoint *b, *b_tmp;
5d5658a1 7271 int thread = tp->global_num;
0fd8e87f
UW
7272
7273 /* To avoid having to rescan all objfile symbols at every step,
7274 we maintain a list of continually-inserted but always disabled
7275 longjmp "master" breakpoints. Here, we simply create momentary
7276 clones of those and enable them for the requested thread. */
35df4500 7277 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df 7278 if (b->pspace == current_program_space
186c406b
TT
7279 && (b->type == bp_longjmp_master
7280 || b->type == bp_exception_master))
0fd8e87f 7281 {
06edf0c0
PA
7282 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7283 struct breakpoint *clone;
cc59ec59 7284
e2e4d78b
JK
7285 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7286 after their removal. */
06edf0c0 7287 clone = momentary_breakpoint_from_master (b, type,
c1fc2657 7288 &momentary_breakpoint_ops, 1);
0fd8e87f
UW
7289 clone->thread = thread;
7290 }
186c406b
TT
7291
7292 tp->initiating_frame = frame;
c906108c
SS
7293}
7294
611c83ae 7295/* Delete all longjmp breakpoints from THREAD. */
c906108c 7296void
611c83ae 7297delete_longjmp_breakpoint (int thread)
c906108c 7298{
35df4500 7299 struct breakpoint *b, *b_tmp;
c906108c 7300
35df4500 7301 ALL_BREAKPOINTS_SAFE (b, b_tmp)
186c406b 7302 if (b->type == bp_longjmp || b->type == bp_exception)
611c83ae
PA
7303 {
7304 if (b->thread == thread)
7305 delete_breakpoint (b);
7306 }
c906108c
SS
7307}
7308
f59f708a
PA
7309void
7310delete_longjmp_breakpoint_at_next_stop (int thread)
7311{
7312 struct breakpoint *b, *b_tmp;
7313
7314 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7315 if (b->type == bp_longjmp || b->type == bp_exception)
7316 {
7317 if (b->thread == thread)
7318 b->disposition = disp_del_at_next_stop;
7319 }
7320}
7321
e2e4d78b
JK
7322/* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7323 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7324 pointer to any of them. Return NULL if this system cannot place longjmp
7325 breakpoints. */
7326
7327struct breakpoint *
7328set_longjmp_breakpoint_for_call_dummy (void)
7329{
7330 struct breakpoint *b, *retval = NULL;
7331
7332 ALL_BREAKPOINTS (b)
7333 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7334 {
7335 struct breakpoint *new_b;
7336
7337 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
a1aa2221
LM
7338 &momentary_breakpoint_ops,
7339 1);
5d5658a1 7340 new_b->thread = ptid_to_global_thread_id (inferior_ptid);
e2e4d78b
JK
7341
7342 /* Link NEW_B into the chain of RETVAL breakpoints. */
7343
7344 gdb_assert (new_b->related_breakpoint == new_b);
7345 if (retval == NULL)
7346 retval = new_b;
7347 new_b->related_breakpoint = retval;
7348 while (retval->related_breakpoint != new_b->related_breakpoint)
7349 retval = retval->related_breakpoint;
7350 retval->related_breakpoint = new_b;
7351 }
7352
7353 return retval;
7354}
7355
7356/* Verify all existing dummy frames and their associated breakpoints for
b67a2c6f 7357 TP. Remove those which can no longer be found in the current frame
e2e4d78b
JK
7358 stack.
7359
7360 You should call this function only at places where it is safe to currently
7361 unwind the whole stack. Failed stack unwind would discard live dummy
7362 frames. */
7363
7364void
b67a2c6f 7365check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
e2e4d78b
JK
7366{
7367 struct breakpoint *b, *b_tmp;
7368
7369 ALL_BREAKPOINTS_SAFE (b, b_tmp)
5d5658a1 7370 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
e2e4d78b
JK
7371 {
7372 struct breakpoint *dummy_b = b->related_breakpoint;
7373
7374 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7375 dummy_b = dummy_b->related_breakpoint;
7376 if (dummy_b->type != bp_call_dummy
7377 || frame_find_by_id (dummy_b->frame_id) != NULL)
7378 continue;
7379
b67a2c6f 7380 dummy_frame_discard (dummy_b->frame_id, tp->ptid);
e2e4d78b
JK
7381
7382 while (b->related_breakpoint != b)
7383 {
7384 if (b_tmp == b->related_breakpoint)
7385 b_tmp = b->related_breakpoint->next;
7386 delete_breakpoint (b->related_breakpoint);
7387 }
7388 delete_breakpoint (b);
7389 }
7390}
7391
1900040c
MS
7392void
7393enable_overlay_breakpoints (void)
7394{
52f0bd74 7395 struct breakpoint *b;
1900040c
MS
7396
7397 ALL_BREAKPOINTS (b)
7398 if (b->type == bp_overlay_event)
7399 {
7400 b->enable_state = bp_enabled;
44702360 7401 update_global_location_list (UGLL_MAY_INSERT);
c02f5703 7402 overlay_events_enabled = 1;
1900040c
MS
7403 }
7404}
7405
7406void
7407disable_overlay_breakpoints (void)
7408{
52f0bd74 7409 struct breakpoint *b;
1900040c
MS
7410
7411 ALL_BREAKPOINTS (b)
7412 if (b->type == bp_overlay_event)
7413 {
7414 b->enable_state = bp_disabled;
44702360 7415 update_global_location_list (UGLL_DONT_INSERT);
c02f5703 7416 overlay_events_enabled = 0;
1900040c
MS
7417 }
7418}
7419
aa7d318d
TT
7420/* Set an active std::terminate breakpoint for each std::terminate
7421 master breakpoint. */
7422void
7423set_std_terminate_breakpoint (void)
7424{
35df4500 7425 struct breakpoint *b, *b_tmp;
aa7d318d 7426
35df4500 7427 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7428 if (b->pspace == current_program_space
7429 && b->type == bp_std_terminate_master)
7430 {
06edf0c0 7431 momentary_breakpoint_from_master (b, bp_std_terminate,
a1aa2221 7432 &momentary_breakpoint_ops, 1);
aa7d318d
TT
7433 }
7434}
7435
7436/* Delete all the std::terminate breakpoints. */
7437void
7438delete_std_terminate_breakpoint (void)
7439{
35df4500 7440 struct breakpoint *b, *b_tmp;
aa7d318d 7441
35df4500 7442 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7443 if (b->type == bp_std_terminate)
7444 delete_breakpoint (b);
7445}
7446
c4093a6a 7447struct breakpoint *
a6d9a66e 7448create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
c4093a6a
JM
7449{
7450 struct breakpoint *b;
c4093a6a 7451
06edf0c0
PA
7452 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7453 &internal_breakpoint_ops);
7454
b5de0fa7 7455 b->enable_state = bp_enabled;
f00aae0f 7456 /* location has to be used or breakpoint_re_set will delete me. */
d28cd78a 7457 b->location = new_address_location (b->loc->address, NULL, 0);
c4093a6a 7458
44702360 7459 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 7460
c4093a6a
JM
7461 return b;
7462}
7463
0101ce28
JJ
7464struct lang_and_radix
7465 {
7466 enum language lang;
7467 int radix;
7468 };
7469
4efc6507
DE
7470/* Create a breakpoint for JIT code registration and unregistration. */
7471
7472struct breakpoint *
7473create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7474{
2a7f3dff
PA
7475 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7476 &internal_breakpoint_ops);
4efc6507 7477}
0101ce28 7478
03673fc7
PP
7479/* Remove JIT code registration and unregistration breakpoint(s). */
7480
7481void
7482remove_jit_event_breakpoints (void)
7483{
7484 struct breakpoint *b, *b_tmp;
7485
7486 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7487 if (b->type == bp_jit_event
7488 && b->loc->pspace == current_program_space)
7489 delete_breakpoint (b);
7490}
7491
cae688ec
JJ
7492void
7493remove_solib_event_breakpoints (void)
7494{
35df4500 7495 struct breakpoint *b, *b_tmp;
cae688ec 7496
35df4500 7497 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df
PA
7498 if (b->type == bp_shlib_event
7499 && b->loc->pspace == current_program_space)
cae688ec
JJ
7500 delete_breakpoint (b);
7501}
7502
f37f681c
PA
7503/* See breakpoint.h. */
7504
7505void
7506remove_solib_event_breakpoints_at_next_stop (void)
7507{
7508 struct breakpoint *b, *b_tmp;
7509
7510 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7511 if (b->type == bp_shlib_event
7512 && b->loc->pspace == current_program_space)
7513 b->disposition = disp_del_at_next_stop;
7514}
7515
04086b45
PA
7516/* Helper for create_solib_event_breakpoint /
7517 create_and_insert_solib_event_breakpoint. Allows specifying which
7518 INSERT_MODE to pass through to update_global_location_list. */
7519
7520static struct breakpoint *
7521create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7522 enum ugll_insert_mode insert_mode)
cae688ec
JJ
7523{
7524 struct breakpoint *b;
7525
06edf0c0
PA
7526 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7527 &internal_breakpoint_ops);
04086b45 7528 update_global_location_list_nothrow (insert_mode);
cae688ec
JJ
7529 return b;
7530}
7531
04086b45
PA
7532struct breakpoint *
7533create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7534{
7535 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7536}
7537
f37f681c
PA
7538/* See breakpoint.h. */
7539
7540struct breakpoint *
7541create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7542{
7543 struct breakpoint *b;
7544
04086b45
PA
7545 /* Explicitly tell update_global_location_list to insert
7546 locations. */
7547 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
f37f681c
PA
7548 if (!b->loc->inserted)
7549 {
7550 delete_breakpoint (b);
7551 return NULL;
7552 }
7553 return b;
7554}
7555
cae688ec
JJ
7556/* Disable any breakpoints that are on code in shared libraries. Only
7557 apply to enabled breakpoints, disabled ones can just stay disabled. */
7558
7559void
cb851954 7560disable_breakpoints_in_shlibs (void)
cae688ec 7561{
876fa593 7562 struct bp_location *loc, **locp_tmp;
cae688ec 7563
876fa593 7564 ALL_BP_LOCATIONS (loc, locp_tmp)
cae688ec 7565 {
2bdf28a0 7566 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7567 struct breakpoint *b = loc->owner;
2bdf28a0 7568
4a64f543
MS
7569 /* We apply the check to all breakpoints, including disabled for
7570 those with loc->duplicate set. This is so that when breakpoint
7571 becomes enabled, or the duplicate is removed, gdb will try to
7572 insert all breakpoints. If we don't set shlib_disabled here,
7573 we'll try to insert those breakpoints and fail. */
1042e4c0 7574 if (((b->type == bp_breakpoint)
508ccb1f 7575 || (b->type == bp_jit_event)
1042e4c0 7576 || (b->type == bp_hardware_breakpoint)
d77f58be 7577 || (is_tracepoint (b)))
6c95b8df 7578 && loc->pspace == current_program_space
0d381245 7579 && !loc->shlib_disabled
6c95b8df 7580 && solib_name_from_address (loc->pspace, loc->address)
a77053c2 7581 )
0d381245
VP
7582 {
7583 loc->shlib_disabled = 1;
7584 }
cae688ec
JJ
7585 }
7586}
7587
63644780
NB
7588/* Disable any breakpoints and tracepoints that are in SOLIB upon
7589 notification of unloaded_shlib. Only apply to enabled breakpoints,
7590 disabled ones can just stay disabled. */
84acb35a 7591
75149521 7592static void
84acb35a
JJ
7593disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7594{
876fa593 7595 struct bp_location *loc, **locp_tmp;
84acb35a
JJ
7596 int disabled_shlib_breaks = 0;
7597
876fa593 7598 ALL_BP_LOCATIONS (loc, locp_tmp)
84acb35a 7599 {
2bdf28a0 7600 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7601 struct breakpoint *b = loc->owner;
cc59ec59 7602
1e4d1764 7603 if (solib->pspace == loc->pspace
e2dd7057 7604 && !loc->shlib_disabled
1e4d1764
YQ
7605 && (((b->type == bp_breakpoint
7606 || b->type == bp_jit_event
7607 || b->type == bp_hardware_breakpoint)
7608 && (loc->loc_type == bp_loc_hardware_breakpoint
7609 || loc->loc_type == bp_loc_software_breakpoint))
7610 || is_tracepoint (b))
e2dd7057 7611 && solib_contains_address_p (solib, loc->address))
84acb35a 7612 {
e2dd7057
PP
7613 loc->shlib_disabled = 1;
7614 /* At this point, we cannot rely on remove_breakpoint
7615 succeeding so we must mark the breakpoint as not inserted
7616 to prevent future errors occurring in remove_breakpoints. */
7617 loc->inserted = 0;
8d3788bd
VP
7618
7619 /* This may cause duplicate notifications for the same breakpoint. */
76727919 7620 gdb::observers::breakpoint_modified.notify (b);
8d3788bd 7621
e2dd7057
PP
7622 if (!disabled_shlib_breaks)
7623 {
223ffa71 7624 target_terminal::ours_for_output ();
3e43a32a
MS
7625 warning (_("Temporarily disabling breakpoints "
7626 "for unloaded shared library \"%s\""),
e2dd7057 7627 solib->so_name);
84acb35a 7628 }
e2dd7057 7629 disabled_shlib_breaks = 1;
84acb35a
JJ
7630 }
7631 }
84acb35a
JJ
7632}
7633
63644780
NB
7634/* Disable any breakpoints and tracepoints in OBJFILE upon
7635 notification of free_objfile. Only apply to enabled breakpoints,
7636 disabled ones can just stay disabled. */
7637
7638static void
7639disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7640{
7641 struct breakpoint *b;
7642
7643 if (objfile == NULL)
7644 return;
7645
d03de421
PA
7646 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7647 managed by the user with add-symbol-file/remove-symbol-file.
7648 Similarly to how breakpoints in shared libraries are handled in
7649 response to "nosharedlibrary", mark breakpoints in such modules
08351840
PA
7650 shlib_disabled so they end up uninserted on the next global
7651 location list update. Shared libraries not loaded by the user
7652 aren't handled here -- they're already handled in
7653 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7654 solib_unloaded observer. We skip objfiles that are not
d03de421
PA
7655 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7656 main objfile). */
7657 if ((objfile->flags & OBJF_SHARED) == 0
7658 || (objfile->flags & OBJF_USERLOADED) == 0)
63644780
NB
7659 return;
7660
7661 ALL_BREAKPOINTS (b)
7662 {
7663 struct bp_location *loc;
7664 int bp_modified = 0;
7665
7666 if (!is_breakpoint (b) && !is_tracepoint (b))
7667 continue;
7668
7669 for (loc = b->loc; loc != NULL; loc = loc->next)
7670 {
7671 CORE_ADDR loc_addr = loc->address;
7672
7673 if (loc->loc_type != bp_loc_hardware_breakpoint
7674 && loc->loc_type != bp_loc_software_breakpoint)
7675 continue;
7676
7677 if (loc->shlib_disabled != 0)
7678 continue;
7679
7680 if (objfile->pspace != loc->pspace)
7681 continue;
7682
7683 if (loc->loc_type != bp_loc_hardware_breakpoint
7684 && loc->loc_type != bp_loc_software_breakpoint)
7685 continue;
7686
7687 if (is_addr_in_objfile (loc_addr, objfile))
7688 {
7689 loc->shlib_disabled = 1;
08351840
PA
7690 /* At this point, we don't know whether the object was
7691 unmapped from the inferior or not, so leave the
7692 inserted flag alone. We'll handle failure to
7693 uninsert quietly, in case the object was indeed
7694 unmapped. */
63644780
NB
7695
7696 mark_breakpoint_location_modified (loc);
7697
7698 bp_modified = 1;
7699 }
7700 }
7701
7702 if (bp_modified)
76727919 7703 gdb::observers::breakpoint_modified.notify (b);
63644780
NB
7704 }
7705}
7706
ce78b96d
JB
7707/* FORK & VFORK catchpoints. */
7708
e29a4733 7709/* An instance of this type is used to represent a fork or vfork
c1fc2657
SM
7710 catchpoint. A breakpoint is really of this type iff its ops pointer points
7711 to CATCH_FORK_BREAKPOINT_OPS. */
e29a4733 7712
c1fc2657 7713struct fork_catchpoint : public breakpoint
e29a4733 7714{
e29a4733
PA
7715 /* Process id of a child process whose forking triggered this
7716 catchpoint. This field is only valid immediately after this
7717 catchpoint has triggered. */
7718 ptid_t forked_inferior_pid;
7719};
7720
4a64f543
MS
7721/* Implement the "insert" breakpoint_ops method for fork
7722 catchpoints. */
ce78b96d 7723
77b06cd7
TJB
7724static int
7725insert_catch_fork (struct bp_location *bl)
ce78b96d 7726{
dfd4cc63 7727 return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
7728}
7729
4a64f543
MS
7730/* Implement the "remove" breakpoint_ops method for fork
7731 catchpoints. */
ce78b96d
JB
7732
7733static int
73971819 7734remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 7735{
dfd4cc63 7736 return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
7737}
7738
7739/* Implement the "breakpoint_hit" breakpoint_ops method for fork
7740 catchpoints. */
7741
7742static int
f1310107 7743breakpoint_hit_catch_fork (const struct bp_location *bl,
bd522513 7744 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 7745 const struct target_waitstatus *ws)
ce78b96d 7746{
e29a4733
PA
7747 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7748
f90263c1
TT
7749 if (ws->kind != TARGET_WAITKIND_FORKED)
7750 return 0;
7751
7752 c->forked_inferior_pid = ws->value.related_pid;
7753 return 1;
ce78b96d
JB
7754}
7755
4a64f543
MS
7756/* Implement the "print_it" breakpoint_ops method for fork
7757 catchpoints. */
ce78b96d
JB
7758
7759static enum print_stop_action
348d480f 7760print_it_catch_fork (bpstat bs)
ce78b96d 7761{
36dfb11c 7762 struct ui_out *uiout = current_uiout;
348d480f
PA
7763 struct breakpoint *b = bs->breakpoint_at;
7764 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
e29a4733 7765
ce78b96d 7766 annotate_catchpoint (b->number);
f303dbd6 7767 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 7768 if (b->disposition == disp_del)
112e8700 7769 uiout->text ("Temporary catchpoint ");
36dfb11c 7770 else
112e8700
SM
7771 uiout->text ("Catchpoint ");
7772 if (uiout->is_mi_like_p ())
36dfb11c 7773 {
112e8700
SM
7774 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7775 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 7776 }
112e8700
SM
7777 uiout->field_int ("bkptno", b->number);
7778 uiout->text (" (forked process ");
7779 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
7780 uiout->text ("), ");
ce78b96d
JB
7781 return PRINT_SRC_AND_LOC;
7782}
7783
4a64f543
MS
7784/* Implement the "print_one" breakpoint_ops method for fork
7785 catchpoints. */
ce78b96d
JB
7786
7787static void
a6d9a66e 7788print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 7789{
e29a4733 7790 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 7791 struct value_print_options opts;
79a45e25 7792 struct ui_out *uiout = current_uiout;
79a45b7d
TT
7793
7794 get_user_print_options (&opts);
7795
4a64f543
MS
7796 /* Field 4, the address, is omitted (which makes the columns not
7797 line up too nicely with the headers, but the effect is relatively
7798 readable). */
79a45b7d 7799 if (opts.addressprint)
112e8700 7800 uiout->field_skip ("addr");
ce78b96d 7801 annotate_field (5);
112e8700 7802 uiout->text ("fork");
e29a4733 7803 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
ce78b96d 7804 {
112e8700
SM
7805 uiout->text (", process ");
7806 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
7807 uiout->spaces (1);
ce78b96d 7808 }
8ac3646f 7809
112e8700
SM
7810 if (uiout->is_mi_like_p ())
7811 uiout->field_string ("catch-type", "fork");
ce78b96d
JB
7812}
7813
7814/* Implement the "print_mention" breakpoint_ops method for fork
7815 catchpoints. */
7816
7817static void
7818print_mention_catch_fork (struct breakpoint *b)
7819{
7820 printf_filtered (_("Catchpoint %d (fork)"), b->number);
7821}
7822
6149aea9
PA
7823/* Implement the "print_recreate" breakpoint_ops method for fork
7824 catchpoints. */
7825
7826static void
7827print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7828{
7829 fprintf_unfiltered (fp, "catch fork");
d9b3f62e 7830 print_recreate_thread (b, fp);
6149aea9
PA
7831}
7832
ce78b96d
JB
7833/* The breakpoint_ops structure to be used in fork catchpoints. */
7834
2060206e 7835static struct breakpoint_ops catch_fork_breakpoint_ops;
ce78b96d 7836
4a64f543
MS
7837/* Implement the "insert" breakpoint_ops method for vfork
7838 catchpoints. */
ce78b96d 7839
77b06cd7
TJB
7840static int
7841insert_catch_vfork (struct bp_location *bl)
ce78b96d 7842{
dfd4cc63 7843 return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
7844}
7845
4a64f543
MS
7846/* Implement the "remove" breakpoint_ops method for vfork
7847 catchpoints. */
ce78b96d
JB
7848
7849static int
73971819 7850remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 7851{
dfd4cc63 7852 return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
7853}
7854
7855/* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7856 catchpoints. */
7857
7858static int
f1310107 7859breakpoint_hit_catch_vfork (const struct bp_location *bl,
bd522513 7860 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 7861 const struct target_waitstatus *ws)
ce78b96d 7862{
e29a4733
PA
7863 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7864
f90263c1
TT
7865 if (ws->kind != TARGET_WAITKIND_VFORKED)
7866 return 0;
7867
7868 c->forked_inferior_pid = ws->value.related_pid;
7869 return 1;
ce78b96d
JB
7870}
7871
4a64f543
MS
7872/* Implement the "print_it" breakpoint_ops method for vfork
7873 catchpoints. */
ce78b96d
JB
7874
7875static enum print_stop_action
348d480f 7876print_it_catch_vfork (bpstat bs)
ce78b96d 7877{
36dfb11c 7878 struct ui_out *uiout = current_uiout;
348d480f 7879 struct breakpoint *b = bs->breakpoint_at;
e29a4733
PA
7880 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7881
ce78b96d 7882 annotate_catchpoint (b->number);
f303dbd6 7883 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 7884 if (b->disposition == disp_del)
112e8700 7885 uiout->text ("Temporary catchpoint ");
36dfb11c 7886 else
112e8700
SM
7887 uiout->text ("Catchpoint ");
7888 if (uiout->is_mi_like_p ())
36dfb11c 7889 {
112e8700
SM
7890 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7891 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 7892 }
112e8700
SM
7893 uiout->field_int ("bkptno", b->number);
7894 uiout->text (" (vforked process ");
7895 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
7896 uiout->text ("), ");
ce78b96d
JB
7897 return PRINT_SRC_AND_LOC;
7898}
7899
4a64f543
MS
7900/* Implement the "print_one" breakpoint_ops method for vfork
7901 catchpoints. */
ce78b96d
JB
7902
7903static void
a6d9a66e 7904print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 7905{
e29a4733 7906 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 7907 struct value_print_options opts;
79a45e25 7908 struct ui_out *uiout = current_uiout;
79a45b7d
TT
7909
7910 get_user_print_options (&opts);
4a64f543
MS
7911 /* Field 4, the address, is omitted (which makes the columns not
7912 line up too nicely with the headers, but the effect is relatively
7913 readable). */
79a45b7d 7914 if (opts.addressprint)
112e8700 7915 uiout->field_skip ("addr");
ce78b96d 7916 annotate_field (5);
112e8700 7917 uiout->text ("vfork");
e29a4733 7918 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
ce78b96d 7919 {
112e8700
SM
7920 uiout->text (", process ");
7921 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
7922 uiout->spaces (1);
ce78b96d 7923 }
8ac3646f 7924
112e8700
SM
7925 if (uiout->is_mi_like_p ())
7926 uiout->field_string ("catch-type", "vfork");
ce78b96d
JB
7927}
7928
7929/* Implement the "print_mention" breakpoint_ops method for vfork
7930 catchpoints. */
7931
7932static void
7933print_mention_catch_vfork (struct breakpoint *b)
7934{
7935 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7936}
7937
6149aea9
PA
7938/* Implement the "print_recreate" breakpoint_ops method for vfork
7939 catchpoints. */
7940
7941static void
7942print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7943{
7944 fprintf_unfiltered (fp, "catch vfork");
d9b3f62e 7945 print_recreate_thread (b, fp);
6149aea9
PA
7946}
7947
ce78b96d
JB
7948/* The breakpoint_ops structure to be used in vfork catchpoints. */
7949
2060206e 7950static struct breakpoint_ops catch_vfork_breakpoint_ops;
ce78b96d 7951
edcc5120 7952/* An instance of this type is used to represent an solib catchpoint.
c1fc2657 7953 A breakpoint is really of this type iff its ops pointer points to
edcc5120
TT
7954 CATCH_SOLIB_BREAKPOINT_OPS. */
7955
c1fc2657 7956struct solib_catchpoint : public breakpoint
edcc5120 7957{
c1fc2657 7958 ~solib_catchpoint () override;
edcc5120
TT
7959
7960 /* True for "catch load", false for "catch unload". */
7961 unsigned char is_load;
7962
7963 /* Regular expression to match, if any. COMPILED is only valid when
7964 REGEX is non-NULL. */
7965 char *regex;
2d7cc5c7 7966 std::unique_ptr<compiled_regex> compiled;
edcc5120
TT
7967};
7968
c1fc2657 7969solib_catchpoint::~solib_catchpoint ()
edcc5120 7970{
c1fc2657 7971 xfree (this->regex);
edcc5120
TT
7972}
7973
7974static int
7975insert_catch_solib (struct bp_location *ignore)
7976{
7977 return 0;
7978}
7979
7980static int
73971819 7981remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
edcc5120
TT
7982{
7983 return 0;
7984}
7985
7986static int
7987breakpoint_hit_catch_solib (const struct bp_location *bl,
bd522513 7988 const address_space *aspace,
edcc5120
TT
7989 CORE_ADDR bp_addr,
7990 const struct target_waitstatus *ws)
7991{
7992 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7993 struct breakpoint *other;
7994
7995 if (ws->kind == TARGET_WAITKIND_LOADED)
7996 return 1;
7997
7998 ALL_BREAKPOINTS (other)
7999 {
8000 struct bp_location *other_bl;
8001
8002 if (other == bl->owner)
8003 continue;
8004
8005 if (other->type != bp_shlib_event)
8006 continue;
8007
c1fc2657 8008 if (self->pspace != NULL && other->pspace != self->pspace)
edcc5120
TT
8009 continue;
8010
8011 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8012 {
8013 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8014 return 1;
8015 }
8016 }
8017
8018 return 0;
8019}
8020
8021static void
8022check_status_catch_solib (struct bpstats *bs)
8023{
8024 struct solib_catchpoint *self
8025 = (struct solib_catchpoint *) bs->breakpoint_at;
edcc5120
TT
8026
8027 if (self->is_load)
8028 {
8029 struct so_list *iter;
8030
6fb16ce6 8031 for (int ix = 0;
edcc5120
TT
8032 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8033 ix, iter);
8034 ++ix)
8035 {
8036 if (!self->regex
2d7cc5c7 8037 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
edcc5120
TT
8038 return;
8039 }
8040 }
8041 else
8042 {
6fb16ce6 8043 for (const std::string &iter : current_program_space->deleted_solibs)
edcc5120
TT
8044 {
8045 if (!self->regex
6fb16ce6 8046 || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
edcc5120
TT
8047 return;
8048 }
8049 }
8050
8051 bs->stop = 0;
8052 bs->print_it = print_it_noop;
8053}
8054
8055static enum print_stop_action
8056print_it_catch_solib (bpstat bs)
8057{
8058 struct breakpoint *b = bs->breakpoint_at;
8059 struct ui_out *uiout = current_uiout;
8060
8061 annotate_catchpoint (b->number);
f303dbd6 8062 maybe_print_thread_hit_breakpoint (uiout);
edcc5120 8063 if (b->disposition == disp_del)
112e8700 8064 uiout->text ("Temporary catchpoint ");
edcc5120 8065 else
112e8700
SM
8066 uiout->text ("Catchpoint ");
8067 uiout->field_int ("bkptno", b->number);
8068 uiout->text ("\n");
8069 if (uiout->is_mi_like_p ())
8070 uiout->field_string ("disp", bpdisp_text (b->disposition));
edcc5120
TT
8071 print_solib_event (1);
8072 return PRINT_SRC_AND_LOC;
8073}
8074
8075static void
8076print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8077{
8078 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8079 struct value_print_options opts;
8080 struct ui_out *uiout = current_uiout;
8081 char *msg;
8082
8083 get_user_print_options (&opts);
8084 /* Field 4, the address, is omitted (which makes the columns not
8085 line up too nicely with the headers, but the effect is relatively
8086 readable). */
8087 if (opts.addressprint)
8088 {
8089 annotate_field (4);
112e8700 8090 uiout->field_skip ("addr");
edcc5120
TT
8091 }
8092
8093 annotate_field (5);
8094 if (self->is_load)
8095 {
8096 if (self->regex)
8097 msg = xstrprintf (_("load of library matching %s"), self->regex);
8098 else
8099 msg = xstrdup (_("load of library"));
8100 }
8101 else
8102 {
8103 if (self->regex)
8104 msg = xstrprintf (_("unload of library matching %s"), self->regex);
8105 else
8106 msg = xstrdup (_("unload of library"));
8107 }
112e8700 8108 uiout->field_string ("what", msg);
edcc5120 8109 xfree (msg);
8ac3646f 8110
112e8700
SM
8111 if (uiout->is_mi_like_p ())
8112 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
edcc5120
TT
8113}
8114
8115static void
8116print_mention_catch_solib (struct breakpoint *b)
8117{
8118 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8119
8120 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8121 self->is_load ? "load" : "unload");
8122}
8123
8124static void
8125print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8126{
8127 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8128
8129 fprintf_unfiltered (fp, "%s %s",
8130 b->disposition == disp_del ? "tcatch" : "catch",
8131 self->is_load ? "load" : "unload");
8132 if (self->regex)
8133 fprintf_unfiltered (fp, " %s", self->regex);
8134 fprintf_unfiltered (fp, "\n");
8135}
8136
8137static struct breakpoint_ops catch_solib_breakpoint_ops;
8138
91985142
MG
8139/* Shared helper function (MI and CLI) for creating and installing
8140 a shared object event catchpoint. If IS_LOAD is non-zero then
8141 the events to be caught are load events, otherwise they are
8142 unload events. If IS_TEMP is non-zero the catchpoint is a
8143 temporary one. If ENABLED is non-zero the catchpoint is
8144 created in an enabled state. */
edcc5120 8145
91985142 8146void
a121b7c1 8147add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
edcc5120 8148{
edcc5120 8149 struct gdbarch *gdbarch = get_current_arch ();
edcc5120 8150
edcc5120
TT
8151 if (!arg)
8152 arg = "";
f1735a53 8153 arg = skip_spaces (arg);
edcc5120 8154
36bd8eaa 8155 std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
edcc5120
TT
8156
8157 if (*arg != '\0')
8158 {
2d7cc5c7
PA
8159 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8160 _("Invalid regexp")));
edcc5120
TT
8161 c->regex = xstrdup (arg);
8162 }
8163
8164 c->is_load = is_load;
36bd8eaa 8165 init_catchpoint (c.get (), gdbarch, is_temp, NULL,
edcc5120
TT
8166 &catch_solib_breakpoint_ops);
8167
c1fc2657 8168 c->enable_state = enabled ? bp_enabled : bp_disabled;
91985142 8169
b270e6f9 8170 install_breakpoint (0, std::move (c), 1);
edcc5120
TT
8171}
8172
91985142
MG
8173/* A helper function that does all the work for "catch load" and
8174 "catch unload". */
8175
8176static void
eb4c3f4a 8177catch_load_or_unload (const char *arg, int from_tty, int is_load,
91985142
MG
8178 struct cmd_list_element *command)
8179{
8180 int tempflag;
8181 const int enabled = 1;
8182
8183 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8184
8185 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8186}
8187
edcc5120 8188static void
eb4c3f4a 8189catch_load_command_1 (const char *arg, int from_tty,
edcc5120
TT
8190 struct cmd_list_element *command)
8191{
8192 catch_load_or_unload (arg, from_tty, 1, command);
8193}
8194
8195static void
eb4c3f4a 8196catch_unload_command_1 (const char *arg, int from_tty,
edcc5120
TT
8197 struct cmd_list_element *command)
8198{
8199 catch_load_or_unload (arg, from_tty, 0, command);
8200}
8201
346774a9
PA
8202/* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8203 is non-zero, then make the breakpoint temporary. If COND_STRING is
8204 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8205 the breakpoint_ops structure associated to the catchpoint. */
ce78b96d 8206
ab04a2af 8207void
346774a9
PA
8208init_catchpoint (struct breakpoint *b,
8209 struct gdbarch *gdbarch, int tempflag,
63160a43 8210 const char *cond_string,
c0a91b2b 8211 const struct breakpoint_ops *ops)
c906108c 8212{
51abb421 8213 symtab_and_line sal;
6c95b8df 8214 sal.pspace = current_program_space;
c5aa993b 8215
28010a5d 8216 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
ce78b96d 8217
1b36a34b 8218 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
b5de0fa7 8219 b->disposition = tempflag ? disp_del : disp_donttouch;
346774a9
PA
8220}
8221
28010a5d 8222void
b270e6f9 8223install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
c56053d2 8224{
b270e6f9 8225 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
3a5c3e22 8226 set_breakpoint_number (internal, b);
558a9d82
YQ
8227 if (is_tracepoint (b))
8228 set_tracepoint_count (breakpoint_count);
3a5c3e22
PA
8229 if (!internal)
8230 mention (b);
76727919 8231 gdb::observers::breakpoint_created.notify (b);
3ea46bff
YQ
8232
8233 if (update_gll)
44702360 8234 update_global_location_list (UGLL_MAY_INSERT);
c56053d2
PA
8235}
8236
9b70b993 8237static void
a6d9a66e 8238create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
63160a43 8239 int tempflag, const char *cond_string,
c0a91b2b 8240 const struct breakpoint_ops *ops)
c906108c 8241{
b270e6f9 8242 std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
ce78b96d 8243
b270e6f9 8244 init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
e29a4733
PA
8245
8246 c->forked_inferior_pid = null_ptid;
8247
b270e6f9 8248 install_breakpoint (0, std::move (c), 1);
c906108c
SS
8249}
8250
fe798b75
JB
8251/* Exec catchpoints. */
8252
b4d90040 8253/* An instance of this type is used to represent an exec catchpoint.
c1fc2657 8254 A breakpoint is really of this type iff its ops pointer points to
b4d90040
PA
8255 CATCH_EXEC_BREAKPOINT_OPS. */
8256
c1fc2657 8257struct exec_catchpoint : public breakpoint
b4d90040 8258{
c1fc2657 8259 ~exec_catchpoint () override;
b4d90040
PA
8260
8261 /* Filename of a program whose exec triggered this catchpoint.
8262 This field is only valid immediately after this catchpoint has
8263 triggered. */
8264 char *exec_pathname;
8265};
8266
c1fc2657 8267/* Exec catchpoint destructor. */
b4d90040 8268
c1fc2657 8269exec_catchpoint::~exec_catchpoint ()
b4d90040 8270{
c1fc2657 8271 xfree (this->exec_pathname);
b4d90040
PA
8272}
8273
77b06cd7
TJB
8274static int
8275insert_catch_exec (struct bp_location *bl)
c906108c 8276{
dfd4cc63 8277 return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
fe798b75 8278}
c906108c 8279
fe798b75 8280static int
73971819 8281remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
fe798b75 8282{
dfd4cc63 8283 return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
fe798b75 8284}
c906108c 8285
fe798b75 8286static int
f1310107 8287breakpoint_hit_catch_exec (const struct bp_location *bl,
bd522513 8288 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 8289 const struct target_waitstatus *ws)
fe798b75 8290{
b4d90040
PA
8291 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8292
f90263c1
TT
8293 if (ws->kind != TARGET_WAITKIND_EXECD)
8294 return 0;
8295
8296 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8297 return 1;
fe798b75 8298}
c906108c 8299
fe798b75 8300static enum print_stop_action
348d480f 8301print_it_catch_exec (bpstat bs)
fe798b75 8302{
36dfb11c 8303 struct ui_out *uiout = current_uiout;
348d480f 8304 struct breakpoint *b = bs->breakpoint_at;
b4d90040
PA
8305 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8306
fe798b75 8307 annotate_catchpoint (b->number);
f303dbd6 8308 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 8309 if (b->disposition == disp_del)
112e8700 8310 uiout->text ("Temporary catchpoint ");
36dfb11c 8311 else
112e8700
SM
8312 uiout->text ("Catchpoint ");
8313 if (uiout->is_mi_like_p ())
36dfb11c 8314 {
112e8700
SM
8315 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8316 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 8317 }
112e8700
SM
8318 uiout->field_int ("bkptno", b->number);
8319 uiout->text (" (exec'd ");
8320 uiout->field_string ("new-exec", c->exec_pathname);
8321 uiout->text ("), ");
36dfb11c 8322
fe798b75 8323 return PRINT_SRC_AND_LOC;
c906108c
SS
8324}
8325
fe798b75 8326static void
a6d9a66e 8327print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
fe798b75 8328{
b4d90040 8329 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
fe798b75 8330 struct value_print_options opts;
79a45e25 8331 struct ui_out *uiout = current_uiout;
fe798b75
JB
8332
8333 get_user_print_options (&opts);
8334
8335 /* Field 4, the address, is omitted (which makes the columns
8336 not line up too nicely with the headers, but the effect
8337 is relatively readable). */
8338 if (opts.addressprint)
112e8700 8339 uiout->field_skip ("addr");
fe798b75 8340 annotate_field (5);
112e8700 8341 uiout->text ("exec");
b4d90040 8342 if (c->exec_pathname != NULL)
fe798b75 8343 {
112e8700
SM
8344 uiout->text (", program \"");
8345 uiout->field_string ("what", c->exec_pathname);
8346 uiout->text ("\" ");
fe798b75 8347 }
8ac3646f 8348
112e8700
SM
8349 if (uiout->is_mi_like_p ())
8350 uiout->field_string ("catch-type", "exec");
fe798b75
JB
8351}
8352
8353static void
8354print_mention_catch_exec (struct breakpoint *b)
8355{
8356 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8357}
8358
6149aea9
PA
8359/* Implement the "print_recreate" breakpoint_ops method for exec
8360 catchpoints. */
8361
8362static void
8363print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8364{
8365 fprintf_unfiltered (fp, "catch exec");
d9b3f62e 8366 print_recreate_thread (b, fp);
6149aea9
PA
8367}
8368
2060206e 8369static struct breakpoint_ops catch_exec_breakpoint_ops;
fe798b75 8370
c906108c 8371static int
fba45db2 8372hw_breakpoint_used_count (void)
c906108c 8373{
c906108c 8374 int i = 0;
f1310107
TJB
8375 struct breakpoint *b;
8376 struct bp_location *bl;
c906108c
SS
8377
8378 ALL_BREAKPOINTS (b)
c5aa993b 8379 {
d6b74ac4 8380 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
f1310107
TJB
8381 for (bl = b->loc; bl; bl = bl->next)
8382 {
8383 /* Special types of hardware breakpoints may use more than
8384 one register. */
348d480f 8385 i += b->ops->resources_needed (bl);
f1310107 8386 }
c5aa993b 8387 }
c906108c
SS
8388
8389 return i;
8390}
8391
a1398e0c
PA
8392/* Returns the resources B would use if it were a hardware
8393 watchpoint. */
8394
c906108c 8395static int
a1398e0c 8396hw_watchpoint_use_count (struct breakpoint *b)
c906108c 8397{
c906108c 8398 int i = 0;
e09342b5 8399 struct bp_location *bl;
c906108c 8400
a1398e0c
PA
8401 if (!breakpoint_enabled (b))
8402 return 0;
8403
8404 for (bl = b->loc; bl; bl = bl->next)
8405 {
8406 /* Special types of hardware watchpoints may use more than
8407 one register. */
8408 i += b->ops->resources_needed (bl);
8409 }
8410
8411 return i;
8412}
8413
8414/* Returns the sum the used resources of all hardware watchpoints of
8415 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8416 the sum of the used resources of all hardware watchpoints of other
8417 types _not_ TYPE. */
8418
8419static int
8420hw_watchpoint_used_count_others (struct breakpoint *except,
8421 enum bptype type, int *other_type_used)
8422{
8423 int i = 0;
8424 struct breakpoint *b;
8425
c906108c
SS
8426 *other_type_used = 0;
8427 ALL_BREAKPOINTS (b)
e09342b5 8428 {
a1398e0c
PA
8429 if (b == except)
8430 continue;
e09342b5
TJB
8431 if (!breakpoint_enabled (b))
8432 continue;
8433
a1398e0c
PA
8434 if (b->type == type)
8435 i += hw_watchpoint_use_count (b);
8436 else if (is_hardware_watchpoint (b))
8437 *other_type_used = 1;
e09342b5
TJB
8438 }
8439
c906108c
SS
8440 return i;
8441}
8442
c906108c 8443void
fba45db2 8444disable_watchpoints_before_interactive_call_start (void)
c906108c 8445{
c5aa993b 8446 struct breakpoint *b;
c906108c
SS
8447
8448 ALL_BREAKPOINTS (b)
c5aa993b 8449 {
cc60f2e3 8450 if (is_watchpoint (b) && breakpoint_enabled (b))
c5aa993b 8451 {
b5de0fa7 8452 b->enable_state = bp_call_disabled;
44702360 8453 update_global_location_list (UGLL_DONT_INSERT);
c5aa993b
JM
8454 }
8455 }
c906108c
SS
8456}
8457
8458void
fba45db2 8459enable_watchpoints_after_interactive_call_stop (void)
c906108c 8460{
c5aa993b 8461 struct breakpoint *b;
c906108c
SS
8462
8463 ALL_BREAKPOINTS (b)
c5aa993b 8464 {
cc60f2e3 8465 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
c5aa993b 8466 {
b5de0fa7 8467 b->enable_state = bp_enabled;
44702360 8468 update_global_location_list (UGLL_MAY_INSERT);
c5aa993b
JM
8469 }
8470 }
c906108c
SS
8471}
8472
8bea4e01
UW
8473void
8474disable_breakpoints_before_startup (void)
8475{
6c95b8df 8476 current_program_space->executing_startup = 1;
44702360 8477 update_global_location_list (UGLL_DONT_INSERT);
8bea4e01
UW
8478}
8479
8480void
8481enable_breakpoints_after_startup (void)
8482{
6c95b8df 8483 current_program_space->executing_startup = 0;
f8eba3c6 8484 breakpoint_re_set ();
8bea4e01
UW
8485}
8486
7c16b83e
PA
8487/* Create a new single-step breakpoint for thread THREAD, with no
8488 locations. */
c906108c 8489
7c16b83e
PA
8490static struct breakpoint *
8491new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8492{
b270e6f9 8493 std::unique_ptr<breakpoint> b (new breakpoint ());
7c16b83e 8494
b270e6f9 8495 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
7c16b83e
PA
8496 &momentary_breakpoint_ops);
8497
8498 b->disposition = disp_donttouch;
8499 b->frame_id = null_frame_id;
8500
8501 b->thread = thread;
8502 gdb_assert (b->thread != 0);
8503
b270e6f9 8504 return add_to_breakpoint_chain (std::move (b));
7c16b83e
PA
8505}
8506
8507/* Set a momentary breakpoint of type TYPE at address specified by
8508 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8509 frame. */
c906108c 8510
454dafbd 8511breakpoint_up
a6d9a66e
UW
8512set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8513 struct frame_id frame_id, enum bptype type)
c906108c 8514{
52f0bd74 8515 struct breakpoint *b;
edb3359d 8516
193facb3
JK
8517 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8518 tail-called one. */
8519 gdb_assert (!frame_id_artificial_p (frame_id));
edb3359d 8520
06edf0c0 8521 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
b5de0fa7
EZ
8522 b->enable_state = bp_enabled;
8523 b->disposition = disp_donttouch;
818dd999 8524 b->frame_id = frame_id;
c906108c 8525
4a64f543
MS
8526 /* If we're debugging a multi-threaded program, then we want
8527 momentary breakpoints to be active in only a single thread of
8528 control. */
39f77062 8529 if (in_thread_list (inferior_ptid))
5d5658a1 8530 b->thread = ptid_to_global_thread_id (inferior_ptid);
c906108c 8531
44702360 8532 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 8533
454dafbd 8534 return breakpoint_up (b);
c906108c 8535}
611c83ae 8536
06edf0c0 8537/* Make a momentary breakpoint based on the master breakpoint ORIG.
a1aa2221
LM
8538 The new breakpoint will have type TYPE, use OPS as its
8539 breakpoint_ops, and will set enabled to LOC_ENABLED. */
e58b0e63 8540
06edf0c0
PA
8541static struct breakpoint *
8542momentary_breakpoint_from_master (struct breakpoint *orig,
8543 enum bptype type,
a1aa2221
LM
8544 const struct breakpoint_ops *ops,
8545 int loc_enabled)
e58b0e63
PA
8546{
8547 struct breakpoint *copy;
8548
06edf0c0 8549 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
e58b0e63 8550 copy->loc = allocate_bp_location (copy);
0e30163f 8551 set_breakpoint_location_function (copy->loc, 1);
e58b0e63 8552
a6d9a66e 8553 copy->loc->gdbarch = orig->loc->gdbarch;
e58b0e63
PA
8554 copy->loc->requested_address = orig->loc->requested_address;
8555 copy->loc->address = orig->loc->address;
8556 copy->loc->section = orig->loc->section;
6c95b8df 8557 copy->loc->pspace = orig->loc->pspace;
55aa24fb 8558 copy->loc->probe = orig->loc->probe;
f8eba3c6 8559 copy->loc->line_number = orig->loc->line_number;
2f202fde 8560 copy->loc->symtab = orig->loc->symtab;
a1aa2221 8561 copy->loc->enabled = loc_enabled;
e58b0e63
PA
8562 copy->frame_id = orig->frame_id;
8563 copy->thread = orig->thread;
6c95b8df 8564 copy->pspace = orig->pspace;
e58b0e63
PA
8565
8566 copy->enable_state = bp_enabled;
8567 copy->disposition = disp_donttouch;
8568 copy->number = internal_breakpoint_number--;
8569
44702360 8570 update_global_location_list_nothrow (UGLL_DONT_INSERT);
e58b0e63
PA
8571 return copy;
8572}
8573
06edf0c0
PA
8574/* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8575 ORIG is NULL. */
8576
8577struct breakpoint *
8578clone_momentary_breakpoint (struct breakpoint *orig)
8579{
8580 /* If there's nothing to clone, then return nothing. */
8581 if (orig == NULL)
8582 return NULL;
8583
a1aa2221 8584 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
06edf0c0
PA
8585}
8586
454dafbd 8587breakpoint_up
a6d9a66e
UW
8588set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8589 enum bptype type)
611c83ae
PA
8590{
8591 struct symtab_and_line sal;
8592
8593 sal = find_pc_line (pc, 0);
8594 sal.pc = pc;
8595 sal.section = find_pc_overlay (pc);
8596 sal.explicit_pc = 1;
8597
a6d9a66e 8598 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
611c83ae 8599}
c906108c 8600\f
c5aa993b 8601
c906108c
SS
8602/* Tell the user we have just set a breakpoint B. */
8603
8604static void
fba45db2 8605mention (struct breakpoint *b)
c906108c 8606{
348d480f 8607 b->ops->print_mention (b);
112e8700 8608 if (current_uiout->is_mi_like_p ())
fb40c209 8609 return;
c906108c
SS
8610 printf_filtered ("\n");
8611}
c906108c 8612\f
c5aa993b 8613
1a853c52
PA
8614static int bp_loc_is_permanent (struct bp_location *loc);
8615
0d381245 8616static struct bp_location *
39d61571 8617add_location_to_breakpoint (struct breakpoint *b,
0d381245
VP
8618 const struct symtab_and_line *sal)
8619{
8620 struct bp_location *loc, **tmp;
3742cc8b
YQ
8621 CORE_ADDR adjusted_address;
8622 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8623
8624 if (loc_gdbarch == NULL)
8625 loc_gdbarch = b->gdbarch;
8626
8627 /* Adjust the breakpoint's address prior to allocating a location.
8628 Once we call allocate_bp_location(), that mostly uninitialized
8629 location will be placed on the location chain. Adjustment of the
8630 breakpoint may cause target_read_memory() to be called and we do
8631 not want its scan of the location chain to find a breakpoint and
8632 location that's only been partially initialized. */
8633 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8634 sal->pc, b->type);
0d381245 8635
d30113d4 8636 /* Sort the locations by their ADDRESS. */
39d61571 8637 loc = allocate_bp_location (b);
d30113d4
JK
8638 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8639 tmp = &((*tmp)->next))
0d381245 8640 ;
d30113d4 8641 loc->next = *tmp;
0d381245 8642 *tmp = loc;
3742cc8b 8643
0d381245 8644 loc->requested_address = sal->pc;
3742cc8b 8645 loc->address = adjusted_address;
6c95b8df 8646 loc->pspace = sal->pspace;
935676c9 8647 loc->probe.prob = sal->prob;
729662a5 8648 loc->probe.objfile = sal->objfile;
6c95b8df 8649 gdb_assert (loc->pspace != NULL);
0d381245 8650 loc->section = sal->section;
3742cc8b 8651 loc->gdbarch = loc_gdbarch;
f8eba3c6 8652 loc->line_number = sal->line;
2f202fde 8653 loc->symtab = sal->symtab;
4a27f119 8654 loc->symbol = sal->symbol;
f8eba3c6 8655
0e30163f
JK
8656 set_breakpoint_location_function (loc,
8657 sal->explicit_pc || sal->explicit_line);
1a853c52 8658
6ae88661
LM
8659 /* While by definition, permanent breakpoints are already present in the
8660 code, we don't mark the location as inserted. Normally one would expect
8661 that GDB could rely on that breakpoint instruction to stop the program,
8662 thus removing the need to insert its own breakpoint, except that executing
8663 the breakpoint instruction can kill the target instead of reporting a
8664 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8665 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8666 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8667 breakpoint be inserted normally results in QEMU knowing about the GDB
8668 breakpoint, and thus trap before the breakpoint instruction is executed.
8669 (If GDB later needs to continue execution past the permanent breakpoint,
8670 it manually increments the PC, thus avoiding executing the breakpoint
8671 instruction.) */
1a853c52 8672 if (bp_loc_is_permanent (loc))
6ae88661 8673 loc->permanent = 1;
1a853c52 8674
0d381245
VP
8675 return loc;
8676}
514f746b
AR
8677\f
8678
1cf4d951 8679/* See breakpoint.h. */
514f746b 8680
1cf4d951
PA
8681int
8682program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
514f746b
AR
8683{
8684 int len;
8685 CORE_ADDR addr;
1afeeb75 8686 const gdb_byte *bpoint;
514f746b
AR
8687 gdb_byte *target_mem;
8688
1cf4d951
PA
8689 addr = address;
8690 bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8691
8692 /* Software breakpoints unsupported? */
8693 if (bpoint == NULL)
8694 return 0;
8695
224c3ddb 8696 target_mem = (gdb_byte *) alloca (len);
1cf4d951
PA
8697
8698 /* Enable the automatic memory restoration from breakpoints while
8699 we read the memory. Otherwise we could say about our temporary
8700 breakpoints they are permanent. */
cb85b21b
TT
8701 scoped_restore restore_memory
8702 = make_scoped_restore_show_memory_breakpoints (0);
1cf4d951
PA
8703
8704 if (target_read_memory (address, target_mem, len) == 0
8705 && memcmp (target_mem, bpoint, len) == 0)
cb85b21b 8706 return 1;
1cf4d951 8707
cb85b21b 8708 return 0;
1cf4d951
PA
8709}
8710
8711/* Return 1 if LOC is pointing to a permanent breakpoint,
8712 return 0 otherwise. */
8713
8714static int
8715bp_loc_is_permanent (struct bp_location *loc)
8716{
514f746b
AR
8717 gdb_assert (loc != NULL);
8718
244558af
LM
8719 /* If we have a catchpoint or a watchpoint, just return 0. We should not
8720 attempt to read from the addresses the locations of these breakpoint types
8721 point to. program_breakpoint_here_p, below, will attempt to read
8722 memory. */
8723 if (!breakpoint_address_is_meaningful (loc->owner))
8724 return 0;
8725
5ed8105e 8726 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 8727 switch_to_program_space_and_thread (loc->pspace);
5ed8105e 8728 return program_breakpoint_here_p (loc->gdbarch, loc->address);
514f746b
AR
8729}
8730
e7e0cddf
SS
8731/* Build a command list for the dprintf corresponding to the current
8732 settings of the dprintf style options. */
8733
8734static void
8735update_dprintf_command_list (struct breakpoint *b)
8736{
8737 char *dprintf_args = b->extra_string;
8738 char *printf_line = NULL;
8739
8740 if (!dprintf_args)
8741 return;
8742
8743 dprintf_args = skip_spaces (dprintf_args);
8744
8745 /* Allow a comma, as it may have terminated a location, but don't
8746 insist on it. */
8747 if (*dprintf_args == ',')
8748 ++dprintf_args;
8749 dprintf_args = skip_spaces (dprintf_args);
8750
8751 if (*dprintf_args != '"')
8752 error (_("Bad format string, missing '\"'."));
8753
d3ce09f5 8754 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
e7e0cddf 8755 printf_line = xstrprintf ("printf %s", dprintf_args);
d3ce09f5 8756 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
e7e0cddf
SS
8757 {
8758 if (!dprintf_function)
8759 error (_("No function supplied for dprintf call"));
8760
8761 if (dprintf_channel && strlen (dprintf_channel) > 0)
8762 printf_line = xstrprintf ("call (void) %s (%s,%s)",
8763 dprintf_function,
8764 dprintf_channel,
8765 dprintf_args);
8766 else
8767 printf_line = xstrprintf ("call (void) %s (%s)",
8768 dprintf_function,
8769 dprintf_args);
8770 }
d3ce09f5
SS
8771 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8772 {
8773 if (target_can_run_breakpoint_commands ())
8774 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8775 else
8776 {
8777 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8778 printf_line = xstrprintf ("printf %s", dprintf_args);
8779 }
8780 }
e7e0cddf
SS
8781 else
8782 internal_error (__FILE__, __LINE__,
8783 _("Invalid dprintf style."));
8784
f28045c2 8785 gdb_assert (printf_line != NULL);
9d6e6e84 8786 /* Manufacture a printf sequence. */
f28045c2 8787 {
8d749320 8788 struct command_line *printf_cmd_line = XNEW (struct command_line);
e7e0cddf 8789
f28045c2
YQ
8790 printf_cmd_line->control_type = simple_control;
8791 printf_cmd_line->body_count = 0;
8792 printf_cmd_line->body_list = NULL;
9d6e6e84 8793 printf_cmd_line->next = NULL;
f28045c2 8794 printf_cmd_line->line = printf_line;
e7e0cddf 8795
93921405 8796 breakpoint_set_commands (b, command_line_up (printf_cmd_line));
f28045c2 8797 }
e7e0cddf
SS
8798}
8799
8800/* Update all dprintf commands, making their command lists reflect
8801 current style settings. */
8802
8803static void
eb4c3f4a 8804update_dprintf_commands (const char *args, int from_tty,
e7e0cddf
SS
8805 struct cmd_list_element *c)
8806{
8807 struct breakpoint *b;
8808
8809 ALL_BREAKPOINTS (b)
8810 {
8811 if (b->type == bp_dprintf)
8812 update_dprintf_command_list (b);
8813 }
8814}
c3f6f71d 8815
f00aae0f
KS
8816/* Create a breakpoint with SAL as location. Use LOCATION
8817 as a description of the location, and COND_STRING
b35a8b2f
DE
8818 as condition expression. If LOCATION is NULL then create an
8819 "address location" from the address in the SAL. */
018d34a4
VP
8820
8821static void
d9b3f62e 8822init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
6c5b2ebe 8823 gdb::array_view<const symtab_and_line> sals,
ffc2605c 8824 event_location_up &&location,
e1e01040
PA
8825 gdb::unique_xmalloc_ptr<char> filter,
8826 gdb::unique_xmalloc_ptr<char> cond_string,
8827 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
8828 enum bptype type, enum bpdisp disposition,
8829 int thread, int task, int ignore_count,
c0a91b2b 8830 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
8831 int enabled, int internal, unsigned flags,
8832 int display_canonical)
018d34a4 8833{
0d381245 8834 int i;
018d34a4
VP
8835
8836 if (type == bp_hardware_breakpoint)
8837 {
fbbd034e
AS
8838 int target_resources_ok;
8839
8840 i = hw_breakpoint_used_count ();
8841 target_resources_ok =
8842 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
018d34a4
VP
8843 i + 1, 0);
8844 if (target_resources_ok == 0)
8845 error (_("No hardware breakpoint support in the target."));
8846 else if (target_resources_ok < 0)
8847 error (_("Hardware breakpoints used exceeds limit."));
8848 }
8849
6c5b2ebe 8850 gdb_assert (!sals.empty ());
6c95b8df 8851
6c5b2ebe 8852 for (const auto &sal : sals)
0d381245 8853 {
0d381245
VP
8854 struct bp_location *loc;
8855
8856 if (from_tty)
5af949e3
UW
8857 {
8858 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8859 if (!loc_gdbarch)
8860 loc_gdbarch = gdbarch;
8861
8862 describe_other_breakpoints (loc_gdbarch,
6c95b8df 8863 sal.pspace, sal.pc, sal.section, thread);
5af949e3 8864 }
0d381245 8865
6c5b2ebe 8866 if (&sal == &sals[0])
0d381245 8867 {
d9b3f62e 8868 init_raw_breakpoint (b, gdbarch, sal, type, ops);
0d381245 8869 b->thread = thread;
4a306c9a 8870 b->task = task;
855a6e68 8871
e1e01040
PA
8872 b->cond_string = cond_string.release ();
8873 b->extra_string = extra_string.release ();
0d381245 8874 b->ignore_count = ignore_count;
41447f92 8875 b->enable_state = enabled ? bp_enabled : bp_disabled;
0d381245 8876 b->disposition = disposition;
6c95b8df 8877
44f238bb
PA
8878 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8879 b->loc->inserted = 1;
8880
0fb4aa4b
PA
8881 if (type == bp_static_tracepoint)
8882 {
d9b3f62e 8883 struct tracepoint *t = (struct tracepoint *) b;
0fb4aa4b
PA
8884 struct static_tracepoint_marker marker;
8885
983af33b 8886 if (strace_marker_p (b))
0fb4aa4b
PA
8887 {
8888 /* We already know the marker exists, otherwise, we
8889 wouldn't see a sal for it. */
d28cd78a
TT
8890 const char *p
8891 = &event_location_to_string (b->location.get ())[3];
f00aae0f 8892 const char *endp;
0fb4aa4b 8893
f1735a53 8894 p = skip_spaces (p);
0fb4aa4b 8895
f1735a53 8896 endp = skip_to_space (p);
0fb4aa4b 8897
5d9310c4 8898 t->static_trace_marker_id.assign (p, endp - p);
0fb4aa4b 8899
3e43a32a
MS
8900 printf_filtered (_("Probed static tracepoint "
8901 "marker \"%s\"\n"),
5d9310c4 8902 t->static_trace_marker_id.c_str ());
0fb4aa4b
PA
8903 }
8904 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8905 {
5d9310c4 8906 t->static_trace_marker_id = std::move (marker.str_id);
0fb4aa4b 8907
3e43a32a
MS
8908 printf_filtered (_("Probed static tracepoint "
8909 "marker \"%s\"\n"),
5d9310c4 8910 t->static_trace_marker_id.c_str ());
0fb4aa4b
PA
8911 }
8912 else
3e43a32a
MS
8913 warning (_("Couldn't determine the static "
8914 "tracepoint marker to probe"));
0fb4aa4b
PA
8915 }
8916
0d381245
VP
8917 loc = b->loc;
8918 }
8919 else
018d34a4 8920 {
39d61571 8921 loc = add_location_to_breakpoint (b, &sal);
44f238bb
PA
8922 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8923 loc->inserted = 1;
0d381245
VP
8924 }
8925
8926 if (b->cond_string)
8927 {
bbc13ae3
KS
8928 const char *arg = b->cond_string;
8929
1bb9788d
TT
8930 loc->cond = parse_exp_1 (&arg, loc->address,
8931 block_for_pc (loc->address), 0);
0d381245 8932 if (*arg)
588ae58c 8933 error (_("Garbage '%s' follows condition"), arg);
018d34a4 8934 }
e7e0cddf
SS
8935
8936 /* Dynamic printf requires and uses additional arguments on the
8937 command line, otherwise it's an error. */
8938 if (type == bp_dprintf)
8939 {
8940 if (b->extra_string)
8941 update_dprintf_command_list (b);
8942 else
8943 error (_("Format string required"));
8944 }
8945 else if (b->extra_string)
588ae58c 8946 error (_("Garbage '%s' at end of command"), b->extra_string);
855a6e68 8947 }
018d34a4 8948
56435ebe 8949 b->display_canonical = display_canonical;
f00aae0f 8950 if (location != NULL)
d28cd78a 8951 b->location = std::move (location);
018d34a4 8952 else
d28cd78a 8953 b->location = new_address_location (b->loc->address, NULL, 0);
e1e01040 8954 b->filter = filter.release ();
d9b3f62e 8955}
018d34a4 8956
d9b3f62e
PA
8957static void
8958create_breakpoint_sal (struct gdbarch *gdbarch,
6c5b2ebe 8959 gdb::array_view<const symtab_and_line> sals,
ffc2605c 8960 event_location_up &&location,
e1e01040
PA
8961 gdb::unique_xmalloc_ptr<char> filter,
8962 gdb::unique_xmalloc_ptr<char> cond_string,
8963 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
8964 enum bptype type, enum bpdisp disposition,
8965 int thread, int task, int ignore_count,
c0a91b2b 8966 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
8967 int enabled, int internal, unsigned flags,
8968 int display_canonical)
d9b3f62e 8969{
a5e364af 8970 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
d9b3f62e 8971
a5e364af 8972 init_breakpoint_sal (b.get (), gdbarch,
ffc2605c 8973 sals, std::move (location),
e1e01040
PA
8974 std::move (filter),
8975 std::move (cond_string),
8976 std::move (extra_string),
d9b3f62e
PA
8977 type, disposition,
8978 thread, task, ignore_count,
8979 ops, from_tty,
44f238bb
PA
8980 enabled, internal, flags,
8981 display_canonical);
d9b3f62e 8982
b270e6f9 8983 install_breakpoint (internal, std::move (b), 0);
018d34a4
VP
8984}
8985
8986/* Add SALS.nelts breakpoints to the breakpoint table. For each
8987 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8988 value. COND_STRING, if not NULL, specified the condition to be
8989 used for all breakpoints. Essentially the only case where
8990 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8991 function. In that case, it's still not possible to specify
8992 separate conditions for different overloaded functions, so
8993 we take just a single condition string.
8994
c3f6f71d 8995 NOTE: If the function succeeds, the caller is expected to cleanup
018d34a4 8996 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
c3f6f71d
JM
8997 array contents). If the function fails (error() is called), the
8998 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
4a64f543 8999 COND and SALS arrays and each of those arrays contents. */
c906108c
SS
9000
9001static void
8cdf0e15 9002create_breakpoints_sal (struct gdbarch *gdbarch,
7efd8fc2 9003 struct linespec_result *canonical,
e1e01040
PA
9004 gdb::unique_xmalloc_ptr<char> cond_string,
9005 gdb::unique_xmalloc_ptr<char> extra_string,
8cdf0e15
VP
9006 enum bptype type, enum bpdisp disposition,
9007 int thread, int task, int ignore_count,
c0a91b2b 9008 const struct breakpoint_ops *ops, int from_tty,
44f238bb 9009 int enabled, int internal, unsigned flags)
c906108c 9010{
f8eba3c6 9011 if (canonical->pre_expanded)
6c5b2ebe 9012 gdb_assert (canonical->lsals.size () == 1);
f8eba3c6 9013
6c5b2ebe 9014 for (const auto &lsal : canonical->lsals)
c3f6f71d 9015 {
f00aae0f 9016 /* Note that 'location' can be NULL in the case of a plain
f8eba3c6 9017 'break', without arguments. */
ffc2605c 9018 event_location_up location
f00aae0f 9019 = (canonical->location != NULL
8e9e35b1 9020 ? copy_event_location (canonical->location.get ()) : NULL);
e1e01040 9021 gdb::unique_xmalloc_ptr<char> filter_string
6c5b2ebe 9022 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
0d381245 9023
6c5b2ebe 9024 create_breakpoint_sal (gdbarch, lsal.sals,
ffc2605c 9025 std::move (location),
e1e01040
PA
9026 std::move (filter_string),
9027 std::move (cond_string),
9028 std::move (extra_string),
e7e0cddf 9029 type, disposition,
84f4c1fe 9030 thread, task, ignore_count, ops,
44f238bb 9031 from_tty, enabled, internal, flags,
56435ebe 9032 canonical->special_display);
c3f6f71d 9033 }
c3f6f71d 9034}
c906108c 9035
f00aae0f 9036/* Parse LOCATION which is assumed to be a SAL specification possibly
c3f6f71d 9037 followed by conditionals. On return, SALS contains an array of SAL
f00aae0f
KS
9038 addresses found. LOCATION points to the end of the SAL (for
9039 linespec locations).
9998af43
TJB
9040
9041 The array and the line spec strings are allocated on the heap, it is
9042 the caller's responsibility to free them. */
c906108c 9043
b9362cc7 9044static void
f00aae0f 9045parse_breakpoint_sals (const struct event_location *location,
58438ac1 9046 struct linespec_result *canonical)
c3f6f71d 9047{
f00aae0f
KS
9048 struct symtab_and_line cursal;
9049
9050 if (event_location_type (location) == LINESPEC_LOCATION)
9051 {
a20714ff 9052 const char *spec = get_linespec_location (location)->spec_string;
f00aae0f 9053
a20714ff 9054 if (spec == NULL)
f00aae0f
KS
9055 {
9056 /* The last displayed codepoint, if it's valid, is our default
9057 breakpoint address. */
9058 if (last_displayed_sal_is_valid ())
9059 {
f00aae0f
KS
9060 /* Set sal's pspace, pc, symtab, and line to the values
9061 corresponding to the last call to print_frame_info.
9062 Be sure to reinitialize LINE with NOTCURRENT == 0
9063 as the breakpoint line number is inappropriate otherwise.
9064 find_pc_line would adjust PC, re-set it back. */
51abb421
PA
9065 symtab_and_line sal = get_last_displayed_sal ();
9066 CORE_ADDR pc = sal.pc;
9067
f00aae0f
KS
9068 sal = find_pc_line (pc, 0);
9069
9070 /* "break" without arguments is equivalent to "break *PC"
9071 where PC is the last displayed codepoint's address. So
9072 make sure to set sal.explicit_pc to prevent GDB from
9073 trying to expand the list of sals to include all other
9074 instances with the same symtab and line. */
9075 sal.pc = pc;
9076 sal.explicit_pc = 1;
9077
6c5b2ebe
PA
9078 struct linespec_sals lsal;
9079 lsal.sals = {sal};
f00aae0f
KS
9080 lsal.canonical = NULL;
9081
6c5b2ebe 9082 canonical->lsals.push_back (std::move (lsal));
f00aae0f
KS
9083 return;
9084 }
9085 else
9086 error (_("No default breakpoint address now."));
c906108c 9087 }
c906108c 9088 }
f00aae0f
KS
9089
9090 /* Force almost all breakpoints to be in terms of the
9091 current_source_symtab (which is decode_line_1's default).
9092 This should produce the results we want almost all of the
9093 time while leaving default_breakpoint_* alone.
9094
9095 ObjC: However, don't match an Objective-C method name which
9096 may have a '+' or '-' succeeded by a '['. */
9097 cursal = get_current_source_symtab_and_line ();
9098 if (last_displayed_sal_is_valid ())
c906108c 9099 {
a20714ff 9100 const char *spec = NULL;
cc80f267 9101
f00aae0f 9102 if (event_location_type (location) == LINESPEC_LOCATION)
a20714ff 9103 spec = get_linespec_location (location)->spec_string;
cc80f267 9104
f00aae0f 9105 if (!cursal.symtab
a20714ff
PA
9106 || (spec != NULL
9107 && strchr ("+-", spec[0]) != NULL
9108 && spec[1] != '['))
f00aae0f 9109 {
c2f4122d 9110 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f
KS
9111 get_last_displayed_symtab (),
9112 get_last_displayed_line (),
9113 canonical, NULL, NULL);
9114 return;
9115 }
c906108c 9116 }
f00aae0f 9117
c2f4122d 9118 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f 9119 cursal.symtab, cursal.line, canonical, NULL, NULL);
c3f6f71d 9120}
c906108c 9121
c906108c 9122
c3f6f71d 9123/* Convert each SAL into a real PC. Verify that the PC can be
4a64f543 9124 inserted as a breakpoint. If it can't throw an error. */
c906108c 9125
b9362cc7 9126static void
6c5b2ebe 9127breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
c3f6f71d 9128{
6c5b2ebe
PA
9129 for (auto &sal : sals)
9130 resolve_sal_pc (&sal);
c3f6f71d
JM
9131}
9132
7a697b8d
SS
9133/* Fast tracepoints may have restrictions on valid locations. For
9134 instance, a fast tracepoint using a jump instead of a trap will
9135 likely have to overwrite more bytes than a trap would, and so can
9136 only be placed where the instruction is longer than the jump, or a
9137 multi-instruction sequence does not have a jump into the middle of
9138 it, etc. */
9139
9140static void
9141check_fast_tracepoint_sals (struct gdbarch *gdbarch,
6c5b2ebe 9142 gdb::array_view<const symtab_and_line> sals)
7a697b8d 9143{
6c5b2ebe 9144 for (const auto &sal : sals)
7a697b8d 9145 {
f8eba3c6
TT
9146 struct gdbarch *sarch;
9147
6c5b2ebe 9148 sarch = get_sal_arch (sal);
f8eba3c6
TT
9149 /* We fall back to GDBARCH if there is no architecture
9150 associated with SAL. */
9151 if (sarch == NULL)
9152 sarch = gdbarch;
281d762b
TT
9153 std::string msg;
9154 if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
53c3572a 9155 error (_("May not have a fast tracepoint at %s%s"),
281d762b 9156 paddress (sarch, sal.pc), msg.c_str ());
7a697b8d
SS
9157 }
9158}
9159
018d34a4
VP
9160/* Given TOK, a string specification of condition and thread, as
9161 accepted by the 'break' command, extract the condition
9162 string and thread number and set *COND_STRING and *THREAD.
4a64f543 9163 PC identifies the context at which the condition should be parsed.
018d34a4
VP
9164 If no condition is found, *COND_STRING is set to NULL.
9165 If no thread is found, *THREAD is set to -1. */
d634f2de
JB
9166
9167static void
bbc13ae3 9168find_condition_and_thread (const char *tok, CORE_ADDR pc,
e7e0cddf
SS
9169 char **cond_string, int *thread, int *task,
9170 char **rest)
018d34a4
VP
9171{
9172 *cond_string = NULL;
9173 *thread = -1;
ed1d1739
KS
9174 *task = 0;
9175 *rest = NULL;
9176
018d34a4
VP
9177 while (tok && *tok)
9178 {
bbc13ae3 9179 const char *end_tok;
018d34a4 9180 int toklen;
bbc13ae3
KS
9181 const char *cond_start = NULL;
9182 const char *cond_end = NULL;
cc59ec59 9183
f1735a53 9184 tok = skip_spaces (tok);
e7e0cddf
SS
9185
9186 if ((*tok == '"' || *tok == ',') && rest)
9187 {
9188 *rest = savestring (tok, strlen (tok));
9189 return;
9190 }
9191
f1735a53 9192 end_tok = skip_to_space (tok);
d634f2de 9193
018d34a4 9194 toklen = end_tok - tok;
d634f2de 9195
018d34a4
VP
9196 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9197 {
9198 tok = cond_start = end_tok + 1;
4d01a485 9199 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
018d34a4 9200 cond_end = tok;
d634f2de 9201 *cond_string = savestring (cond_start, cond_end - cond_start);
018d34a4
VP
9202 }
9203 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9204 {
5d5658a1
PA
9205 const char *tmptok;
9206 struct thread_info *thr;
d634f2de 9207
018d34a4 9208 tok = end_tok + 1;
5d5658a1 9209 thr = parse_thread_id (tok, &tmptok);
018d34a4
VP
9210 if (tok == tmptok)
9211 error (_("Junk after thread keyword."));
5d5658a1 9212 *thread = thr->global_num;
bbc13ae3 9213 tok = tmptok;
018d34a4 9214 }
4a306c9a
JB
9215 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9216 {
9217 char *tmptok;
9218
9219 tok = end_tok + 1;
bbc13ae3 9220 *task = strtol (tok, &tmptok, 0);
4a306c9a
JB
9221 if (tok == tmptok)
9222 error (_("Junk after task keyword."));
9223 if (!valid_task_id (*task))
b6199126 9224 error (_("Unknown task %d."), *task);
bbc13ae3 9225 tok = tmptok;
4a306c9a 9226 }
e7e0cddf
SS
9227 else if (rest)
9228 {
9229 *rest = savestring (tok, strlen (tok));
ccab2054 9230 return;
e7e0cddf 9231 }
018d34a4
VP
9232 else
9233 error (_("Junk at end of arguments."));
9234 }
9235}
9236
0fb4aa4b
PA
9237/* Decode a static tracepoint marker spec. */
9238
6c5b2ebe 9239static std::vector<symtab_and_line>
f00aae0f 9240decode_static_tracepoint_spec (const char **arg_p)
0fb4aa4b 9241{
f00aae0f
KS
9242 const char *p = &(*arg_p)[3];
9243 const char *endp;
0fb4aa4b 9244
f1735a53 9245 p = skip_spaces (p);
0fb4aa4b 9246
f1735a53 9247 endp = skip_to_space (p);
0fb4aa4b 9248
81b1e71c 9249 std::string marker_str (p, endp - p);
0fb4aa4b 9250
5d9310c4
SM
9251 std::vector<static_tracepoint_marker> markers
9252 = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9253 if (markers.empty ())
81b1e71c
TT
9254 error (_("No known static tracepoint marker named %s"),
9255 marker_str.c_str ());
0fb4aa4b 9256
6c5b2ebe 9257 std::vector<symtab_and_line> sals;
5d9310c4 9258 sals.reserve (markers.size ());
0fb4aa4b 9259
5d9310c4 9260 for (const static_tracepoint_marker &marker : markers)
0fb4aa4b 9261 {
5d9310c4
SM
9262 symtab_and_line sal = find_pc_line (marker.address, 0);
9263 sal.pc = marker.address;
6c5b2ebe 9264 sals.push_back (sal);
5d9310c4 9265 }
0fb4aa4b 9266
0fb4aa4b
PA
9267 *arg_p = endp;
9268 return sals;
9269}
9270
f00aae0f 9271/* See breakpoint.h. */
0101ce28 9272
8cdf0e15
VP
9273int
9274create_breakpoint (struct gdbarch *gdbarch,
e1e01040
PA
9275 const struct event_location *location,
9276 const char *cond_string,
9277 int thread, const char *extra_string,
f00aae0f 9278 int parse_extra,
0fb4aa4b 9279 int tempflag, enum bptype type_wanted,
8cdf0e15
VP
9280 int ignore_count,
9281 enum auto_boolean pending_break_support,
c0a91b2b 9282 const struct breakpoint_ops *ops,
44f238bb
PA
9283 int from_tty, int enabled, int internal,
9284 unsigned flags)
c3f6f71d 9285{
7efd8fc2 9286 struct linespec_result canonical;
80c99de1 9287 struct cleanup *bkpt_chain = NULL;
0101ce28 9288 int pending = 0;
4a306c9a 9289 int task = 0;
86b17b60 9290 int prev_bkpt_count = breakpoint_count;
c3f6f71d 9291
348d480f
PA
9292 gdb_assert (ops != NULL);
9293
f00aae0f
KS
9294 /* If extra_string isn't useful, set it to NULL. */
9295 if (extra_string != NULL && *extra_string == '\0')
9296 extra_string = NULL;
9297
492d29ea 9298 TRY
b78a6381 9299 {
f00aae0f 9300 ops->create_sals_from_location (location, &canonical, type_wanted);
b78a6381 9301 }
492d29ea 9302 CATCH (e, RETURN_MASK_ERROR)
0101ce28 9303 {
492d29ea
PA
9304 /* If caller is interested in rc value from parse, set
9305 value. */
9306 if (e.error == NOT_FOUND_ERROR)
0101ce28 9307 {
05ff989b
AC
9308 /* If pending breakpoint support is turned off, throw
9309 error. */
fa8d40ab
JJ
9310
9311 if (pending_break_support == AUTO_BOOLEAN_FALSE)
723a2275
VP
9312 throw_exception (e);
9313
9314 exception_print (gdb_stderr, e);
fa8d40ab 9315
05ff989b
AC
9316 /* If pending breakpoint support is auto query and the user
9317 selects no, then simply return the error code. */
059fb39f 9318 if (pending_break_support == AUTO_BOOLEAN_AUTO
bfccc43c
YQ
9319 && !nquery (_("Make %s pending on future shared library load? "),
9320 bptype_string (type_wanted)))
fd9b8c24 9321 return 0;
fa8d40ab 9322
05ff989b
AC
9323 /* At this point, either the user was queried about setting
9324 a pending breakpoint and selected yes, or pending
9325 breakpoint behavior is on and thus a pending breakpoint
9326 is defaulted on behalf of the user. */
f00aae0f 9327 pending = 1;
0101ce28 9328 }
492d29ea
PA
9329 else
9330 throw_exception (e);
0101ce28 9331 }
492d29ea
PA
9332 END_CATCH
9333
6c5b2ebe 9334 if (!pending && canonical.lsals.empty ())
492d29ea 9335 return 0;
c3f6f71d 9336
c3f6f71d
JM
9337 /* ----------------------------- SNIP -----------------------------
9338 Anything added to the cleanup chain beyond this point is assumed
9339 to be part of a breakpoint. If the breakpoint create succeeds
80c99de1
PA
9340 then the memory is not reclaimed. */
9341 bkpt_chain = make_cleanup (null_cleanup, 0);
c3f6f71d 9342
c3f6f71d
JM
9343 /* Resolve all line numbers to PC's and verify that the addresses
9344 are ok for the target. */
0101ce28 9345 if (!pending)
f8eba3c6 9346 {
6c5b2ebe
PA
9347 for (auto &lsal : canonical.lsals)
9348 breakpoint_sals_to_pc (lsal.sals);
f8eba3c6 9349 }
c3f6f71d 9350
7a697b8d 9351 /* Fast tracepoints may have additional restrictions on location. */
bfccc43c 9352 if (!pending && type_wanted == bp_fast_tracepoint)
f8eba3c6 9353 {
6c5b2ebe
PA
9354 for (const auto &lsal : canonical.lsals)
9355 check_fast_tracepoint_sals (gdbarch, lsal.sals);
f8eba3c6 9356 }
7a697b8d 9357
c3f6f71d
JM
9358 /* Verify that condition can be parsed, before setting any
9359 breakpoints. Allocate a separate condition expression for each
4a64f543 9360 breakpoint. */
0101ce28 9361 if (!pending)
c3f6f71d 9362 {
e1e01040
PA
9363 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9364 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9365
f00aae0f 9366 if (parse_extra)
72b2ff0e 9367 {
0878d0fa 9368 char *rest;
e1e01040 9369 char *cond;
52d361e1 9370
6c5b2ebe 9371 const linespec_sals &lsal = canonical.lsals[0];
52d361e1 9372
0878d0fa
YQ
9373 /* Here we only parse 'arg' to separate condition
9374 from thread number, so parsing in context of first
9375 sal is OK. When setting the breakpoint we'll
9376 re-parse it in context of each sal. */
9377
6c5b2ebe 9378 find_condition_and_thread (extra_string, lsal.sals[0].pc,
e1e01040
PA
9379 &cond, &thread, &task, &rest);
9380 cond_string_copy.reset (cond);
9381 extra_string_copy.reset (rest);
72b2ff0e 9382 }
2f069f6f 9383 else
72b2ff0e 9384 {
f00aae0f
KS
9385 if (type_wanted != bp_dprintf
9386 && extra_string != NULL && *extra_string != '\0')
9387 error (_("Garbage '%s' at end of location"), extra_string);
0878d0fa
YQ
9388
9389 /* Create a private copy of condition string. */
9390 if (cond_string)
e1e01040 9391 cond_string_copy.reset (xstrdup (cond_string));
0878d0fa
YQ
9392 /* Create a private copy of any extra string. */
9393 if (extra_string)
e1e01040 9394 extra_string_copy.reset (xstrdup (extra_string));
72b2ff0e 9395 }
0fb4aa4b 9396
52d361e1 9397 ops->create_breakpoints_sal (gdbarch, &canonical,
e1e01040
PA
9398 std::move (cond_string_copy),
9399 std::move (extra_string_copy),
9400 type_wanted,
d9b3f62e
PA
9401 tempflag ? disp_del : disp_donttouch,
9402 thread, task, ignore_count, ops,
44f238bb 9403 from_tty, enabled, internal, flags);
c906108c 9404 }
0101ce28
JJ
9405 else
9406 {
a5e364af 9407 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
bfccc43c 9408
a5e364af 9409 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
d28cd78a 9410 b->location = copy_event_location (location);
bfccc43c 9411
f00aae0f
KS
9412 if (parse_extra)
9413 b->cond_string = NULL;
e12c7713
MK
9414 else
9415 {
9416 /* Create a private copy of condition string. */
e1e01040 9417 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
15630549 9418 b->thread = thread;
e12c7713 9419 }
f00aae0f
KS
9420
9421 /* Create a private copy of any extra string. */
e1e01040 9422 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
0101ce28 9423 b->ignore_count = ignore_count;
0101ce28 9424 b->disposition = tempflag ? disp_del : disp_donttouch;
0d381245 9425 b->condition_not_parsed = 1;
41447f92 9426 b->enable_state = enabled ? bp_enabled : bp_disabled;
cc72b2a2
KP
9427 if ((type_wanted != bp_breakpoint
9428 && type_wanted != bp_hardware_breakpoint) || thread != -1)
f8eba3c6 9429 b->pspace = current_program_space;
8bea4e01 9430
b270e6f9 9431 install_breakpoint (internal, std::move (b), 0);
0101ce28
JJ
9432 }
9433
6c5b2ebe 9434 if (canonical.lsals.size () > 1)
95a42b64 9435 {
3e43a32a
MS
9436 warning (_("Multiple breakpoints were set.\nUse the "
9437 "\"delete\" command to delete unwanted breakpoints."));
86b17b60 9438 prev_breakpoint_count = prev_bkpt_count;
95a42b64
TT
9439 }
9440
80c99de1
PA
9441 /* That's it. Discard the cleanups for data inserted into the
9442 breakpoint. */
9443 discard_cleanups (bkpt_chain);
217dc9e2 9444
80c99de1 9445 /* error call may happen here - have BKPT_CHAIN already discarded. */
44702360 9446 update_global_location_list (UGLL_MAY_INSERT);
fd9b8c24
PA
9447
9448 return 1;
c3f6f71d 9449}
c906108c 9450
348d480f 9451/* Set a breakpoint.
72b2ff0e
VP
9452 ARG is a string describing breakpoint address,
9453 condition, and thread.
9454 FLAG specifies if a breakpoint is hardware on,
9455 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9456 and BP_TEMPFLAG. */
348d480f 9457
98deb0da 9458static void
f2fc3015 9459break_command_1 (const char *arg, int flag, int from_tty)
c3f6f71d 9460{
72b2ff0e 9461 int tempflag = flag & BP_TEMPFLAG;
0fb4aa4b
PA
9462 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9463 ? bp_hardware_breakpoint
9464 : bp_breakpoint);
55aa24fb 9465 struct breakpoint_ops *ops;
f00aae0f 9466
ffc2605c 9467 event_location_up location = string_to_event_location (&arg, current_language);
55aa24fb
SDJ
9468
9469 /* Matching breakpoints on probes. */
5b56227b 9470 if (location != NULL
ffc2605c 9471 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
9472 ops = &bkpt_probe_breakpoint_ops;
9473 else
9474 ops = &bkpt_breakpoint_ops;
c3f6f71d 9475
8cdf0e15 9476 create_breakpoint (get_current_arch (),
ffc2605c 9477 location.get (),
f00aae0f 9478 NULL, 0, arg, 1 /* parse arg */,
0fb4aa4b 9479 tempflag, type_wanted,
8cdf0e15
VP
9480 0 /* Ignore count */,
9481 pending_break_support,
55aa24fb 9482 ops,
8cdf0e15 9483 from_tty,
84f4c1fe 9484 1 /* enabled */,
44f238bb
PA
9485 0 /* internal */,
9486 0);
c906108c
SS
9487}
9488
c906108c
SS
9489/* Helper function for break_command_1 and disassemble_command. */
9490
9491void
fba45db2 9492resolve_sal_pc (struct symtab_and_line *sal)
c906108c
SS
9493{
9494 CORE_ADDR pc;
9495
9496 if (sal->pc == 0 && sal->symtab != NULL)
9497 {
9498 if (!find_line_pc (sal->symtab, sal->line, &pc))
8a3fe4f8 9499 error (_("No line %d in file \"%s\"."),
05cba821 9500 sal->line, symtab_to_filename_for_display (sal->symtab));
c906108c 9501 sal->pc = pc;
6a048695 9502
4a64f543
MS
9503 /* If this SAL corresponds to a breakpoint inserted using a line
9504 number, then skip the function prologue if necessary. */
6a048695 9505 if (sal->explicit_line)
059acae7 9506 skip_prologue_sal (sal);
c906108c
SS
9507 }
9508
9509 if (sal->section == 0 && sal->symtab != NULL)
9510 {
346d1dfe 9511 const struct blockvector *bv;
3977b71f 9512 const struct block *b;
c5aa993b 9513 struct symbol *sym;
c906108c 9514
43f3e411
DE
9515 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9516 SYMTAB_COMPUNIT (sal->symtab));
c906108c
SS
9517 if (bv != NULL)
9518 {
7f0df278 9519 sym = block_linkage_function (b);
c906108c
SS
9520 if (sym != NULL)
9521 {
eb822aa6
DE
9522 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9523 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9524 sym);
c906108c
SS
9525 }
9526 else
9527 {
4a64f543
MS
9528 /* It really is worthwhile to have the section, so we'll
9529 just have to look harder. This case can be executed
9530 if we have line numbers but no functions (as can
9531 happen in assembly source). */
c906108c 9532
5ed8105e 9533 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 9534 switch_to_program_space_and_thread (sal->pspace);
c906108c 9535
5ed8105e 9536 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
7cbd4a93 9537 if (msym.minsym)
efd66ac6 9538 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
c906108c
SS
9539 }
9540 }
9541 }
9542}
9543
9544void
0b39b52e 9545break_command (const char *arg, int from_tty)
c906108c 9546{
db107f19 9547 break_command_1 (arg, 0, from_tty);
c906108c
SS
9548}
9549
c906108c 9550void
0b39b52e 9551tbreak_command (const char *arg, int from_tty)
c906108c 9552{
db107f19 9553 break_command_1 (arg, BP_TEMPFLAG, from_tty);
c906108c
SS
9554}
9555
c906108c 9556static void
0b39b52e 9557hbreak_command (const char *arg, int from_tty)
c906108c 9558{
db107f19 9559 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
c906108c
SS
9560}
9561
9562static void
0b39b52e 9563thbreak_command (const char *arg, int from_tty)
c906108c 9564{
db107f19 9565 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
c906108c
SS
9566}
9567
9568static void
ee7ddd71 9569stop_command (const char *arg, int from_tty)
c906108c 9570{
a3f17187 9571 printf_filtered (_("Specify the type of breakpoint to set.\n\
c906108c 9572Usage: stop in <function | address>\n\
a3f17187 9573 stop at <line>\n"));
c906108c
SS
9574}
9575
9576static void
4495129a 9577stopin_command (const char *arg, int from_tty)
c906108c
SS
9578{
9579 int badInput = 0;
9580
c5aa993b 9581 if (arg == (char *) NULL)
c906108c
SS
9582 badInput = 1;
9583 else if (*arg != '*')
9584 {
4495129a 9585 const char *argptr = arg;
c906108c
SS
9586 int hasColon = 0;
9587
4a64f543 9588 /* Look for a ':'. If this is a line number specification, then
53a5351d 9589 say it is bad, otherwise, it should be an address or
4a64f543 9590 function/method name. */
c906108c 9591 while (*argptr && !hasColon)
c5aa993b
JM
9592 {
9593 hasColon = (*argptr == ':');
9594 argptr++;
9595 }
c906108c
SS
9596
9597 if (hasColon)
c5aa993b 9598 badInput = (*argptr != ':'); /* Not a class::method */
c906108c 9599 else
c5aa993b 9600 badInput = isdigit (*arg); /* a simple line number */
c906108c
SS
9601 }
9602
9603 if (badInput)
a3f17187 9604 printf_filtered (_("Usage: stop in <function | address>\n"));
c906108c 9605 else
db107f19 9606 break_command_1 (arg, 0, from_tty);
c906108c
SS
9607}
9608
9609static void
4495129a 9610stopat_command (const char *arg, int from_tty)
c906108c
SS
9611{
9612 int badInput = 0;
9613
c5aa993b 9614 if (arg == (char *) NULL || *arg == '*') /* no line number */
c906108c
SS
9615 badInput = 1;
9616 else
9617 {
4495129a 9618 const char *argptr = arg;
c906108c
SS
9619 int hasColon = 0;
9620
4a64f543
MS
9621 /* Look for a ':'. If there is a '::' then get out, otherwise
9622 it is probably a line number. */
c906108c 9623 while (*argptr && !hasColon)
c5aa993b
JM
9624 {
9625 hasColon = (*argptr == ':');
9626 argptr++;
9627 }
c906108c
SS
9628
9629 if (hasColon)
c5aa993b 9630 badInput = (*argptr == ':'); /* we have class::method */
c906108c 9631 else
c5aa993b 9632 badInput = !isdigit (*arg); /* not a line number */
c906108c
SS
9633 }
9634
9635 if (badInput)
a3f17187 9636 printf_filtered (_("Usage: stop at <line>\n"));
c906108c 9637 else
db107f19 9638 break_command_1 (arg, 0, from_tty);
c906108c
SS
9639}
9640
e7e0cddf
SS
9641/* The dynamic printf command is mostly like a regular breakpoint, but
9642 with a prewired command list consisting of a single output command,
9643 built from extra arguments supplied on the dprintf command
9644 line. */
9645
da821c7b 9646static void
0b39b52e 9647dprintf_command (const char *arg, int from_tty)
e7e0cddf 9648{
ffc2605c 9649 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f
KS
9650
9651 /* If non-NULL, ARG should have been advanced past the location;
9652 the next character must be ','. */
9653 if (arg != NULL)
9654 {
9655 if (arg[0] != ',' || arg[1] == '\0')
9656 error (_("Format string required"));
9657 else
9658 {
9659 /* Skip the comma. */
9660 ++arg;
9661 }
9662 }
9663
e7e0cddf 9664 create_breakpoint (get_current_arch (),
ffc2605c 9665 location.get (),
f00aae0f 9666 NULL, 0, arg, 1 /* parse arg */,
e7e0cddf
SS
9667 0, bp_dprintf,
9668 0 /* Ignore count */,
9669 pending_break_support,
9670 &dprintf_breakpoint_ops,
9671 from_tty,
9672 1 /* enabled */,
9673 0 /* internal */,
9674 0);
9675}
9676
d3ce09f5 9677static void
0b39b52e 9678agent_printf_command (const char *arg, int from_tty)
d3ce09f5
SS
9679{
9680 error (_("May only run agent-printf on the target"));
9681}
9682
f1310107
TJB
9683/* Implement the "breakpoint_hit" breakpoint_ops method for
9684 ranged breakpoints. */
9685
9686static int
9687breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
bd522513 9688 const address_space *aspace,
09ac7c10
TT
9689 CORE_ADDR bp_addr,
9690 const struct target_waitstatus *ws)
f1310107 9691{
09ac7c10 9692 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 9693 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
9694 return 0;
9695
f1310107
TJB
9696 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9697 bl->length, aspace, bp_addr);
9698}
9699
9700/* Implement the "resources_needed" breakpoint_ops method for
9701 ranged breakpoints. */
9702
9703static int
9704resources_needed_ranged_breakpoint (const struct bp_location *bl)
9705{
9706 return target_ranged_break_num_registers ();
9707}
9708
9709/* Implement the "print_it" breakpoint_ops method for
9710 ranged breakpoints. */
9711
9712static enum print_stop_action
348d480f 9713print_it_ranged_breakpoint (bpstat bs)
f1310107 9714{
348d480f 9715 struct breakpoint *b = bs->breakpoint_at;
f1310107 9716 struct bp_location *bl = b->loc;
79a45e25 9717 struct ui_out *uiout = current_uiout;
f1310107
TJB
9718
9719 gdb_assert (b->type == bp_hardware_breakpoint);
9720
9721 /* Ranged breakpoints have only one location. */
9722 gdb_assert (bl && bl->next == NULL);
9723
9724 annotate_breakpoint (b->number);
f303dbd6
PA
9725
9726 maybe_print_thread_hit_breakpoint (uiout);
9727
f1310107 9728 if (b->disposition == disp_del)
112e8700 9729 uiout->text ("Temporary ranged breakpoint ");
f1310107 9730 else
112e8700
SM
9731 uiout->text ("Ranged breakpoint ");
9732 if (uiout->is_mi_like_p ())
f1310107 9733 {
112e8700 9734 uiout->field_string ("reason",
f1310107 9735 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 9736 uiout->field_string ("disp", bpdisp_text (b->disposition));
f1310107 9737 }
112e8700
SM
9738 uiout->field_int ("bkptno", b->number);
9739 uiout->text (", ");
f1310107
TJB
9740
9741 return PRINT_SRC_AND_LOC;
9742}
9743
9744/* Implement the "print_one" breakpoint_ops method for
9745 ranged breakpoints. */
9746
9747static void
9748print_one_ranged_breakpoint (struct breakpoint *b,
9749 struct bp_location **last_loc)
9750{
9751 struct bp_location *bl = b->loc;
9752 struct value_print_options opts;
79a45e25 9753 struct ui_out *uiout = current_uiout;
f1310107
TJB
9754
9755 /* Ranged breakpoints have only one location. */
9756 gdb_assert (bl && bl->next == NULL);
9757
9758 get_user_print_options (&opts);
9759
9760 if (opts.addressprint)
9761 /* We don't print the address range here, it will be printed later
9762 by print_one_detail_ranged_breakpoint. */
112e8700 9763 uiout->field_skip ("addr");
f1310107
TJB
9764 annotate_field (5);
9765 print_breakpoint_location (b, bl);
9766 *last_loc = bl;
9767}
9768
9769/* Implement the "print_one_detail" breakpoint_ops method for
9770 ranged breakpoints. */
9771
9772static void
9773print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9774 struct ui_out *uiout)
9775{
9776 CORE_ADDR address_start, address_end;
9777 struct bp_location *bl = b->loc;
d7e74731 9778 string_file stb;
f1310107
TJB
9779
9780 gdb_assert (bl);
9781
9782 address_start = bl->address;
9783 address_end = address_start + bl->length - 1;
9784
112e8700 9785 uiout->text ("\taddress range: ");
d7e74731
PA
9786 stb.printf ("[%s, %s]",
9787 print_core_address (bl->gdbarch, address_start),
9788 print_core_address (bl->gdbarch, address_end));
112e8700
SM
9789 uiout->field_stream ("addr", stb);
9790 uiout->text ("\n");
f1310107
TJB
9791}
9792
9793/* Implement the "print_mention" breakpoint_ops method for
9794 ranged breakpoints. */
9795
9796static void
9797print_mention_ranged_breakpoint (struct breakpoint *b)
9798{
9799 struct bp_location *bl = b->loc;
79a45e25 9800 struct ui_out *uiout = current_uiout;
f1310107
TJB
9801
9802 gdb_assert (bl);
9803 gdb_assert (b->type == bp_hardware_breakpoint);
9804
112e8700 9805 if (uiout->is_mi_like_p ())
f1310107
TJB
9806 return;
9807
9808 printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9809 b->number, paddress (bl->gdbarch, bl->address),
9810 paddress (bl->gdbarch, bl->address + bl->length - 1));
9811}
9812
9813/* Implement the "print_recreate" breakpoint_ops method for
9814 ranged breakpoints. */
9815
9816static void
9817print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9818{
f00aae0f 9819 fprintf_unfiltered (fp, "break-range %s, %s",
d28cd78a
TT
9820 event_location_to_string (b->location.get ()),
9821 event_location_to_string (b->location_range_end.get ()));
d9b3f62e 9822 print_recreate_thread (b, fp);
f1310107
TJB
9823}
9824
9825/* The breakpoint_ops structure to be used in ranged breakpoints. */
9826
2060206e 9827static struct breakpoint_ops ranged_breakpoint_ops;
f1310107
TJB
9828
9829/* Find the address where the end of the breakpoint range should be
9830 placed, given the SAL of the end of the range. This is so that if
9831 the user provides a line number, the end of the range is set to the
9832 last instruction of the given line. */
9833
9834static CORE_ADDR
9835find_breakpoint_range_end (struct symtab_and_line sal)
9836{
9837 CORE_ADDR end;
9838
9839 /* If the user provided a PC value, use it. Otherwise,
9840 find the address of the end of the given location. */
9841 if (sal.explicit_pc)
9842 end = sal.pc;
9843 else
9844 {
9845 int ret;
9846 CORE_ADDR start;
9847
9848 ret = find_line_pc_range (sal, &start, &end);
9849 if (!ret)
9850 error (_("Could not find location of the end of the range."));
9851
9852 /* find_line_pc_range returns the start of the next line. */
9853 end--;
9854 }
9855
9856 return end;
9857}
9858
9859/* Implement the "break-range" CLI command. */
9860
9861static void
0b39b52e 9862break_range_command (const char *arg, int from_tty)
f1310107 9863{
f2fc3015 9864 const char *arg_start;
f1310107
TJB
9865 struct linespec_result canonical_start, canonical_end;
9866 int bp_count, can_use_bp, length;
9867 CORE_ADDR end;
9868 struct breakpoint *b;
f1310107
TJB
9869
9870 /* We don't support software ranged breakpoints. */
9871 if (target_ranged_break_num_registers () < 0)
9872 error (_("This target does not support hardware ranged breakpoints."));
9873
9874 bp_count = hw_breakpoint_used_count ();
9875 bp_count += target_ranged_break_num_registers ();
9876 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9877 bp_count, 0);
9878 if (can_use_bp < 0)
9879 error (_("Hardware breakpoints used exceeds limit."));
9880
f8eba3c6 9881 arg = skip_spaces (arg);
f1310107
TJB
9882 if (arg == NULL || arg[0] == '\0')
9883 error(_("No address range specified."));
9884
f8eba3c6 9885 arg_start = arg;
ffc2605c
TT
9886 event_location_up start_location = string_to_event_location (&arg,
9887 current_language);
9888 parse_breakpoint_sals (start_location.get (), &canonical_start);
f1310107
TJB
9889
9890 if (arg[0] != ',')
9891 error (_("Too few arguments."));
6c5b2ebe 9892 else if (canonical_start.lsals.empty ())
f1310107 9893 error (_("Could not find location of the beginning of the range."));
f8eba3c6 9894
6c5b2ebe 9895 const linespec_sals &lsal_start = canonical_start.lsals[0];
f8eba3c6 9896
6c5b2ebe
PA
9897 if (canonical_start.lsals.size () > 1
9898 || lsal_start.sals.size () != 1)
f1310107
TJB
9899 error (_("Cannot create a ranged breakpoint with multiple locations."));
9900
6c5b2ebe 9901 const symtab_and_line &sal_start = lsal_start.sals[0];
81b1e71c 9902 std::string addr_string_start (arg_start, arg - arg_start);
f1310107
TJB
9903
9904 arg++; /* Skip the comma. */
f8eba3c6 9905 arg = skip_spaces (arg);
f1310107
TJB
9906
9907 /* Parse the end location. */
9908
f1310107
TJB
9909 arg_start = arg;
9910
f8eba3c6 9911 /* We call decode_line_full directly here instead of using
f1310107
TJB
9912 parse_breakpoint_sals because we need to specify the start location's
9913 symtab and line as the default symtab and line for the end of the
9914 range. This makes it possible to have ranges like "foo.c:27, +14",
9915 where +14 means 14 lines from the start location. */
ffc2605c
TT
9916 event_location_up end_location = string_to_event_location (&arg,
9917 current_language);
9918 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
f8eba3c6
TT
9919 sal_start.symtab, sal_start.line,
9920 &canonical_end, NULL, NULL);
9921
6c5b2ebe 9922 if (canonical_end.lsals.empty ())
f1310107 9923 error (_("Could not find location of the end of the range."));
f8eba3c6 9924
6c5b2ebe
PA
9925 const linespec_sals &lsal_end = canonical_end.lsals[0];
9926 if (canonical_end.lsals.size () > 1
9927 || lsal_end.sals.size () != 1)
f1310107
TJB
9928 error (_("Cannot create a ranged breakpoint with multiple locations."));
9929
6c5b2ebe 9930 const symtab_and_line &sal_end = lsal_end.sals[0];
f1310107
TJB
9931
9932 end = find_breakpoint_range_end (sal_end);
9933 if (sal_start.pc > end)
177b42fe 9934 error (_("Invalid address range, end precedes start."));
f1310107
TJB
9935
9936 length = end - sal_start.pc + 1;
9937 if (length < 0)
9938 /* Length overflowed. */
9939 error (_("Address range too large."));
9940 else if (length == 1)
9941 {
9942 /* This range is simple enough to be handled by
9943 the `hbreak' command. */
81b1e71c 9944 hbreak_command (&addr_string_start[0], 1);
f1310107
TJB
9945
9946 return;
9947 }
9948
9949 /* Now set up the breakpoint. */
9950 b = set_raw_breakpoint (get_current_arch (), sal_start,
348d480f 9951 bp_hardware_breakpoint, &ranged_breakpoint_ops);
f1310107
TJB
9952 set_breakpoint_count (breakpoint_count + 1);
9953 b->number = breakpoint_count;
9954 b->disposition = disp_donttouch;
d28cd78a
TT
9955 b->location = std::move (start_location);
9956 b->location_range_end = std::move (end_location);
f1310107
TJB
9957 b->loc->length = length;
9958
f1310107 9959 mention (b);
76727919 9960 gdb::observers::breakpoint_created.notify (b);
44702360 9961 update_global_location_list (UGLL_MAY_INSERT);
f1310107
TJB
9962}
9963
4a64f543
MS
9964/* Return non-zero if EXP is verified as constant. Returned zero
9965 means EXP is variable. Also the constant detection may fail for
9966 some constant expressions and in such case still falsely return
9967 zero. */
2e6e3d9c 9968
65d79d4b
SDJ
9969static int
9970watchpoint_exp_is_const (const struct expression *exp)
9971{
9972 int i = exp->nelts;
9973
9974 while (i > 0)
9975 {
9976 int oplenp, argsp;
9977
9978 /* We are only interested in the descriptor of each element. */
9979 operator_length (exp, i, &oplenp, &argsp);
9980 i -= oplenp;
9981
9982 switch (exp->elts[i].opcode)
9983 {
9984 case BINOP_ADD:
9985 case BINOP_SUB:
9986 case BINOP_MUL:
9987 case BINOP_DIV:
9988 case BINOP_REM:
9989 case BINOP_MOD:
9990 case BINOP_LSH:
9991 case BINOP_RSH:
9992 case BINOP_LOGICAL_AND:
9993 case BINOP_LOGICAL_OR:
9994 case BINOP_BITWISE_AND:
9995 case BINOP_BITWISE_IOR:
9996 case BINOP_BITWISE_XOR:
9997 case BINOP_EQUAL:
9998 case BINOP_NOTEQUAL:
9999 case BINOP_LESS:
10000 case BINOP_GTR:
10001 case BINOP_LEQ:
10002 case BINOP_GEQ:
10003 case BINOP_REPEAT:
10004 case BINOP_COMMA:
10005 case BINOP_EXP:
10006 case BINOP_MIN:
10007 case BINOP_MAX:
10008 case BINOP_INTDIV:
10009 case BINOP_CONCAT:
65d79d4b
SDJ
10010 case TERNOP_COND:
10011 case TERNOP_SLICE:
65d79d4b
SDJ
10012
10013 case OP_LONG:
edd079d9 10014 case OP_FLOAT:
65d79d4b
SDJ
10015 case OP_LAST:
10016 case OP_COMPLEX:
10017 case OP_STRING:
65d79d4b
SDJ
10018 case OP_ARRAY:
10019 case OP_TYPE:
608b4967
TT
10020 case OP_TYPEOF:
10021 case OP_DECLTYPE:
6e72ca20 10022 case OP_TYPEID:
65d79d4b
SDJ
10023 case OP_NAME:
10024 case OP_OBJC_NSSTRING:
10025
10026 case UNOP_NEG:
10027 case UNOP_LOGICAL_NOT:
10028 case UNOP_COMPLEMENT:
10029 case UNOP_ADDR:
10030 case UNOP_HIGH:
aeaa2474 10031 case UNOP_CAST:
9eaf6705
TT
10032
10033 case UNOP_CAST_TYPE:
10034 case UNOP_REINTERPRET_CAST:
10035 case UNOP_DYNAMIC_CAST:
4a64f543
MS
10036 /* Unary, binary and ternary operators: We have to check
10037 their operands. If they are constant, then so is the
10038 result of that operation. For instance, if A and B are
10039 determined to be constants, then so is "A + B".
10040
10041 UNOP_IND is one exception to the rule above, because the
10042 value of *ADDR is not necessarily a constant, even when
10043 ADDR is. */
65d79d4b
SDJ
10044 break;
10045
10046 case OP_VAR_VALUE:
10047 /* Check whether the associated symbol is a constant.
4a64f543 10048
65d79d4b 10049 We use SYMBOL_CLASS rather than TYPE_CONST because it's
4a64f543
MS
10050 possible that a buggy compiler could mark a variable as
10051 constant even when it is not, and TYPE_CONST would return
10052 true in this case, while SYMBOL_CLASS wouldn't.
10053
10054 We also have to check for function symbols because they
10055 are always constant. */
65d79d4b
SDJ
10056 {
10057 struct symbol *s = exp->elts[i + 2].symbol;
10058
10059 if (SYMBOL_CLASS (s) != LOC_BLOCK
10060 && SYMBOL_CLASS (s) != LOC_CONST
10061 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10062 return 0;
10063 break;
10064 }
10065
10066 /* The default action is to return 0 because we are using
10067 the optimistic approach here: If we don't know something,
10068 then it is not a constant. */
10069 default:
10070 return 0;
10071 }
10072 }
10073
10074 return 1;
10075}
10076
c1fc2657 10077/* Watchpoint destructor. */
3a5c3e22 10078
c1fc2657 10079watchpoint::~watchpoint ()
3a5c3e22 10080{
c1fc2657
SM
10081 xfree (this->exp_string);
10082 xfree (this->exp_string_reparse);
3a5c3e22
PA
10083}
10084
348d480f
PA
10085/* Implement the "re_set" breakpoint_ops method for watchpoints. */
10086
10087static void
10088re_set_watchpoint (struct breakpoint *b)
10089{
3a5c3e22
PA
10090 struct watchpoint *w = (struct watchpoint *) b;
10091
348d480f
PA
10092 /* Watchpoint can be either on expression using entirely global
10093 variables, or it can be on local variables.
10094
10095 Watchpoints of the first kind are never auto-deleted, and even
10096 persist across program restarts. Since they can use variables
10097 from shared libraries, we need to reparse expression as libraries
10098 are loaded and unloaded.
10099
10100 Watchpoints on local variables can also change meaning as result
10101 of solib event. For example, if a watchpoint uses both a local
10102 and a global variables in expression, it's a local watchpoint,
10103 but unloading of a shared library will make the expression
10104 invalid. This is not a very common use case, but we still
10105 re-evaluate expression, to avoid surprises to the user.
10106
10107 Note that for local watchpoints, we re-evaluate it only if
10108 watchpoints frame id is still valid. If it's not, it means the
10109 watchpoint is out of scope and will be deleted soon. In fact,
10110 I'm not sure we'll ever be called in this case.
10111
10112 If a local watchpoint's frame id is still valid, then
3a5c3e22 10113 w->exp_valid_block is likewise valid, and we can safely use it.
348d480f 10114
3a5c3e22
PA
10115 Don't do anything about disabled watchpoints, since they will be
10116 reevaluated again when enabled. */
10117 update_watchpoint (w, 1 /* reparse */);
348d480f
PA
10118}
10119
77b06cd7
TJB
10120/* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10121
10122static int
10123insert_watchpoint (struct bp_location *bl)
10124{
3a5c3e22
PA
10125 struct watchpoint *w = (struct watchpoint *) bl->owner;
10126 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10127
10128 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10129 w->cond_exp.get ());
77b06cd7
TJB
10130}
10131
10132/* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10133
10134static int
73971819 10135remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
77b06cd7 10136{
3a5c3e22
PA
10137 struct watchpoint *w = (struct watchpoint *) bl->owner;
10138 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10139
10140 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10141 w->cond_exp.get ());
e09342b5
TJB
10142}
10143
e09342b5 10144static int
348d480f 10145breakpoint_hit_watchpoint (const struct bp_location *bl,
bd522513 10146 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 10147 const struct target_waitstatus *ws)
e09342b5 10148{
348d480f 10149 struct breakpoint *b = bl->owner;
3a5c3e22 10150 struct watchpoint *w = (struct watchpoint *) b;
77b06cd7 10151
348d480f
PA
10152 /* Continuable hardware watchpoints are treated as non-existent if the
10153 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10154 some data address). Otherwise gdb won't stop on a break instruction
10155 in the code (not from a breakpoint) when a hardware watchpoint has
10156 been defined. Also skip watchpoints which we know did not trigger
10157 (did not match the data address). */
10158 if (is_hardware_watchpoint (b)
3a5c3e22 10159 && w->watchpoint_triggered == watch_triggered_no)
348d480f 10160 return 0;
9c06b0b4 10161
348d480f 10162 return 1;
9c06b0b4
TJB
10163}
10164
348d480f
PA
10165static void
10166check_status_watchpoint (bpstat bs)
9c06b0b4 10167{
348d480f 10168 gdb_assert (is_watchpoint (bs->breakpoint_at));
9c06b0b4 10169
348d480f 10170 bpstat_check_watchpoint (bs);
9c06b0b4
TJB
10171}
10172
10173/* Implement the "resources_needed" breakpoint_ops method for
348d480f 10174 hardware watchpoints. */
9c06b0b4
TJB
10175
10176static int
348d480f 10177resources_needed_watchpoint (const struct bp_location *bl)
9c06b0b4 10178{
3a5c3e22
PA
10179 struct watchpoint *w = (struct watchpoint *) bl->owner;
10180 int length = w->exact? 1 : bl->length;
348d480f
PA
10181
10182 return target_region_ok_for_hw_watchpoint (bl->address, length);
9c06b0b4
TJB
10183}
10184
10185/* Implement the "works_in_software_mode" breakpoint_ops method for
348d480f 10186 hardware watchpoints. */
9c06b0b4
TJB
10187
10188static int
348d480f 10189works_in_software_mode_watchpoint (const struct breakpoint *b)
9c06b0b4 10190{
efa80663
PA
10191 /* Read and access watchpoints only work with hardware support. */
10192 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9c06b0b4
TJB
10193}
10194
9c06b0b4 10195static enum print_stop_action
348d480f 10196print_it_watchpoint (bpstat bs)
9c06b0b4 10197{
348d480f 10198 struct breakpoint *b;
348d480f 10199 enum print_stop_action result;
3a5c3e22 10200 struct watchpoint *w;
79a45e25 10201 struct ui_out *uiout = current_uiout;
348d480f
PA
10202
10203 gdb_assert (bs->bp_location_at != NULL);
10204
348d480f 10205 b = bs->breakpoint_at;
3a5c3e22 10206 w = (struct watchpoint *) b;
348d480f 10207
f303dbd6
PA
10208 annotate_watchpoint (b->number);
10209 maybe_print_thread_hit_breakpoint (uiout);
10210
d7e74731
PA
10211 string_file stb;
10212
76f9c9cf 10213 gdb::optional<ui_out_emit_tuple> tuple_emitter;
9c06b0b4
TJB
10214 switch (b->type)
10215 {
348d480f 10216 case bp_watchpoint:
9c06b0b4 10217 case bp_hardware_watchpoint:
112e8700
SM
10218 if (uiout->is_mi_like_p ())
10219 uiout->field_string
10220 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f 10221 mention (b);
76f9c9cf 10222 tuple_emitter.emplace (uiout, "value");
112e8700 10223 uiout->text ("\nOld value = ");
850645cf 10224 watchpoint_value_print (bs->old_val.get (), &stb);
112e8700
SM
10225 uiout->field_stream ("old", stb);
10226 uiout->text ("\nNew value = ");
850645cf 10227 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10228 uiout->field_stream ("new", stb);
10229 uiout->text ("\n");
348d480f
PA
10230 /* More than one watchpoint may have been triggered. */
10231 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10232 break;
10233
10234 case bp_read_watchpoint:
112e8700
SM
10235 if (uiout->is_mi_like_p ())
10236 uiout->field_string
10237 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f 10238 mention (b);
76f9c9cf 10239 tuple_emitter.emplace (uiout, "value");
112e8700 10240 uiout->text ("\nValue = ");
850645cf 10241 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10242 uiout->field_stream ("value", stb);
10243 uiout->text ("\n");
348d480f 10244 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10245 break;
10246
10247 case bp_access_watchpoint:
348d480f
PA
10248 if (bs->old_val != NULL)
10249 {
112e8700
SM
10250 if (uiout->is_mi_like_p ())
10251 uiout->field_string
10252 ("reason",
348d480f
PA
10253 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10254 mention (b);
76f9c9cf 10255 tuple_emitter.emplace (uiout, "value");
112e8700 10256 uiout->text ("\nOld value = ");
850645cf 10257 watchpoint_value_print (bs->old_val.get (), &stb);
112e8700
SM
10258 uiout->field_stream ("old", stb);
10259 uiout->text ("\nNew value = ");
348d480f
PA
10260 }
10261 else
10262 {
10263 mention (b);
112e8700
SM
10264 if (uiout->is_mi_like_p ())
10265 uiout->field_string
10266 ("reason",
348d480f 10267 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
76f9c9cf 10268 tuple_emitter.emplace (uiout, "value");
112e8700 10269 uiout->text ("\nValue = ");
348d480f 10270 }
850645cf 10271 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10272 uiout->field_stream ("new", stb);
10273 uiout->text ("\n");
348d480f 10274 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10275 break;
10276 default:
348d480f 10277 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10278 }
10279
348d480f
PA
10280 return result;
10281}
10282
10283/* Implement the "print_mention" breakpoint_ops method for hardware
10284 watchpoints. */
10285
10286static void
10287print_mention_watchpoint (struct breakpoint *b)
10288{
3a5c3e22 10289 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10290 struct ui_out *uiout = current_uiout;
46b9c129 10291 const char *tuple_name;
348d480f
PA
10292
10293 switch (b->type)
10294 {
10295 case bp_watchpoint:
112e8700 10296 uiout->text ("Watchpoint ");
46b9c129 10297 tuple_name = "wpt";
348d480f
PA
10298 break;
10299 case bp_hardware_watchpoint:
112e8700 10300 uiout->text ("Hardware watchpoint ");
46b9c129 10301 tuple_name = "wpt";
348d480f
PA
10302 break;
10303 case bp_read_watchpoint:
112e8700 10304 uiout->text ("Hardware read watchpoint ");
46b9c129 10305 tuple_name = "hw-rwpt";
348d480f
PA
10306 break;
10307 case bp_access_watchpoint:
112e8700 10308 uiout->text ("Hardware access (read/write) watchpoint ");
46b9c129 10309 tuple_name = "hw-awpt";
348d480f
PA
10310 break;
10311 default:
10312 internal_error (__FILE__, __LINE__,
10313 _("Invalid hardware watchpoint type."));
10314 }
10315
46b9c129 10316 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10317 uiout->field_int ("number", b->number);
10318 uiout->text (": ");
10319 uiout->field_string ("exp", w->exp_string);
348d480f
PA
10320}
10321
10322/* Implement the "print_recreate" breakpoint_ops method for
10323 watchpoints. */
10324
10325static void
10326print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10327{
3a5c3e22
PA
10328 struct watchpoint *w = (struct watchpoint *) b;
10329
348d480f
PA
10330 switch (b->type)
10331 {
10332 case bp_watchpoint:
10333 case bp_hardware_watchpoint:
10334 fprintf_unfiltered (fp, "watch");
10335 break;
10336 case bp_read_watchpoint:
10337 fprintf_unfiltered (fp, "rwatch");
10338 break;
10339 case bp_access_watchpoint:
10340 fprintf_unfiltered (fp, "awatch");
10341 break;
10342 default:
10343 internal_error (__FILE__, __LINE__,
10344 _("Invalid watchpoint type."));
10345 }
10346
3a5c3e22 10347 fprintf_unfiltered (fp, " %s", w->exp_string);
d9b3f62e 10348 print_recreate_thread (b, fp);
348d480f
PA
10349}
10350
427cd150
TT
10351/* Implement the "explains_signal" breakpoint_ops method for
10352 watchpoints. */
10353
47591c29 10354static int
427cd150
TT
10355explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10356{
10357 /* A software watchpoint cannot cause a signal other than
10358 GDB_SIGNAL_TRAP. */
10359 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
47591c29 10360 return 0;
427cd150 10361
47591c29 10362 return 1;
427cd150
TT
10363}
10364
348d480f
PA
10365/* The breakpoint_ops structure to be used in hardware watchpoints. */
10366
2060206e 10367static struct breakpoint_ops watchpoint_breakpoint_ops;
348d480f
PA
10368
10369/* Implement the "insert" breakpoint_ops method for
10370 masked hardware watchpoints. */
10371
10372static int
10373insert_masked_watchpoint (struct bp_location *bl)
10374{
3a5c3e22
PA
10375 struct watchpoint *w = (struct watchpoint *) bl->owner;
10376
10377 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10378 bl->watchpoint_type);
10379}
10380
10381/* Implement the "remove" breakpoint_ops method for
10382 masked hardware watchpoints. */
10383
10384static int
73971819 10385remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
348d480f 10386{
3a5c3e22
PA
10387 struct watchpoint *w = (struct watchpoint *) bl->owner;
10388
10389 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10390 bl->watchpoint_type);
10391}
10392
10393/* Implement the "resources_needed" breakpoint_ops method for
10394 masked hardware watchpoints. */
10395
10396static int
10397resources_needed_masked_watchpoint (const struct bp_location *bl)
10398{
3a5c3e22
PA
10399 struct watchpoint *w = (struct watchpoint *) bl->owner;
10400
10401 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
348d480f
PA
10402}
10403
10404/* Implement the "works_in_software_mode" breakpoint_ops method for
10405 masked hardware watchpoints. */
10406
10407static int
10408works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10409{
10410 return 0;
10411}
10412
10413/* Implement the "print_it" breakpoint_ops method for
10414 masked hardware watchpoints. */
10415
10416static enum print_stop_action
10417print_it_masked_watchpoint (bpstat bs)
10418{
10419 struct breakpoint *b = bs->breakpoint_at;
79a45e25 10420 struct ui_out *uiout = current_uiout;
348d480f
PA
10421
10422 /* Masked watchpoints have only one location. */
10423 gdb_assert (b->loc && b->loc->next == NULL);
10424
f303dbd6
PA
10425 annotate_watchpoint (b->number);
10426 maybe_print_thread_hit_breakpoint (uiout);
10427
348d480f
PA
10428 switch (b->type)
10429 {
10430 case bp_hardware_watchpoint:
112e8700
SM
10431 if (uiout->is_mi_like_p ())
10432 uiout->field_string
10433 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f
PA
10434 break;
10435
10436 case bp_read_watchpoint:
112e8700
SM
10437 if (uiout->is_mi_like_p ())
10438 uiout->field_string
10439 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f
PA
10440 break;
10441
10442 case bp_access_watchpoint:
112e8700
SM
10443 if (uiout->is_mi_like_p ())
10444 uiout->field_string
10445 ("reason",
348d480f
PA
10446 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10447 break;
10448 default:
10449 internal_error (__FILE__, __LINE__,
10450 _("Invalid hardware watchpoint type."));
10451 }
10452
10453 mention (b);
112e8700 10454 uiout->text (_("\n\
9c06b0b4
TJB
10455Check the underlying instruction at PC for the memory\n\
10456address and value which triggered this watchpoint.\n"));
112e8700 10457 uiout->text ("\n");
9c06b0b4
TJB
10458
10459 /* More than one watchpoint may have been triggered. */
10460 return PRINT_UNKNOWN;
10461}
10462
10463/* Implement the "print_one_detail" breakpoint_ops method for
10464 masked hardware watchpoints. */
10465
10466static void
10467print_one_detail_masked_watchpoint (const struct breakpoint *b,
10468 struct ui_out *uiout)
10469{
3a5c3e22
PA
10470 struct watchpoint *w = (struct watchpoint *) b;
10471
9c06b0b4
TJB
10472 /* Masked watchpoints have only one location. */
10473 gdb_assert (b->loc && b->loc->next == NULL);
10474
112e8700
SM
10475 uiout->text ("\tmask ");
10476 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10477 uiout->text ("\n");
9c06b0b4
TJB
10478}
10479
10480/* Implement the "print_mention" breakpoint_ops method for
10481 masked hardware watchpoints. */
10482
10483static void
10484print_mention_masked_watchpoint (struct breakpoint *b)
10485{
3a5c3e22 10486 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10487 struct ui_out *uiout = current_uiout;
46b9c129 10488 const char *tuple_name;
9c06b0b4
TJB
10489
10490 switch (b->type)
10491 {
10492 case bp_hardware_watchpoint:
112e8700 10493 uiout->text ("Masked hardware watchpoint ");
46b9c129 10494 tuple_name = "wpt";
9c06b0b4
TJB
10495 break;
10496 case bp_read_watchpoint:
112e8700 10497 uiout->text ("Masked hardware read watchpoint ");
46b9c129 10498 tuple_name = "hw-rwpt";
9c06b0b4
TJB
10499 break;
10500 case bp_access_watchpoint:
112e8700 10501 uiout->text ("Masked hardware access (read/write) watchpoint ");
46b9c129 10502 tuple_name = "hw-awpt";
9c06b0b4
TJB
10503 break;
10504 default:
10505 internal_error (__FILE__, __LINE__,
10506 _("Invalid hardware watchpoint type."));
10507 }
10508
46b9c129 10509 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10510 uiout->field_int ("number", b->number);
10511 uiout->text (": ");
10512 uiout->field_string ("exp", w->exp_string);
9c06b0b4
TJB
10513}
10514
10515/* Implement the "print_recreate" breakpoint_ops method for
10516 masked hardware watchpoints. */
10517
10518static void
10519print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10520{
3a5c3e22 10521 struct watchpoint *w = (struct watchpoint *) b;
9c06b0b4
TJB
10522 char tmp[40];
10523
10524 switch (b->type)
10525 {
10526 case bp_hardware_watchpoint:
10527 fprintf_unfiltered (fp, "watch");
10528 break;
10529 case bp_read_watchpoint:
10530 fprintf_unfiltered (fp, "rwatch");
10531 break;
10532 case bp_access_watchpoint:
10533 fprintf_unfiltered (fp, "awatch");
10534 break;
10535 default:
10536 internal_error (__FILE__, __LINE__,
10537 _("Invalid hardware watchpoint type."));
10538 }
10539
3a5c3e22
PA
10540 sprintf_vma (tmp, w->hw_wp_mask);
10541 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
d9b3f62e 10542 print_recreate_thread (b, fp);
9c06b0b4
TJB
10543}
10544
10545/* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10546
2060206e 10547static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
9c06b0b4
TJB
10548
10549/* Tell whether the given watchpoint is a masked hardware watchpoint. */
10550
10551static int
10552is_masked_watchpoint (const struct breakpoint *b)
10553{
10554 return b->ops == &masked_watchpoint_breakpoint_ops;
10555}
10556
53a5351d
JM
10557/* accessflag: hw_write: watch write,
10558 hw_read: watch read,
10559 hw_access: watch access (read or write) */
c906108c 10560static void
bbc13ae3 10561watch_command_1 (const char *arg, int accessflag, int from_tty,
84f4c1fe 10562 int just_location, int internal)
c906108c 10563{
c1fc2657 10564 struct breakpoint *scope_breakpoint = NULL;
270140bd 10565 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
850645cf 10566 struct value *mark, *result;
bb9d5f81 10567 int saved_bitpos = 0, saved_bitsize = 0;
bbc13ae3
KS
10568 const char *exp_start = NULL;
10569 const char *exp_end = NULL;
10570 const char *tok, *end_tok;
9c06b0b4 10571 int toklen = -1;
bbc13ae3
KS
10572 const char *cond_start = NULL;
10573 const char *cond_end = NULL;
c906108c 10574 enum bptype bp_type;
37e4754d 10575 int thread = -1;
0cf6dd15 10576 int pc = 0;
9c06b0b4
TJB
10577 /* Flag to indicate whether we are going to use masks for
10578 the hardware watchpoint. */
10579 int use_mask = 0;
10580 CORE_ADDR mask = 0;
c906108c 10581
37e4754d
LM
10582 /* Make sure that we actually have parameters to parse. */
10583 if (arg != NULL && arg[0] != '\0')
10584 {
bbc13ae3
KS
10585 const char *value_start;
10586
10587 exp_end = arg + strlen (arg);
37e4754d 10588
9c06b0b4
TJB
10589 /* Look for "parameter value" pairs at the end
10590 of the arguments string. */
bbc13ae3 10591 for (tok = exp_end - 1; tok > arg; tok--)
9c06b0b4
TJB
10592 {
10593 /* Skip whitespace at the end of the argument list. */
10594 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10595 tok--;
10596
10597 /* Find the beginning of the last token.
10598 This is the value of the parameter. */
10599 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10600 tok--;
10601 value_start = tok + 1;
10602
10603 /* Skip whitespace. */
10604 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10605 tok--;
10606
10607 end_tok = tok;
10608
10609 /* Find the beginning of the second to last token.
10610 This is the parameter itself. */
10611 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10612 tok--;
10613 tok++;
10614 toklen = end_tok - tok + 1;
10615
61012eef 10616 if (toklen == 6 && startswith (tok, "thread"))
9c06b0b4 10617 {
5d5658a1 10618 struct thread_info *thr;
9c06b0b4
TJB
10619 /* At this point we've found a "thread" token, which means
10620 the user is trying to set a watchpoint that triggers
10621 only in a specific thread. */
5d5658a1 10622 const char *endp;
37e4754d 10623
9c06b0b4
TJB
10624 if (thread != -1)
10625 error(_("You can specify only one thread."));
37e4754d 10626
9c06b0b4 10627 /* Extract the thread ID from the next token. */
5d5658a1 10628 thr = parse_thread_id (value_start, &endp);
37e4754d 10629
5d5658a1 10630 /* Check if the user provided a valid thread ID. */
9c06b0b4 10631 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
5d5658a1 10632 invalid_thread_id_error (value_start);
9c06b0b4 10633
5d5658a1 10634 thread = thr->global_num;
9c06b0b4 10635 }
61012eef 10636 else if (toklen == 4 && startswith (tok, "mask"))
9c06b0b4
TJB
10637 {
10638 /* We've found a "mask" token, which means the user wants to
10639 create a hardware watchpoint that is going to have the mask
10640 facility. */
10641 struct value *mask_value, *mark;
37e4754d 10642
9c06b0b4
TJB
10643 if (use_mask)
10644 error(_("You can specify only one mask."));
37e4754d 10645
9c06b0b4 10646 use_mask = just_location = 1;
37e4754d 10647
9c06b0b4
TJB
10648 mark = value_mark ();
10649 mask_value = parse_to_comma_and_eval (&value_start);
10650 mask = value_as_address (mask_value);
10651 value_free_to_mark (mark);
10652 }
10653 else
10654 /* We didn't recognize what we found. We should stop here. */
10655 break;
37e4754d 10656
9c06b0b4
TJB
10657 /* Truncate the string and get rid of the "parameter value" pair before
10658 the arguments string is parsed by the parse_exp_1 function. */
bbc13ae3 10659 exp_end = tok;
9c06b0b4 10660 }
37e4754d 10661 }
bbc13ae3
KS
10662 else
10663 exp_end = arg;
37e4754d 10664
bbc13ae3
KS
10665 /* Parse the rest of the arguments. From here on out, everything
10666 is in terms of a newly allocated string instead of the original
10667 ARG. */
aee1fcdf 10668 innermost_block.reset ();
81b1e71c
TT
10669 std::string expression (arg, exp_end - arg);
10670 exp_start = arg = expression.c_str ();
4d01a485 10671 expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
c906108c 10672 exp_end = arg;
fa8a61dc
TT
10673 /* Remove trailing whitespace from the expression before saving it.
10674 This makes the eventual display of the expression string a bit
10675 prettier. */
10676 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10677 --exp_end;
10678
65d79d4b 10679 /* Checking if the expression is not constant. */
4d01a485 10680 if (watchpoint_exp_is_const (exp.get ()))
65d79d4b
SDJ
10681 {
10682 int len;
10683
10684 len = exp_end - exp_start;
10685 while (len > 0 && isspace (exp_start[len - 1]))
10686 len--;
10687 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10688 }
10689
aee1fcdf 10690 exp_valid_block = innermost_block.block ();
c906108c 10691 mark = value_mark ();
850645cf
TT
10692 struct value *val_as_value = nullptr;
10693 fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10694 just_location);
06a64a0b 10695
850645cf 10696 if (val_as_value != NULL && just_location)
bb9d5f81 10697 {
850645cf
TT
10698 saved_bitpos = value_bitpos (val_as_value);
10699 saved_bitsize = value_bitsize (val_as_value);
bb9d5f81
PP
10700 }
10701
850645cf 10702 value_ref_ptr val;
06a64a0b
TT
10703 if (just_location)
10704 {
9c06b0b4
TJB
10705 int ret;
10706
06a64a0b 10707 exp_valid_block = NULL;
850645cf 10708 val = release_value (value_addr (result));
06a64a0b 10709 value_free_to_mark (mark);
9c06b0b4
TJB
10710
10711 if (use_mask)
10712 {
850645cf 10713 ret = target_masked_watch_num_registers (value_as_address (val.get ()),
9c06b0b4
TJB
10714 mask);
10715 if (ret == -1)
10716 error (_("This target does not support masked watchpoints."));
10717 else if (ret == -2)
10718 error (_("Invalid mask or memory region."));
10719 }
06a64a0b 10720 }
850645cf
TT
10721 else if (val_as_value != NULL)
10722 val = release_value (val_as_value);
c906108c 10723
f1735a53
TT
10724 tok = skip_spaces (arg);
10725 end_tok = skip_to_space (tok);
c906108c
SS
10726
10727 toklen = end_tok - tok;
10728 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10729 {
aee1fcdf 10730 innermost_block.reset ();
c906108c 10731 tok = cond_start = end_tok + 1;
4d01a485 10732 parse_exp_1 (&tok, 0, 0, 0);
60e1c644
PA
10733
10734 /* The watchpoint expression may not be local, but the condition
10735 may still be. E.g.: `watch global if local > 0'. */
aee1fcdf 10736 cond_exp_valid_block = innermost_block.block ();
60e1c644 10737
c906108c
SS
10738 cond_end = tok;
10739 }
10740 if (*tok)
8a3fe4f8 10741 error (_("Junk at end of command."));
c906108c 10742
441d7c93
PA
10743 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10744
10745 /* Save this because create_internal_breakpoint below invalidates
10746 'wp_frame'. */
10747 frame_id watchpoint_frame = get_frame_id (wp_frame);
d983da9c
DJ
10748
10749 /* If the expression is "local", then set up a "watchpoint scope"
10750 breakpoint at the point where we've left the scope of the watchpoint
10751 expression. Create the scope breakpoint before the watchpoint, so
10752 that we will encounter it first in bpstat_stop_status. */
441d7c93 10753 if (exp_valid_block != NULL && wp_frame != NULL)
d983da9c 10754 {
441d7c93
PA
10755 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10756
10757 if (frame_id_p (caller_frame_id))
edb3359d 10758 {
441d7c93
PA
10759 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10760 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10761
edb3359d 10762 scope_breakpoint
441d7c93 10763 = create_internal_breakpoint (caller_arch, caller_pc,
06edf0c0
PA
10764 bp_watchpoint_scope,
10765 &momentary_breakpoint_ops);
d983da9c 10766
441d7c93
PA
10767 /* create_internal_breakpoint could invalidate WP_FRAME. */
10768 wp_frame = NULL;
10769
edb3359d 10770 scope_breakpoint->enable_state = bp_enabled;
d983da9c 10771
edb3359d
DJ
10772 /* Automatically delete the breakpoint when it hits. */
10773 scope_breakpoint->disposition = disp_del;
d983da9c 10774
edb3359d 10775 /* Only break in the proper frame (help with recursion). */
441d7c93 10776 scope_breakpoint->frame_id = caller_frame_id;
d983da9c 10777
edb3359d 10778 /* Set the address at which we will stop. */
441d7c93
PA
10779 scope_breakpoint->loc->gdbarch = caller_arch;
10780 scope_breakpoint->loc->requested_address = caller_pc;
edb3359d 10781 scope_breakpoint->loc->address
a6d9a66e
UW
10782 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10783 scope_breakpoint->loc->requested_address,
edb3359d
DJ
10784 scope_breakpoint->type);
10785 }
d983da9c
DJ
10786 }
10787
e8369a73
AB
10788 /* Now set up the breakpoint. We create all watchpoints as hardware
10789 watchpoints here even if hardware watchpoints are turned off, a call
10790 to update_watchpoint later in this function will cause the type to
10791 drop back to bp_watchpoint (software watchpoint) if required. */
10792
10793 if (accessflag == hw_read)
10794 bp_type = bp_read_watchpoint;
10795 else if (accessflag == hw_access)
10796 bp_type = bp_access_watchpoint;
10797 else
10798 bp_type = bp_hardware_watchpoint;
3a5c3e22 10799
b270e6f9 10800 std::unique_ptr<watchpoint> w (new watchpoint ());
c1fc2657 10801
348d480f 10802 if (use_mask)
b270e6f9 10803 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 10804 &masked_watchpoint_breakpoint_ops);
348d480f 10805 else
b270e6f9 10806 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 10807 &watchpoint_breakpoint_ops);
c1fc2657
SM
10808 w->thread = thread;
10809 w->disposition = disp_donttouch;
10810 w->pspace = current_program_space;
b22e99fd 10811 w->exp = std::move (exp);
3a5c3e22
PA
10812 w->exp_valid_block = exp_valid_block;
10813 w->cond_exp_valid_block = cond_exp_valid_block;
06a64a0b
TT
10814 if (just_location)
10815 {
850645cf
TT
10816 struct type *t = value_type (val.get ());
10817 CORE_ADDR addr = value_as_address (val.get ());
06a64a0b 10818
43cc5389
TT
10819 w->exp_string_reparse
10820 = current_language->la_watch_location_expression (t, addr).release ();
06a64a0b 10821
3a5c3e22 10822 w->exp_string = xstrprintf ("-location %.*s",
d63d0675 10823 (int) (exp_end - exp_start), exp_start);
06a64a0b
TT
10824 }
10825 else
3a5c3e22 10826 w->exp_string = savestring (exp_start, exp_end - exp_start);
9c06b0b4
TJB
10827
10828 if (use_mask)
10829 {
3a5c3e22 10830 w->hw_wp_mask = mask;
9c06b0b4
TJB
10831 }
10832 else
10833 {
3a5c3e22 10834 w->val = val;
bb9d5f81
PP
10835 w->val_bitpos = saved_bitpos;
10836 w->val_bitsize = saved_bitsize;
3a5c3e22 10837 w->val_valid = 1;
9c06b0b4 10838 }
77b06cd7 10839
c906108c 10840 if (cond_start)
c1fc2657 10841 w->cond_string = savestring (cond_start, cond_end - cond_start);
c906108c 10842 else
c1fc2657 10843 w->cond_string = 0;
c5aa993b 10844
441d7c93 10845 if (frame_id_p (watchpoint_frame))
f6bc2008 10846 {
441d7c93 10847 w->watchpoint_frame = watchpoint_frame;
3a5c3e22 10848 w->watchpoint_thread = inferior_ptid;
f6bc2008 10849 }
c906108c 10850 else
f6bc2008 10851 {
3a5c3e22
PA
10852 w->watchpoint_frame = null_frame_id;
10853 w->watchpoint_thread = null_ptid;
f6bc2008 10854 }
c906108c 10855
d983da9c 10856 if (scope_breakpoint != NULL)
c906108c 10857 {
d983da9c
DJ
10858 /* The scope breakpoint is related to the watchpoint. We will
10859 need to act on them together. */
c1fc2657 10860 w->related_breakpoint = scope_breakpoint;
b270e6f9 10861 scope_breakpoint->related_breakpoint = w.get ();
c906108c 10862 }
d983da9c 10863
06a64a0b
TT
10864 if (!just_location)
10865 value_free_to_mark (mark);
2d134ed3 10866
b270e6f9
TT
10867 /* Finally update the new watchpoint. This creates the locations
10868 that should be inserted. */
10869 update_watchpoint (w.get (), 1);
a9634178 10870
b270e6f9 10871 install_breakpoint (internal, std::move (w), 1);
c906108c
SS
10872}
10873
e09342b5 10874/* Return count of debug registers needed to watch the given expression.
e09342b5 10875 If the watchpoint cannot be handled in hardware return zero. */
c906108c 10876
c906108c 10877static int
a9634178 10878can_use_hardware_watchpoint (struct value *v)
c906108c
SS
10879{
10880 int found_memory_cnt = 0;
2e70b7b9 10881 struct value *head = v;
c906108c
SS
10882
10883 /* Did the user specifically forbid us to use hardware watchpoints? */
c5aa993b 10884 if (!can_use_hw_watchpoints)
c906108c 10885 return 0;
c5aa993b 10886
5c44784c
JM
10887 /* Make sure that the value of the expression depends only upon
10888 memory contents, and values computed from them within GDB. If we
10889 find any register references or function calls, we can't use a
10890 hardware watchpoint.
10891
10892 The idea here is that evaluating an expression generates a series
10893 of values, one holding the value of every subexpression. (The
10894 expression a*b+c has five subexpressions: a, b, a*b, c, and
10895 a*b+c.) GDB's values hold almost enough information to establish
10896 the criteria given above --- they identify memory lvalues,
10897 register lvalues, computed values, etcetera. So we can evaluate
10898 the expression, and then scan the chain of values that leaves
10899 behind to decide whether we can detect any possible change to the
10900 expression's final value using only hardware watchpoints.
10901
10902 However, I don't think that the values returned by inferior
10903 function calls are special in any way. So this function may not
10904 notice that an expression involving an inferior function call
10905 can't be watched with hardware watchpoints. FIXME. */
17cf0ecd 10906 for (; v; v = value_next (v))
c906108c 10907 {
5c44784c 10908 if (VALUE_LVAL (v) == lval_memory)
c906108c 10909 {
8464be76
DJ
10910 if (v != head && value_lazy (v))
10911 /* A lazy memory lvalue in the chain is one that GDB never
10912 needed to fetch; we either just used its address (e.g.,
10913 `a' in `a.b') or we never needed it at all (e.g., `a'
10914 in `a,b'). This doesn't apply to HEAD; if that is
10915 lazy then it was not readable, but watch it anyway. */
5c44784c 10916 ;
53a5351d 10917 else
5c44784c
JM
10918 {
10919 /* Ahh, memory we actually used! Check if we can cover
10920 it with hardware watchpoints. */
df407dfe 10921 struct type *vtype = check_typedef (value_type (v));
2e70b7b9
MS
10922
10923 /* We only watch structs and arrays if user asked for it
10924 explicitly, never if they just happen to appear in a
10925 middle of some value chain. */
10926 if (v == head
10927 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10928 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10929 {
42ae5230 10930 CORE_ADDR vaddr = value_address (v);
e09342b5
TJB
10931 int len;
10932 int num_regs;
10933
a9634178 10934 len = (target_exact_watchpoints
e09342b5
TJB
10935 && is_scalar_type_recursive (vtype))?
10936 1 : TYPE_LENGTH (value_type (v));
2e70b7b9 10937
e09342b5
TJB
10938 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10939 if (!num_regs)
2e70b7b9
MS
10940 return 0;
10941 else
e09342b5 10942 found_memory_cnt += num_regs;
2e70b7b9 10943 }
5c44784c 10944 }
c5aa993b 10945 }
5086187c
AC
10946 else if (VALUE_LVAL (v) != not_lval
10947 && deprecated_value_modifiable (v) == 0)
38b6c3b3 10948 return 0; /* These are values from the history (e.g., $1). */
5086187c 10949 else if (VALUE_LVAL (v) == lval_register)
38b6c3b3 10950 return 0; /* Cannot watch a register with a HW watchpoint. */
c906108c
SS
10951 }
10952
10953 /* The expression itself looks suitable for using a hardware
10954 watchpoint, but give the target machine a chance to reject it. */
10955 return found_memory_cnt;
10956}
10957
8b93c638 10958void
f2fc3015 10959watch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 10960{
84f4c1fe 10961 watch_command_1 (arg, hw_write, from_tty, 0, internal);
06a64a0b
TT
10962}
10963
06a64a0b
TT
10964/* A helper function that looks for the "-location" argument and then
10965 calls watch_command_1. */
10966
10967static void
0b39b52e 10968watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
06a64a0b
TT
10969{
10970 int just_location = 0;
10971
10972 if (arg
10973 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10974 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10975 {
e9cafbcc 10976 arg = skip_spaces (arg);
06a64a0b
TT
10977 just_location = 1;
10978 }
10979
84f4c1fe 10980 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
8b93c638 10981}
8926118c 10982
c5aa993b 10983static void
0b39b52e 10984watch_command (const char *arg, int from_tty)
c906108c 10985{
06a64a0b 10986 watch_maybe_just_location (arg, hw_write, from_tty);
c906108c
SS
10987}
10988
8b93c638 10989void
f2fc3015 10990rwatch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 10991{
84f4c1fe 10992 watch_command_1 (arg, hw_read, from_tty, 0, internal);
8b93c638 10993}
8926118c 10994
c5aa993b 10995static void
0b39b52e 10996rwatch_command (const char *arg, int from_tty)
c906108c 10997{
06a64a0b 10998 watch_maybe_just_location (arg, hw_read, from_tty);
c906108c
SS
10999}
11000
8b93c638 11001void
f2fc3015 11002awatch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 11003{
84f4c1fe 11004 watch_command_1 (arg, hw_access, from_tty, 0, internal);
8b93c638 11005}
8926118c 11006
c5aa993b 11007static void
0b39b52e 11008awatch_command (const char *arg, int from_tty)
c906108c 11009{
06a64a0b 11010 watch_maybe_just_location (arg, hw_access, from_tty);
c906108c 11011}
c906108c 11012\f
c5aa993b 11013
cfc31633
PA
11014/* Data for the FSM that manages the until(location)/advance commands
11015 in infcmd.c. Here because it uses the mechanisms of
11016 breakpoints. */
c906108c 11017
cfc31633 11018struct until_break_fsm
bfec99b2 11019{
cfc31633
PA
11020 /* The base class. */
11021 struct thread_fsm thread_fsm;
11022
11023 /* The thread that as current when the command was executed. */
11024 int thread;
11025
11026 /* The breakpoint set at the destination location. */
11027 struct breakpoint *location_breakpoint;
11028
11029 /* Breakpoint set at the return address in the caller frame. May be
11030 NULL. */
11031 struct breakpoint *caller_breakpoint;
bfec99b2
PA
11032};
11033
8980e177
PA
11034static void until_break_fsm_clean_up (struct thread_fsm *self,
11035 struct thread_info *thread);
11036static int until_break_fsm_should_stop (struct thread_fsm *self,
11037 struct thread_info *thread);
cfc31633
PA
11038static enum async_reply_reason
11039 until_break_fsm_async_reply_reason (struct thread_fsm *self);
11040
11041/* until_break_fsm's vtable. */
11042
11043static struct thread_fsm_ops until_break_fsm_ops =
11044{
11045 NULL, /* dtor */
11046 until_break_fsm_clean_up,
11047 until_break_fsm_should_stop,
11048 NULL, /* return_value */
11049 until_break_fsm_async_reply_reason,
11050};
11051
11052/* Allocate a new until_break_command_fsm. */
11053
11054static struct until_break_fsm *
8980e177 11055new_until_break_fsm (struct interp *cmd_interp, int thread,
454dafbd
TT
11056 breakpoint_up &&location_breakpoint,
11057 breakpoint_up &&caller_breakpoint)
cfc31633
PA
11058{
11059 struct until_break_fsm *sm;
11060
11061 sm = XCNEW (struct until_break_fsm);
8980e177 11062 thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
cfc31633
PA
11063
11064 sm->thread = thread;
454dafbd
TT
11065 sm->location_breakpoint = location_breakpoint.release ();
11066 sm->caller_breakpoint = caller_breakpoint.release ();
cfc31633
PA
11067
11068 return sm;
11069}
11070
11071/* Implementation of the 'should_stop' FSM method for the
11072 until(location)/advance commands. */
11073
11074static int
8980e177
PA
11075until_break_fsm_should_stop (struct thread_fsm *self,
11076 struct thread_info *tp)
cfc31633
PA
11077{
11078 struct until_break_fsm *sm = (struct until_break_fsm *) self;
cfc31633
PA
11079
11080 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11081 sm->location_breakpoint) != NULL
11082 || (sm->caller_breakpoint != NULL
11083 && bpstat_find_breakpoint (tp->control.stop_bpstat,
11084 sm->caller_breakpoint) != NULL))
11085 thread_fsm_set_finished (self);
11086
11087 return 1;
11088}
11089
11090/* Implementation of the 'clean_up' FSM method for the
11091 until(location)/advance commands. */
11092
c2c6d25f 11093static void
8980e177
PA
11094until_break_fsm_clean_up (struct thread_fsm *self,
11095 struct thread_info *thread)
43ff13b4 11096{
cfc31633 11097 struct until_break_fsm *sm = (struct until_break_fsm *) self;
bfec99b2 11098
cfc31633
PA
11099 /* Clean up our temporary breakpoints. */
11100 if (sm->location_breakpoint != NULL)
11101 {
11102 delete_breakpoint (sm->location_breakpoint);
11103 sm->location_breakpoint = NULL;
11104 }
11105 if (sm->caller_breakpoint != NULL)
11106 {
11107 delete_breakpoint (sm->caller_breakpoint);
11108 sm->caller_breakpoint = NULL;
11109 }
11110 delete_longjmp_breakpoint (sm->thread);
11111}
11112
11113/* Implementation of the 'async_reply_reason' FSM method for the
11114 until(location)/advance commands. */
11115
11116static enum async_reply_reason
11117until_break_fsm_async_reply_reason (struct thread_fsm *self)
11118{
11119 return EXEC_ASYNC_LOCATION_REACHED;
43ff13b4
JM
11120}
11121
c906108c 11122void
f2fc3015 11123until_break_command (const char *arg, int from_tty, int anywhere)
c906108c 11124{
8556afb4
PA
11125 struct frame_info *frame;
11126 struct gdbarch *frame_gdbarch;
11127 struct frame_id stack_frame_id;
11128 struct frame_id caller_frame_id;
ffc2605c 11129 struct cleanup *old_chain;
186c406b
TT
11130 int thread;
11131 struct thread_info *tp;
cfc31633 11132 struct until_break_fsm *sm;
c906108c 11133
70509625 11134 clear_proceed_status (0);
c906108c
SS
11135
11136 /* Set a breakpoint where the user wants it and at return from
4a64f543 11137 this function. */
c5aa993b 11138
ffc2605c 11139 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f 11140
6c5b2ebe
PA
11141 std::vector<symtab_and_line> sals
11142 = (last_displayed_sal_is_valid ()
11143 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11144 get_last_displayed_symtab (),
11145 get_last_displayed_line ())
11146 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11147 NULL, (struct symtab *) NULL, 0));
c5aa993b 11148
6c5b2ebe 11149 if (sals.size () != 1)
8a3fe4f8 11150 error (_("Couldn't get information on specified line."));
c5aa993b 11151
6c5b2ebe 11152 symtab_and_line &sal = sals[0];
c5aa993b 11153
c906108c 11154 if (*arg)
8a3fe4f8 11155 error (_("Junk at end of arguments."));
c5aa993b 11156
c906108c 11157 resolve_sal_pc (&sal);
c5aa993b 11158
186c406b 11159 tp = inferior_thread ();
5d5658a1 11160 thread = tp->global_num;
186c406b 11161
883bc8d1
PA
11162 old_chain = make_cleanup (null_cleanup, NULL);
11163
8556afb4
PA
11164 /* Note linespec handling above invalidates the frame chain.
11165 Installing a breakpoint also invalidates the frame chain (as it
11166 may need to switch threads), so do any frame handling before
11167 that. */
11168
11169 frame = get_selected_frame (NULL);
11170 frame_gdbarch = get_frame_arch (frame);
11171 stack_frame_id = get_stack_frame_id (frame);
11172 caller_frame_id = frame_unwind_caller_id (frame);
883bc8d1 11173
ae66c1fc
EZ
11174 /* Keep within the current frame, or in frames called by the current
11175 one. */
edb3359d 11176
454dafbd 11177 breakpoint_up caller_breakpoint;
883bc8d1 11178 if (frame_id_p (caller_frame_id))
c906108c 11179 {
883bc8d1 11180 struct symtab_and_line sal2;
cfc31633 11181 struct gdbarch *caller_gdbarch;
883bc8d1
PA
11182
11183 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11184 sal2.pc = frame_unwind_caller_pc (frame);
cfc31633
PA
11185 caller_gdbarch = frame_unwind_caller_arch (frame);
11186 caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11187 sal2,
11188 caller_frame_id,
11189 bp_until);
186c406b 11190
883bc8d1 11191 set_longjmp_breakpoint (tp, caller_frame_id);
186c406b 11192 make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
c906108c 11193 }
c5aa993b 11194
c70a6932
JK
11195 /* set_momentary_breakpoint could invalidate FRAME. */
11196 frame = NULL;
11197
454dafbd 11198 breakpoint_up location_breakpoint;
883bc8d1
PA
11199 if (anywhere)
11200 /* If the user told us to continue until a specified location,
11201 we don't specify a frame at which we need to stop. */
cfc31633
PA
11202 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11203 null_frame_id, bp_until);
883bc8d1
PA
11204 else
11205 /* Otherwise, specify the selected frame, because we want to stop
11206 only at the very same frame. */
cfc31633
PA
11207 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11208 stack_frame_id, bp_until);
883bc8d1 11209
8980e177 11210 sm = new_until_break_fsm (command_interp (), tp->global_num,
454dafbd
TT
11211 std::move (location_breakpoint),
11212 std::move (caller_breakpoint));
cfc31633 11213 tp->thread_fsm = &sm->thread_fsm;
f107f563 11214
cfc31633 11215 discard_cleanups (old_chain);
f107f563 11216
cfc31633 11217 proceed (-1, GDB_SIGNAL_DEFAULT);
c906108c 11218}
ae66c1fc 11219
c906108c
SS
11220/* This function attempts to parse an optional "if <cond>" clause
11221 from the arg string. If one is not found, it returns NULL.
c5aa993b 11222
c906108c
SS
11223 Else, it returns a pointer to the condition string. (It does not
11224 attempt to evaluate the string against a particular block.) And,
11225 it updates arg to point to the first character following the parsed
4a64f543 11226 if clause in the arg string. */
53a5351d 11227
63160a43
PA
11228const char *
11229ep_parse_optional_if_clause (const char **arg)
c906108c 11230{
63160a43 11231 const char *cond_string;
c5aa993b
JM
11232
11233 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
c906108c 11234 return NULL;
c5aa993b 11235
4a64f543 11236 /* Skip the "if" keyword. */
c906108c 11237 (*arg) += 2;
c5aa993b 11238
c906108c 11239 /* Skip any extra leading whitespace, and record the start of the
4a64f543 11240 condition string. */
f1735a53 11241 *arg = skip_spaces (*arg);
c906108c 11242 cond_string = *arg;
c5aa993b 11243
4a64f543
MS
11244 /* Assume that the condition occupies the remainder of the arg
11245 string. */
c906108c 11246 (*arg) += strlen (cond_string);
c5aa993b 11247
c906108c
SS
11248 return cond_string;
11249}
c5aa993b 11250
c906108c
SS
11251/* Commands to deal with catching events, such as signals, exceptions,
11252 process start/exit, etc. */
c5aa993b
JM
11253
11254typedef enum
11255{
44feb3ce
TT
11256 catch_fork_temporary, catch_vfork_temporary,
11257 catch_fork_permanent, catch_vfork_permanent
c5aa993b
JM
11258}
11259catch_fork_kind;
11260
c906108c 11261static void
eb4c3f4a 11262catch_fork_command_1 (const char *arg, int from_tty,
cc59ec59 11263 struct cmd_list_element *command)
c906108c 11264{
a6d9a66e 11265 struct gdbarch *gdbarch = get_current_arch ();
63160a43 11266 const char *cond_string = NULL;
44feb3ce
TT
11267 catch_fork_kind fork_kind;
11268 int tempflag;
11269
11270 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11271 tempflag = (fork_kind == catch_fork_temporary
11272 || fork_kind == catch_vfork_temporary);
c5aa993b 11273
44feb3ce
TT
11274 if (!arg)
11275 arg = "";
f1735a53 11276 arg = skip_spaces (arg);
c5aa993b 11277
c906108c 11278 /* The allowed syntax is:
c5aa993b
JM
11279 catch [v]fork
11280 catch [v]fork if <cond>
11281
4a64f543 11282 First, check if there's an if clause. */
c906108c 11283 cond_string = ep_parse_optional_if_clause (&arg);
c5aa993b 11284
c906108c 11285 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11286 error (_("Junk at end of arguments."));
c5aa993b 11287
c906108c 11288 /* If this target supports it, create a fork or vfork catchpoint
4a64f543 11289 and enable reporting of such events. */
c5aa993b
JM
11290 switch (fork_kind)
11291 {
44feb3ce
TT
11292 case catch_fork_temporary:
11293 case catch_fork_permanent:
a6d9a66e 11294 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11295 &catch_fork_breakpoint_ops);
c906108c 11296 break;
44feb3ce
TT
11297 case catch_vfork_temporary:
11298 case catch_vfork_permanent:
a6d9a66e 11299 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11300 &catch_vfork_breakpoint_ops);
c906108c 11301 break;
c5aa993b 11302 default:
8a3fe4f8 11303 error (_("unsupported or unknown fork kind; cannot catch it"));
c906108c 11304 break;
c5aa993b 11305 }
c906108c
SS
11306}
11307
11308static void
eb4c3f4a 11309catch_exec_command_1 (const char *arg, int from_tty,
cc59ec59 11310 struct cmd_list_element *command)
c906108c 11311{
a6d9a66e 11312 struct gdbarch *gdbarch = get_current_arch ();
44feb3ce 11313 int tempflag;
63160a43 11314 const char *cond_string = NULL;
c906108c 11315
44feb3ce
TT
11316 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11317
11318 if (!arg)
11319 arg = "";
f1735a53 11320 arg = skip_spaces (arg);
c906108c
SS
11321
11322 /* The allowed syntax is:
c5aa993b
JM
11323 catch exec
11324 catch exec if <cond>
c906108c 11325
4a64f543 11326 First, check if there's an if clause. */
c906108c
SS
11327 cond_string = ep_parse_optional_if_clause (&arg);
11328
11329 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11330 error (_("Junk at end of arguments."));
c906108c 11331
b270e6f9
TT
11332 std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11333 init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
b4d90040
PA
11334 &catch_exec_breakpoint_ops);
11335 c->exec_pathname = NULL;
11336
b270e6f9 11337 install_breakpoint (0, std::move (c), 1);
c906108c 11338}
c5aa993b 11339
9ac4176b 11340void
28010a5d
PA
11341init_ada_exception_breakpoint (struct breakpoint *b,
11342 struct gdbarch *gdbarch,
11343 struct symtab_and_line sal,
f2fc3015 11344 const char *addr_string,
c0a91b2b 11345 const struct breakpoint_ops *ops,
28010a5d 11346 int tempflag,
349774ef 11347 int enabled,
28010a5d 11348 int from_tty)
f7f9143b 11349{
f7f9143b
JB
11350 if (from_tty)
11351 {
5af949e3
UW
11352 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11353 if (!loc_gdbarch)
11354 loc_gdbarch = gdbarch;
11355
6c95b8df
PA
11356 describe_other_breakpoints (loc_gdbarch,
11357 sal.pspace, sal.pc, sal.section, -1);
f7f9143b
JB
11358 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11359 version for exception catchpoints, because two catchpoints
11360 used for different exception names will use the same address.
11361 In this case, a "breakpoint ... also set at..." warning is
4a64f543 11362 unproductive. Besides, the warning phrasing is also a bit
e5dd4106 11363 inappropriate, we should use the word catchpoint, and tell
f7f9143b
JB
11364 the user what type of catchpoint it is. The above is good
11365 enough for now, though. */
11366 }
11367
28010a5d 11368 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
f7f9143b 11369
349774ef 11370 b->enable_state = enabled ? bp_enabled : bp_disabled;
f7f9143b 11371 b->disposition = tempflag ? disp_del : disp_donttouch;
d28cd78a
TT
11372 b->location = string_to_event_location (&addr_string,
11373 language_def (language_ada));
f7f9143b 11374 b->language = language_ada;
f7f9143b
JB
11375}
11376
c906108c 11377static void
981a3fb3 11378catch_command (const char *arg, int from_tty)
c906108c 11379{
44feb3ce 11380 error (_("Catch requires an event name."));
c906108c
SS
11381}
11382\f
11383
11384static void
981a3fb3 11385tcatch_command (const char *arg, int from_tty)
c906108c 11386{
44feb3ce 11387 error (_("Catch requires an event name."));
c906108c
SS
11388}
11389
81b1e71c 11390/* Compare two breakpoints and return a strcmp-like result. */
8a2c437b
TT
11391
11392static int
81b1e71c 11393compare_breakpoints (const breakpoint *a, const breakpoint *b)
8a2c437b 11394{
81b1e71c
TT
11395 uintptr_t ua = (uintptr_t) a;
11396 uintptr_t ub = (uintptr_t) b;
8a2c437b 11397
81b1e71c 11398 if (a->number < b->number)
8a2c437b 11399 return -1;
81b1e71c 11400 else if (a->number > b->number)
8a2c437b
TT
11401 return 1;
11402
11403 /* Now sort by address, in case we see, e..g, two breakpoints with
11404 the number 0. */
11405 if (ua < ub)
11406 return -1;
94b0e70d 11407 return ua > ub ? 1 : 0;
8a2c437b
TT
11408}
11409
80f8a6eb 11410/* Delete breakpoints by address or line. */
c906108c
SS
11411
11412static void
0b39b52e 11413clear_command (const char *arg, int from_tty)
c906108c 11414{
81b1e71c 11415 struct breakpoint *b;
c906108c 11416 int default_match;
c906108c 11417
6c5b2ebe
PA
11418 std::vector<symtab_and_line> decoded_sals;
11419 symtab_and_line last_sal;
11420 gdb::array_view<symtab_and_line> sals;
c906108c
SS
11421 if (arg)
11422 {
6c5b2ebe
PA
11423 decoded_sals
11424 = decode_line_with_current_source (arg,
11425 (DECODE_LINE_FUNFIRSTLINE
11426 | DECODE_LINE_LIST_MODE));
c906108c 11427 default_match = 0;
6c5b2ebe 11428 sals = decoded_sals;
c906108c
SS
11429 }
11430 else
11431 {
1bfeeb0f
JL
11432 /* Set sal's line, symtab, pc, and pspace to the values
11433 corresponding to the last call to print_frame_info. If the
11434 codepoint is not valid, this will set all the fields to 0. */
51abb421 11435 last_sal = get_last_displayed_sal ();
6c5b2ebe 11436 if (last_sal.symtab == 0)
8a3fe4f8 11437 error (_("No source file specified."));
c906108c 11438
c906108c 11439 default_match = 1;
6c5b2ebe 11440 sals = last_sal;
c906108c
SS
11441 }
11442
4a64f543
MS
11443 /* We don't call resolve_sal_pc here. That's not as bad as it
11444 seems, because all existing breakpoints typically have both
11445 file/line and pc set. So, if clear is given file/line, we can
11446 match this to existing breakpoint without obtaining pc at all.
ed0616c6
VP
11447
11448 We only support clearing given the address explicitly
11449 present in breakpoint table. Say, we've set breakpoint
4a64f543 11450 at file:line. There were several PC values for that file:line,
ed0616c6 11451 due to optimization, all in one block.
4a64f543
MS
11452
11453 We've picked one PC value. If "clear" is issued with another
ed0616c6
VP
11454 PC corresponding to the same file:line, the breakpoint won't
11455 be cleared. We probably can still clear the breakpoint, but
11456 since the other PC value is never presented to user, user
11457 can only find it by guessing, and it does not seem important
11458 to support that. */
11459
4a64f543
MS
11460 /* For each line spec given, delete bps which correspond to it. Do
11461 it in two passes, solely to preserve the current behavior that
11462 from_tty is forced true if we delete more than one
11463 breakpoint. */
c906108c 11464
81b1e71c 11465 std::vector<struct breakpoint *> found;
6c5b2ebe 11466 for (const auto &sal : sals)
c906108c 11467 {
05cba821
JK
11468 const char *sal_fullname;
11469
c906108c 11470 /* If exact pc given, clear bpts at that pc.
c5aa993b
JM
11471 If line given (pc == 0), clear all bpts on specified line.
11472 If defaulting, clear all bpts on default line
c906108c 11473 or at default pc.
c5aa993b
JM
11474
11475 defaulting sal.pc != 0 tests to do
11476
11477 0 1 pc
11478 1 1 pc _and_ line
11479 0 0 line
11480 1 0 <can't happen> */
c906108c 11481
05cba821
JK
11482 sal_fullname = (sal.symtab == NULL
11483 ? NULL : symtab_to_fullname (sal.symtab));
c906108c 11484
4a64f543 11485 /* Find all matching breakpoints and add them to 'found'. */
d6e956e5 11486 ALL_BREAKPOINTS (b)
c5aa993b 11487 {
0d381245 11488 int match = 0;
4a64f543 11489 /* Are we going to delete b? */
cc60f2e3 11490 if (b->type != bp_none && !is_watchpoint (b))
0d381245
VP
11491 {
11492 struct bp_location *loc = b->loc;
11493 for (; loc; loc = loc->next)
11494 {
f8eba3c6
TT
11495 /* If the user specified file:line, don't allow a PC
11496 match. This matches historical gdb behavior. */
11497 int pc_match = (!sal.explicit_line
11498 && sal.pc
11499 && (loc->pspace == sal.pspace)
11500 && (loc->address == sal.pc)
11501 && (!section_is_overlay (loc->section)
11502 || loc->section == sal.section));
4aac40c8
TT
11503 int line_match = 0;
11504
11505 if ((default_match || sal.explicit_line)
2f202fde 11506 && loc->symtab != NULL
05cba821 11507 && sal_fullname != NULL
4aac40c8 11508 && sal.pspace == loc->pspace
05cba821
JK
11509 && loc->line_number == sal.line
11510 && filename_cmp (symtab_to_fullname (loc->symtab),
11511 sal_fullname) == 0)
11512 line_match = 1;
4aac40c8 11513
0d381245
VP
11514 if (pc_match || line_match)
11515 {
11516 match = 1;
11517 break;
11518 }
11519 }
11520 }
11521
11522 if (match)
81b1e71c 11523 found.push_back (b);
c906108c 11524 }
80f8a6eb 11525 }
8a2c437b 11526
80f8a6eb 11527 /* Now go thru the 'found' chain and delete them. */
81b1e71c 11528 if (found.empty ())
80f8a6eb
MS
11529 {
11530 if (arg)
8a3fe4f8 11531 error (_("No breakpoint at %s."), arg);
80f8a6eb 11532 else
8a3fe4f8 11533 error (_("No breakpoint at this line."));
80f8a6eb 11534 }
c906108c 11535
8a2c437b 11536 /* Remove duplicates from the vec. */
81b1e71c
TT
11537 std::sort (found.begin (), found.end (),
11538 [] (const breakpoint *a, const breakpoint *b)
11539 {
11540 return compare_breakpoints (a, b) < 0;
11541 });
11542 found.erase (std::unique (found.begin (), found.end (),
11543 [] (const breakpoint *a, const breakpoint *b)
11544 {
11545 return compare_breakpoints (a, b) == 0;
11546 }),
11547 found.end ());
8a2c437b 11548
81b1e71c 11549 if (found.size () > 1)
4a64f543 11550 from_tty = 1; /* Always report if deleted more than one. */
80f8a6eb 11551 if (from_tty)
a3f17187 11552 {
81b1e71c 11553 if (found.size () == 1)
a3f17187
AC
11554 printf_unfiltered (_("Deleted breakpoint "));
11555 else
11556 printf_unfiltered (_("Deleted breakpoints "));
11557 }
d6e956e5 11558
81b1e71c 11559 for (breakpoint *iter : found)
80f8a6eb 11560 {
c5aa993b 11561 if (from_tty)
81b1e71c
TT
11562 printf_unfiltered ("%d ", iter->number);
11563 delete_breakpoint (iter);
c906108c 11564 }
80f8a6eb
MS
11565 if (from_tty)
11566 putchar_unfiltered ('\n');
c906108c
SS
11567}
11568\f
11569/* Delete breakpoint in BS if they are `delete' breakpoints and
11570 all breakpoints that are marked for deletion, whether hit or not.
11571 This is called after any breakpoint is hit, or after errors. */
11572
11573void
fba45db2 11574breakpoint_auto_delete (bpstat bs)
c906108c 11575{
35df4500 11576 struct breakpoint *b, *b_tmp;
c906108c
SS
11577
11578 for (; bs; bs = bs->next)
f431efe5
PA
11579 if (bs->breakpoint_at
11580 && bs->breakpoint_at->disposition == disp_del
c906108c 11581 && bs->stop)
f431efe5 11582 delete_breakpoint (bs->breakpoint_at);
c906108c 11583
35df4500 11584 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 11585 {
b5de0fa7 11586 if (b->disposition == disp_del_at_next_stop)
c5aa993b
JM
11587 delete_breakpoint (b);
11588 }
c906108c
SS
11589}
11590
4a64f543
MS
11591/* A comparison function for bp_location AP and BP being interfaced to
11592 qsort. Sort elements primarily by their ADDRESS (no matter what
11593 does breakpoint_address_is_meaningful say for its OWNER),
1a853c52 11594 secondarily by ordering first permanent elements and
4a64f543 11595 terciarily just ensuring the array is sorted stable way despite
e5dd4106 11596 qsort being an unstable algorithm. */
876fa593
JK
11597
11598static int
f5336ca5 11599bp_locations_compare (const void *ap, const void *bp)
876fa593 11600{
9a3c8263
SM
11601 const struct bp_location *a = *(const struct bp_location **) ap;
11602 const struct bp_location *b = *(const struct bp_location **) bp;
876fa593
JK
11603
11604 if (a->address != b->address)
11605 return (a->address > b->address) - (a->address < b->address);
11606
dea2aa5f
LM
11607 /* Sort locations at the same address by their pspace number, keeping
11608 locations of the same inferior (in a multi-inferior environment)
11609 grouped. */
11610
11611 if (a->pspace->num != b->pspace->num)
11612 return ((a->pspace->num > b->pspace->num)
11613 - (a->pspace->num < b->pspace->num));
11614
876fa593 11615 /* Sort permanent breakpoints first. */
1a853c52
PA
11616 if (a->permanent != b->permanent)
11617 return (a->permanent < b->permanent) - (a->permanent > b->permanent);
876fa593 11618
c56a97f9
JK
11619 /* Make the internal GDB representation stable across GDB runs
11620 where A and B memory inside GDB can differ. Breakpoint locations of
11621 the same type at the same address can be sorted in arbitrary order. */
876fa593
JK
11622
11623 if (a->owner->number != b->owner->number)
c56a97f9
JK
11624 return ((a->owner->number > b->owner->number)
11625 - (a->owner->number < b->owner->number));
876fa593
JK
11626
11627 return (a > b) - (a < b);
11628}
11629
f5336ca5
PA
11630/* Set bp_locations_placed_address_before_address_max and
11631 bp_locations_shadow_len_after_address_max according to the current
11632 content of the bp_locations array. */
f7545552
TT
11633
11634static void
f5336ca5 11635bp_locations_target_extensions_update (void)
f7545552 11636{
876fa593
JK
11637 struct bp_location *bl, **blp_tmp;
11638
f5336ca5
PA
11639 bp_locations_placed_address_before_address_max = 0;
11640 bp_locations_shadow_len_after_address_max = 0;
876fa593
JK
11641
11642 ALL_BP_LOCATIONS (bl, blp_tmp)
11643 {
11644 CORE_ADDR start, end, addr;
11645
11646 if (!bp_location_has_shadow (bl))
11647 continue;
11648
11649 start = bl->target_info.placed_address;
11650 end = start + bl->target_info.shadow_len;
11651
11652 gdb_assert (bl->address >= start);
11653 addr = bl->address - start;
f5336ca5
PA
11654 if (addr > bp_locations_placed_address_before_address_max)
11655 bp_locations_placed_address_before_address_max = addr;
876fa593
JK
11656
11657 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
11658
11659 gdb_assert (bl->address < end);
11660 addr = end - bl->address;
f5336ca5
PA
11661 if (addr > bp_locations_shadow_len_after_address_max)
11662 bp_locations_shadow_len_after_address_max = addr;
876fa593 11663 }
f7545552
TT
11664}
11665
1e4d1764
YQ
11666/* Download tracepoint locations if they haven't been. */
11667
11668static void
11669download_tracepoint_locations (void)
11670{
7ed2c994 11671 struct breakpoint *b;
dd2e65cc 11672 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
1e4d1764 11673
5ed8105e 11674 scoped_restore_current_pspace_and_thread restore_pspace_thread;
1e4d1764 11675
7ed2c994 11676 ALL_TRACEPOINTS (b)
1e4d1764 11677 {
7ed2c994 11678 struct bp_location *bl;
1e4d1764 11679 struct tracepoint *t;
f2a8bc8a 11680 int bp_location_downloaded = 0;
1e4d1764 11681
7ed2c994 11682 if ((b->type == bp_fast_tracepoint
1e4d1764
YQ
11683 ? !may_insert_fast_tracepoints
11684 : !may_insert_tracepoints))
11685 continue;
11686
dd2e65cc
YQ
11687 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11688 {
11689 if (target_can_download_tracepoint ())
11690 can_download_tracepoint = TRIBOOL_TRUE;
11691 else
11692 can_download_tracepoint = TRIBOOL_FALSE;
11693 }
11694
11695 if (can_download_tracepoint == TRIBOOL_FALSE)
11696 break;
11697
7ed2c994
YQ
11698 for (bl = b->loc; bl; bl = bl->next)
11699 {
11700 /* In tracepoint, locations are _never_ duplicated, so
11701 should_be_inserted is equivalent to
11702 unduplicated_should_be_inserted. */
11703 if (!should_be_inserted (bl) || bl->inserted)
11704 continue;
1e4d1764 11705
7ed2c994 11706 switch_to_program_space_and_thread (bl->pspace);
1e4d1764 11707
7ed2c994 11708 target_download_tracepoint (bl);
1e4d1764 11709
7ed2c994 11710 bl->inserted = 1;
f2a8bc8a 11711 bp_location_downloaded = 1;
7ed2c994
YQ
11712 }
11713 t = (struct tracepoint *) b;
11714 t->number_on_target = b->number;
f2a8bc8a 11715 if (bp_location_downloaded)
76727919 11716 gdb::observers::breakpoint_modified.notify (b);
1e4d1764 11717 }
1e4d1764
YQ
11718}
11719
934709f0
PW
11720/* Swap the insertion/duplication state between two locations. */
11721
11722static void
11723swap_insertion (struct bp_location *left, struct bp_location *right)
11724{
11725 const int left_inserted = left->inserted;
11726 const int left_duplicate = left->duplicate;
b775012e 11727 const int left_needs_update = left->needs_update;
934709f0
PW
11728 const struct bp_target_info left_target_info = left->target_info;
11729
1e4d1764
YQ
11730 /* Locations of tracepoints can never be duplicated. */
11731 if (is_tracepoint (left->owner))
11732 gdb_assert (!left->duplicate);
11733 if (is_tracepoint (right->owner))
11734 gdb_assert (!right->duplicate);
11735
934709f0
PW
11736 left->inserted = right->inserted;
11737 left->duplicate = right->duplicate;
b775012e 11738 left->needs_update = right->needs_update;
934709f0
PW
11739 left->target_info = right->target_info;
11740 right->inserted = left_inserted;
11741 right->duplicate = left_duplicate;
b775012e 11742 right->needs_update = left_needs_update;
934709f0
PW
11743 right->target_info = left_target_info;
11744}
11745
b775012e
LM
11746/* Force the re-insertion of the locations at ADDRESS. This is called
11747 once a new/deleted/modified duplicate location is found and we are evaluating
11748 conditions on the target's side. Such conditions need to be updated on
11749 the target. */
11750
11751static void
11752force_breakpoint_reinsertion (struct bp_location *bl)
11753{
11754 struct bp_location **locp = NULL, **loc2p;
11755 struct bp_location *loc;
11756 CORE_ADDR address = 0;
11757 int pspace_num;
11758
11759 address = bl->address;
11760 pspace_num = bl->pspace->num;
11761
11762 /* This is only meaningful if the target is
11763 evaluating conditions and if the user has
11764 opted for condition evaluation on the target's
11765 side. */
11766 if (gdb_evaluates_breakpoint_condition_p ()
11767 || !target_supports_evaluation_of_breakpoint_conditions ())
11768 return;
11769
11770 /* Flag all breakpoint locations with this address and
11771 the same program space as the location
11772 as "its condition has changed". We need to
11773 update the conditions on the target's side. */
11774 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11775 {
11776 loc = *loc2p;
11777
11778 if (!is_breakpoint (loc->owner)
11779 || pspace_num != loc->pspace->num)
11780 continue;
11781
11782 /* Flag the location appropriately. We use a different state to
11783 let everyone know that we already updated the set of locations
11784 with addr bl->address and program space bl->pspace. This is so
11785 we don't have to keep calling these functions just to mark locations
11786 that have already been marked. */
11787 loc->condition_changed = condition_updated;
11788
11789 /* Free the agent expression bytecode as well. We will compute
11790 it later on. */
833177a4 11791 loc->cond_bytecode.reset ();
b775012e
LM
11792 }
11793}
44702360
PA
11794/* Called whether new breakpoints are created, or existing breakpoints
11795 deleted, to update the global location list and recompute which
11796 locations are duplicate of which.
b775012e 11797
04086b45
PA
11798 The INSERT_MODE flag determines whether locations may not, may, or
11799 shall be inserted now. See 'enum ugll_insert_mode' for more
11800 info. */
b60e7edf 11801
0d381245 11802static void
44702360 11803update_global_location_list (enum ugll_insert_mode insert_mode)
0d381245 11804{
74960c60 11805 struct breakpoint *b;
876fa593 11806 struct bp_location **locp, *loc;
b775012e
LM
11807 /* Last breakpoint location address that was marked for update. */
11808 CORE_ADDR last_addr = 0;
11809 /* Last breakpoint location program space that was marked for update. */
11810 int last_pspace_num = -1;
f7545552 11811
2d134ed3
PA
11812 /* Used in the duplicates detection below. When iterating over all
11813 bp_locations, points to the first bp_location of a given address.
11814 Breakpoints and watchpoints of different types are never
11815 duplicates of each other. Keep one pointer for each type of
11816 breakpoint/watchpoint, so we only need to loop over all locations
11817 once. */
11818 struct bp_location *bp_loc_first; /* breakpoint */
11819 struct bp_location *wp_loc_first; /* hardware watchpoint */
11820 struct bp_location *awp_loc_first; /* access watchpoint */
11821 struct bp_location *rwp_loc_first; /* read watchpoint */
876fa593 11822
f5336ca5
PA
11823 /* Saved former bp_locations array which we compare against the newly
11824 built bp_locations from the current state of ALL_BREAKPOINTS. */
81b1e71c 11825 struct bp_location **old_locp;
f5336ca5 11826 unsigned old_locations_count;
81b1e71c 11827 gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
876fa593 11828
f5336ca5
PA
11829 old_locations_count = bp_locations_count;
11830 bp_locations = NULL;
11831 bp_locations_count = 0;
0d381245 11832
74960c60 11833 ALL_BREAKPOINTS (b)
876fa593 11834 for (loc = b->loc; loc; loc = loc->next)
f5336ca5 11835 bp_locations_count++;
876fa593 11836
f5336ca5
PA
11837 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11838 locp = bp_locations;
876fa593
JK
11839 ALL_BREAKPOINTS (b)
11840 for (loc = b->loc; loc; loc = loc->next)
11841 *locp++ = loc;
f5336ca5
PA
11842 qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11843 bp_locations_compare);
876fa593 11844
f5336ca5 11845 bp_locations_target_extensions_update ();
74960c60 11846
4a64f543
MS
11847 /* Identify bp_location instances that are no longer present in the
11848 new list, and therefore should be freed. Note that it's not
11849 necessary that those locations should be removed from inferior --
11850 if there's another location at the same address (previously
11851 marked as duplicate), we don't need to remove/insert the
11852 location.
876fa593 11853
4a64f543
MS
11854 LOCP is kept in sync with OLD_LOCP, each pointing to the current
11855 and former bp_location array state respectively. */
876fa593 11856
f5336ca5 11857 locp = bp_locations;
81b1e71c
TT
11858 for (old_locp = old_locations.get ();
11859 old_locp < old_locations.get () + old_locations_count;
876fa593 11860 old_locp++)
74960c60 11861 {
876fa593 11862 struct bp_location *old_loc = *old_locp;
c7d46a38 11863 struct bp_location **loc2p;
876fa593 11864
e5dd4106 11865 /* Tells if 'old_loc' is found among the new locations. If
4a64f543 11866 not, we have to free it. */
c7d46a38 11867 int found_object = 0;
20874c92
VP
11868 /* Tells if the location should remain inserted in the target. */
11869 int keep_in_target = 0;
11870 int removed = 0;
876fa593 11871
4a64f543
MS
11872 /* Skip LOCP entries which will definitely never be needed.
11873 Stop either at or being the one matching OLD_LOC. */
f5336ca5 11874 while (locp < bp_locations + bp_locations_count
c7d46a38 11875 && (*locp)->address < old_loc->address)
876fa593 11876 locp++;
c7d46a38
PA
11877
11878 for (loc2p = locp;
f5336ca5 11879 (loc2p < bp_locations + bp_locations_count
c7d46a38
PA
11880 && (*loc2p)->address == old_loc->address);
11881 loc2p++)
11882 {
b775012e
LM
11883 /* Check if this is a new/duplicated location or a duplicated
11884 location that had its condition modified. If so, we want to send
11885 its condition to the target if evaluation of conditions is taking
11886 place there. */
11887 if ((*loc2p)->condition_changed == condition_modified
11888 && (last_addr != old_loc->address
11889 || last_pspace_num != old_loc->pspace->num))
c7d46a38 11890 {
b775012e
LM
11891 force_breakpoint_reinsertion (*loc2p);
11892 last_pspace_num = old_loc->pspace->num;
c7d46a38 11893 }
b775012e
LM
11894
11895 if (*loc2p == old_loc)
11896 found_object = 1;
c7d46a38 11897 }
74960c60 11898
b775012e
LM
11899 /* We have already handled this address, update it so that we don't
11900 have to go through updates again. */
11901 last_addr = old_loc->address;
11902
11903 /* Target-side condition evaluation: Handle deleted locations. */
11904 if (!found_object)
11905 force_breakpoint_reinsertion (old_loc);
11906
4a64f543
MS
11907 /* If this location is no longer present, and inserted, look if
11908 there's maybe a new location at the same address. If so,
11909 mark that one inserted, and don't remove this one. This is
11910 needed so that we don't have a time window where a breakpoint
11911 at certain location is not inserted. */
74960c60 11912
876fa593 11913 if (old_loc->inserted)
0d381245 11914 {
4a64f543
MS
11915 /* If the location is inserted now, we might have to remove
11916 it. */
74960c60 11917
876fa593 11918 if (found_object && should_be_inserted (old_loc))
74960c60 11919 {
4a64f543
MS
11920 /* The location is still present in the location list,
11921 and still should be inserted. Don't do anything. */
20874c92 11922 keep_in_target = 1;
74960c60
VP
11923 }
11924 else
11925 {
b775012e
LM
11926 /* This location still exists, but it won't be kept in the
11927 target since it may have been disabled. We proceed to
11928 remove its target-side condition. */
11929
4a64f543
MS
11930 /* The location is either no longer present, or got
11931 disabled. See if there's another location at the
11932 same address, in which case we don't need to remove
11933 this one from the target. */
876fa593 11934
2bdf28a0 11935 /* OLD_LOC comes from existing struct breakpoint. */
876fa593
JK
11936 if (breakpoint_address_is_meaningful (old_loc->owner))
11937 {
876fa593 11938 for (loc2p = locp;
f5336ca5 11939 (loc2p < bp_locations + bp_locations_count
c7d46a38 11940 && (*loc2p)->address == old_loc->address);
876fa593
JK
11941 loc2p++)
11942 {
11943 struct bp_location *loc2 = *loc2p;
11944
2d134ed3 11945 if (breakpoint_locations_match (loc2, old_loc))
c7d46a38 11946 {
85d721b8
PA
11947 /* Read watchpoint locations are switched to
11948 access watchpoints, if the former are not
11949 supported, but the latter are. */
11950 if (is_hardware_watchpoint (old_loc->owner))
11951 {
11952 gdb_assert (is_hardware_watchpoint (loc2->owner));
11953 loc2->watchpoint_type = old_loc->watchpoint_type;
11954 }
11955
934709f0
PW
11956 /* loc2 is a duplicated location. We need to check
11957 if it should be inserted in case it will be
11958 unduplicated. */
11959 if (loc2 != old_loc
11960 && unduplicated_should_be_inserted (loc2))
c7d46a38 11961 {
934709f0 11962 swap_insertion (old_loc, loc2);
c7d46a38
PA
11963 keep_in_target = 1;
11964 break;
11965 }
876fa593
JK
11966 }
11967 }
11968 }
74960c60
VP
11969 }
11970
20874c92
VP
11971 if (!keep_in_target)
11972 {
834c0d03 11973 if (remove_breakpoint (old_loc))
20874c92 11974 {
4a64f543
MS
11975 /* This is just about all we can do. We could keep
11976 this location on the global list, and try to
11977 remove it next time, but there's no particular
11978 reason why we will succeed next time.
20874c92 11979
4a64f543
MS
11980 Note that at this point, old_loc->owner is still
11981 valid, as delete_breakpoint frees the breakpoint
11982 only after calling us. */
3e43a32a
MS
11983 printf_filtered (_("warning: Error removing "
11984 "breakpoint %d\n"),
876fa593 11985 old_loc->owner->number);
20874c92
VP
11986 }
11987 removed = 1;
11988 }
0d381245 11989 }
74960c60
VP
11990
11991 if (!found_object)
1c5cfe86 11992 {
fbea99ea 11993 if (removed && target_is_non_stop_p ()
1cf4d951 11994 && need_moribund_for_location_type (old_loc))
20874c92 11995 {
db82e815
PA
11996 /* This location was removed from the target. In
11997 non-stop mode, a race condition is possible where
11998 we've removed a breakpoint, but stop events for that
11999 breakpoint are already queued and will arrive later.
12000 We apply an heuristic to be able to distinguish such
12001 SIGTRAPs from other random SIGTRAPs: we keep this
12002 breakpoint location for a bit, and will retire it
12003 after we see some number of events. The theory here
12004 is that reporting of events should, "on the average",
12005 be fair, so after a while we'll see events from all
12006 threads that have anything of interest, and no longer
12007 need to keep this breakpoint location around. We
12008 don't hold locations forever so to reduce chances of
12009 mistaking a non-breakpoint SIGTRAP for a breakpoint
12010 SIGTRAP.
12011
12012 The heuristic failing can be disastrous on
12013 decr_pc_after_break targets.
12014
12015 On decr_pc_after_break targets, like e.g., x86-linux,
12016 if we fail to recognize a late breakpoint SIGTRAP,
12017 because events_till_retirement has reached 0 too
12018 soon, we'll fail to do the PC adjustment, and report
12019 a random SIGTRAP to the user. When the user resumes
12020 the inferior, it will most likely immediately crash
2dec564e 12021 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
db82e815
PA
12022 corrupted, because of being resumed e.g., in the
12023 middle of a multi-byte instruction, or skipped a
12024 one-byte instruction. This was actually seen happen
12025 on native x86-linux, and should be less rare on
12026 targets that do not support new thread events, like
12027 remote, due to the heuristic depending on
12028 thread_count.
12029
12030 Mistaking a random SIGTRAP for a breakpoint trap
12031 causes similar symptoms (PC adjustment applied when
12032 it shouldn't), but then again, playing with SIGTRAPs
12033 behind the debugger's back is asking for trouble.
12034
12035 Since hardware watchpoint traps are always
12036 distinguishable from other traps, so we don't need to
12037 apply keep hardware watchpoint moribund locations
12038 around. We simply always ignore hardware watchpoint
12039 traps we can no longer explain. */
12040
876fa593
JK
12041 old_loc->events_till_retirement = 3 * (thread_count () + 1);
12042 old_loc->owner = NULL;
20874c92 12043
876fa593 12044 VEC_safe_push (bp_location_p, moribund_locations, old_loc);
1c5cfe86
PA
12045 }
12046 else
f431efe5
PA
12047 {
12048 old_loc->owner = NULL;
12049 decref_bp_location (&old_loc);
12050 }
20874c92 12051 }
74960c60 12052 }
1c5cfe86 12053
348d480f
PA
12054 /* Rescan breakpoints at the same address and section, marking the
12055 first one as "first" and any others as "duplicates". This is so
12056 that the bpt instruction is only inserted once. If we have a
12057 permanent breakpoint at the same place as BPT, make that one the
12058 official one, and the rest as duplicates. Permanent breakpoints
12059 are sorted first for the same address.
12060
12061 Do the same for hardware watchpoints, but also considering the
12062 watchpoint's type (regular/access/read) and length. */
12063
12064 bp_loc_first = NULL;
12065 wp_loc_first = NULL;
12066 awp_loc_first = NULL;
12067 rwp_loc_first = NULL;
12068 ALL_BP_LOCATIONS (loc, locp)
12069 {
12070 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12071 non-NULL. */
348d480f 12072 struct bp_location **loc_first_p;
d3fbdd86 12073 b = loc->owner;
348d480f 12074
6f380991 12075 if (!unduplicated_should_be_inserted (loc)
348d480f 12076 || !breakpoint_address_is_meaningful (b)
1e4d1764
YQ
12077 /* Don't detect duplicate for tracepoint locations because they are
12078 never duplicated. See the comments in field `duplicate' of
12079 `struct bp_location'. */
348d480f 12080 || is_tracepoint (b))
b775012e
LM
12081 {
12082 /* Clear the condition modification flag. */
12083 loc->condition_changed = condition_unchanged;
12084 continue;
12085 }
348d480f 12086
348d480f
PA
12087 if (b->type == bp_hardware_watchpoint)
12088 loc_first_p = &wp_loc_first;
12089 else if (b->type == bp_read_watchpoint)
12090 loc_first_p = &rwp_loc_first;
12091 else if (b->type == bp_access_watchpoint)
12092 loc_first_p = &awp_loc_first;
12093 else
12094 loc_first_p = &bp_loc_first;
12095
12096 if (*loc_first_p == NULL
12097 || (overlay_debugging && loc->section != (*loc_first_p)->section)
12098 || !breakpoint_locations_match (loc, *loc_first_p))
12099 {
12100 *loc_first_p = loc;
12101 loc->duplicate = 0;
b775012e
LM
12102
12103 if (is_breakpoint (loc->owner) && loc->condition_changed)
12104 {
12105 loc->needs_update = 1;
12106 /* Clear the condition modification flag. */
12107 loc->condition_changed = condition_unchanged;
12108 }
348d480f
PA
12109 continue;
12110 }
12111
934709f0
PW
12112
12113 /* This and the above ensure the invariant that the first location
12114 is not duplicated, and is the inserted one.
12115 All following are marked as duplicated, and are not inserted. */
12116 if (loc->inserted)
12117 swap_insertion (loc, *loc_first_p);
348d480f
PA
12118 loc->duplicate = 1;
12119
b775012e
LM
12120 /* Clear the condition modification flag. */
12121 loc->condition_changed = condition_unchanged;
348d480f
PA
12122 }
12123
a25a5a45 12124 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
b775012e 12125 {
04086b45 12126 if (insert_mode != UGLL_DONT_INSERT)
b775012e
LM
12127 insert_breakpoint_locations ();
12128 else
12129 {
44702360
PA
12130 /* Even though the caller told us to not insert new
12131 locations, we may still need to update conditions on the
12132 target's side of breakpoints that were already inserted
12133 if the target is evaluating breakpoint conditions. We
b775012e
LM
12134 only update conditions for locations that are marked
12135 "needs_update". */
12136 update_inserted_breakpoint_locations ();
12137 }
12138 }
348d480f 12139
04086b45 12140 if (insert_mode != UGLL_DONT_INSERT)
1e4d1764 12141 download_tracepoint_locations ();
348d480f
PA
12142}
12143
12144void
12145breakpoint_retire_moribund (void)
12146{
12147 struct bp_location *loc;
12148 int ix;
12149
12150 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12151 if (--(loc->events_till_retirement) == 0)
12152 {
12153 decref_bp_location (&loc);
12154 VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12155 --ix;
12156 }
12157}
12158
12159static void
44702360 12160update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
348d480f 12161{
348d480f 12162
492d29ea
PA
12163 TRY
12164 {
12165 update_global_location_list (insert_mode);
12166 }
12167 CATCH (e, RETURN_MASK_ERROR)
12168 {
12169 }
12170 END_CATCH
348d480f
PA
12171}
12172
12173/* Clear BKP from a BPS. */
12174
12175static void
12176bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12177{
12178 bpstat bs;
12179
12180 for (bs = bps; bs; bs = bs->next)
12181 if (bs->breakpoint_at == bpt)
12182 {
12183 bs->breakpoint_at = NULL;
12184 bs->old_val = NULL;
12185 /* bs->commands will be freed later. */
12186 }
12187}
12188
12189/* Callback for iterate_over_threads. */
12190static int
12191bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12192{
9a3c8263 12193 struct breakpoint *bpt = (struct breakpoint *) data;
348d480f
PA
12194
12195 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12196 return 0;
12197}
12198
12199/* Helper for breakpoint and tracepoint breakpoint_ops->mention
12200 callbacks. */
12201
12202static void
12203say_where (struct breakpoint *b)
12204{
12205 struct value_print_options opts;
12206
12207 get_user_print_options (&opts);
12208
12209 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12210 single string. */
12211 if (b->loc == NULL)
12212 {
f00aae0f
KS
12213 /* For pending locations, the output differs slightly based
12214 on b->extra_string. If this is non-NULL, it contains either
12215 a condition or dprintf arguments. */
12216 if (b->extra_string == NULL)
12217 {
12218 printf_filtered (_(" (%s) pending."),
d28cd78a 12219 event_location_to_string (b->location.get ()));
f00aae0f
KS
12220 }
12221 else if (b->type == bp_dprintf)
12222 {
12223 printf_filtered (_(" (%s,%s) pending."),
d28cd78a 12224 event_location_to_string (b->location.get ()),
f00aae0f
KS
12225 b->extra_string);
12226 }
12227 else
12228 {
12229 printf_filtered (_(" (%s %s) pending."),
d28cd78a 12230 event_location_to_string (b->location.get ()),
f00aae0f
KS
12231 b->extra_string);
12232 }
348d480f
PA
12233 }
12234 else
12235 {
2f202fde 12236 if (opts.addressprint || b->loc->symtab == NULL)
348d480f
PA
12237 {
12238 printf_filtered (" at ");
12239 fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12240 gdb_stdout);
12241 }
2f202fde 12242 if (b->loc->symtab != NULL)
f8eba3c6
TT
12243 {
12244 /* If there is a single location, we can print the location
12245 more nicely. */
12246 if (b->loc->next == NULL)
12247 printf_filtered (": file %s, line %d.",
05cba821
JK
12248 symtab_to_filename_for_display (b->loc->symtab),
12249 b->loc->line_number);
f8eba3c6
TT
12250 else
12251 /* This is not ideal, but each location may have a
12252 different file name, and this at least reflects the
12253 real situation somewhat. */
f00aae0f 12254 printf_filtered (": %s.",
d28cd78a 12255 event_location_to_string (b->location.get ()));
f8eba3c6 12256 }
348d480f
PA
12257
12258 if (b->loc->next)
12259 {
12260 struct bp_location *loc = b->loc;
12261 int n = 0;
12262 for (; loc; loc = loc->next)
12263 ++n;
12264 printf_filtered (" (%d locations)", n);
12265 }
12266 }
12267}
12268
348d480f
PA
12269/* Default bp_location_ops methods. */
12270
12271static void
12272bp_location_dtor (struct bp_location *self)
12273{
348d480f
PA
12274 xfree (self->function_name);
12275}
12276
12277static const struct bp_location_ops bp_location_ops =
12278{
12279 bp_location_dtor
12280};
12281
c1fc2657 12282/* Destructor for the breakpoint base class. */
348d480f 12283
c1fc2657 12284breakpoint::~breakpoint ()
348d480f 12285{
c1fc2657
SM
12286 xfree (this->cond_string);
12287 xfree (this->extra_string);
12288 xfree (this->filter);
348d480f
PA
12289}
12290
2060206e
PA
12291static struct bp_location *
12292base_breakpoint_allocate_location (struct breakpoint *self)
348d480f 12293{
5625a286 12294 return new bp_location (&bp_location_ops, self);
348d480f
PA
12295}
12296
2060206e
PA
12297static void
12298base_breakpoint_re_set (struct breakpoint *b)
12299{
12300 /* Nothing to re-set. */
12301}
12302
12303#define internal_error_pure_virtual_called() \
12304 gdb_assert_not_reached ("pure virtual function called")
12305
12306static int
12307base_breakpoint_insert_location (struct bp_location *bl)
12308{
12309 internal_error_pure_virtual_called ();
12310}
12311
12312static int
73971819
PA
12313base_breakpoint_remove_location (struct bp_location *bl,
12314 enum remove_bp_reason reason)
2060206e
PA
12315{
12316 internal_error_pure_virtual_called ();
12317}
12318
12319static int
12320base_breakpoint_breakpoint_hit (const struct bp_location *bl,
bd522513 12321 const address_space *aspace,
09ac7c10
TT
12322 CORE_ADDR bp_addr,
12323 const struct target_waitstatus *ws)
2060206e
PA
12324{
12325 internal_error_pure_virtual_called ();
12326}
12327
12328static void
12329base_breakpoint_check_status (bpstat bs)
12330{
12331 /* Always stop. */
12332}
12333
12334/* A "works_in_software_mode" breakpoint_ops method that just internal
12335 errors. */
12336
12337static int
12338base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12339{
12340 internal_error_pure_virtual_called ();
12341}
12342
12343/* A "resources_needed" breakpoint_ops method that just internal
12344 errors. */
12345
12346static int
12347base_breakpoint_resources_needed (const struct bp_location *bl)
12348{
12349 internal_error_pure_virtual_called ();
12350}
12351
12352static enum print_stop_action
12353base_breakpoint_print_it (bpstat bs)
12354{
12355 internal_error_pure_virtual_called ();
12356}
12357
12358static void
12359base_breakpoint_print_one_detail (const struct breakpoint *self,
12360 struct ui_out *uiout)
12361{
12362 /* nothing */
12363}
12364
12365static void
12366base_breakpoint_print_mention (struct breakpoint *b)
12367{
12368 internal_error_pure_virtual_called ();
12369}
12370
12371static void
12372base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12373{
12374 internal_error_pure_virtual_called ();
12375}
12376
983af33b 12377static void
f00aae0f
KS
12378base_breakpoint_create_sals_from_location
12379 (const struct event_location *location,
12380 struct linespec_result *canonical,
12381 enum bptype type_wanted)
983af33b
SDJ
12382{
12383 internal_error_pure_virtual_called ();
12384}
12385
12386static void
12387base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12388 struct linespec_result *c,
e1e01040
PA
12389 gdb::unique_xmalloc_ptr<char> cond_string,
12390 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12391 enum bptype type_wanted,
12392 enum bpdisp disposition,
12393 int thread,
12394 int task, int ignore_count,
12395 const struct breakpoint_ops *o,
12396 int from_tty, int enabled,
44f238bb 12397 int internal, unsigned flags)
983af33b
SDJ
12398{
12399 internal_error_pure_virtual_called ();
12400}
12401
6c5b2ebe 12402static std::vector<symtab_and_line>
f00aae0f
KS
12403base_breakpoint_decode_location (struct breakpoint *b,
12404 const struct event_location *location,
6c5b2ebe 12405 struct program_space *search_pspace)
983af33b
SDJ
12406{
12407 internal_error_pure_virtual_called ();
12408}
12409
ab04a2af
TT
12410/* The default 'explains_signal' method. */
12411
47591c29 12412static int
427cd150 12413base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
ab04a2af 12414{
47591c29 12415 return 1;
ab04a2af
TT
12416}
12417
9d6e6e84
HZ
12418/* The default "after_condition_true" method. */
12419
12420static void
12421base_breakpoint_after_condition_true (struct bpstats *bs)
12422{
12423 /* Nothing to do. */
12424}
12425
ab04a2af 12426struct breakpoint_ops base_breakpoint_ops =
2060206e 12427{
2060206e
PA
12428 base_breakpoint_allocate_location,
12429 base_breakpoint_re_set,
12430 base_breakpoint_insert_location,
12431 base_breakpoint_remove_location,
12432 base_breakpoint_breakpoint_hit,
12433 base_breakpoint_check_status,
12434 base_breakpoint_resources_needed,
12435 base_breakpoint_works_in_software_mode,
12436 base_breakpoint_print_it,
12437 NULL,
12438 base_breakpoint_print_one_detail,
12439 base_breakpoint_print_mention,
983af33b 12440 base_breakpoint_print_recreate,
5f700d83 12441 base_breakpoint_create_sals_from_location,
983af33b 12442 base_breakpoint_create_breakpoints_sal,
5f700d83 12443 base_breakpoint_decode_location,
9d6e6e84
HZ
12444 base_breakpoint_explains_signal,
12445 base_breakpoint_after_condition_true,
2060206e
PA
12446};
12447
12448/* Default breakpoint_ops methods. */
12449
12450static void
348d480f
PA
12451bkpt_re_set (struct breakpoint *b)
12452{
06edf0c0 12453 /* FIXME: is this still reachable? */
9ef9e6a6 12454 if (breakpoint_event_location_empty_p (b))
06edf0c0 12455 {
f00aae0f 12456 /* Anything without a location can't be re-set. */
348d480f 12457 delete_breakpoint (b);
06edf0c0 12458 return;
348d480f 12459 }
06edf0c0
PA
12460
12461 breakpoint_re_set_default (b);
348d480f
PA
12462}
12463
2060206e 12464static int
348d480f
PA
12465bkpt_insert_location (struct bp_location *bl)
12466{
cd6c3b4f
YQ
12467 CORE_ADDR addr = bl->target_info.reqstd_address;
12468
579c6ad9 12469 bl->target_info.kind = breakpoint_kind (bl, &addr);
cd6c3b4f
YQ
12470 bl->target_info.placed_address = addr;
12471
348d480f 12472 if (bl->loc_type == bp_loc_hardware_breakpoint)
7c16b83e 12473 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
348d480f 12474 else
7c16b83e 12475 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
348d480f
PA
12476}
12477
2060206e 12478static int
73971819 12479bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
348d480f
PA
12480{
12481 if (bl->loc_type == bp_loc_hardware_breakpoint)
12482 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12483 else
73971819 12484 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
348d480f
PA
12485}
12486
2060206e 12487static int
348d480f 12488bkpt_breakpoint_hit (const struct bp_location *bl,
bd522513 12489 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 12490 const struct target_waitstatus *ws)
348d480f 12491{
09ac7c10 12492 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 12493 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
12494 return 0;
12495
348d480f
PA
12496 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12497 aspace, bp_addr))
12498 return 0;
12499
12500 if (overlay_debugging /* unmapped overlay section */
12501 && section_is_overlay (bl->section)
12502 && !section_is_mapped (bl->section))
12503 return 0;
12504
12505 return 1;
12506}
12507
cd1608cc
PA
12508static int
12509dprintf_breakpoint_hit (const struct bp_location *bl,
bd522513 12510 const address_space *aspace, CORE_ADDR bp_addr,
cd1608cc
PA
12511 const struct target_waitstatus *ws)
12512{
12513 if (dprintf_style == dprintf_style_agent
12514 && target_can_run_breakpoint_commands ())
12515 {
12516 /* An agent-style dprintf never causes a stop. If we see a trap
12517 for this address it must be for a breakpoint that happens to
12518 be set at the same address. */
12519 return 0;
12520 }
12521
12522 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12523}
12524
2060206e 12525static int
348d480f
PA
12526bkpt_resources_needed (const struct bp_location *bl)
12527{
12528 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12529
12530 return 1;
12531}
12532
2060206e 12533static enum print_stop_action
348d480f
PA
12534bkpt_print_it (bpstat bs)
12535{
348d480f
PA
12536 struct breakpoint *b;
12537 const struct bp_location *bl;
001c8c33 12538 int bp_temp;
79a45e25 12539 struct ui_out *uiout = current_uiout;
348d480f
PA
12540
12541 gdb_assert (bs->bp_location_at != NULL);
12542
12543 bl = bs->bp_location_at;
12544 b = bs->breakpoint_at;
12545
001c8c33
PA
12546 bp_temp = b->disposition == disp_del;
12547 if (bl->address != bl->requested_address)
12548 breakpoint_adjustment_warning (bl->requested_address,
12549 bl->address,
12550 b->number, 1);
12551 annotate_breakpoint (b->number);
f303dbd6
PA
12552 maybe_print_thread_hit_breakpoint (uiout);
12553
001c8c33 12554 if (bp_temp)
112e8700 12555 uiout->text ("Temporary breakpoint ");
001c8c33 12556 else
112e8700
SM
12557 uiout->text ("Breakpoint ");
12558 if (uiout->is_mi_like_p ())
348d480f 12559 {
112e8700 12560 uiout->field_string ("reason",
001c8c33 12561 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 12562 uiout->field_string ("disp", bpdisp_text (b->disposition));
06edf0c0 12563 }
112e8700
SM
12564 uiout->field_int ("bkptno", b->number);
12565 uiout->text (", ");
06edf0c0 12566
001c8c33 12567 return PRINT_SRC_AND_LOC;
06edf0c0
PA
12568}
12569
2060206e 12570static void
06edf0c0
PA
12571bkpt_print_mention (struct breakpoint *b)
12572{
112e8700 12573 if (current_uiout->is_mi_like_p ())
06edf0c0
PA
12574 return;
12575
12576 switch (b->type)
12577 {
12578 case bp_breakpoint:
12579 case bp_gnu_ifunc_resolver:
12580 if (b->disposition == disp_del)
12581 printf_filtered (_("Temporary breakpoint"));
12582 else
12583 printf_filtered (_("Breakpoint"));
12584 printf_filtered (_(" %d"), b->number);
12585 if (b->type == bp_gnu_ifunc_resolver)
12586 printf_filtered (_(" at gnu-indirect-function resolver"));
12587 break;
12588 case bp_hardware_breakpoint:
12589 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12590 break;
e7e0cddf
SS
12591 case bp_dprintf:
12592 printf_filtered (_("Dprintf %d"), b->number);
12593 break;
06edf0c0
PA
12594 }
12595
12596 say_where (b);
12597}
12598
2060206e 12599static void
06edf0c0
PA
12600bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12601{
12602 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12603 fprintf_unfiltered (fp, "tbreak");
12604 else if (tp->type == bp_breakpoint)
12605 fprintf_unfiltered (fp, "break");
12606 else if (tp->type == bp_hardware_breakpoint
12607 && tp->disposition == disp_del)
12608 fprintf_unfiltered (fp, "thbreak");
12609 else if (tp->type == bp_hardware_breakpoint)
12610 fprintf_unfiltered (fp, "hbreak");
12611 else
12612 internal_error (__FILE__, __LINE__,
12613 _("unhandled breakpoint type %d"), (int) tp->type);
12614
f00aae0f 12615 fprintf_unfiltered (fp, " %s",
d28cd78a 12616 event_location_to_string (tp->location.get ()));
f00aae0f
KS
12617
12618 /* Print out extra_string if this breakpoint is pending. It might
12619 contain, for example, conditions that were set by the user. */
12620 if (tp->loc == NULL && tp->extra_string != NULL)
12621 fprintf_unfiltered (fp, " %s", tp->extra_string);
12622
dd11a36c 12623 print_recreate_thread (tp, fp);
06edf0c0
PA
12624}
12625
983af33b 12626static void
f00aae0f
KS
12627bkpt_create_sals_from_location (const struct event_location *location,
12628 struct linespec_result *canonical,
12629 enum bptype type_wanted)
983af33b 12630{
f00aae0f 12631 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
12632}
12633
12634static void
12635bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12636 struct linespec_result *canonical,
e1e01040
PA
12637 gdb::unique_xmalloc_ptr<char> cond_string,
12638 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12639 enum bptype type_wanted,
12640 enum bpdisp disposition,
12641 int thread,
12642 int task, int ignore_count,
12643 const struct breakpoint_ops *ops,
12644 int from_tty, int enabled,
44f238bb 12645 int internal, unsigned flags)
983af33b 12646{
023fa29b 12647 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
12648 std::move (cond_string),
12649 std::move (extra_string),
e7e0cddf 12650 type_wanted,
983af33b
SDJ
12651 disposition, thread, task,
12652 ignore_count, ops, from_tty,
44f238bb 12653 enabled, internal, flags);
983af33b
SDJ
12654}
12655
6c5b2ebe 12656static std::vector<symtab_and_line>
f00aae0f
KS
12657bkpt_decode_location (struct breakpoint *b,
12658 const struct event_location *location,
6c5b2ebe 12659 struct program_space *search_pspace)
983af33b 12660{
6c5b2ebe 12661 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
12662}
12663
06edf0c0
PA
12664/* Virtual table for internal breakpoints. */
12665
12666static void
12667internal_bkpt_re_set (struct breakpoint *b)
12668{
12669 switch (b->type)
12670 {
12671 /* Delete overlay event and longjmp master breakpoints; they
12672 will be reset later by breakpoint_re_set. */
12673 case bp_overlay_event:
12674 case bp_longjmp_master:
12675 case bp_std_terminate_master:
12676 case bp_exception_master:
12677 delete_breakpoint (b);
12678 break;
12679
12680 /* This breakpoint is special, it's set up when the inferior
12681 starts and we really don't want to touch it. */
12682 case bp_shlib_event:
12683
12684 /* Like bp_shlib_event, this breakpoint type is special. Once
12685 it is set up, we do not want to touch it. */
12686 case bp_thread_event:
12687 break;
12688 }
12689}
12690
12691static void
12692internal_bkpt_check_status (bpstat bs)
12693{
a9b3a50f
PA
12694 if (bs->breakpoint_at->type == bp_shlib_event)
12695 {
12696 /* If requested, stop when the dynamic linker notifies GDB of
12697 events. This allows the user to get control and place
12698 breakpoints in initializer routines for dynamically loaded
12699 objects (among other things). */
12700 bs->stop = stop_on_solib_events;
12701 bs->print = stop_on_solib_events;
12702 }
12703 else
12704 bs->stop = 0;
06edf0c0
PA
12705}
12706
12707static enum print_stop_action
12708internal_bkpt_print_it (bpstat bs)
12709{
06edf0c0 12710 struct breakpoint *b;
06edf0c0 12711
06edf0c0
PA
12712 b = bs->breakpoint_at;
12713
06edf0c0
PA
12714 switch (b->type)
12715 {
348d480f
PA
12716 case bp_shlib_event:
12717 /* Did we stop because the user set the stop_on_solib_events
12718 variable? (If so, we report this as a generic, "Stopped due
12719 to shlib event" message.) */
edcc5120 12720 print_solib_event (0);
348d480f
PA
12721 break;
12722
12723 case bp_thread_event:
12724 /* Not sure how we will get here.
12725 GDB should not stop for these breakpoints. */
12726 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
12727 break;
12728
12729 case bp_overlay_event:
12730 /* By analogy with the thread event, GDB should not stop for these. */
12731 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
12732 break;
12733
12734 case bp_longjmp_master:
12735 /* These should never be enabled. */
12736 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
348d480f
PA
12737 break;
12738
12739 case bp_std_terminate_master:
12740 /* These should never be enabled. */
12741 printf_filtered (_("std::terminate Master Breakpoint: "
12742 "gdb should not stop!\n"));
348d480f
PA
12743 break;
12744
12745 case bp_exception_master:
12746 /* These should never be enabled. */
12747 printf_filtered (_("Exception Master Breakpoint: "
12748 "gdb should not stop!\n"));
06edf0c0
PA
12749 break;
12750 }
12751
001c8c33 12752 return PRINT_NOTHING;
06edf0c0
PA
12753}
12754
12755static void
12756internal_bkpt_print_mention (struct breakpoint *b)
12757{
12758 /* Nothing to mention. These breakpoints are internal. */
12759}
12760
06edf0c0
PA
12761/* Virtual table for momentary breakpoints */
12762
12763static void
12764momentary_bkpt_re_set (struct breakpoint *b)
12765{
12766 /* Keep temporary breakpoints, which can be encountered when we step
4d1eb6b4 12767 over a dlopen call and solib_add is resetting the breakpoints.
06edf0c0
PA
12768 Otherwise these should have been blown away via the cleanup chain
12769 or by breakpoint_init_inferior when we rerun the executable. */
12770}
12771
12772static void
12773momentary_bkpt_check_status (bpstat bs)
12774{
12775 /* Nothing. The point of these breakpoints is causing a stop. */
12776}
12777
12778static enum print_stop_action
12779momentary_bkpt_print_it (bpstat bs)
12780{
001c8c33 12781 return PRINT_UNKNOWN;
348d480f
PA
12782}
12783
06edf0c0
PA
12784static void
12785momentary_bkpt_print_mention (struct breakpoint *b)
348d480f 12786{
06edf0c0 12787 /* Nothing to mention. These breakpoints are internal. */
348d480f
PA
12788}
12789
e2e4d78b
JK
12790/* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12791
12792 It gets cleared already on the removal of the first one of such placed
12793 breakpoints. This is OK as they get all removed altogether. */
12794
c1fc2657 12795longjmp_breakpoint::~longjmp_breakpoint ()
e2e4d78b 12796{
c1fc2657 12797 thread_info *tp = find_thread_global_id (this->thread);
e2e4d78b 12798
c1fc2657 12799 if (tp != NULL)
e2e4d78b 12800 tp->initiating_frame = null_frame_id;
e2e4d78b
JK
12801}
12802
55aa24fb
SDJ
12803/* Specific methods for probe breakpoints. */
12804
12805static int
12806bkpt_probe_insert_location (struct bp_location *bl)
12807{
12808 int v = bkpt_insert_location (bl);
12809
12810 if (v == 0)
12811 {
12812 /* The insertion was successful, now let's set the probe's semaphore
12813 if needed. */
935676c9 12814 bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
55aa24fb
SDJ
12815 }
12816
12817 return v;
12818}
12819
12820static int
73971819
PA
12821bkpt_probe_remove_location (struct bp_location *bl,
12822 enum remove_bp_reason reason)
55aa24fb
SDJ
12823{
12824 /* Let's clear the semaphore before removing the location. */
935676c9 12825 bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
55aa24fb 12826
73971819 12827 return bkpt_remove_location (bl, reason);
55aa24fb
SDJ
12828}
12829
12830static void
f00aae0f 12831bkpt_probe_create_sals_from_location (const struct event_location *location,
5f700d83 12832 struct linespec_result *canonical,
f00aae0f 12833 enum bptype type_wanted)
55aa24fb
SDJ
12834{
12835 struct linespec_sals lsal;
12836
c2f4122d 12837 lsal.sals = parse_probes (location, NULL, canonical);
8e9e35b1
TT
12838 lsal.canonical
12839 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 12840 canonical->lsals.push_back (std::move (lsal));
55aa24fb
SDJ
12841}
12842
6c5b2ebe 12843static std::vector<symtab_and_line>
f00aae0f
KS
12844bkpt_probe_decode_location (struct breakpoint *b,
12845 const struct event_location *location,
6c5b2ebe 12846 struct program_space *search_pspace)
55aa24fb 12847{
6c5b2ebe
PA
12848 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12849 if (sals.empty ())
55aa24fb 12850 error (_("probe not found"));
6c5b2ebe 12851 return sals;
55aa24fb
SDJ
12852}
12853
348d480f 12854/* The breakpoint_ops structure to be used in tracepoints. */
876fa593 12855
348d480f
PA
12856static void
12857tracepoint_re_set (struct breakpoint *b)
12858{
12859 breakpoint_re_set_default (b);
12860}
876fa593 12861
348d480f
PA
12862static int
12863tracepoint_breakpoint_hit (const struct bp_location *bl,
bd522513 12864 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 12865 const struct target_waitstatus *ws)
348d480f
PA
12866{
12867 /* By definition, the inferior does not report stops at
12868 tracepoints. */
12869 return 0;
74960c60
VP
12870}
12871
12872static void
348d480f
PA
12873tracepoint_print_one_detail (const struct breakpoint *self,
12874 struct ui_out *uiout)
74960c60 12875{
d9b3f62e 12876 struct tracepoint *tp = (struct tracepoint *) self;
5d9310c4 12877 if (!tp->static_trace_marker_id.empty ())
348d480f
PA
12878 {
12879 gdb_assert (self->type == bp_static_tracepoint);
cc59ec59 12880
112e8700
SM
12881 uiout->text ("\tmarker id is ");
12882 uiout->field_string ("static-tracepoint-marker-string-id",
d9b3f62e 12883 tp->static_trace_marker_id);
112e8700 12884 uiout->text ("\n");
348d480f 12885 }
0d381245
VP
12886}
12887
a474d7c2 12888static void
348d480f 12889tracepoint_print_mention (struct breakpoint *b)
a474d7c2 12890{
112e8700 12891 if (current_uiout->is_mi_like_p ())
348d480f 12892 return;
cc59ec59 12893
348d480f
PA
12894 switch (b->type)
12895 {
12896 case bp_tracepoint:
12897 printf_filtered (_("Tracepoint"));
12898 printf_filtered (_(" %d"), b->number);
12899 break;
12900 case bp_fast_tracepoint:
12901 printf_filtered (_("Fast tracepoint"));
12902 printf_filtered (_(" %d"), b->number);
12903 break;
12904 case bp_static_tracepoint:
12905 printf_filtered (_("Static tracepoint"));
12906 printf_filtered (_(" %d"), b->number);
12907 break;
12908 default:
12909 internal_error (__FILE__, __LINE__,
12910 _("unhandled tracepoint type %d"), (int) b->type);
12911 }
12912
12913 say_where (b);
a474d7c2
PA
12914}
12915
348d480f 12916static void
d9b3f62e 12917tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
a474d7c2 12918{
d9b3f62e
PA
12919 struct tracepoint *tp = (struct tracepoint *) self;
12920
12921 if (self->type == bp_fast_tracepoint)
348d480f 12922 fprintf_unfiltered (fp, "ftrace");
c93e8391 12923 else if (self->type == bp_static_tracepoint)
348d480f 12924 fprintf_unfiltered (fp, "strace");
d9b3f62e 12925 else if (self->type == bp_tracepoint)
348d480f
PA
12926 fprintf_unfiltered (fp, "trace");
12927 else
12928 internal_error (__FILE__, __LINE__,
d9b3f62e 12929 _("unhandled tracepoint type %d"), (int) self->type);
cc59ec59 12930
f00aae0f 12931 fprintf_unfiltered (fp, " %s",
d28cd78a 12932 event_location_to_string (self->location.get ()));
d9b3f62e
PA
12933 print_recreate_thread (self, fp);
12934
12935 if (tp->pass_count)
12936 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
a474d7c2
PA
12937}
12938
983af33b 12939static void
f00aae0f
KS
12940tracepoint_create_sals_from_location (const struct event_location *location,
12941 struct linespec_result *canonical,
12942 enum bptype type_wanted)
983af33b 12943{
f00aae0f 12944 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
12945}
12946
12947static void
12948tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12949 struct linespec_result *canonical,
e1e01040
PA
12950 gdb::unique_xmalloc_ptr<char> cond_string,
12951 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12952 enum bptype type_wanted,
12953 enum bpdisp disposition,
12954 int thread,
12955 int task, int ignore_count,
12956 const struct breakpoint_ops *ops,
12957 int from_tty, int enabled,
44f238bb 12958 int internal, unsigned flags)
983af33b 12959{
023fa29b 12960 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
12961 std::move (cond_string),
12962 std::move (extra_string),
e7e0cddf 12963 type_wanted,
983af33b
SDJ
12964 disposition, thread, task,
12965 ignore_count, ops, from_tty,
44f238bb 12966 enabled, internal, flags);
983af33b
SDJ
12967}
12968
6c5b2ebe 12969static std::vector<symtab_and_line>
f00aae0f
KS
12970tracepoint_decode_location (struct breakpoint *b,
12971 const struct event_location *location,
6c5b2ebe 12972 struct program_space *search_pspace)
983af33b 12973{
6c5b2ebe 12974 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
12975}
12976
2060206e 12977struct breakpoint_ops tracepoint_breakpoint_ops;
348d480f 12978
55aa24fb
SDJ
12979/* The breakpoint_ops structure to be use on tracepoints placed in a
12980 static probe. */
12981
12982static void
f00aae0f
KS
12983tracepoint_probe_create_sals_from_location
12984 (const struct event_location *location,
12985 struct linespec_result *canonical,
12986 enum bptype type_wanted)
55aa24fb
SDJ
12987{
12988 /* We use the same method for breakpoint on probes. */
f00aae0f 12989 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
55aa24fb
SDJ
12990}
12991
6c5b2ebe 12992static std::vector<symtab_and_line>
f00aae0f
KS
12993tracepoint_probe_decode_location (struct breakpoint *b,
12994 const struct event_location *location,
6c5b2ebe 12995 struct program_space *search_pspace)
55aa24fb
SDJ
12996{
12997 /* We use the same method for breakpoint on probes. */
6c5b2ebe 12998 return bkpt_probe_decode_location (b, location, search_pspace);
55aa24fb
SDJ
12999}
13000
13001static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13002
5c2b4418
HZ
13003/* Dprintf breakpoint_ops methods. */
13004
13005static void
13006dprintf_re_set (struct breakpoint *b)
13007{
13008 breakpoint_re_set_default (b);
13009
f00aae0f
KS
13010 /* extra_string should never be non-NULL for dprintf. */
13011 gdb_assert (b->extra_string != NULL);
5c2b4418
HZ
13012
13013 /* 1 - connect to target 1, that can run breakpoint commands.
13014 2 - create a dprintf, which resolves fine.
13015 3 - disconnect from target 1
13016 4 - connect to target 2, that can NOT run breakpoint commands.
13017
13018 After steps #3/#4, you'll want the dprintf command list to
13019 be updated, because target 1 and 2 may well return different
13020 answers for target_can_run_breakpoint_commands().
13021 Given absence of finer grained resetting, we get to do
13022 it all the time. */
13023 if (b->extra_string != NULL)
13024 update_dprintf_command_list (b);
13025}
13026
2d9442cc
HZ
13027/* Implement the "print_recreate" breakpoint_ops method for dprintf. */
13028
13029static void
13030dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13031{
f00aae0f 13032 fprintf_unfiltered (fp, "dprintf %s,%s",
d28cd78a 13033 event_location_to_string (tp->location.get ()),
2d9442cc
HZ
13034 tp->extra_string);
13035 print_recreate_thread (tp, fp);
13036}
13037
9d6e6e84
HZ
13038/* Implement the "after_condition_true" breakpoint_ops method for
13039 dprintf.
13040
13041 dprintf's are implemented with regular commands in their command
13042 list, but we run the commands here instead of before presenting the
13043 stop to the user, as dprintf's don't actually cause a stop. This
13044 also makes it so that the commands of multiple dprintfs at the same
13045 address are all handled. */
13046
13047static void
13048dprintf_after_condition_true (struct bpstats *bs)
13049{
04afa70c 13050 struct bpstats tmp_bs;
9d6e6e84
HZ
13051 struct bpstats *tmp_bs_p = &tmp_bs;
13052
13053 /* dprintf's never cause a stop. This wasn't set in the
13054 check_status hook instead because that would make the dprintf's
13055 condition not be evaluated. */
13056 bs->stop = 0;
13057
13058 /* Run the command list here. Take ownership of it instead of
13059 copying. We never want these commands to run later in
13060 bpstat_do_actions, if a breakpoint that causes a stop happens to
13061 be set at same address as this dprintf, or even if running the
13062 commands here throws. */
13063 tmp_bs.commands = bs->commands;
13064 bs->commands = NULL;
9d6e6e84
HZ
13065
13066 bpstat_do_actions_1 (&tmp_bs_p);
13067
13068 /* 'tmp_bs.commands' will usually be NULL by now, but
13069 bpstat_do_actions_1 may return early without processing the whole
13070 list. */
9d6e6e84
HZ
13071}
13072
983af33b
SDJ
13073/* The breakpoint_ops structure to be used on static tracepoints with
13074 markers (`-m'). */
13075
13076static void
f00aae0f 13077strace_marker_create_sals_from_location (const struct event_location *location,
5f700d83 13078 struct linespec_result *canonical,
f00aae0f 13079 enum bptype type_wanted)
983af33b
SDJ
13080{
13081 struct linespec_sals lsal;
f00aae0f 13082 const char *arg_start, *arg;
983af33b 13083
a20714ff 13084 arg = arg_start = get_linespec_location (location)->spec_string;
f00aae0f 13085 lsal.sals = decode_static_tracepoint_spec (&arg);
983af33b 13086
f2fc3015
TT
13087 std::string str (arg_start, arg - arg_start);
13088 const char *ptr = str.c_str ();
a20714ff
PA
13089 canonical->location
13090 = new_linespec_location (&ptr, symbol_name_match_type::FULL);
983af33b 13091
8e9e35b1
TT
13092 lsal.canonical
13093 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 13094 canonical->lsals.push_back (std::move (lsal));
983af33b
SDJ
13095}
13096
13097static void
13098strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13099 struct linespec_result *canonical,
e1e01040
PA
13100 gdb::unique_xmalloc_ptr<char> cond_string,
13101 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13102 enum bptype type_wanted,
13103 enum bpdisp disposition,
13104 int thread,
13105 int task, int ignore_count,
13106 const struct breakpoint_ops *ops,
13107 int from_tty, int enabled,
44f238bb 13108 int internal, unsigned flags)
983af33b 13109{
6c5b2ebe 13110 const linespec_sals &lsal = canonical->lsals[0];
983af33b
SDJ
13111
13112 /* If the user is creating a static tracepoint by marker id
13113 (strace -m MARKER_ID), then store the sals index, so that
13114 breakpoint_re_set can try to match up which of the newly
13115 found markers corresponds to this one, and, don't try to
13116 expand multiple locations for each sal, given than SALS
13117 already should contain all sals for MARKER_ID. */
13118
6c5b2ebe 13119 for (size_t i = 0; i < lsal.sals.size (); i++)
983af33b 13120 {
6c5b2ebe
PA
13121 event_location_up location
13122 = copy_event_location (canonical->location.get ());
983af33b 13123
b270e6f9 13124 std::unique_ptr<tracepoint> tp (new tracepoint ());
6c5b2ebe 13125 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
ffc2605c 13126 std::move (location), NULL,
e1e01040
PA
13127 std::move (cond_string),
13128 std::move (extra_string),
e7e0cddf 13129 type_wanted, disposition,
983af33b 13130 thread, task, ignore_count, ops,
44f238bb 13131 from_tty, enabled, internal, flags,
983af33b
SDJ
13132 canonical->special_display);
13133 /* Given that its possible to have multiple markers with
13134 the same string id, if the user is creating a static
13135 tracepoint by marker id ("strace -m MARKER_ID"), then
13136 store the sals index, so that breakpoint_re_set can
13137 try to match up which of the newly found markers
13138 corresponds to this one */
13139 tp->static_trace_marker_id_idx = i;
13140
b270e6f9 13141 install_breakpoint (internal, std::move (tp), 0);
983af33b
SDJ
13142 }
13143}
13144
6c5b2ebe 13145static std::vector<symtab_and_line>
f00aae0f
KS
13146strace_marker_decode_location (struct breakpoint *b,
13147 const struct event_location *location,
6c5b2ebe 13148 struct program_space *search_pspace)
983af33b
SDJ
13149{
13150 struct tracepoint *tp = (struct tracepoint *) b;
a20714ff 13151 const char *s = get_linespec_location (location)->spec_string;
983af33b 13152
6c5b2ebe
PA
13153 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13154 if (sals.size () > tp->static_trace_marker_id_idx)
983af33b 13155 {
6c5b2ebe
PA
13156 sals[0] = sals[tp->static_trace_marker_id_idx];
13157 sals.resize (1);
13158 return sals;
983af33b
SDJ
13159 }
13160 else
5d9310c4 13161 error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
983af33b
SDJ
13162}
13163
13164static struct breakpoint_ops strace_marker_breakpoint_ops;
13165
13166static int
13167strace_marker_p (struct breakpoint *b)
13168{
13169 return b->ops == &strace_marker_breakpoint_ops;
13170}
13171
53a5351d 13172/* Delete a breakpoint and clean up all traces of it in the data
f431efe5 13173 structures. */
c906108c
SS
13174
13175void
fba45db2 13176delete_breakpoint (struct breakpoint *bpt)
c906108c 13177{
52f0bd74 13178 struct breakpoint *b;
c906108c 13179
8a3fe4f8 13180 gdb_assert (bpt != NULL);
c906108c 13181
4a64f543
MS
13182 /* Has this bp already been deleted? This can happen because
13183 multiple lists can hold pointers to bp's. bpstat lists are
13184 especial culprits.
13185
13186 One example of this happening is a watchpoint's scope bp. When
13187 the scope bp triggers, we notice that the watchpoint is out of
13188 scope, and delete it. We also delete its scope bp. But the
13189 scope bp is marked "auto-deleting", and is already on a bpstat.
13190 That bpstat is then checked for auto-deleting bp's, which are
13191 deleted.
13192
13193 A real solution to this problem might involve reference counts in
13194 bp's, and/or giving them pointers back to their referencing
13195 bpstat's, and teaching delete_breakpoint to only free a bp's
13196 storage when no more references were extent. A cheaper bandaid
13197 was chosen. */
c906108c
SS
13198 if (bpt->type == bp_none)
13199 return;
13200
4a64f543
MS
13201 /* At least avoid this stale reference until the reference counting
13202 of breakpoints gets resolved. */
d0fb5eae 13203 if (bpt->related_breakpoint != bpt)
e5a0a904 13204 {
d0fb5eae 13205 struct breakpoint *related;
3a5c3e22 13206 struct watchpoint *w;
d0fb5eae
JK
13207
13208 if (bpt->type == bp_watchpoint_scope)
3a5c3e22 13209 w = (struct watchpoint *) bpt->related_breakpoint;
d0fb5eae 13210 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
3a5c3e22
PA
13211 w = (struct watchpoint *) bpt;
13212 else
13213 w = NULL;
13214 if (w != NULL)
13215 watchpoint_del_at_next_stop (w);
d0fb5eae
JK
13216
13217 /* Unlink bpt from the bpt->related_breakpoint ring. */
13218 for (related = bpt; related->related_breakpoint != bpt;
13219 related = related->related_breakpoint);
13220 related->related_breakpoint = bpt->related_breakpoint;
13221 bpt->related_breakpoint = bpt;
e5a0a904
JK
13222 }
13223
a9634178
TJB
13224 /* watch_command_1 creates a watchpoint but only sets its number if
13225 update_watchpoint succeeds in creating its bp_locations. If there's
13226 a problem in that process, we'll be asked to delete the half-created
13227 watchpoint. In that case, don't announce the deletion. */
13228 if (bpt->number)
76727919 13229 gdb::observers::breakpoint_deleted.notify (bpt);
c906108c 13230
c906108c
SS
13231 if (breakpoint_chain == bpt)
13232 breakpoint_chain = bpt->next;
13233
c906108c
SS
13234 ALL_BREAKPOINTS (b)
13235 if (b->next == bpt)
c5aa993b
JM
13236 {
13237 b->next = bpt->next;
13238 break;
13239 }
c906108c 13240
f431efe5
PA
13241 /* Be sure no bpstat's are pointing at the breakpoint after it's
13242 been freed. */
13243 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
e5dd4106 13244 in all threads for now. Note that we cannot just remove bpstats
f431efe5
PA
13245 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13246 commands are associated with the bpstat; if we remove it here,
13247 then the later call to bpstat_do_actions (&stop_bpstat); in
13248 event-top.c won't do anything, and temporary breakpoints with
13249 commands won't work. */
13250
13251 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13252
4a64f543
MS
13253 /* Now that breakpoint is removed from breakpoint list, update the
13254 global location list. This will remove locations that used to
13255 belong to this breakpoint. Do this before freeing the breakpoint
13256 itself, since remove_breakpoint looks at location's owner. It
13257 might be better design to have location completely
13258 self-contained, but it's not the case now. */
44702360 13259 update_global_location_list (UGLL_DONT_INSERT);
74960c60 13260
4a64f543
MS
13261 /* On the chance that someone will soon try again to delete this
13262 same bp, we mark it as deleted before freeing its storage. */
c906108c 13263 bpt->type = bp_none;
4d01a485 13264 delete bpt;
c906108c
SS
13265}
13266
51be5b68
PA
13267/* Iterator function to call a user-provided callback function once
13268 for each of B and its related breakpoints. */
13269
13270static void
13271iterate_over_related_breakpoints (struct breakpoint *b,
48649e1b 13272 gdb::function_view<void (breakpoint *)> function)
51be5b68
PA
13273{
13274 struct breakpoint *related;
13275
13276 related = b;
13277 do
13278 {
13279 struct breakpoint *next;
13280
13281 /* FUNCTION may delete RELATED. */
13282 next = related->related_breakpoint;
13283
13284 if (next == related)
13285 {
13286 /* RELATED is the last ring entry. */
48649e1b 13287 function (related);
51be5b68
PA
13288
13289 /* FUNCTION may have deleted it, so we'd never reach back to
13290 B. There's nothing left to do anyway, so just break
13291 out. */
13292 break;
13293 }
13294 else
48649e1b 13295 function (related);
51be5b68
PA
13296
13297 related = next;
13298 }
13299 while (related != b);
13300}
95a42b64 13301
4495129a 13302static void
981a3fb3 13303delete_command (const char *arg, int from_tty)
c906108c 13304{
35df4500 13305 struct breakpoint *b, *b_tmp;
c906108c 13306
ea9365bb
TT
13307 dont_repeat ();
13308
c906108c
SS
13309 if (arg == 0)
13310 {
13311 int breaks_to_delete = 0;
13312
46c6471b
PA
13313 /* Delete all breakpoints if no argument. Do not delete
13314 internal breakpoints, these have to be deleted with an
13315 explicit breakpoint number argument. */
c5aa993b 13316 ALL_BREAKPOINTS (b)
46c6471b 13317 if (user_breakpoint_p (b))
973d738b
DJ
13318 {
13319 breaks_to_delete = 1;
13320 break;
13321 }
c906108c
SS
13322
13323 /* Ask user only if there are some breakpoints to delete. */
13324 if (!from_tty
e2e0b3e5 13325 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
c906108c 13326 {
35df4500 13327 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 13328 if (user_breakpoint_p (b))
c5aa993b 13329 delete_breakpoint (b);
c906108c
SS
13330 }
13331 }
13332 else
48649e1b
TT
13333 map_breakpoint_numbers
13334 (arg, [&] (breakpoint *b)
13335 {
13336 iterate_over_related_breakpoints (b, delete_breakpoint);
13337 });
c906108c
SS
13338}
13339
c2f4122d
PA
13340/* Return true if all locations of B bound to PSPACE are pending. If
13341 PSPACE is NULL, all locations of all program spaces are
13342 considered. */
13343
0d381245 13344static int
c2f4122d 13345all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
fe3f5fa8 13346{
c2f4122d
PA
13347 struct bp_location *loc;
13348
13349 for (loc = b->loc; loc != NULL; loc = loc->next)
13350 if ((pspace == NULL
13351 || loc->pspace == pspace)
13352 && !loc->shlib_disabled
8645ff69 13353 && !loc->pspace->executing_startup)
0d381245
VP
13354 return 0;
13355 return 1;
fe3f5fa8
VP
13356}
13357
776592bf
DE
13358/* Subroutine of update_breakpoint_locations to simplify it.
13359 Return non-zero if multiple fns in list LOC have the same name.
13360 Null names are ignored. */
13361
13362static int
13363ambiguous_names_p (struct bp_location *loc)
13364{
13365 struct bp_location *l;
459a2e4c
TT
13366 htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13367 xcalloc, xfree);
776592bf
DE
13368
13369 for (l = loc; l != NULL; l = l->next)
13370 {
13371 const char **slot;
13372 const char *name = l->function_name;
13373
13374 /* Allow for some names to be NULL, ignore them. */
13375 if (name == NULL)
13376 continue;
13377
13378 slot = (const char **) htab_find_slot (htab, (const void *) name,
13379 INSERT);
4a64f543
MS
13380 /* NOTE: We can assume slot != NULL here because xcalloc never
13381 returns NULL. */
776592bf
DE
13382 if (*slot != NULL)
13383 {
13384 htab_delete (htab);
13385 return 1;
13386 }
13387 *slot = name;
13388 }
13389
13390 htab_delete (htab);
13391 return 0;
13392}
13393
0fb4aa4b
PA
13394/* When symbols change, it probably means the sources changed as well,
13395 and it might mean the static tracepoint markers are no longer at
13396 the same address or line numbers they used to be at last we
13397 checked. Losing your static tracepoints whenever you rebuild is
13398 undesirable. This function tries to resync/rematch gdb static
13399 tracepoints with the markers on the target, for static tracepoints
13400 that have not been set by marker id. Static tracepoint that have
13401 been set by marker id are reset by marker id in breakpoint_re_set.
13402 The heuristic is:
13403
13404 1) For a tracepoint set at a specific address, look for a marker at
13405 the old PC. If one is found there, assume to be the same marker.
13406 If the name / string id of the marker found is different from the
13407 previous known name, assume that means the user renamed the marker
13408 in the sources, and output a warning.
13409
13410 2) For a tracepoint set at a given line number, look for a marker
13411 at the new address of the old line number. If one is found there,
13412 assume to be the same marker. If the name / string id of the
13413 marker found is different from the previous known name, assume that
13414 means the user renamed the marker in the sources, and output a
13415 warning.
13416
13417 3) If a marker is no longer found at the same address or line, it
13418 may mean the marker no longer exists. But it may also just mean
13419 the code changed a bit. Maybe the user added a few lines of code
13420 that made the marker move up or down (in line number terms). Ask
13421 the target for info about the marker with the string id as we knew
13422 it. If found, update line number and address in the matching
13423 static tracepoint. This will get confused if there's more than one
13424 marker with the same ID (possible in UST, although unadvised
13425 precisely because it confuses tools). */
13426
13427static struct symtab_and_line
13428update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13429{
d9b3f62e 13430 struct tracepoint *tp = (struct tracepoint *) b;
0fb4aa4b
PA
13431 struct static_tracepoint_marker marker;
13432 CORE_ADDR pc;
0fb4aa4b
PA
13433
13434 pc = sal.pc;
13435 if (sal.line)
13436 find_line_pc (sal.symtab, sal.line, &pc);
13437
13438 if (target_static_tracepoint_marker_at (pc, &marker))
13439 {
5d9310c4 13440 if (tp->static_trace_marker_id != marker.str_id)
0fb4aa4b 13441 warning (_("static tracepoint %d changed probed marker from %s to %s"),
5d9310c4
SM
13442 b->number, tp->static_trace_marker_id.c_str (),
13443 marker.str_id.c_str ());
0fb4aa4b 13444
5d9310c4 13445 tp->static_trace_marker_id = std::move (marker.str_id);
0fb4aa4b
PA
13446
13447 return sal;
13448 }
13449
13450 /* Old marker wasn't found on target at lineno. Try looking it up
13451 by string ID. */
13452 if (!sal.explicit_pc
13453 && sal.line != 0
13454 && sal.symtab != NULL
5d9310c4 13455 && !tp->static_trace_marker_id.empty ())
0fb4aa4b 13456 {
5d9310c4
SM
13457 std::vector<static_tracepoint_marker> markers
13458 = target_static_tracepoint_markers_by_strid
13459 (tp->static_trace_marker_id.c_str ());
0fb4aa4b 13460
5d9310c4 13461 if (!markers.empty ())
0fb4aa4b 13462 {
0fb4aa4b 13463 struct symbol *sym;
80e1d417 13464 struct static_tracepoint_marker *tpmarker;
79a45e25 13465 struct ui_out *uiout = current_uiout;
67994074 13466 struct explicit_location explicit_loc;
0fb4aa4b 13467
5d9310c4 13468 tpmarker = &markers[0];
0fb4aa4b 13469
5d9310c4 13470 tp->static_trace_marker_id = std::move (tpmarker->str_id);
0fb4aa4b
PA
13471
13472 warning (_("marker for static tracepoint %d (%s) not "
13473 "found at previous line number"),
5d9310c4 13474 b->number, tp->static_trace_marker_id.c_str ());
0fb4aa4b 13475
51abb421 13476 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
80e1d417 13477 sym = find_pc_sect_function (tpmarker->address, NULL);
112e8700 13478 uiout->text ("Now in ");
0fb4aa4b
PA
13479 if (sym)
13480 {
112e8700
SM
13481 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
13482 uiout->text (" at ");
0fb4aa4b 13483 }
112e8700 13484 uiout->field_string ("file",
05cba821 13485 symtab_to_filename_for_display (sal2.symtab));
112e8700 13486 uiout->text (":");
0fb4aa4b 13487
112e8700 13488 if (uiout->is_mi_like_p ())
0fb4aa4b 13489 {
0b0865da 13490 const char *fullname = symtab_to_fullname (sal2.symtab);
0fb4aa4b 13491
112e8700 13492 uiout->field_string ("fullname", fullname);
0fb4aa4b
PA
13493 }
13494
112e8700
SM
13495 uiout->field_int ("line", sal2.line);
13496 uiout->text ("\n");
0fb4aa4b 13497
80e1d417 13498 b->loc->line_number = sal2.line;
2f202fde 13499 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
0fb4aa4b 13500
d28cd78a 13501 b->location.reset (NULL);
67994074
KS
13502 initialize_explicit_location (&explicit_loc);
13503 explicit_loc.source_filename
00e52e53 13504 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
67994074
KS
13505 explicit_loc.line_offset.offset = b->loc->line_number;
13506 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
d28cd78a 13507 b->location = new_explicit_location (&explicit_loc);
0fb4aa4b
PA
13508
13509 /* Might be nice to check if function changed, and warn if
13510 so. */
0fb4aa4b
PA
13511 }
13512 }
13513 return sal;
13514}
13515
8d3788bd
VP
13516/* Returns 1 iff locations A and B are sufficiently same that
13517 we don't need to report breakpoint as changed. */
13518
13519static int
13520locations_are_equal (struct bp_location *a, struct bp_location *b)
13521{
13522 while (a && b)
13523 {
13524 if (a->address != b->address)
13525 return 0;
13526
13527 if (a->shlib_disabled != b->shlib_disabled)
13528 return 0;
13529
13530 if (a->enabled != b->enabled)
13531 return 0;
13532
13533 a = a->next;
13534 b = b->next;
13535 }
13536
13537 if ((a == NULL) != (b == NULL))
13538 return 0;
13539
13540 return 1;
13541}
13542
c2f4122d
PA
13543/* Split all locations of B that are bound to PSPACE out of B's
13544 location list to a separate list and return that list's head. If
13545 PSPACE is NULL, hoist out all locations of B. */
13546
13547static struct bp_location *
13548hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13549{
13550 struct bp_location head;
13551 struct bp_location *i = b->loc;
13552 struct bp_location **i_link = &b->loc;
13553 struct bp_location *hoisted = &head;
13554
13555 if (pspace == NULL)
13556 {
13557 i = b->loc;
13558 b->loc = NULL;
13559 return i;
13560 }
13561
13562 head.next = NULL;
13563
13564 while (i != NULL)
13565 {
13566 if (i->pspace == pspace)
13567 {
13568 *i_link = i->next;
13569 i->next = NULL;
13570 hoisted->next = i;
13571 hoisted = i;
13572 }
13573 else
13574 i_link = &i->next;
13575 i = *i_link;
13576 }
13577
13578 return head.next;
13579}
13580
13581/* Create new breakpoint locations for B (a hardware or software
13582 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
13583 zero, then B is a ranged breakpoint. Only recreates locations for
13584 FILTER_PSPACE. Locations of other program spaces are left
13585 untouched. */
f1310107 13586
0e30163f 13587void
0d381245 13588update_breakpoint_locations (struct breakpoint *b,
c2f4122d 13589 struct program_space *filter_pspace,
6c5b2ebe
PA
13590 gdb::array_view<const symtab_and_line> sals,
13591 gdb::array_view<const symtab_and_line> sals_end)
fe3f5fa8 13592{
c2f4122d 13593 struct bp_location *existing_locations;
0d381245 13594
6c5b2ebe 13595 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
f8eba3c6
TT
13596 {
13597 /* Ranged breakpoints have only one start location and one end
13598 location. */
13599 b->enable_state = bp_disabled;
f8eba3c6
TT
13600 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13601 "multiple locations found\n"),
13602 b->number);
13603 return;
13604 }
f1310107 13605
4a64f543
MS
13606 /* If there's no new locations, and all existing locations are
13607 pending, don't do anything. This optimizes the common case where
13608 all locations are in the same shared library, that was unloaded.
13609 We'd like to retain the location, so that when the library is
13610 loaded again, we don't loose the enabled/disabled status of the
13611 individual locations. */
6c5b2ebe 13612 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
fe3f5fa8
VP
13613 return;
13614
c2f4122d 13615 existing_locations = hoist_existing_locations (b, filter_pspace);
fe3f5fa8 13616
6c5b2ebe 13617 for (const auto &sal : sals)
fe3f5fa8 13618 {
f8eba3c6
TT
13619 struct bp_location *new_loc;
13620
6c5b2ebe 13621 switch_to_program_space_and_thread (sal.pspace);
f8eba3c6 13622
6c5b2ebe 13623 new_loc = add_location_to_breakpoint (b, &sal);
fe3f5fa8 13624
0d381245
VP
13625 /* Reparse conditions, they might contain references to the
13626 old symtab. */
13627 if (b->cond_string != NULL)
13628 {
bbc13ae3 13629 const char *s;
fe3f5fa8 13630
0d381245 13631 s = b->cond_string;
492d29ea 13632 TRY
0d381245 13633 {
6c5b2ebe
PA
13634 new_loc->cond = parse_exp_1 (&s, sal.pc,
13635 block_for_pc (sal.pc),
0d381245
VP
13636 0);
13637 }
492d29ea 13638 CATCH (e, RETURN_MASK_ERROR)
0d381245 13639 {
3e43a32a
MS
13640 warning (_("failed to reevaluate condition "
13641 "for breakpoint %d: %s"),
0d381245
VP
13642 b->number, e.message);
13643 new_loc->enabled = 0;
13644 }
492d29ea 13645 END_CATCH
0d381245 13646 }
fe3f5fa8 13647
6c5b2ebe 13648 if (!sals_end.empty ())
f1310107 13649 {
6c5b2ebe 13650 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
f1310107 13651
6c5b2ebe 13652 new_loc->length = end - sals[0].pc + 1;
f1310107 13653 }
0d381245 13654 }
fe3f5fa8 13655
4a64f543
MS
13656 /* If possible, carry over 'disable' status from existing
13657 breakpoints. */
0d381245
VP
13658 {
13659 struct bp_location *e = existing_locations;
776592bf
DE
13660 /* If there are multiple breakpoints with the same function name,
13661 e.g. for inline functions, comparing function names won't work.
13662 Instead compare pc addresses; this is just a heuristic as things
13663 may have moved, but in practice it gives the correct answer
13664 often enough until a better solution is found. */
13665 int have_ambiguous_names = ambiguous_names_p (b->loc);
13666
0d381245
VP
13667 for (; e; e = e->next)
13668 {
13669 if (!e->enabled && e->function_name)
13670 {
13671 struct bp_location *l = b->loc;
776592bf
DE
13672 if (have_ambiguous_names)
13673 {
13674 for (; l; l = l->next)
f1310107 13675 if (breakpoint_locations_match (e, l))
776592bf
DE
13676 {
13677 l->enabled = 0;
13678 break;
13679 }
13680 }
13681 else
13682 {
13683 for (; l; l = l->next)
13684 if (l->function_name
13685 && strcmp (e->function_name, l->function_name) == 0)
13686 {
13687 l->enabled = 0;
13688 break;
13689 }
13690 }
0d381245
VP
13691 }
13692 }
13693 }
fe3f5fa8 13694
8d3788bd 13695 if (!locations_are_equal (existing_locations, b->loc))
76727919 13696 gdb::observers::breakpoint_modified.notify (b);
fe3f5fa8
VP
13697}
13698
f00aae0f 13699/* Find the SaL locations corresponding to the given LOCATION.
ef23e705
TJB
13700 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
13701
6c5b2ebe 13702static std::vector<symtab_and_line>
f00aae0f 13703location_to_sals (struct breakpoint *b, struct event_location *location,
c2f4122d 13704 struct program_space *search_pspace, int *found)
ef23e705 13705{
492d29ea 13706 struct gdb_exception exception = exception_none;
ef23e705 13707
983af33b 13708 gdb_assert (b->ops != NULL);
ef23e705 13709
6c5b2ebe
PA
13710 std::vector<symtab_and_line> sals;
13711
492d29ea 13712 TRY
ef23e705 13713 {
6c5b2ebe 13714 sals = b->ops->decode_location (b, location, search_pspace);
ef23e705 13715 }
492d29ea 13716 CATCH (e, RETURN_MASK_ERROR)
ef23e705
TJB
13717 {
13718 int not_found_and_ok = 0;
492d29ea
PA
13719
13720 exception = e;
13721
ef23e705
TJB
13722 /* For pending breakpoints, it's expected that parsing will
13723 fail until the right shared library is loaded. User has
13724 already told to create pending breakpoints and don't need
13725 extra messages. If breakpoint is in bp_shlib_disabled
13726 state, then user already saw the message about that
13727 breakpoint being disabled, and don't want to see more
13728 errors. */
58438ac1 13729 if (e.error == NOT_FOUND_ERROR
c2f4122d
PA
13730 && (b->condition_not_parsed
13731 || (b->loc != NULL
13732 && search_pspace != NULL
13733 && b->loc->pspace != search_pspace)
ef23e705 13734 || (b->loc && b->loc->shlib_disabled)
f8eba3c6 13735 || (b->loc && b->loc->pspace->executing_startup)
ef23e705
TJB
13736 || b->enable_state == bp_disabled))
13737 not_found_and_ok = 1;
13738
13739 if (!not_found_and_ok)
13740 {
13741 /* We surely don't want to warn about the same breakpoint
13742 10 times. One solution, implemented here, is disable
13743 the breakpoint on error. Another solution would be to
13744 have separate 'warning emitted' flag. Since this
13745 happens only when a binary has changed, I don't know
13746 which approach is better. */
13747 b->enable_state = bp_disabled;
13748 throw_exception (e);
13749 }
13750 }
492d29ea 13751 END_CATCH
ef23e705 13752
492d29ea 13753 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
ef23e705 13754 {
6c5b2ebe
PA
13755 for (auto &sal : sals)
13756 resolve_sal_pc (&sal);
f00aae0f 13757 if (b->condition_not_parsed && b->extra_string != NULL)
ef23e705 13758 {
ed1d1739
KS
13759 char *cond_string, *extra_string;
13760 int thread, task;
ef23e705 13761
6c5b2ebe 13762 find_condition_and_thread (b->extra_string, sals[0].pc,
e7e0cddf
SS
13763 &cond_string, &thread, &task,
13764 &extra_string);
f00aae0f 13765 gdb_assert (b->cond_string == NULL);
ef23e705
TJB
13766 if (cond_string)
13767 b->cond_string = cond_string;
13768 b->thread = thread;
13769 b->task = task;
e7e0cddf 13770 if (extra_string)
f00aae0f
KS
13771 {
13772 xfree (b->extra_string);
13773 b->extra_string = extra_string;
13774 }
ef23e705
TJB
13775 b->condition_not_parsed = 0;
13776 }
13777
983af33b 13778 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
6c5b2ebe 13779 sals[0] = update_static_tracepoint (b, sals[0]);
ef23e705 13780
58438ac1
TT
13781 *found = 1;
13782 }
13783 else
13784 *found = 0;
ef23e705
TJB
13785
13786 return sals;
13787}
13788
348d480f
PA
13789/* The default re_set method, for typical hardware or software
13790 breakpoints. Reevaluate the breakpoint and recreate its
13791 locations. */
13792
13793static void
28010a5d 13794breakpoint_re_set_default (struct breakpoint *b)
ef23e705 13795{
c2f4122d 13796 struct program_space *filter_pspace = current_program_space;
6c5b2ebe 13797 std::vector<symtab_and_line> expanded, expanded_end;
ef23e705 13798
6c5b2ebe
PA
13799 int found;
13800 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13801 filter_pspace, &found);
ef23e705 13802 if (found)
6c5b2ebe 13803 expanded = std::move (sals);
ef23e705 13804
f00aae0f 13805 if (b->location_range_end != NULL)
f1310107 13806 {
6c5b2ebe
PA
13807 std::vector<symtab_and_line> sals_end
13808 = location_to_sals (b, b->location_range_end.get (),
13809 filter_pspace, &found);
f1310107 13810 if (found)
6c5b2ebe 13811 expanded_end = std::move (sals_end);
f1310107
TJB
13812 }
13813
c2f4122d 13814 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
28010a5d
PA
13815}
13816
983af33b
SDJ
13817/* Default method for creating SALs from an address string. It basically
13818 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
13819
13820static void
f00aae0f
KS
13821create_sals_from_location_default (const struct event_location *location,
13822 struct linespec_result *canonical,
13823 enum bptype type_wanted)
983af33b 13824{
f00aae0f 13825 parse_breakpoint_sals (location, canonical);
983af33b
SDJ
13826}
13827
13828/* Call create_breakpoints_sal for the given arguments. This is the default
13829 function for the `create_breakpoints_sal' method of
13830 breakpoint_ops. */
13831
13832static void
13833create_breakpoints_sal_default (struct gdbarch *gdbarch,
13834 struct linespec_result *canonical,
e1e01040
PA
13835 gdb::unique_xmalloc_ptr<char> cond_string,
13836 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13837 enum bptype type_wanted,
13838 enum bpdisp disposition,
13839 int thread,
13840 int task, int ignore_count,
13841 const struct breakpoint_ops *ops,
13842 int from_tty, int enabled,
44f238bb 13843 int internal, unsigned flags)
983af33b 13844{
e1e01040
PA
13845 create_breakpoints_sal (gdbarch, canonical,
13846 std::move (cond_string),
13847 std::move (extra_string),
983af33b
SDJ
13848 type_wanted, disposition,
13849 thread, task, ignore_count, ops, from_tty,
44f238bb 13850 enabled, internal, flags);
983af33b
SDJ
13851}
13852
13853/* Decode the line represented by S by calling decode_line_full. This is the
5f700d83 13854 default function for the `decode_location' method of breakpoint_ops. */
983af33b 13855
6c5b2ebe 13856static std::vector<symtab_and_line>
f00aae0f
KS
13857decode_location_default (struct breakpoint *b,
13858 const struct event_location *location,
6c5b2ebe 13859 struct program_space *search_pspace)
983af33b
SDJ
13860{
13861 struct linespec_result canonical;
13862
c2f4122d 13863 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
983af33b
SDJ
13864 (struct symtab *) NULL, 0,
13865 &canonical, multiple_symbols_all,
13866 b->filter);
13867
13868 /* We should get 0 or 1 resulting SALs. */
6c5b2ebe 13869 gdb_assert (canonical.lsals.size () < 2);
983af33b 13870
6c5b2ebe 13871 if (!canonical.lsals.empty ())
983af33b 13872 {
6c5b2ebe
PA
13873 const linespec_sals &lsal = canonical.lsals[0];
13874 return std::move (lsal.sals);
983af33b 13875 }
6c5b2ebe 13876 return {};
983af33b
SDJ
13877}
13878
bf469271 13879/* Reset a breakpoint. */
c906108c 13880
bf469271
PA
13881static void
13882breakpoint_re_set_one (breakpoint *b)
c906108c 13883{
fdf44873
TT
13884 input_radix = b->input_radix;
13885 set_language (b->language);
c906108c 13886
348d480f 13887 b->ops->re_set (b);
c906108c
SS
13888}
13889
c2f4122d
PA
13890/* Re-set breakpoint locations for the current program space.
13891 Locations bound to other program spaces are left untouched. */
13892
c906108c 13893void
69de3c6a 13894breakpoint_re_set (void)
c906108c 13895{
35df4500 13896 struct breakpoint *b, *b_tmp;
2a7f3dff 13897
c5aa993b 13898 {
fdf44873
TT
13899 scoped_restore_current_language save_language;
13900 scoped_restore save_input_radix = make_scoped_restore (&input_radix);
5ed8105e 13901 scoped_restore_current_pspace_and_thread restore_pspace_thread;
e62c965a 13902
5ed8105e
PA
13903 /* Note: we must not try to insert locations until after all
13904 breakpoints have been re-set. Otherwise, e.g., when re-setting
13905 breakpoint 1, we'd insert the locations of breakpoint 2, which
13906 hadn't been re-set yet, and thus may have stale locations. */
4efc6507 13907
5ed8105e
PA
13908 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13909 {
bf469271
PA
13910 TRY
13911 {
13912 breakpoint_re_set_one (b);
13913 }
13914 CATCH (ex, RETURN_MASK_ALL)
13915 {
13916 exception_fprintf (gdb_stderr, ex,
13917 "Error in re-setting breakpoint %d: ",
13918 b->number);
13919 }
13920 END_CATCH
5ed8105e 13921 }
5ed8105e
PA
13922
13923 jit_breakpoint_re_set ();
13924 }
6c95b8df 13925
af02033e
PP
13926 create_overlay_event_breakpoint ();
13927 create_longjmp_master_breakpoint ();
13928 create_std_terminate_master_breakpoint ();
186c406b 13929 create_exception_master_breakpoint ();
2a7f3dff
PA
13930
13931 /* Now we can insert. */
13932 update_global_location_list (UGLL_MAY_INSERT);
c906108c
SS
13933}
13934\f
c906108c
SS
13935/* Reset the thread number of this breakpoint:
13936
13937 - If the breakpoint is for all threads, leave it as-is.
4a64f543 13938 - Else, reset it to the current thread for inferior_ptid. */
c906108c 13939void
fba45db2 13940breakpoint_re_set_thread (struct breakpoint *b)
c906108c
SS
13941{
13942 if (b->thread != -1)
13943 {
39f77062 13944 if (in_thread_list (inferior_ptid))
5d5658a1 13945 b->thread = ptid_to_global_thread_id (inferior_ptid);
6c95b8df
PA
13946
13947 /* We're being called after following a fork. The new fork is
13948 selected as current, and unless this was a vfork will have a
13949 different program space from the original thread. Reset that
13950 as well. */
13951 b->loc->pspace = current_program_space;
c906108c
SS
13952 }
13953}
13954
03ac34d5
MS
13955/* Set ignore-count of breakpoint number BPTNUM to COUNT.
13956 If from_tty is nonzero, it prints a message to that effect,
13957 which ends with a period (no newline). */
13958
c906108c 13959void
fba45db2 13960set_ignore_count (int bptnum, int count, int from_tty)
c906108c 13961{
52f0bd74 13962 struct breakpoint *b;
c906108c
SS
13963
13964 if (count < 0)
13965 count = 0;
13966
13967 ALL_BREAKPOINTS (b)
13968 if (b->number == bptnum)
c5aa993b 13969 {
d77f58be
SS
13970 if (is_tracepoint (b))
13971 {
13972 if (from_tty && count != 0)
13973 printf_filtered (_("Ignore count ignored for tracepoint %d."),
13974 bptnum);
13975 return;
13976 }
13977
c5aa993b 13978 b->ignore_count = count;
221ea385
KS
13979 if (from_tty)
13980 {
13981 if (count == 0)
3e43a32a
MS
13982 printf_filtered (_("Will stop next time "
13983 "breakpoint %d is reached."),
221ea385
KS
13984 bptnum);
13985 else if (count == 1)
a3f17187 13986 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
221ea385
KS
13987 bptnum);
13988 else
3e43a32a
MS
13989 printf_filtered (_("Will ignore next %d "
13990 "crossings of breakpoint %d."),
221ea385
KS
13991 count, bptnum);
13992 }
76727919 13993 gdb::observers::breakpoint_modified.notify (b);
c5aa993b
JM
13994 return;
13995 }
c906108c 13996
8a3fe4f8 13997 error (_("No breakpoint number %d."), bptnum);
c906108c
SS
13998}
13999
c906108c
SS
14000/* Command to set ignore-count of breakpoint N to COUNT. */
14001
14002static void
0b39b52e 14003ignore_command (const char *args, int from_tty)
c906108c 14004{
0b39b52e 14005 const char *p = args;
52f0bd74 14006 int num;
c906108c
SS
14007
14008 if (p == 0)
e2e0b3e5 14009 error_no_arg (_("a breakpoint number"));
c5aa993b 14010
c906108c 14011 num = get_number (&p);
5c44784c 14012 if (num == 0)
8a3fe4f8 14013 error (_("bad breakpoint number: '%s'"), args);
c906108c 14014 if (*p == 0)
8a3fe4f8 14015 error (_("Second argument (specified ignore-count) is missing."));
c906108c
SS
14016
14017 set_ignore_count (num,
14018 longest_to_int (value_as_long (parse_and_eval (p))),
14019 from_tty);
221ea385
KS
14020 if (from_tty)
14021 printf_filtered ("\n");
c906108c
SS
14022}
14023\f
d0fe4701
XR
14024
14025/* Call FUNCTION on each of the breakpoints with numbers in the range
14026 defined by BP_NUM_RANGE (an inclusive range). */
c906108c
SS
14027
14028static void
d0fe4701
XR
14029map_breakpoint_number_range (std::pair<int, int> bp_num_range,
14030 gdb::function_view<void (breakpoint *)> function)
c906108c 14031{
d0fe4701
XR
14032 if (bp_num_range.first == 0)
14033 {
14034 warning (_("bad breakpoint number at or near '%d'"),
14035 bp_num_range.first);
14036 }
14037 else
c906108c 14038 {
d0fe4701 14039 struct breakpoint *b, *tmp;
197f0a60 14040
d0fe4701 14041 for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
5c44784c 14042 {
d0fe4701
XR
14043 bool match = false;
14044
5c44784c 14045 ALL_BREAKPOINTS_SAFE (b, tmp)
d0fe4701 14046 if (b->number == i)
5c44784c 14047 {
bfd28288 14048 match = true;
48649e1b 14049 function (b);
11cf8741 14050 break;
5c44784c 14051 }
bfd28288 14052 if (!match)
d0fe4701 14053 printf_unfiltered (_("No breakpoint number %d.\n"), i);
c5aa993b 14054 }
c906108c
SS
14055 }
14056}
14057
d0fe4701
XR
14058/* Call FUNCTION on each of the breakpoints whose numbers are given in
14059 ARGS. */
14060
14061static void
14062map_breakpoint_numbers (const char *args,
14063 gdb::function_view<void (breakpoint *)> function)
14064{
14065 if (args == NULL || *args == '\0')
14066 error_no_arg (_("one or more breakpoint numbers"));
14067
14068 number_or_range_parser parser (args);
14069
14070 while (!parser.finished ())
14071 {
14072 int num = parser.get_number ();
14073 map_breakpoint_number_range (std::make_pair (num, num), function);
14074 }
14075}
14076
14077/* Return the breakpoint location structure corresponding to the
14078 BP_NUM and LOC_NUM values. */
14079
0d381245 14080static struct bp_location *
d0fe4701 14081find_location_by_number (int bp_num, int loc_num)
0d381245 14082{
0d381245 14083 struct breakpoint *b;
0d381245
VP
14084
14085 ALL_BREAKPOINTS (b)
14086 if (b->number == bp_num)
14087 {
14088 break;
14089 }
14090
14091 if (!b || b->number != bp_num)
d0fe4701 14092 error (_("Bad breakpoint number '%d'"), bp_num);
0d381245 14093
0d381245 14094 if (loc_num == 0)
d0fe4701 14095 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245 14096
d0fe4701
XR
14097 int n = 0;
14098 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
14099 if (++n == loc_num)
14100 return loc;
14101
14102 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245
VP
14103}
14104
95e95a6d
PA
14105/* Modes of operation for extract_bp_num. */
14106enum class extract_bp_kind
14107{
14108 /* Extracting a breakpoint number. */
14109 bp,
14110
14111 /* Extracting a location number. */
14112 loc,
14113};
14114
14115/* Extract a breakpoint or location number (as determined by KIND)
14116 from the string starting at START. TRAILER is a character which
14117 can be found after the number. If you don't want a trailer, use
14118 '\0'. If END_OUT is not NULL, it is set to point after the parsed
14119 string. This always returns a positive integer. */
14120
14121static int
14122extract_bp_num (extract_bp_kind kind, const char *start,
14123 int trailer, const char **end_out = NULL)
14124{
14125 const char *end = start;
14126 int num = get_number_trailer (&end, trailer);
14127 if (num < 0)
14128 error (kind == extract_bp_kind::bp
14129 ? _("Negative breakpoint number '%.*s'")
14130 : _("Negative breakpoint location number '%.*s'"),
14131 int (end - start), start);
14132 if (num == 0)
14133 error (kind == extract_bp_kind::bp
14134 ? _("Bad breakpoint number '%.*s'")
14135 : _("Bad breakpoint location number '%.*s'"),
14136 int (end - start), start);
14137
14138 if (end_out != NULL)
14139 *end_out = end;
14140 return num;
14141}
14142
14143/* Extract a breakpoint or location range (as determined by KIND) in
14144 the form NUM1-NUM2 stored at &ARG[arg_offset]. Returns a std::pair
14145 representing the (inclusive) range. The returned pair's elements
14146 are always positive integers. */
14147
14148static std::pair<int, int>
14149extract_bp_or_bp_range (extract_bp_kind kind,
14150 const std::string &arg,
14151 std::string::size_type arg_offset)
14152{
14153 std::pair<int, int> range;
14154 const char *bp_loc = &arg[arg_offset];
14155 std::string::size_type dash = arg.find ('-', arg_offset);
14156 if (dash != std::string::npos)
14157 {
14158 /* bp_loc is a range (x-z). */
14159 if (arg.length () == dash + 1)
14160 error (kind == extract_bp_kind::bp
14161 ? _("Bad breakpoint number at or near: '%s'")
14162 : _("Bad breakpoint location number at or near: '%s'"),
14163 bp_loc);
14164
14165 const char *end;
14166 const char *start_first = bp_loc;
14167 const char *start_second = &arg[dash + 1];
14168 range.first = extract_bp_num (kind, start_first, '-');
14169 range.second = extract_bp_num (kind, start_second, '\0', &end);
14170
14171 if (range.first > range.second)
14172 error (kind == extract_bp_kind::bp
14173 ? _("Inverted breakpoint range at '%.*s'")
14174 : _("Inverted breakpoint location range at '%.*s'"),
14175 int (end - start_first), start_first);
14176 }
14177 else
14178 {
14179 /* bp_loc is a single value. */
14180 range.first = extract_bp_num (kind, bp_loc, '\0');
14181 range.second = range.first;
14182 }
14183 return range;
14184}
14185
d0fe4701
XR
14186/* Extract the breakpoint/location range specified by ARG. Returns
14187 the breakpoint range in BP_NUM_RANGE, and the location range in
14188 BP_LOC_RANGE.
14189
14190 ARG may be in any of the following forms:
14191
14192 x where 'x' is a breakpoint number.
14193 x-y where 'x' and 'y' specify a breakpoint numbers range.
14194 x.y where 'x' is a breakpoint number and 'y' a location number.
14195 x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14196 location number range.
14197*/
14198
cc638e86 14199static void
d0fe4701
XR
14200extract_bp_number_and_location (const std::string &arg,
14201 std::pair<int, int> &bp_num_range,
14202 std::pair<int, int> &bp_loc_range)
14203{
14204 std::string::size_type dot = arg.find ('.');
14205
14206 if (dot != std::string::npos)
14207 {
14208 /* Handle 'x.y' and 'x.y-z' cases. */
14209
14210 if (arg.length () == dot + 1 || dot == 0)
95e95a6d 14211 error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
d0fe4701 14212
95e95a6d
PA
14213 bp_num_range.first
14214 = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14215 bp_num_range.second = bp_num_range.first;
d0fe4701 14216
95e95a6d
PA
14217 bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14218 arg, dot + 1);
d0fe4701
XR
14219 }
14220 else
14221 {
14222 /* Handle x and x-y cases. */
d0fe4701 14223
95e95a6d 14224 bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
d0fe4701
XR
14225 bp_loc_range.first = 0;
14226 bp_loc_range.second = 0;
14227 }
d0fe4701
XR
14228}
14229
14230/* Enable or disable a breakpoint location BP_NUM.LOC_NUM. ENABLE
14231 specifies whether to enable or disable. */
14232
14233static void
14234enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14235{
14236 struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14237 if (loc != NULL)
14238 {
14239 if (loc->enabled != enable)
14240 {
14241 loc->enabled = enable;
14242 mark_breakpoint_location_modified (loc);
14243 }
14244 if (target_supports_enable_disable_tracepoint ()
14245 && current_trace_status ()->running && loc->owner
14246 && is_tracepoint (loc->owner))
14247 target_disable_tracepoint (loc);
14248 }
14249 update_global_location_list (UGLL_DONT_INSERT);
14250}
14251
14252/* Enable or disable a range of breakpoint locations. BP_NUM is the
14253 number of the breakpoint, and BP_LOC_RANGE specifies the
14254 (inclusive) range of location numbers of that breakpoint to
14255 enable/disable. ENABLE specifies whether to enable or disable the
14256 location. */
14257
14258static void
14259enable_disable_breakpoint_location_range (int bp_num,
14260 std::pair<int, int> &bp_loc_range,
14261 bool enable)
14262{
14263 for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14264 enable_disable_bp_num_loc (bp_num, i, enable);
14265}
0d381245 14266
1900040c
MS
14267/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14268 If from_tty is nonzero, it prints a message to that effect,
14269 which ends with a period (no newline). */
14270
c906108c 14271void
fba45db2 14272disable_breakpoint (struct breakpoint *bpt)
c906108c
SS
14273{
14274 /* Never disable a watchpoint scope breakpoint; we want to
14275 hit them when we leave scope so we can delete both the
14276 watchpoint and its scope breakpoint at that time. */
14277 if (bpt->type == bp_watchpoint_scope)
14278 return;
14279
b5de0fa7 14280 bpt->enable_state = bp_disabled;
c906108c 14281
b775012e
LM
14282 /* Mark breakpoint locations modified. */
14283 mark_breakpoint_modified (bpt);
14284
d248b706
KY
14285 if (target_supports_enable_disable_tracepoint ()
14286 && current_trace_status ()->running && is_tracepoint (bpt))
14287 {
14288 struct bp_location *location;
14289
14290 for (location = bpt->loc; location; location = location->next)
14291 target_disable_tracepoint (location);
14292 }
14293
44702360 14294 update_global_location_list (UGLL_DONT_INSERT);
c906108c 14295
76727919 14296 gdb::observers::breakpoint_modified.notify (bpt);
c906108c
SS
14297}
14298
d0fe4701
XR
14299/* Enable or disable the breakpoint(s) or breakpoint location(s)
14300 specified in ARGS. ARGS may be in any of the formats handled by
14301 extract_bp_number_and_location. ENABLE specifies whether to enable
14302 or disable the breakpoints/locations. */
14303
c906108c 14304static void
d0fe4701 14305enable_disable_command (const char *args, int from_tty, bool enable)
c906108c 14306{
c906108c 14307 if (args == 0)
46c6471b
PA
14308 {
14309 struct breakpoint *bpt;
14310
14311 ALL_BREAKPOINTS (bpt)
14312 if (user_breakpoint_p (bpt))
d0fe4701
XR
14313 {
14314 if (enable)
14315 enable_breakpoint (bpt);
14316 else
14317 disable_breakpoint (bpt);
14318 }
46c6471b 14319 }
9eaabc75 14320 else
0d381245 14321 {
cb791d59 14322 std::string num = extract_arg (&args);
9eaabc75 14323
cb791d59 14324 while (!num.empty ())
d248b706 14325 {
d0fe4701 14326 std::pair<int, int> bp_num_range, bp_loc_range;
9eaabc75 14327
cc638e86
PA
14328 extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14329
14330 if (bp_loc_range.first == bp_loc_range.second
14331 && bp_loc_range.first == 0)
d0fe4701 14332 {
cc638e86
PA
14333 /* Handle breakpoint ids with formats 'x' or 'x-z'. */
14334 map_breakpoint_number_range (bp_num_range,
14335 enable
14336 ? enable_breakpoint
14337 : disable_breakpoint);
14338 }
14339 else
14340 {
14341 /* Handle breakpoint ids with formats 'x.y' or
14342 'x.y-z'. */
14343 enable_disable_breakpoint_location_range
14344 (bp_num_range.first, bp_loc_range, enable);
b775012e 14345 }
9eaabc75 14346 num = extract_arg (&args);
d248b706 14347 }
0d381245 14348 }
c906108c
SS
14349}
14350
d0fe4701
XR
14351/* The disable command disables the specified breakpoints/locations
14352 (or all defined breakpoints) so they're no longer effective in
14353 stopping the inferior. ARGS may be in any of the forms defined in
14354 extract_bp_number_and_location. */
14355
14356static void
14357disable_command (const char *args, int from_tty)
14358{
14359 enable_disable_command (args, from_tty, false);
14360}
14361
c906108c 14362static void
816338b5
SS
14363enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14364 int count)
c906108c 14365{
afe38095 14366 int target_resources_ok;
c906108c
SS
14367
14368 if (bpt->type == bp_hardware_breakpoint)
14369 {
14370 int i;
c5aa993b 14371 i = hw_breakpoint_used_count ();
53a5351d 14372 target_resources_ok =
d92524f1 14373 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
53a5351d 14374 i + 1, 0);
c906108c 14375 if (target_resources_ok == 0)
8a3fe4f8 14376 error (_("No hardware breakpoint support in the target."));
c906108c 14377 else if (target_resources_ok < 0)
8a3fe4f8 14378 error (_("Hardware breakpoints used exceeds limit."));
c906108c
SS
14379 }
14380
cc60f2e3 14381 if (is_watchpoint (bpt))
c906108c 14382 {
d07205c2 14383 /* Initialize it just to avoid a GCC false warning. */
f486487f 14384 enum enable_state orig_enable_state = bp_disabled;
dde02812 14385
492d29ea 14386 TRY
c906108c 14387 {
3a5c3e22
PA
14388 struct watchpoint *w = (struct watchpoint *) bpt;
14389
1e718ff1
TJB
14390 orig_enable_state = bpt->enable_state;
14391 bpt->enable_state = bp_enabled;
3a5c3e22 14392 update_watchpoint (w, 1 /* reparse */);
c906108c 14393 }
492d29ea 14394 CATCH (e, RETURN_MASK_ALL)
c5aa993b 14395 {
1e718ff1 14396 bpt->enable_state = orig_enable_state;
dde02812
ES
14397 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14398 bpt->number);
14399 return;
c5aa993b 14400 }
492d29ea 14401 END_CATCH
c906108c 14402 }
0101ce28 14403
b775012e
LM
14404 bpt->enable_state = bp_enabled;
14405
14406 /* Mark breakpoint locations modified. */
14407 mark_breakpoint_modified (bpt);
14408
d248b706
KY
14409 if (target_supports_enable_disable_tracepoint ()
14410 && current_trace_status ()->running && is_tracepoint (bpt))
14411 {
14412 struct bp_location *location;
14413
14414 for (location = bpt->loc; location; location = location->next)
14415 target_enable_tracepoint (location);
14416 }
14417
b4c291bb 14418 bpt->disposition = disposition;
816338b5 14419 bpt->enable_count = count;
44702360 14420 update_global_location_list (UGLL_MAY_INSERT);
9c97429f 14421
76727919 14422 gdb::observers::breakpoint_modified.notify (bpt);
c906108c
SS
14423}
14424
fe3f5fa8 14425
c906108c 14426void
fba45db2 14427enable_breakpoint (struct breakpoint *bpt)
c906108c 14428{
816338b5 14429 enable_breakpoint_disp (bpt, bpt->disposition, 0);
51be5b68
PA
14430}
14431
d0fe4701
XR
14432/* The enable command enables the specified breakpoints/locations (or
14433 all defined breakpoints) so they once again become (or continue to
14434 be) effective in stopping the inferior. ARGS may be in any of the
14435 forms defined in extract_bp_number_and_location. */
c906108c 14436
c906108c 14437static void
981a3fb3 14438enable_command (const char *args, int from_tty)
c906108c 14439{
d0fe4701 14440 enable_disable_command (args, from_tty, true);
c906108c
SS
14441}
14442
c906108c 14443static void
4495129a 14444enable_once_command (const char *args, int from_tty)
c906108c 14445{
48649e1b
TT
14446 map_breakpoint_numbers
14447 (args, [&] (breakpoint *b)
14448 {
14449 iterate_over_related_breakpoints
14450 (b, [&] (breakpoint *bpt)
14451 {
14452 enable_breakpoint_disp (bpt, disp_disable, 1);
14453 });
14454 });
816338b5
SS
14455}
14456
14457static void
4495129a 14458enable_count_command (const char *args, int from_tty)
816338b5 14459{
b9d61307
SM
14460 int count;
14461
14462 if (args == NULL)
14463 error_no_arg (_("hit count"));
14464
14465 count = get_number (&args);
816338b5 14466
48649e1b
TT
14467 map_breakpoint_numbers
14468 (args, [&] (breakpoint *b)
14469 {
14470 iterate_over_related_breakpoints
14471 (b, [&] (breakpoint *bpt)
14472 {
14473 enable_breakpoint_disp (bpt, disp_disable, count);
14474 });
14475 });
c906108c
SS
14476}
14477
c906108c 14478static void
4495129a 14479enable_delete_command (const char *args, int from_tty)
c906108c 14480{
48649e1b
TT
14481 map_breakpoint_numbers
14482 (args, [&] (breakpoint *b)
14483 {
14484 iterate_over_related_breakpoints
14485 (b, [&] (breakpoint *bpt)
14486 {
14487 enable_breakpoint_disp (bpt, disp_del, 1);
14488 });
14489 });
c906108c
SS
14490}
14491\f
fa8d40ab 14492static void
981a3fb3 14493set_breakpoint_cmd (const char *args, int from_tty)
fa8d40ab
JJ
14494{
14495}
14496
14497static void
981a3fb3 14498show_breakpoint_cmd (const char *args, int from_tty)
fa8d40ab
JJ
14499{
14500}
14501
1f3b5d1b
PP
14502/* Invalidate last known value of any hardware watchpoint if
14503 the memory which that value represents has been written to by
14504 GDB itself. */
14505
14506static void
8de0566d
YQ
14507invalidate_bp_value_on_memory_change (struct inferior *inferior,
14508 CORE_ADDR addr, ssize_t len,
1f3b5d1b
PP
14509 const bfd_byte *data)
14510{
14511 struct breakpoint *bp;
14512
14513 ALL_BREAKPOINTS (bp)
14514 if (bp->enable_state == bp_enabled
3a5c3e22 14515 && bp->type == bp_hardware_watchpoint)
1f3b5d1b 14516 {
3a5c3e22 14517 struct watchpoint *wp = (struct watchpoint *) bp;
1f3b5d1b 14518
850645cf 14519 if (wp->val_valid && wp->val != nullptr)
3a5c3e22
PA
14520 {
14521 struct bp_location *loc;
14522
14523 for (loc = bp->loc; loc != NULL; loc = loc->next)
14524 if (loc->loc_type == bp_loc_hardware_watchpoint
14525 && loc->address + loc->length > addr
14526 && addr + len > loc->address)
14527 {
3a5c3e22
PA
14528 wp->val = NULL;
14529 wp->val_valid = 0;
14530 }
14531 }
1f3b5d1b
PP
14532 }
14533}
14534
8181d85f
DJ
14535/* Create and insert a breakpoint for software single step. */
14536
14537void
6c95b8df 14538insert_single_step_breakpoint (struct gdbarch *gdbarch,
accd0bcd 14539 const address_space *aspace,
4a64f543 14540 CORE_ADDR next_pc)
8181d85f 14541{
7c16b83e
PA
14542 struct thread_info *tp = inferior_thread ();
14543 struct symtab_and_line sal;
14544 CORE_ADDR pc = next_pc;
8181d85f 14545
34b7e8a6
PA
14546 if (tp->control.single_step_breakpoints == NULL)
14547 {
14548 tp->control.single_step_breakpoints
5d5658a1 14549 = new_single_step_breakpoint (tp->global_num, gdbarch);
34b7e8a6 14550 }
8181d85f 14551
7c16b83e
PA
14552 sal = find_pc_line (pc, 0);
14553 sal.pc = pc;
14554 sal.section = find_pc_overlay (pc);
14555 sal.explicit_pc = 1;
34b7e8a6 14556 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
8181d85f 14557
7c16b83e 14558 update_global_location_list (UGLL_INSERT);
8181d85f
DJ
14559}
14560
93f9a11f
YQ
14561/* Insert single step breakpoints according to the current state. */
14562
14563int
14564insert_single_step_breakpoints (struct gdbarch *gdbarch)
14565{
f5ea389a 14566 struct regcache *regcache = get_current_regcache ();
a0ff9e1a 14567 std::vector<CORE_ADDR> next_pcs;
93f9a11f 14568
f5ea389a 14569 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
93f9a11f 14570
a0ff9e1a 14571 if (!next_pcs.empty ())
93f9a11f 14572 {
f5ea389a 14573 struct frame_info *frame = get_current_frame ();
8b86c959 14574 const address_space *aspace = get_frame_address_space (frame);
93f9a11f 14575
a0ff9e1a 14576 for (CORE_ADDR pc : next_pcs)
93f9a11f
YQ
14577 insert_single_step_breakpoint (gdbarch, aspace, pc);
14578
93f9a11f
YQ
14579 return 1;
14580 }
14581 else
14582 return 0;
14583}
14584
34b7e8a6 14585/* See breakpoint.h. */
f02253f1
HZ
14586
14587int
7c16b83e 14588breakpoint_has_location_inserted_here (struct breakpoint *bp,
accd0bcd 14589 const address_space *aspace,
7c16b83e 14590 CORE_ADDR pc)
1aafd4da 14591{
7c16b83e 14592 struct bp_location *loc;
1aafd4da 14593
7c16b83e
PA
14594 for (loc = bp->loc; loc != NULL; loc = loc->next)
14595 if (loc->inserted
14596 && breakpoint_location_address_match (loc, aspace, pc))
14597 return 1;
1aafd4da 14598
7c16b83e 14599 return 0;
ef370185
JB
14600}
14601
14602/* Check whether a software single-step breakpoint is inserted at
14603 PC. */
14604
14605int
accd0bcd 14606single_step_breakpoint_inserted_here_p (const address_space *aspace,
ef370185
JB
14607 CORE_ADDR pc)
14608{
34b7e8a6
PA
14609 struct breakpoint *bpt;
14610
14611 ALL_BREAKPOINTS (bpt)
14612 {
14613 if (bpt->type == bp_single_step
14614 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14615 return 1;
14616 }
14617 return 0;
1aafd4da
UW
14618}
14619
1042e4c0
SS
14620/* Tracepoint-specific operations. */
14621
14622/* Set tracepoint count to NUM. */
14623static void
14624set_tracepoint_count (int num)
14625{
14626 tracepoint_count = num;
4fa62494 14627 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
1042e4c0
SS
14628}
14629
70221824 14630static void
0b39b52e 14631trace_command (const char *arg, int from_tty)
1042e4c0 14632{
55aa24fb 14633 struct breakpoint_ops *ops;
55aa24fb 14634
ffc2605c
TT
14635 event_location_up location = string_to_event_location (&arg,
14636 current_language);
5b56227b 14637 if (location != NULL
ffc2605c 14638 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
14639 ops = &tracepoint_probe_breakpoint_ops;
14640 else
14641 ops = &tracepoint_breakpoint_ops;
14642
558a9d82 14643 create_breakpoint (get_current_arch (),
ffc2605c 14644 location.get (),
f00aae0f 14645 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14646 0 /* tempflag */,
14647 bp_tracepoint /* type_wanted */,
14648 0 /* Ignore count */,
14649 pending_break_support,
14650 ops,
14651 from_tty,
14652 1 /* enabled */,
14653 0 /* internal */, 0);
1042e4c0
SS
14654}
14655
70221824 14656static void
0b39b52e 14657ftrace_command (const char *arg, int from_tty)
7a697b8d 14658{
ffc2605c
TT
14659 event_location_up location = string_to_event_location (&arg,
14660 current_language);
558a9d82 14661 create_breakpoint (get_current_arch (),
ffc2605c 14662 location.get (),
f00aae0f 14663 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14664 0 /* tempflag */,
14665 bp_fast_tracepoint /* type_wanted */,
14666 0 /* Ignore count */,
14667 pending_break_support,
14668 &tracepoint_breakpoint_ops,
14669 from_tty,
14670 1 /* enabled */,
14671 0 /* internal */, 0);
0fb4aa4b
PA
14672}
14673
14674/* strace command implementation. Creates a static tracepoint. */
14675
70221824 14676static void
0b39b52e 14677strace_command (const char *arg, int from_tty)
0fb4aa4b 14678{
983af33b 14679 struct breakpoint_ops *ops;
ffc2605c 14680 event_location_up location;
983af33b
SDJ
14681
14682 /* Decide if we are dealing with a static tracepoint marker (`-m'),
14683 or with a normal static tracepoint. */
61012eef 14684 if (arg && startswith (arg, "-m") && isspace (arg[2]))
f00aae0f
KS
14685 {
14686 ops = &strace_marker_breakpoint_ops;
a20714ff 14687 location = new_linespec_location (&arg, symbol_name_match_type::FULL);
f00aae0f 14688 }
983af33b 14689 else
f00aae0f
KS
14690 {
14691 ops = &tracepoint_breakpoint_ops;
14692 location = string_to_event_location (&arg, current_language);
14693 }
983af33b 14694
558a9d82 14695 create_breakpoint (get_current_arch (),
ffc2605c 14696 location.get (),
f00aae0f 14697 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14698 0 /* tempflag */,
14699 bp_static_tracepoint /* type_wanted */,
14700 0 /* Ignore count */,
14701 pending_break_support,
14702 ops,
14703 from_tty,
14704 1 /* enabled */,
14705 0 /* internal */, 0);
7a697b8d
SS
14706}
14707
409873ef
SS
14708/* Set up a fake reader function that gets command lines from a linked
14709 list that was acquired during tracepoint uploading. */
14710
14711static struct uploaded_tp *this_utp;
3149d8c1 14712static int next_cmd;
409873ef
SS
14713
14714static char *
14715read_uploaded_action (void)
14716{
a18ba4e4 14717 char *rslt = nullptr;
409873ef 14718
a18ba4e4
SM
14719 if (next_cmd < this_utp->cmd_strings.size ())
14720 {
14721 rslt = this_utp->cmd_strings[next_cmd];
14722 next_cmd++;
14723 }
409873ef
SS
14724
14725 return rslt;
14726}
14727
00bf0b85
SS
14728/* Given information about a tracepoint as recorded on a target (which
14729 can be either a live system or a trace file), attempt to create an
14730 equivalent GDB tracepoint. This is not a reliable process, since
14731 the target does not necessarily have all the information used when
14732 the tracepoint was originally defined. */
14733
d9b3f62e 14734struct tracepoint *
00bf0b85 14735create_tracepoint_from_upload (struct uploaded_tp *utp)
d5551862 14736{
f2fc3015
TT
14737 const char *addr_str;
14738 char small_buf[100];
d9b3f62e 14739 struct tracepoint *tp;
fd9b8c24 14740
409873ef
SS
14741 if (utp->at_string)
14742 addr_str = utp->at_string;
14743 else
14744 {
14745 /* In the absence of a source location, fall back to raw
14746 address. Since there is no way to confirm that the address
14747 means the same thing as when the trace was started, warn the
14748 user. */
3e43a32a
MS
14749 warning (_("Uploaded tracepoint %d has no "
14750 "source location, using raw address"),
409873ef 14751 utp->number);
8c042590 14752 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
409873ef
SS
14753 addr_str = small_buf;
14754 }
14755
14756 /* There's not much we can do with a sequence of bytecodes. */
14757 if (utp->cond && !utp->cond_string)
3e43a32a
MS
14758 warning (_("Uploaded tracepoint %d condition "
14759 "has no source form, ignoring it"),
409873ef 14760 utp->number);
d5551862 14761
ffc2605c
TT
14762 event_location_up location = string_to_event_location (&addr_str,
14763 current_language);
8cdf0e15 14764 if (!create_breakpoint (get_current_arch (),
ffc2605c 14765 location.get (),
f00aae0f 14766 utp->cond_string, -1, addr_str,
e7e0cddf 14767 0 /* parse cond/thread */,
8cdf0e15 14768 0 /* tempflag */,
0fb4aa4b 14769 utp->type /* type_wanted */,
8cdf0e15
VP
14770 0 /* Ignore count */,
14771 pending_break_support,
348d480f 14772 &tracepoint_breakpoint_ops,
8cdf0e15 14773 0 /* from_tty */,
84f4c1fe 14774 utp->enabled /* enabled */,
44f238bb
PA
14775 0 /* internal */,
14776 CREATE_BREAKPOINT_FLAGS_INSERTED))
ffc2605c 14777 return NULL;
fd9b8c24 14778
409873ef 14779 /* Get the tracepoint we just created. */
fd9b8c24
PA
14780 tp = get_tracepoint (tracepoint_count);
14781 gdb_assert (tp != NULL);
d5551862 14782
00bf0b85
SS
14783 if (utp->pass > 0)
14784 {
8c042590 14785 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
c1fc2657 14786 tp->number);
00bf0b85 14787
409873ef 14788 trace_pass_command (small_buf, 0);
00bf0b85
SS
14789 }
14790
409873ef
SS
14791 /* If we have uploaded versions of the original commands, set up a
14792 special-purpose "reader" function and call the usual command line
14793 reader, then pass the result to the breakpoint command-setting
14794 function. */
a18ba4e4 14795 if (!utp->cmd_strings.empty ())
00bf0b85 14796 {
93921405 14797 command_line_up cmd_list;
00bf0b85 14798
409873ef 14799 this_utp = utp;
3149d8c1 14800 next_cmd = 0;
d5551862 14801
409873ef
SS
14802 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
14803
c1fc2657 14804 breakpoint_set_commands (tp, std::move (cmd_list));
00bf0b85 14805 }
a18ba4e4
SM
14806 else if (!utp->actions.empty ()
14807 || !utp->step_actions.empty ())
3e43a32a
MS
14808 warning (_("Uploaded tracepoint %d actions "
14809 "have no source form, ignoring them"),
409873ef 14810 utp->number);
00bf0b85 14811
f196051f 14812 /* Copy any status information that might be available. */
c1fc2657 14813 tp->hit_count = utp->hit_count;
f196051f
SS
14814 tp->traceframe_usage = utp->traceframe_usage;
14815
00bf0b85 14816 return tp;
d9b3f62e 14817}
00bf0b85 14818
1042e4c0
SS
14819/* Print information on tracepoint number TPNUM_EXP, or all if
14820 omitted. */
14821
14822static void
1d12d88f 14823info_tracepoints_command (const char *args, int from_tty)
1042e4c0 14824{
79a45e25 14825 struct ui_out *uiout = current_uiout;
e5a67952 14826 int num_printed;
1042e4c0 14827
e5a67952 14828 num_printed = breakpoint_1 (args, 0, is_tracepoint);
d77f58be
SS
14829
14830 if (num_printed == 0)
1042e4c0 14831 {
e5a67952 14832 if (args == NULL || *args == '\0')
112e8700 14833 uiout->message ("No tracepoints.\n");
d77f58be 14834 else
112e8700 14835 uiout->message ("No tracepoint matching '%s'.\n", args);
1042e4c0 14836 }
ad443146
SS
14837
14838 default_collect_info ();
1042e4c0
SS
14839}
14840
4a64f543 14841/* The 'enable trace' command enables tracepoints.
1042e4c0
SS
14842 Not supported by all targets. */
14843static void
5fed81ff 14844enable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14845{
14846 enable_command (args, from_tty);
14847}
14848
4a64f543 14849/* The 'disable trace' command disables tracepoints.
1042e4c0
SS
14850 Not supported by all targets. */
14851static void
5fed81ff 14852disable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14853{
14854 disable_command (args, from_tty);
14855}
14856
4a64f543 14857/* Remove a tracepoint (or all if no argument). */
1042e4c0 14858static void
4495129a 14859delete_trace_command (const char *arg, int from_tty)
1042e4c0 14860{
35df4500 14861 struct breakpoint *b, *b_tmp;
1042e4c0
SS
14862
14863 dont_repeat ();
14864
14865 if (arg == 0)
14866 {
14867 int breaks_to_delete = 0;
14868
14869 /* Delete all breakpoints if no argument.
14870 Do not delete internal or call-dummy breakpoints, these
4a64f543
MS
14871 have to be deleted with an explicit breakpoint number
14872 argument. */
1042e4c0 14873 ALL_TRACEPOINTS (b)
46c6471b 14874 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0
SS
14875 {
14876 breaks_to_delete = 1;
14877 break;
14878 }
1042e4c0
SS
14879
14880 /* Ask user only if there are some breakpoints to delete. */
14881 if (!from_tty
14882 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14883 {
35df4500 14884 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 14885 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0 14886 delete_breakpoint (b);
1042e4c0
SS
14887 }
14888 }
14889 else
48649e1b
TT
14890 map_breakpoint_numbers
14891 (arg, [&] (breakpoint *b)
14892 {
14893 iterate_over_related_breakpoints (b, delete_breakpoint);
14894 });
1042e4c0
SS
14895}
14896
197f0a60
TT
14897/* Helper function for trace_pass_command. */
14898
14899static void
d9b3f62e 14900trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
197f0a60 14901{
d9b3f62e 14902 tp->pass_count = count;
76727919 14903 gdb::observers::breakpoint_modified.notify (tp);
197f0a60
TT
14904 if (from_tty)
14905 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
c1fc2657 14906 tp->number, count);
197f0a60
TT
14907}
14908
1042e4c0
SS
14909/* Set passcount for tracepoint.
14910
14911 First command argument is passcount, second is tracepoint number.
14912 If tracepoint number omitted, apply to most recently defined.
14913 Also accepts special argument "all". */
14914
14915static void
0b39b52e 14916trace_pass_command (const char *args, int from_tty)
1042e4c0 14917{
d9b3f62e 14918 struct tracepoint *t1;
0b39b52e 14919 ULONGEST count;
1042e4c0
SS
14920
14921 if (args == 0 || *args == 0)
3e43a32a
MS
14922 error (_("passcount command requires an "
14923 "argument (count + optional TP num)"));
1042e4c0 14924
0b39b52e 14925 count = strtoulst (args, &args, 10); /* Count comes first, then TP num. */
1042e4c0 14926
529480d0 14927 args = skip_spaces (args);
1042e4c0
SS
14928 if (*args && strncasecmp (args, "all", 3) == 0)
14929 {
d9b3f62e
PA
14930 struct breakpoint *b;
14931
1042e4c0 14932 args += 3; /* Skip special argument "all". */
1042e4c0
SS
14933 if (*args)
14934 error (_("Junk at end of arguments."));
1042e4c0 14935
d9b3f62e 14936 ALL_TRACEPOINTS (b)
197f0a60 14937 {
d9b3f62e 14938 t1 = (struct tracepoint *) b;
197f0a60
TT
14939 trace_pass_set_count (t1, count, from_tty);
14940 }
14941 }
14942 else if (*args == '\0')
1042e4c0 14943 {
5fa1d40e 14944 t1 = get_tracepoint_by_number (&args, NULL);
1042e4c0 14945 if (t1)
197f0a60
TT
14946 trace_pass_set_count (t1, count, from_tty);
14947 }
14948 else
14949 {
bfd28288
PA
14950 number_or_range_parser parser (args);
14951 while (!parser.finished ())
1042e4c0 14952 {
bfd28288 14953 t1 = get_tracepoint_by_number (&args, &parser);
197f0a60
TT
14954 if (t1)
14955 trace_pass_set_count (t1, count, from_tty);
1042e4c0
SS
14956 }
14957 }
1042e4c0
SS
14958}
14959
d9b3f62e 14960struct tracepoint *
1042e4c0
SS
14961get_tracepoint (int num)
14962{
14963 struct breakpoint *t;
14964
14965 ALL_TRACEPOINTS (t)
14966 if (t->number == num)
d9b3f62e 14967 return (struct tracepoint *) t;
1042e4c0
SS
14968
14969 return NULL;
14970}
14971
d5551862
SS
14972/* Find the tracepoint with the given target-side number (which may be
14973 different from the tracepoint number after disconnecting and
14974 reconnecting). */
14975
d9b3f62e 14976struct tracepoint *
d5551862
SS
14977get_tracepoint_by_number_on_target (int num)
14978{
d9b3f62e 14979 struct breakpoint *b;
d5551862 14980
d9b3f62e
PA
14981 ALL_TRACEPOINTS (b)
14982 {
14983 struct tracepoint *t = (struct tracepoint *) b;
14984
14985 if (t->number_on_target == num)
14986 return t;
14987 }
d5551862
SS
14988
14989 return NULL;
14990}
14991
1042e4c0 14992/* Utility: parse a tracepoint number and look it up in the list.
197f0a60 14993 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
5fa1d40e
YQ
14994 If the argument is missing, the most recent tracepoint
14995 (tracepoint_count) is returned. */
14996
d9b3f62e 14997struct tracepoint *
0b39b52e 14998get_tracepoint_by_number (const char **arg,
bfd28288 14999 number_or_range_parser *parser)
1042e4c0 15000{
1042e4c0
SS
15001 struct breakpoint *t;
15002 int tpnum;
0b39b52e 15003 const char *instring = arg == NULL ? NULL : *arg;
1042e4c0 15004
bfd28288 15005 if (parser != NULL)
197f0a60 15006 {
bfd28288
PA
15007 gdb_assert (!parser->finished ());
15008 tpnum = parser->get_number ();
197f0a60
TT
15009 }
15010 else if (arg == NULL || *arg == NULL || ! **arg)
5fa1d40e 15011 tpnum = tracepoint_count;
1042e4c0 15012 else
197f0a60 15013 tpnum = get_number (arg);
1042e4c0
SS
15014
15015 if (tpnum <= 0)
15016 {
15017 if (instring && *instring)
15018 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
15019 instring);
15020 else
5fa1d40e 15021 printf_filtered (_("No previous tracepoint\n"));
1042e4c0
SS
15022 return NULL;
15023 }
15024
15025 ALL_TRACEPOINTS (t)
15026 if (t->number == tpnum)
15027 {
d9b3f62e 15028 return (struct tracepoint *) t;
1042e4c0
SS
15029 }
15030
1042e4c0
SS
15031 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15032 return NULL;
15033}
15034
d9b3f62e
PA
15035void
15036print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15037{
15038 if (b->thread != -1)
15039 fprintf_unfiltered (fp, " thread %d", b->thread);
15040
15041 if (b->task != 0)
15042 fprintf_unfiltered (fp, " task %d", b->task);
15043
15044 fprintf_unfiltered (fp, "\n");
15045}
15046
6149aea9
PA
15047/* Save information on user settable breakpoints (watchpoints, etc) to
15048 a new script file named FILENAME. If FILTER is non-NULL, call it
15049 on each breakpoint and only include the ones for which it returns
15050 non-zero. */
15051
1042e4c0 15052static void
4495129a 15053save_breakpoints (const char *filename, int from_tty,
6149aea9 15054 int (*filter) (const struct breakpoint *))
1042e4c0
SS
15055{
15056 struct breakpoint *tp;
6149aea9 15057 int any = 0;
6149aea9 15058 int extra_trace_bits = 0;
1042e4c0 15059
6149aea9
PA
15060 if (filename == 0 || *filename == 0)
15061 error (_("Argument required (file name in which to save)"));
1042e4c0
SS
15062
15063 /* See if we have anything to save. */
6149aea9 15064 ALL_BREAKPOINTS (tp)
1042e4c0 15065 {
6149aea9 15066 /* Skip internal and momentary breakpoints. */
09d682a4 15067 if (!user_breakpoint_p (tp))
6149aea9
PA
15068 continue;
15069
15070 /* If we have a filter, only save the breakpoints it accepts. */
15071 if (filter && !filter (tp))
15072 continue;
15073
15074 any = 1;
15075
15076 if (is_tracepoint (tp))
15077 {
15078 extra_trace_bits = 1;
15079
15080 /* We can stop searching. */
15081 break;
15082 }
1042e4c0 15083 }
6149aea9
PA
15084
15085 if (!any)
1042e4c0 15086 {
6149aea9 15087 warning (_("Nothing to save."));
1042e4c0
SS
15088 return;
15089 }
15090
ee0c3293 15091 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
d7e74731
PA
15092
15093 stdio_file fp;
15094
ee0c3293 15095 if (!fp.open (expanded_filename.get (), "w"))
6149aea9 15096 error (_("Unable to open file '%s' for saving (%s)"),
ee0c3293 15097 expanded_filename.get (), safe_strerror (errno));
8bf6485c 15098
6149aea9 15099 if (extra_trace_bits)
d7e74731 15100 save_trace_state_variables (&fp);
8bf6485c 15101
6149aea9 15102 ALL_BREAKPOINTS (tp)
1042e4c0 15103 {
6149aea9 15104 /* Skip internal and momentary breakpoints. */
09d682a4 15105 if (!user_breakpoint_p (tp))
6149aea9 15106 continue;
8bf6485c 15107
6149aea9
PA
15108 /* If we have a filter, only save the breakpoints it accepts. */
15109 if (filter && !filter (tp))
15110 continue;
15111
d7e74731 15112 tp->ops->print_recreate (tp, &fp);
1042e4c0 15113
6149aea9
PA
15114 /* Note, we can't rely on tp->number for anything, as we can't
15115 assume the recreated breakpoint numbers will match. Use $bpnum
15116 instead. */
15117
15118 if (tp->cond_string)
d7e74731 15119 fp.printf (" condition $bpnum %s\n", tp->cond_string);
6149aea9
PA
15120
15121 if (tp->ignore_count)
d7e74731 15122 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
6149aea9 15123
2d9442cc 15124 if (tp->type != bp_dprintf && tp->commands)
1042e4c0 15125 {
d7e74731 15126 fp.puts (" commands\n");
a7bdde9e 15127
d7e74731 15128 current_uiout->redirect (&fp);
492d29ea 15129 TRY
1042e4c0 15130 {
d1b0a7bf 15131 print_command_lines (current_uiout, tp->commands.get (), 2);
a7bdde9e 15132 }
492d29ea
PA
15133 CATCH (ex, RETURN_MASK_ALL)
15134 {
112e8700 15135 current_uiout->redirect (NULL);
492d29ea
PA
15136 throw_exception (ex);
15137 }
15138 END_CATCH
1042e4c0 15139
112e8700 15140 current_uiout->redirect (NULL);
d7e74731 15141 fp.puts (" end\n");
1042e4c0 15142 }
6149aea9
PA
15143
15144 if (tp->enable_state == bp_disabled)
d7e74731 15145 fp.puts ("disable $bpnum\n");
6149aea9
PA
15146
15147 /* If this is a multi-location breakpoint, check if the locations
15148 should be individually disabled. Watchpoint locations are
15149 special, and not user visible. */
15150 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15151 {
15152 struct bp_location *loc;
15153 int n = 1;
15154
15155 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15156 if (!loc->enabled)
d7e74731 15157 fp.printf ("disable $bpnum.%d\n", n);
6149aea9 15158 }
1042e4c0 15159 }
8bf6485c 15160
6149aea9 15161 if (extra_trace_bits && *default_collect)
d7e74731 15162 fp.printf ("set default-collect %s\n", default_collect);
8bf6485c 15163
1042e4c0 15164 if (from_tty)
ee0c3293 15165 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
6149aea9
PA
15166}
15167
15168/* The `save breakpoints' command. */
15169
15170static void
4495129a 15171save_breakpoints_command (const char *args, int from_tty)
6149aea9
PA
15172{
15173 save_breakpoints (args, from_tty, NULL);
15174}
15175
15176/* The `save tracepoints' command. */
15177
15178static void
4495129a 15179save_tracepoints_command (const char *args, int from_tty)
6149aea9
PA
15180{
15181 save_breakpoints (args, from_tty, is_tracepoint);
1042e4c0
SS
15182}
15183
15184/* Create a vector of all tracepoints. */
15185
15186VEC(breakpoint_p) *
eeae04df 15187all_tracepoints (void)
1042e4c0
SS
15188{
15189 VEC(breakpoint_p) *tp_vec = 0;
15190 struct breakpoint *tp;
15191
15192 ALL_TRACEPOINTS (tp)
15193 {
15194 VEC_safe_push (breakpoint_p, tp_vec, tp);
15195 }
15196
15197 return tp_vec;
15198}
15199
c906108c 15200\f
629500fa
KS
15201/* This help string is used to consolidate all the help string for specifying
15202 locations used by several commands. */
15203
15204#define LOCATION_HELP_STRING \
15205"Linespecs are colon-separated lists of location parameters, such as\n\
15206source filename, function name, label name, and line number.\n\
15207Example: To specify the start of a label named \"the_top\" in the\n\
15208function \"fact\" in the file \"factorial.c\", use\n\
15209\"factorial.c:fact:the_top\".\n\
15210\n\
15211Address locations begin with \"*\" and specify an exact address in the\n\
15212program. Example: To specify the fourth byte past the start function\n\
15213\"main\", use \"*main + 4\".\n\
15214\n\
15215Explicit locations are similar to linespecs but use an option/argument\n\
15216syntax to specify location parameters.\n\
15217Example: To specify the start of the label named \"the_top\" in the\n\
15218function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
a20714ff
PA
15219-function fact -label the_top\".\n\
15220\n\
15221By default, a specified function is matched against the program's\n\
15222functions in all scopes. For C++, this means in all namespaces and\n\
15223classes. For Ada, this means in all packages. E.g., in C++,\n\
15224\"func()\" matches \"A::func()\", \"A::B::func()\", etc. The\n\
15225\"-qualified\" flag overrides this behavior, making GDB interpret the\n\
15226specified name as a complete fully-qualified name instead.\n"
629500fa 15227
4a64f543
MS
15228/* This help string is used for the break, hbreak, tbreak and thbreak
15229 commands. It is defined as a macro to prevent duplication.
15230 COMMAND should be a string constant containing the name of the
15231 command. */
629500fa 15232
31e2b00f 15233#define BREAK_ARGS_HELP(command) \
fb7b5af4
SDJ
15234command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15235PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15236probe point. Accepted values are `-probe' (for a generic, automatically\n\
d4777acb
JM
15237guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15238`-probe-dtrace' (for a DTrace probe).\n\
629500fa
KS
15239LOCATION may be a linespec, address, or explicit location as described\n\
15240below.\n\
15241\n\
dc10affe
PA
15242With no LOCATION, uses current execution address of the selected\n\
15243stack frame. This is useful for breaking on return to a stack frame.\n\
31e2b00f
AS
15244\n\
15245THREADNUM is the number from \"info threads\".\n\
15246CONDITION is a boolean expression.\n\
629500fa 15247\n" LOCATION_HELP_STRING "\n\
d41c0fc8
PA
15248Multiple breakpoints at one place are permitted, and useful if their\n\
15249conditions are different.\n\
31e2b00f
AS
15250\n\
15251Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15252
44feb3ce
TT
15253/* List of subcommands for "catch". */
15254static struct cmd_list_element *catch_cmdlist;
15255
15256/* List of subcommands for "tcatch". */
15257static struct cmd_list_element *tcatch_cmdlist;
15258
9ac4176b 15259void
a121b7c1 15260add_catch_command (const char *name, const char *docstring,
eb4c3f4a 15261 cmd_const_sfunc_ftype *sfunc,
625e8578 15262 completer_ftype *completer,
44feb3ce
TT
15263 void *user_data_catch,
15264 void *user_data_tcatch)
15265{
15266 struct cmd_list_element *command;
15267
0450cc4c 15268 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce
TT
15269 &catch_cmdlist);
15270 set_cmd_sfunc (command, sfunc);
15271 set_cmd_context (command, user_data_catch);
a96d9b2e 15272 set_cmd_completer (command, completer);
44feb3ce 15273
0450cc4c 15274 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce
TT
15275 &tcatch_cmdlist);
15276 set_cmd_sfunc (command, sfunc);
15277 set_cmd_context (command, user_data_tcatch);
a96d9b2e 15278 set_cmd_completer (command, completer);
44feb3ce
TT
15279}
15280
6149aea9 15281static void
981a3fb3 15282save_command (const char *arg, int from_tty)
6149aea9 15283{
3e43a32a
MS
15284 printf_unfiltered (_("\"save\" must be followed by "
15285 "the name of a save subcommand.\n"));
635c7e8a 15286 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
6149aea9
PA
15287}
15288
84f4c1fe
PM
15289struct breakpoint *
15290iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15291 void *data)
15292{
35df4500 15293 struct breakpoint *b, *b_tmp;
84f4c1fe 15294
35df4500 15295 ALL_BREAKPOINTS_SAFE (b, b_tmp)
84f4c1fe
PM
15296 {
15297 if ((*callback) (b, data))
15298 return b;
15299 }
15300
15301 return NULL;
15302}
15303
0574c78f
GB
15304/* Zero if any of the breakpoint's locations could be a location where
15305 functions have been inlined, nonzero otherwise. */
15306
15307static int
15308is_non_inline_function (struct breakpoint *b)
15309{
15310 /* The shared library event breakpoint is set on the address of a
15311 non-inline function. */
15312 if (b->type == bp_shlib_event)
15313 return 1;
15314
15315 return 0;
15316}
15317
15318/* Nonzero if the specified PC cannot be a location where functions
15319 have been inlined. */
15320
15321int
accd0bcd 15322pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
09ac7c10 15323 const struct target_waitstatus *ws)
0574c78f
GB
15324{
15325 struct breakpoint *b;
15326 struct bp_location *bl;
15327
15328 ALL_BREAKPOINTS (b)
15329 {
15330 if (!is_non_inline_function (b))
15331 continue;
15332
15333 for (bl = b->loc; bl != NULL; bl = bl->next)
15334 {
15335 if (!bl->shlib_disabled
09ac7c10 15336 && bpstat_check_location (bl, aspace, pc, ws))
0574c78f
GB
15337 return 1;
15338 }
15339 }
15340
15341 return 0;
15342}
15343
2f202fde
JK
15344/* Remove any references to OBJFILE which is going to be freed. */
15345
15346void
15347breakpoint_free_objfile (struct objfile *objfile)
15348{
15349 struct bp_location **locp, *loc;
15350
15351 ALL_BP_LOCATIONS (loc, locp)
eb822aa6 15352 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
2f202fde
JK
15353 loc->symtab = NULL;
15354}
15355
2060206e
PA
15356void
15357initialize_breakpoint_ops (void)
15358{
15359 static int initialized = 0;
15360
15361 struct breakpoint_ops *ops;
15362
15363 if (initialized)
15364 return;
15365 initialized = 1;
15366
15367 /* The breakpoint_ops structure to be inherit by all kinds of
15368 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15369 internal and momentary breakpoints, etc.). */
15370 ops = &bkpt_base_breakpoint_ops;
15371 *ops = base_breakpoint_ops;
15372 ops->re_set = bkpt_re_set;
15373 ops->insert_location = bkpt_insert_location;
15374 ops->remove_location = bkpt_remove_location;
15375 ops->breakpoint_hit = bkpt_breakpoint_hit;
5f700d83 15376 ops->create_sals_from_location = bkpt_create_sals_from_location;
983af33b 15377 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
5f700d83 15378 ops->decode_location = bkpt_decode_location;
2060206e
PA
15379
15380 /* The breakpoint_ops structure to be used in regular breakpoints. */
15381 ops = &bkpt_breakpoint_ops;
15382 *ops = bkpt_base_breakpoint_ops;
15383 ops->re_set = bkpt_re_set;
15384 ops->resources_needed = bkpt_resources_needed;
15385 ops->print_it = bkpt_print_it;
15386 ops->print_mention = bkpt_print_mention;
15387 ops->print_recreate = bkpt_print_recreate;
15388
15389 /* Ranged breakpoints. */
15390 ops = &ranged_breakpoint_ops;
15391 *ops = bkpt_breakpoint_ops;
15392 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15393 ops->resources_needed = resources_needed_ranged_breakpoint;
15394 ops->print_it = print_it_ranged_breakpoint;
15395 ops->print_one = print_one_ranged_breakpoint;
15396 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15397 ops->print_mention = print_mention_ranged_breakpoint;
15398 ops->print_recreate = print_recreate_ranged_breakpoint;
15399
15400 /* Internal breakpoints. */
15401 ops = &internal_breakpoint_ops;
15402 *ops = bkpt_base_breakpoint_ops;
15403 ops->re_set = internal_bkpt_re_set;
15404 ops->check_status = internal_bkpt_check_status;
15405 ops->print_it = internal_bkpt_print_it;
15406 ops->print_mention = internal_bkpt_print_mention;
15407
15408 /* Momentary breakpoints. */
15409 ops = &momentary_breakpoint_ops;
15410 *ops = bkpt_base_breakpoint_ops;
15411 ops->re_set = momentary_bkpt_re_set;
15412 ops->check_status = momentary_bkpt_check_status;
15413 ops->print_it = momentary_bkpt_print_it;
15414 ops->print_mention = momentary_bkpt_print_mention;
15415
55aa24fb
SDJ
15416 /* Probe breakpoints. */
15417 ops = &bkpt_probe_breakpoint_ops;
15418 *ops = bkpt_breakpoint_ops;
15419 ops->insert_location = bkpt_probe_insert_location;
15420 ops->remove_location = bkpt_probe_remove_location;
5f700d83
KS
15421 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15422 ops->decode_location = bkpt_probe_decode_location;
55aa24fb 15423
2060206e
PA
15424 /* Watchpoints. */
15425 ops = &watchpoint_breakpoint_ops;
15426 *ops = base_breakpoint_ops;
15427 ops->re_set = re_set_watchpoint;
15428 ops->insert_location = insert_watchpoint;
15429 ops->remove_location = remove_watchpoint;
15430 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15431 ops->check_status = check_status_watchpoint;
15432 ops->resources_needed = resources_needed_watchpoint;
15433 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15434 ops->print_it = print_it_watchpoint;
15435 ops->print_mention = print_mention_watchpoint;
15436 ops->print_recreate = print_recreate_watchpoint;
427cd150 15437 ops->explains_signal = explains_signal_watchpoint;
2060206e
PA
15438
15439 /* Masked watchpoints. */
15440 ops = &masked_watchpoint_breakpoint_ops;
15441 *ops = watchpoint_breakpoint_ops;
15442 ops->insert_location = insert_masked_watchpoint;
15443 ops->remove_location = remove_masked_watchpoint;
15444 ops->resources_needed = resources_needed_masked_watchpoint;
15445 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15446 ops->print_it = print_it_masked_watchpoint;
15447 ops->print_one_detail = print_one_detail_masked_watchpoint;
15448 ops->print_mention = print_mention_masked_watchpoint;
15449 ops->print_recreate = print_recreate_masked_watchpoint;
15450
15451 /* Tracepoints. */
15452 ops = &tracepoint_breakpoint_ops;
15453 *ops = base_breakpoint_ops;
15454 ops->re_set = tracepoint_re_set;
15455 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15456 ops->print_one_detail = tracepoint_print_one_detail;
15457 ops->print_mention = tracepoint_print_mention;
15458 ops->print_recreate = tracepoint_print_recreate;
5f700d83 15459 ops->create_sals_from_location = tracepoint_create_sals_from_location;
983af33b 15460 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
5f700d83 15461 ops->decode_location = tracepoint_decode_location;
983af33b 15462
55aa24fb
SDJ
15463 /* Probe tracepoints. */
15464 ops = &tracepoint_probe_breakpoint_ops;
15465 *ops = tracepoint_breakpoint_ops;
5f700d83
KS
15466 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15467 ops->decode_location = tracepoint_probe_decode_location;
55aa24fb 15468
983af33b
SDJ
15469 /* Static tracepoints with marker (`-m'). */
15470 ops = &strace_marker_breakpoint_ops;
15471 *ops = tracepoint_breakpoint_ops;
5f700d83 15472 ops->create_sals_from_location = strace_marker_create_sals_from_location;
983af33b 15473 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
5f700d83 15474 ops->decode_location = strace_marker_decode_location;
2060206e
PA
15475
15476 /* Fork catchpoints. */
15477 ops = &catch_fork_breakpoint_ops;
15478 *ops = base_breakpoint_ops;
15479 ops->insert_location = insert_catch_fork;
15480 ops->remove_location = remove_catch_fork;
15481 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15482 ops->print_it = print_it_catch_fork;
15483 ops->print_one = print_one_catch_fork;
15484 ops->print_mention = print_mention_catch_fork;
15485 ops->print_recreate = print_recreate_catch_fork;
15486
15487 /* Vfork catchpoints. */
15488 ops = &catch_vfork_breakpoint_ops;
15489 *ops = base_breakpoint_ops;
15490 ops->insert_location = insert_catch_vfork;
15491 ops->remove_location = remove_catch_vfork;
15492 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15493 ops->print_it = print_it_catch_vfork;
15494 ops->print_one = print_one_catch_vfork;
15495 ops->print_mention = print_mention_catch_vfork;
15496 ops->print_recreate = print_recreate_catch_vfork;
15497
15498 /* Exec catchpoints. */
15499 ops = &catch_exec_breakpoint_ops;
15500 *ops = base_breakpoint_ops;
2060206e
PA
15501 ops->insert_location = insert_catch_exec;
15502 ops->remove_location = remove_catch_exec;
15503 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15504 ops->print_it = print_it_catch_exec;
15505 ops->print_one = print_one_catch_exec;
15506 ops->print_mention = print_mention_catch_exec;
15507 ops->print_recreate = print_recreate_catch_exec;
15508
edcc5120
TT
15509 /* Solib-related catchpoints. */
15510 ops = &catch_solib_breakpoint_ops;
15511 *ops = base_breakpoint_ops;
edcc5120
TT
15512 ops->insert_location = insert_catch_solib;
15513 ops->remove_location = remove_catch_solib;
15514 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15515 ops->check_status = check_status_catch_solib;
15516 ops->print_it = print_it_catch_solib;
15517 ops->print_one = print_one_catch_solib;
15518 ops->print_mention = print_mention_catch_solib;
15519 ops->print_recreate = print_recreate_catch_solib;
e7e0cddf
SS
15520
15521 ops = &dprintf_breakpoint_ops;
15522 *ops = bkpt_base_breakpoint_ops;
5c2b4418 15523 ops->re_set = dprintf_re_set;
e7e0cddf
SS
15524 ops->resources_needed = bkpt_resources_needed;
15525 ops->print_it = bkpt_print_it;
15526 ops->print_mention = bkpt_print_mention;
2d9442cc 15527 ops->print_recreate = dprintf_print_recreate;
9d6e6e84 15528 ops->after_condition_true = dprintf_after_condition_true;
cd1608cc 15529 ops->breakpoint_hit = dprintf_breakpoint_hit;
2060206e
PA
15530}
15531
8bfd80db
YQ
15532/* Chain containing all defined "enable breakpoint" subcommands. */
15533
15534static struct cmd_list_element *enablebreaklist = NULL;
15535
c906108c 15536void
fba45db2 15537_initialize_breakpoint (void)
c906108c
SS
15538{
15539 struct cmd_list_element *c;
15540
2060206e
PA
15541 initialize_breakpoint_ops ();
15542
76727919
TT
15543 gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15544 gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15545 gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
84acb35a 15546
55aa24fb 15547 breakpoint_objfile_key
43dce439 15548 = register_objfile_data_with_cleanup (NULL, free_breakpoint_objfile_data);
17450429 15549
c906108c
SS
15550 breakpoint_chain = 0;
15551 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15552 before a breakpoint is set. */
15553 breakpoint_count = 0;
15554
1042e4c0
SS
15555 tracepoint_count = 0;
15556
1bedd215
AC
15557 add_com ("ignore", class_breakpoint, ignore_command, _("\
15558Set ignore-count of breakpoint number N to COUNT.\n\
15559Usage is `ignore N COUNT'."));
c906108c 15560
1bedd215 15561 add_com ("commands", class_breakpoint, commands_command, _("\
18da0c51
MG
15562Set commands to be executed when the given breakpoints are hit.\n\
15563Give a space-separated breakpoint list as argument after \"commands\".\n\
15564A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15565(e.g. `5-7').\n\
c906108c
SS
15566With no argument, the targeted breakpoint is the last one set.\n\
15567The commands themselves follow starting on the next line.\n\
15568Type a line containing \"end\" to indicate the end of them.\n\
15569Give \"silent\" as the first line to make the breakpoint silent;\n\
1bedd215 15570then no output is printed when it is hit, except what the commands print."));
c906108c 15571
d55637df 15572 c = add_com ("condition", class_breakpoint, condition_command, _("\
1bedd215 15573Specify breakpoint number N to break only if COND is true.\n\
c906108c 15574Usage is `condition N COND', where N is an integer and COND is an\n\
1bedd215 15575expression to be evaluated whenever breakpoint N is reached."));
d55637df 15576 set_cmd_completer (c, condition_completer);
c906108c 15577
1bedd215 15578 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
31e2b00f 15579Set a temporary breakpoint.\n\
c906108c
SS
15580Like \"break\" except the breakpoint is only temporary,\n\
15581so it will be deleted when hit. Equivalent to \"break\" followed\n\
31e2b00f
AS
15582by using \"enable delete\" on the breakpoint number.\n\
15583\n"
15584BREAK_ARGS_HELP ("tbreak")));
5ba2abeb 15585 set_cmd_completer (c, location_completer);
c94fdfd0 15586
1bedd215 15587 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
a3be7890 15588Set a hardware assisted breakpoint.\n\
c906108c 15589Like \"break\" except the breakpoint requires hardware support,\n\
31e2b00f
AS
15590some target hardware may not have this support.\n\
15591\n"
15592BREAK_ARGS_HELP ("hbreak")));
5ba2abeb 15593 set_cmd_completer (c, location_completer);
c906108c 15594
1bedd215 15595 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
31e2b00f 15596Set a temporary hardware assisted breakpoint.\n\
c906108c 15597Like \"hbreak\" except the breakpoint is only temporary,\n\
31e2b00f
AS
15598so it will be deleted when hit.\n\
15599\n"
15600BREAK_ARGS_HELP ("thbreak")));
5ba2abeb 15601 set_cmd_completer (c, location_completer);
c906108c 15602
1bedd215
AC
15603 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15604Enable some breakpoints.\n\
c906108c
SS
15605Give breakpoint numbers (separated by spaces) as arguments.\n\
15606With no subcommand, breakpoints are enabled until you command otherwise.\n\
15607This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 15608With a subcommand you can enable temporarily."),
c906108c 15609 &enablelist, "enable ", 1, &cmdlist);
c906108c
SS
15610
15611 add_com_alias ("en", "enable", class_breakpoint, 1);
15612
84951ab5 15613 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
1bedd215 15614Enable some breakpoints.\n\
c906108c
SS
15615Give breakpoint numbers (separated by spaces) as arguments.\n\
15616This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 15617May be abbreviated to simply \"enable\".\n"),
c5aa993b 15618 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
c906108c 15619
1a966eab
AC
15620 add_cmd ("once", no_class, enable_once_command, _("\
15621Enable breakpoints for one hit. Give breakpoint numbers.\n\
15622If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
c906108c
SS
15623 &enablebreaklist);
15624
1a966eab
AC
15625 add_cmd ("delete", no_class, enable_delete_command, _("\
15626Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15627If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15628 &enablebreaklist);
15629
816338b5
SS
15630 add_cmd ("count", no_class, enable_count_command, _("\
15631Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15632If a breakpoint is hit while enabled in this fashion,\n\
15633the count is decremented; when it reaches zero, the breakpoint is disabled."),
15634 &enablebreaklist);
15635
1a966eab
AC
15636 add_cmd ("delete", no_class, enable_delete_command, _("\
15637Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15638If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15639 &enablelist);
15640
1a966eab
AC
15641 add_cmd ("once", no_class, enable_once_command, _("\
15642Enable breakpoints for one hit. Give breakpoint numbers.\n\
15643If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
816338b5
SS
15644 &enablelist);
15645
15646 add_cmd ("count", no_class, enable_count_command, _("\
15647Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15648If a breakpoint is hit while enabled in this fashion,\n\
15649the count is decremented; when it reaches zero, the breakpoint is disabled."),
c906108c
SS
15650 &enablelist);
15651
1bedd215
AC
15652 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15653Disable some breakpoints.\n\
c906108c
SS
15654Arguments are breakpoint numbers with spaces in between.\n\
15655To disable all breakpoints, give no argument.\n\
64b9b334 15656A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
c906108c
SS
15657 &disablelist, "disable ", 1, &cmdlist);
15658 add_com_alias ("dis", "disable", class_breakpoint, 1);
15659 add_com_alias ("disa", "disable", class_breakpoint, 1);
c906108c 15660
1a966eab
AC
15661 add_cmd ("breakpoints", class_alias, disable_command, _("\
15662Disable some breakpoints.\n\
c906108c
SS
15663Arguments are breakpoint numbers with spaces in between.\n\
15664To disable all breakpoints, give no argument.\n\
64b9b334 15665A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
1a966eab 15666This command may be abbreviated \"disable\"."),
c906108c
SS
15667 &disablelist);
15668
1bedd215
AC
15669 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15670Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
15671Arguments are breakpoint numbers with spaces in between.\n\
15672To delete all breakpoints, give no argument.\n\
15673\n\
15674Also a prefix command for deletion of other GDB objects.\n\
1bedd215 15675The \"unset\" command is also an alias for \"delete\"."),
c906108c
SS
15676 &deletelist, "delete ", 1, &cmdlist);
15677 add_com_alias ("d", "delete", class_breakpoint, 1);
7f198e01 15678 add_com_alias ("del", "delete", class_breakpoint, 1);
c906108c 15679
1a966eab
AC
15680 add_cmd ("breakpoints", class_alias, delete_command, _("\
15681Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
15682Arguments are breakpoint numbers with spaces in between.\n\
15683To delete all breakpoints, give no argument.\n\
1a966eab 15684This command may be abbreviated \"delete\"."),
c906108c
SS
15685 &deletelist);
15686
1bedd215 15687 add_com ("clear", class_breakpoint, clear_command, _("\
629500fa
KS
15688Clear breakpoint at specified location.\n\
15689Argument may be a linespec, explicit, or address location as described below.\n\
1bedd215
AC
15690\n\
15691With no argument, clears all breakpoints in the line that the selected frame\n\
629500fa
KS
15692is executing in.\n"
15693"\n" LOCATION_HELP_STRING "\n\
1bedd215 15694See also the \"delete\" command which clears breakpoints by number."));
a6cc4789 15695 add_com_alias ("cl", "clear", class_breakpoint, 1);
c906108c 15696
1bedd215 15697 c = add_com ("break", class_breakpoint, break_command, _("\
629500fa 15698Set breakpoint at specified location.\n"
31e2b00f 15699BREAK_ARGS_HELP ("break")));
5ba2abeb 15700 set_cmd_completer (c, location_completer);
c94fdfd0 15701
c906108c
SS
15702 add_com_alias ("b", "break", class_run, 1);
15703 add_com_alias ("br", "break", class_run, 1);
15704 add_com_alias ("bre", "break", class_run, 1);
15705 add_com_alias ("brea", "break", class_run, 1);
15706
c906108c
SS
15707 if (dbx_commands)
15708 {
1bedd215
AC
15709 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15710Break in function/address or break at a line in the current file."),
c5aa993b
JM
15711 &stoplist, "stop ", 1, &cmdlist);
15712 add_cmd ("in", class_breakpoint, stopin_command,
1a966eab 15713 _("Break in function or address."), &stoplist);
c5aa993b 15714 add_cmd ("at", class_breakpoint, stopat_command,
1a966eab 15715 _("Break at a line in the current file."), &stoplist);
11db9430 15716 add_com ("status", class_info, info_breakpoints_command, _("\
1bedd215 15717Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
15718The \"Type\" column indicates one of:\n\
15719\tbreakpoint - normal breakpoint\n\
15720\twatchpoint - watchpoint\n\
15721The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15722the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15723breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
15724address and file/line number respectively.\n\
15725\n\
15726Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15727are set to the address of the last breakpoint listed unless the command\n\
15728is prefixed with \"server \".\n\n\
c906108c 15729Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 15730breakpoint set."));
c906108c
SS
15731 }
15732
11db9430 15733 add_info ("breakpoints", info_breakpoints_command, _("\
e5a67952 15734Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
c906108c
SS
15735The \"Type\" column indicates one of:\n\
15736\tbreakpoint - normal breakpoint\n\
15737\twatchpoint - watchpoint\n\
15738The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15739the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15740breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
15741address and file/line number respectively.\n\
15742\n\
15743Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15744are set to the address of the last breakpoint listed unless the command\n\
15745is prefixed with \"server \".\n\n\
c906108c 15746Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 15747breakpoint set."));
c906108c 15748
6b04bdb7
MS
15749 add_info_alias ("b", "breakpoints", 1);
15750
1a966eab
AC
15751 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15752Status of all breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
15753The \"Type\" column indicates one of:\n\
15754\tbreakpoint - normal breakpoint\n\
15755\twatchpoint - watchpoint\n\
15756\tlongjmp - internal breakpoint used to step through longjmp()\n\
15757\tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15758\tuntil - internal breakpoint used by the \"until\" command\n\
1a966eab
AC
15759\tfinish - internal breakpoint used by the \"finish\" command\n\
15760The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
c906108c
SS
15761the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15762breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1a966eab
AC
15763address and file/line number respectively.\n\
15764\n\
15765Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15766are set to the address of the last breakpoint listed unless the command\n\
15767is prefixed with \"server \".\n\n\
c906108c 15768Convenience variable \"$bpnum\" contains the number of the last\n\
1a966eab 15769breakpoint set."),
c906108c
SS
15770 &maintenanceinfolist);
15771
44feb3ce
TT
15772 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15773Set catchpoints to catch events."),
15774 &catch_cmdlist, "catch ",
15775 0/*allow-unknown*/, &cmdlist);
15776
15777 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15778Set temporary catchpoints to catch events."),
15779 &tcatch_cmdlist, "tcatch ",
15780 0/*allow-unknown*/, &cmdlist);
15781
44feb3ce
TT
15782 add_catch_command ("fork", _("Catch calls to fork."),
15783 catch_fork_command_1,
a96d9b2e 15784 NULL,
44feb3ce
TT
15785 (void *) (uintptr_t) catch_fork_permanent,
15786 (void *) (uintptr_t) catch_fork_temporary);
15787 add_catch_command ("vfork", _("Catch calls to vfork."),
15788 catch_fork_command_1,
a96d9b2e 15789 NULL,
44feb3ce
TT
15790 (void *) (uintptr_t) catch_vfork_permanent,
15791 (void *) (uintptr_t) catch_vfork_temporary);
15792 add_catch_command ("exec", _("Catch calls to exec."),
15793 catch_exec_command_1,
a96d9b2e
SDJ
15794 NULL,
15795 CATCH_PERMANENT,
15796 CATCH_TEMPORARY);
edcc5120
TT
15797 add_catch_command ("load", _("Catch loads of shared libraries.\n\
15798Usage: catch load [REGEX]\n\
15799If REGEX is given, only stop for libraries matching the regular expression."),
15800 catch_load_command_1,
15801 NULL,
15802 CATCH_PERMANENT,
15803 CATCH_TEMPORARY);
15804 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15805Usage: catch unload [REGEX]\n\
15806If REGEX is given, only stop for libraries matching the regular expression."),
15807 catch_unload_command_1,
15808 NULL,
15809 CATCH_PERMANENT,
15810 CATCH_TEMPORARY);
c5aa993b 15811
1bedd215
AC
15812 c = add_com ("watch", class_breakpoint, watch_command, _("\
15813Set a watchpoint for an expression.\n\
06a64a0b 15814Usage: watch [-l|-location] EXPRESSION\n\
c906108c 15815A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15816an expression changes.\n\
15817If -l or -location is given, this evaluates EXPRESSION and watches\n\
15818the memory to which it refers."));
65d12d83 15819 set_cmd_completer (c, expression_completer);
c906108c 15820
1bedd215
AC
15821 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15822Set a read watchpoint for an expression.\n\
06a64a0b 15823Usage: rwatch [-l|-location] EXPRESSION\n\
c906108c 15824A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15825an expression is read.\n\
15826If -l or -location is given, this evaluates EXPRESSION and watches\n\
15827the memory to which it refers."));
65d12d83 15828 set_cmd_completer (c, expression_completer);
c906108c 15829
1bedd215
AC
15830 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15831Set a watchpoint for an expression.\n\
06a64a0b 15832Usage: awatch [-l|-location] EXPRESSION\n\
c906108c 15833A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15834an expression is either read or written.\n\
15835If -l or -location is given, this evaluates EXPRESSION and watches\n\
15836the memory to which it refers."));
65d12d83 15837 set_cmd_completer (c, expression_completer);
c906108c 15838
11db9430 15839 add_info ("watchpoints", info_watchpoints_command, _("\
e5a67952 15840Status of specified watchpoints (all watchpoints if no argument)."));
c906108c 15841
920d2a44
AC
15842 /* XXX: cagney/2005-02-23: This should be a boolean, and should
15843 respond to changes - contrary to the description. */
85c07804
AC
15844 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15845 &can_use_hw_watchpoints, _("\
15846Set debugger's willingness to use watchpoint hardware."), _("\
15847Show debugger's willingness to use watchpoint hardware."), _("\
c906108c
SS
15848If zero, gdb will not use hardware for new watchpoints, even if\n\
15849such is available. (However, any hardware watchpoints that were\n\
15850created before setting this to nonzero, will continue to use watchpoint\n\
85c07804
AC
15851hardware.)"),
15852 NULL,
920d2a44 15853 show_can_use_hw_watchpoints,
85c07804 15854 &setlist, &showlist);
c906108c
SS
15855
15856 can_use_hw_watchpoints = 1;
fa8d40ab 15857
1042e4c0
SS
15858 /* Tracepoint manipulation commands. */
15859
15860 c = add_com ("trace", class_breakpoint, trace_command, _("\
629500fa 15861Set a tracepoint at specified location.\n\
1042e4c0
SS
15862\n"
15863BREAK_ARGS_HELP ("trace") "\n\
15864Do \"help tracepoints\" for info on other tracepoint commands."));
15865 set_cmd_completer (c, location_completer);
15866
15867 add_com_alias ("tp", "trace", class_alias, 0);
15868 add_com_alias ("tr", "trace", class_alias, 1);
15869 add_com_alias ("tra", "trace", class_alias, 1);
15870 add_com_alias ("trac", "trace", class_alias, 1);
15871
7a697b8d 15872 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
629500fa 15873Set a fast tracepoint at specified location.\n\
7a697b8d
SS
15874\n"
15875BREAK_ARGS_HELP ("ftrace") "\n\
15876Do \"help tracepoints\" for info on other tracepoint commands."));
15877 set_cmd_completer (c, location_completer);
15878
0fb4aa4b 15879 c = add_com ("strace", class_breakpoint, strace_command, _("\
629500fa 15880Set a static tracepoint at location or marker.\n\
0fb4aa4b
PA
15881\n\
15882strace [LOCATION] [if CONDITION]\n\
629500fa
KS
15883LOCATION may be a linespec, explicit, or address location (described below) \n\
15884or -m MARKER_ID.\n\n\
15885If a marker id is specified, probe the marker with that name. With\n\
15886no LOCATION, uses current execution address of the selected stack frame.\n\
0fb4aa4b
PA
15887Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15888This collects arbitrary user data passed in the probe point call to the\n\
15889tracing library. You can inspect it when analyzing the trace buffer,\n\
15890by printing the $_sdata variable like any other convenience variable.\n\
15891\n\
15892CONDITION is a boolean expression.\n\
629500fa 15893\n" LOCATION_HELP_STRING "\n\
d41c0fc8
PA
15894Multiple tracepoints at one place are permitted, and useful if their\n\
15895conditions are different.\n\
0fb4aa4b
PA
15896\n\
15897Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15898Do \"help tracepoints\" for info on other tracepoint commands."));
15899 set_cmd_completer (c, location_completer);
15900
11db9430 15901 add_info ("tracepoints", info_tracepoints_command, _("\
e5a67952 15902Status of specified tracepoints (all tracepoints if no argument).\n\
1042e4c0
SS
15903Convenience variable \"$tpnum\" contains the number of the\n\
15904last tracepoint set."));
15905
15906 add_info_alias ("tp", "tracepoints", 1);
15907
15908 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15909Delete specified tracepoints.\n\
15910Arguments are tracepoint numbers, separated by spaces.\n\
15911No argument means delete all tracepoints."),
15912 &deletelist);
7e20dfcd 15913 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
1042e4c0
SS
15914
15915 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15916Disable specified tracepoints.\n\
15917Arguments are tracepoint numbers, separated by spaces.\n\
15918No argument means disable all tracepoints."),
15919 &disablelist);
15920 deprecate_cmd (c, "disable");
15921
15922 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15923Enable specified tracepoints.\n\
15924Arguments are tracepoint numbers, separated by spaces.\n\
15925No argument means enable all tracepoints."),
15926 &enablelist);
15927 deprecate_cmd (c, "enable");
15928
15929 add_com ("passcount", class_trace, trace_pass_command, _("\
15930Set the passcount for a tracepoint.\n\
15931The trace will end when the tracepoint has been passed 'count' times.\n\
15932Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15933if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15934
6149aea9
PA
15935 add_prefix_cmd ("save", class_breakpoint, save_command,
15936 _("Save breakpoint definitions as a script."),
15937 &save_cmdlist, "save ",
15938 0/*allow-unknown*/, &cmdlist);
15939
15940 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15941Save current breakpoint definitions as a script.\n\
cce7e648 15942This includes all types of breakpoints (breakpoints, watchpoints,\n\
6149aea9
PA
15943catchpoints, tracepoints). Use the 'source' command in another debug\n\
15944session to restore them."),
15945 &save_cmdlist);
15946 set_cmd_completer (c, filename_completer);
15947
15948 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
1042e4c0 15949Save current tracepoint definitions as a script.\n\
6149aea9
PA
15950Use the 'source' command in another debug session to restore them."),
15951 &save_cmdlist);
1042e4c0
SS
15952 set_cmd_completer (c, filename_completer);
15953
6149aea9
PA
15954 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15955 deprecate_cmd (c, "save tracepoints");
15956
1bedd215 15957 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
fa8d40ab
JJ
15958Breakpoint specific settings\n\
15959Configure various breakpoint-specific variables such as\n\
1bedd215 15960pending breakpoint behavior"),
fa8d40ab
JJ
15961 &breakpoint_set_cmdlist, "set breakpoint ",
15962 0/*allow-unknown*/, &setlist);
1bedd215 15963 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
fa8d40ab
JJ
15964Breakpoint specific settings\n\
15965Configure various breakpoint-specific variables such as\n\
1bedd215 15966pending breakpoint behavior"),
fa8d40ab
JJ
15967 &breakpoint_show_cmdlist, "show breakpoint ",
15968 0/*allow-unknown*/, &showlist);
15969
7915a72c
AC
15970 add_setshow_auto_boolean_cmd ("pending", no_class,
15971 &pending_break_support, _("\
15972Set debugger's behavior regarding pending breakpoints."), _("\
15973Show debugger's behavior regarding pending breakpoints."), _("\
6e1d7d6c
AC
15974If on, an unrecognized breakpoint location will cause gdb to create a\n\
15975pending breakpoint. If off, an unrecognized breakpoint location results in\n\
15976an error. If auto, an unrecognized breakpoint location results in a\n\
7915a72c 15977user-query to see if a pending breakpoint should be created."),
2c5b56ce 15978 NULL,
920d2a44 15979 show_pending_break_support,
6e1d7d6c
AC
15980 &breakpoint_set_cmdlist,
15981 &breakpoint_show_cmdlist);
fa8d40ab
JJ
15982
15983 pending_break_support = AUTO_BOOLEAN_AUTO;
765dc015
VP
15984
15985 add_setshow_boolean_cmd ("auto-hw", no_class,
15986 &automatic_hardware_breakpoints, _("\
15987Set automatic usage of hardware breakpoints."), _("\
15988Show automatic usage of hardware breakpoints."), _("\
15989If set, the debugger will automatically use hardware breakpoints for\n\
15990breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
15991a warning will be emitted for such breakpoints."),
15992 NULL,
15993 show_automatic_hardware_breakpoints,
15994 &breakpoint_set_cmdlist,
15995 &breakpoint_show_cmdlist);
74960c60 15996
a25a5a45
PA
15997 add_setshow_boolean_cmd ("always-inserted", class_support,
15998 &always_inserted_mode, _("\
74960c60
VP
15999Set mode for inserting breakpoints."), _("\
16000Show mode for inserting breakpoints."), _("\
a25a5a45
PA
16001When this mode is on, breakpoints are inserted immediately as soon as\n\
16002they're created, kept inserted even when execution stops, and removed\n\
16003only when the user deletes them. When this mode is off (the default),\n\
16004breakpoints are inserted only when execution continues, and removed\n\
16005when execution stops."),
72d0e2c5
YQ
16006 NULL,
16007 &show_always_inserted_mode,
16008 &breakpoint_set_cmdlist,
16009 &breakpoint_show_cmdlist);
f1310107 16010
b775012e
LM
16011 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16012 condition_evaluation_enums,
16013 &condition_evaluation_mode_1, _("\
16014Set mode of breakpoint condition evaluation."), _("\
16015Show mode of breakpoint condition evaluation."), _("\
d1cda5d9 16016When this is set to \"host\", breakpoint conditions will be\n\
b775012e
LM
16017evaluated on the host's side by GDB. When it is set to \"target\",\n\
16018breakpoint conditions will be downloaded to the target (if the target\n\
16019supports such feature) and conditions will be evaluated on the target's side.\n\
16020If this is set to \"auto\" (default), this will be automatically set to\n\
16021\"target\" if it supports condition evaluation, otherwise it will\n\
16022be set to \"gdb\""),
16023 &set_condition_evaluation_mode,
16024 &show_condition_evaluation_mode,
16025 &breakpoint_set_cmdlist,
16026 &breakpoint_show_cmdlist);
16027
f1310107
TJB
16028 add_com ("break-range", class_breakpoint, break_range_command, _("\
16029Set a breakpoint for an address range.\n\
16030break-range START-LOCATION, END-LOCATION\n\
16031where START-LOCATION and END-LOCATION can be one of the following:\n\
16032 LINENUM, for that line in the current file,\n\
16033 FILE:LINENUM, for that line in that file,\n\
16034 +OFFSET, for that number of lines after the current line\n\
16035 or the start of the range\n\
16036 FUNCTION, for the first line in that function,\n\
16037 FILE:FUNCTION, to distinguish among like-named static functions.\n\
16038 *ADDRESS, for the instruction at that address.\n\
16039\n\
16040The breakpoint will stop execution of the inferior whenever it executes\n\
16041an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16042range (including START-LOCATION and END-LOCATION)."));
16043
e7e0cddf 16044 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
629500fa 16045Set a dynamic printf at specified location.\n\
e7e0cddf 16046dprintf location,format string,arg1,arg2,...\n\
629500fa
KS
16047location may be a linespec, explicit, or address location.\n"
16048"\n" LOCATION_HELP_STRING));
e7e0cddf
SS
16049 set_cmd_completer (c, location_completer);
16050
16051 add_setshow_enum_cmd ("dprintf-style", class_support,
16052 dprintf_style_enums, &dprintf_style, _("\
16053Set the style of usage for dynamic printf."), _("\
16054Show the style of usage for dynamic printf."), _("\
16055This setting chooses how GDB will do a dynamic printf.\n\
16056If the value is \"gdb\", then the printing is done by GDB to its own\n\
16057console, as with the \"printf\" command.\n\
16058If the value is \"call\", the print is done by calling a function in your\n\
16059program; by default printf(), but you can choose a different function or\n\
16060output stream by setting dprintf-function and dprintf-channel."),
16061 update_dprintf_commands, NULL,
16062 &setlist, &showlist);
16063
16064 dprintf_function = xstrdup ("printf");
16065 add_setshow_string_cmd ("dprintf-function", class_support,
16066 &dprintf_function, _("\
16067Set the function to use for dynamic printf"), _("\
16068Show the function to use for dynamic printf"), NULL,
16069 update_dprintf_commands, NULL,
16070 &setlist, &showlist);
16071
16072 dprintf_channel = xstrdup ("");
16073 add_setshow_string_cmd ("dprintf-channel", class_support,
16074 &dprintf_channel, _("\
16075Set the channel to use for dynamic printf"), _("\
16076Show the channel to use for dynamic printf"), NULL,
16077 update_dprintf_commands, NULL,
16078 &setlist, &showlist);
16079
d3ce09f5
SS
16080 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16081 &disconnected_dprintf, _("\
16082Set whether dprintf continues after GDB disconnects."), _("\
16083Show whether dprintf continues after GDB disconnects."), _("\
16084Use this to let dprintf commands continue to hit and produce output\n\
16085even if GDB disconnects or detaches from the target."),
16086 NULL,
16087 NULL,
16088 &setlist, &showlist);
16089
16090 add_com ("agent-printf", class_vars, agent_printf_command, _("\
16091agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16092(target agent only) This is useful for formatted output in user-defined commands."));
16093
765dc015 16094 automatic_hardware_breakpoints = 1;
f3b1572e 16095
76727919
TT
16096 gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
16097 gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
c906108c 16098}