Update copyright year range in all GDB files.
[deliverable/binutils-gdb.git] / gdb / breakpoint.c
CommitLineData
c906108c 1/* Everything about breakpoints, for GDB.
8926118c 2
42a4f53d 3 Copyright (C) 1986-2019 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"
0bb296cb 71#include "cli/cli-style.h"
d3ce09f5 72
1042e4c0
SS
73/* readline include files */
74#include "readline/readline.h"
75#include "readline/history.h"
76
77/* readline defines this. */
78#undef savestring
79
034dad6f 80#include "mi/mi-common.h"
6dddc817 81#include "extension.h"
325fac50 82#include <algorithm>
5ed8105e 83#include "progspace-and-thread.h"
6c5b2ebe 84#include "common/array-view.h"
76f9c9cf 85#include "common/gdb_optional.h"
104c1213 86
e7e8980f
YQ
87/* Enums for exception-handling support. */
88enum exception_event_kind
89{
90 EX_EVENT_THROW,
591f19e8 91 EX_EVENT_RETHROW,
e7e8980f
YQ
92 EX_EVENT_CATCH
93};
94
4a64f543 95/* Prototypes for local functions. */
c906108c 96
896b6bda 97static void map_breakpoint_numbers (const char *,
48649e1b 98 gdb::function_view<void (breakpoint *)>);
c906108c 99
348d480f
PA
100static void breakpoint_re_set_default (struct breakpoint *);
101
f00aae0f
KS
102static void
103 create_sals_from_location_default (const struct event_location *location,
104 struct linespec_result *canonical,
105 enum bptype type_wanted);
983af33b
SDJ
106
107static void create_breakpoints_sal_default (struct gdbarch *,
108 struct linespec_result *,
e1e01040
PA
109 gdb::unique_xmalloc_ptr<char>,
110 gdb::unique_xmalloc_ptr<char>,
111 enum bptype,
983af33b
SDJ
112 enum bpdisp, int, int,
113 int,
114 const struct breakpoint_ops *,
44f238bb 115 int, int, int, unsigned);
983af33b 116
6c5b2ebe
PA
117static std::vector<symtab_and_line> decode_location_default
118 (struct breakpoint *b, const struct event_location *location,
119 struct program_space *search_pspace);
983af33b 120
a6535de1
TT
121static int can_use_hardware_watchpoint
122 (const std::vector<value_ref_ptr> &vals);
c906108c 123
a14ed312 124static void mention (struct breakpoint *);
c906108c 125
348d480f
PA
126static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
127 enum bptype,
c0a91b2b 128 const struct breakpoint_ops *);
3742cc8b
YQ
129static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
130 const struct symtab_and_line *);
131
4a64f543
MS
132/* This function is used in gdbtk sources and thus can not be made
133 static. */
63c252f8 134struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 135 struct symtab_and_line,
c0a91b2b
TT
136 enum bptype,
137 const struct breakpoint_ops *);
c906108c 138
06edf0c0
PA
139static struct breakpoint *
140 momentary_breakpoint_from_master (struct breakpoint *orig,
141 enum bptype type,
a1aa2221
LM
142 const struct breakpoint_ops *ops,
143 int loc_enabled);
06edf0c0 144
76897487
KB
145static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
146
a6d9a66e
UW
147static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
148 CORE_ADDR bpaddr,
88f7da05 149 enum bptype bptype);
76897487 150
6c95b8df
PA
151static void describe_other_breakpoints (struct gdbarch *,
152 struct program_space *, CORE_ADDR,
5af949e3 153 struct obj_section *, int);
c906108c 154
85d721b8
PA
155static int watchpoint_locations_match (struct bp_location *loc1,
156 struct bp_location *loc2);
157
f1310107 158static int breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 159 const struct address_space *aspace,
f1310107
TJB
160 CORE_ADDR addr);
161
d35ae833 162static int breakpoint_location_address_range_overlap (struct bp_location *,
accd0bcd 163 const address_space *,
d35ae833
PA
164 CORE_ADDR, int);
165
834c0d03 166static int remove_breakpoint (struct bp_location *);
b2b6a7da 167static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
c906108c 168
e514a9d6 169static enum print_stop_action print_bp_stop_message (bpstat bs);
c906108c 170
a14ed312 171static int hw_breakpoint_used_count (void);
c906108c 172
a1398e0c
PA
173static int hw_watchpoint_use_count (struct breakpoint *);
174
175static int hw_watchpoint_used_count_others (struct breakpoint *except,
176 enum bptype type,
177 int *other_type_used);
c906108c 178
816338b5
SS
179static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
180 int count);
c906108c 181
fe3f5fa8 182static void free_bp_location (struct bp_location *loc);
f431efe5
PA
183static void incref_bp_location (struct bp_location *loc);
184static void decref_bp_location (struct bp_location **loc);
fe3f5fa8 185
39d61571 186static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
a5606eee 187
44702360
PA
188/* update_global_location_list's modes of operation wrt to whether to
189 insert locations now. */
190enum ugll_insert_mode
191{
192 /* Don't insert any breakpoint locations into the inferior, only
193 remove already-inserted locations that no longer should be
194 inserted. Functions that delete a breakpoint or breakpoints
195 should specify this mode, so that deleting a breakpoint doesn't
196 have the side effect of inserting the locations of other
197 breakpoints that are marked not-inserted, but should_be_inserted
198 returns true on them.
199
200 This behavior is useful is situations close to tear-down -- e.g.,
201 after an exec, while the target still has execution, but
202 breakpoint shadows of the previous executable image should *NOT*
203 be restored to the new image; or before detaching, where the
204 target still has execution and wants to delete breakpoints from
205 GDB's lists, and all breakpoints had already been removed from
206 the inferior. */
207 UGLL_DONT_INSERT,
208
a25a5a45
PA
209 /* May insert breakpoints iff breakpoints_should_be_inserted_now
210 claims breakpoints should be inserted now. */
04086b45
PA
211 UGLL_MAY_INSERT,
212
a25a5a45
PA
213 /* Insert locations now, irrespective of
214 breakpoints_should_be_inserted_now. E.g., say all threads are
215 stopped right now, and the user did "continue". We need to
216 insert breakpoints _before_ resuming the target, but
217 UGLL_MAY_INSERT wouldn't insert them, because
218 breakpoints_should_be_inserted_now returns false at that point,
219 as no thread is running yet. */
04086b45 220 UGLL_INSERT
44702360
PA
221};
222
223static void update_global_location_list (enum ugll_insert_mode);
a5606eee 224
44702360 225static void update_global_location_list_nothrow (enum ugll_insert_mode);
74960c60 226
d77f58be 227static int is_hardware_watchpoint (const struct breakpoint *bpt);
74960c60
VP
228
229static void insert_breakpoint_locations (void);
a5606eee 230
0b39b52e 231static void trace_pass_command (const char *, int);
1042e4c0 232
558a9d82
YQ
233static void set_tracepoint_count (int num);
234
9c06b0b4
TJB
235static int is_masked_watchpoint (const struct breakpoint *b);
236
b775012e
LM
237static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
238
983af33b
SDJ
239/* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
240 otherwise. */
241
242static int strace_marker_p (struct breakpoint *b);
0fb4aa4b 243
2060206e
PA
244/* The breakpoint_ops structure to be inherited by all breakpoint_ops
245 that are implemented on top of software or hardware breakpoints
246 (user breakpoints, internal and momentary breakpoints, etc.). */
247static struct breakpoint_ops bkpt_base_breakpoint_ops;
248
249/* Internal breakpoints class type. */
06edf0c0 250static struct breakpoint_ops internal_breakpoint_ops;
2060206e
PA
251
252/* Momentary breakpoints class type. */
06edf0c0
PA
253static struct breakpoint_ops momentary_breakpoint_ops;
254
2060206e
PA
255/* The breakpoint_ops structure to be used in regular user created
256 breakpoints. */
257struct breakpoint_ops bkpt_breakpoint_ops;
258
55aa24fb
SDJ
259/* Breakpoints set on probes. */
260static struct breakpoint_ops bkpt_probe_breakpoint_ops;
261
e7e0cddf 262/* Dynamic printf class type. */
c5867ab6 263struct breakpoint_ops dprintf_breakpoint_ops;
e7e0cddf 264
d3ce09f5
SS
265/* The style in which to perform a dynamic printf. This is a user
266 option because different output options have different tradeoffs;
267 if GDB does the printing, there is better error handling if there
268 is a problem with any of the arguments, but using an inferior
269 function lets you have special-purpose printers and sending of
270 output to the same place as compiled-in print functions. */
271
272static const char dprintf_style_gdb[] = "gdb";
273static const char dprintf_style_call[] = "call";
274static const char dprintf_style_agent[] = "agent";
275static const char *const dprintf_style_enums[] = {
276 dprintf_style_gdb,
277 dprintf_style_call,
278 dprintf_style_agent,
279 NULL
280};
281static const char *dprintf_style = dprintf_style_gdb;
282
283/* The function to use for dynamic printf if the preferred style is to
284 call into the inferior. The value is simply a string that is
285 copied into the command, so it can be anything that GDB can
286 evaluate to a callable address, not necessarily a function name. */
287
bde6261a 288static char *dprintf_function;
d3ce09f5
SS
289
290/* The channel to use for dynamic printf if the preferred style is to
291 call into the inferior; if a nonempty string, it will be passed to
292 the call as the first argument, with the format string as the
293 second. As with the dprintf function, this can be anything that
294 GDB knows how to evaluate, so in addition to common choices like
295 "stderr", this could be an app-specific expression like
296 "mystreams[curlogger]". */
297
bde6261a 298static char *dprintf_channel;
d3ce09f5
SS
299
300/* True if dprintf commands should continue to operate even if GDB
301 has disconnected. */
302static int disconnected_dprintf = 1;
303
5cea2a26
PA
304struct command_line *
305breakpoint_commands (struct breakpoint *b)
306{
d1b0a7bf 307 return b->commands ? b->commands.get () : NULL;
5cea2a26 308}
3daf8fe5 309
f3b1572e
PA
310/* Flag indicating that a command has proceeded the inferior past the
311 current breakpoint. */
312
313static int breakpoint_proceeded;
314
956a9fb9 315const char *
2cec12e5
AR
316bpdisp_text (enum bpdisp disp)
317{
4a64f543
MS
318 /* NOTE: the following values are a part of MI protocol and
319 represent values of 'disp' field returned when inferior stops at
320 a breakpoint. */
bc043ef3 321 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
cc59ec59 322
2cec12e5
AR
323 return bpdisps[(int) disp];
324}
c906108c 325
4a64f543 326/* Prototypes for exported functions. */
c906108c 327/* If FALSE, gdb will not use hardware support for watchpoints, even
4a64f543 328 if such is available. */
c906108c
SS
329static int can_use_hw_watchpoints;
330
920d2a44
AC
331static void
332show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
333 struct cmd_list_element *c,
334 const char *value)
335{
3e43a32a
MS
336 fprintf_filtered (file,
337 _("Debugger's willingness to use "
338 "watchpoint hardware is %s.\n"),
920d2a44
AC
339 value);
340}
341
fa8d40ab
JJ
342/* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
343 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
4a64f543 344 for unrecognized breakpoint locations.
fa8d40ab
JJ
345 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
346static enum auto_boolean pending_break_support;
920d2a44
AC
347static void
348show_pending_break_support (struct ui_file *file, int from_tty,
349 struct cmd_list_element *c,
350 const char *value)
351{
3e43a32a
MS
352 fprintf_filtered (file,
353 _("Debugger's behavior regarding "
354 "pending breakpoints is %s.\n"),
920d2a44
AC
355 value);
356}
fa8d40ab 357
765dc015 358/* If 1, gdb will automatically use hardware breakpoints for breakpoints
4a64f543 359 set with "break" but falling in read-only memory.
765dc015
VP
360 If 0, gdb will warn about such breakpoints, but won't automatically
361 use hardware breakpoints. */
362static int automatic_hardware_breakpoints;
363static void
364show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
365 struct cmd_list_element *c,
366 const char *value)
367{
3e43a32a
MS
368 fprintf_filtered (file,
369 _("Automatic usage of hardware breakpoints is %s.\n"),
765dc015
VP
370 value);
371}
372
a25a5a45
PA
373/* If on, GDB keeps breakpoints inserted even if the inferior is
374 stopped, and immediately inserts any new breakpoints as soon as
375 they're created. If off (default), GDB keeps breakpoints off of
376 the target as long as possible. That is, it delays inserting
377 breakpoints until the next resume, and removes them again when the
378 target fully stops. This is a bit safer in case GDB crashes while
379 processing user input. */
380static int always_inserted_mode = 0;
72d0e2c5 381
33e5cbd6 382static void
74960c60 383show_always_inserted_mode (struct ui_file *file, int from_tty,
33e5cbd6 384 struct cmd_list_element *c, const char *value)
74960c60 385{
a25a5a45
PA
386 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
387 value);
74960c60
VP
388}
389
b57bacec
PA
390/* See breakpoint.h. */
391
33e5cbd6 392int
a25a5a45 393breakpoints_should_be_inserted_now (void)
33e5cbd6 394{
a25a5a45
PA
395 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
396 {
397 /* If breakpoints are global, they should be inserted even if no
398 thread under gdb's control is running, or even if there are
399 no threads under GDB's control yet. */
400 return 1;
401 }
402 else if (target_has_execution)
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. */
08036331 416 for (thread_info *tp : all_non_exited_threads ())
372316f1
PA
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. */
1123588c 562static std::vector<bp_location *> moribund_locations;
20874c92 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 {
a7bdde9e 1011 if (c->control_type == while_stepping_control)
3e43a32a
MS
1012 error (_("The 'while-stepping' command can "
1013 "only be used for tracepoints"));
a7bdde9e 1014
12973681
TT
1015 check_no_tracepoint_commands (c->body_list_0.get ());
1016 check_no_tracepoint_commands (c->body_list_1.get ());
a7bdde9e
VP
1017
1018 /* Not that command parsing removes leading whitespace and comment
4a64f543 1019 lines and also empty lines. So, we only need to check for
a7bdde9e
VP
1020 command directly. */
1021 if (strstr (c->line, "collect ") == c->line)
1022 error (_("The 'collect' command can only be used for tracepoints"));
1023
51661e93
VP
1024 if (strstr (c->line, "teval ") == c->line)
1025 error (_("The 'teval' command can only be used for tracepoints"));
a7bdde9e
VP
1026 }
1027}
1028
c1fc2657 1029struct longjmp_breakpoint : public breakpoint
3b0871f4 1030{
c1fc2657 1031 ~longjmp_breakpoint () override;
3b0871f4
SM
1032};
1033
d77f58be
SS
1034/* Encapsulate tests for different types of tracepoints. */
1035
3b0871f4
SM
1036static bool
1037is_tracepoint_type (bptype type)
d9b3f62e
PA
1038{
1039 return (type == bp_tracepoint
1040 || type == bp_fast_tracepoint
1041 || type == bp_static_tracepoint);
1042}
1043
3b0871f4
SM
1044static bool
1045is_longjmp_type (bptype type)
1046{
1047 return type == bp_longjmp || type == bp_exception;
1048}
1049
a7bdde9e 1050int
d77f58be 1051is_tracepoint (const struct breakpoint *b)
a7bdde9e 1052{
d9b3f62e 1053 return is_tracepoint_type (b->type);
a7bdde9e 1054}
d9b3f62e 1055
a5e364af
SM
1056/* Factory function to create an appropriate instance of breakpoint given
1057 TYPE. */
1058
1059static std::unique_ptr<breakpoint>
1060new_breakpoint_from_type (bptype type)
1061{
1062 breakpoint *b;
1063
1064 if (is_tracepoint_type (type))
c1fc2657 1065 b = new tracepoint ();
3b0871f4 1066 else if (is_longjmp_type (type))
c1fc2657 1067 b = new longjmp_breakpoint ();
a5e364af
SM
1068 else
1069 b = new breakpoint ();
1070
1071 return std::unique_ptr<breakpoint> (b);
1072}
1073
e5dd4106 1074/* A helper function that validates that COMMANDS are valid for a
95a42b64
TT
1075 breakpoint. This function will throw an exception if a problem is
1076 found. */
48cb2d85 1077
95a42b64
TT
1078static void
1079validate_commands_for_breakpoint (struct breakpoint *b,
1080 struct command_line *commands)
48cb2d85 1081{
d77f58be 1082 if (is_tracepoint (b))
a7bdde9e 1083 {
c9a6ce02 1084 struct tracepoint *t = (struct tracepoint *) b;
a7bdde9e
VP
1085 struct command_line *c;
1086 struct command_line *while_stepping = 0;
c9a6ce02
PA
1087
1088 /* Reset the while-stepping step count. The previous commands
1089 might have included a while-stepping action, while the new
1090 ones might not. */
1091 t->step_count = 0;
1092
1093 /* We need to verify that each top-level element of commands is
1094 valid for tracepoints, that there's at most one
1095 while-stepping element, and that the while-stepping's body
1096 has valid tracing commands excluding nested while-stepping.
1097 We also need to validate the tracepoint action line in the
1098 context of the tracepoint --- validate_actionline actually
1099 has side effects, like setting the tracepoint's
1100 while-stepping STEP_COUNT, in addition to checking if the
1101 collect/teval actions parse and make sense in the
1102 tracepoint's context. */
a7bdde9e
VP
1103 for (c = commands; c; c = c->next)
1104 {
a7bdde9e
VP
1105 if (c->control_type == while_stepping_control)
1106 {
1107 if (b->type == bp_fast_tracepoint)
3e43a32a
MS
1108 error (_("The 'while-stepping' command "
1109 "cannot be used for fast tracepoint"));
0fb4aa4b 1110 else if (b->type == bp_static_tracepoint)
3e43a32a
MS
1111 error (_("The 'while-stepping' command "
1112 "cannot be used for static tracepoint"));
a7bdde9e
VP
1113
1114 if (while_stepping)
3e43a32a
MS
1115 error (_("The 'while-stepping' command "
1116 "can be used only once"));
a7bdde9e
VP
1117 else
1118 while_stepping = c;
1119 }
c9a6ce02
PA
1120
1121 validate_actionline (c->line, b);
a7bdde9e
VP
1122 }
1123 if (while_stepping)
1124 {
1125 struct command_line *c2;
1126
12973681
TT
1127 gdb_assert (while_stepping->body_list_1 == nullptr);
1128 c2 = while_stepping->body_list_0.get ();
a7bdde9e
VP
1129 for (; c2; c2 = c2->next)
1130 {
a7bdde9e
VP
1131 if (c2->control_type == while_stepping_control)
1132 error (_("The 'while-stepping' command cannot be nested"));
1133 }
1134 }
1135 }
1136 else
1137 {
1138 check_no_tracepoint_commands (commands);
1139 }
95a42b64
TT
1140}
1141
0fb4aa4b
PA
1142/* Return a vector of all the static tracepoints set at ADDR. The
1143 caller is responsible for releasing the vector. */
1144
f51e0e20 1145std::vector<breakpoint *>
0fb4aa4b
PA
1146static_tracepoints_here (CORE_ADDR addr)
1147{
1148 struct breakpoint *b;
f51e0e20 1149 std::vector<breakpoint *> found;
0fb4aa4b
PA
1150 struct bp_location *loc;
1151
1152 ALL_BREAKPOINTS (b)
1153 if (b->type == bp_static_tracepoint)
1154 {
1155 for (loc = b->loc; loc; loc = loc->next)
1156 if (loc->address == addr)
f51e0e20 1157 found.push_back (b);
0fb4aa4b
PA
1158 }
1159
1160 return found;
1161}
1162
95a42b64 1163/* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
4a64f543 1164 validate that only allowed commands are included. */
95a42b64
TT
1165
1166void
4a64f543 1167breakpoint_set_commands (struct breakpoint *b,
12973681 1168 counted_command_line &&commands)
95a42b64 1169{
93921405 1170 validate_commands_for_breakpoint (b, commands.get ());
a7bdde9e 1171
d1b0a7bf 1172 b->commands = std::move (commands);
76727919 1173 gdb::observers::breakpoint_modified.notify (b);
48cb2d85
VP
1174}
1175
45a43567
TT
1176/* Set the internal `silent' flag on the breakpoint. Note that this
1177 is not the same as the "silent" that may appear in the breakpoint's
1178 commands. */
1179
1180void
1181breakpoint_set_silent (struct breakpoint *b, int silent)
1182{
1183 int old_silent = b->silent;
1184
1185 b->silent = silent;
1186 if (old_silent != silent)
76727919 1187 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1188}
1189
1190/* Set the thread for this breakpoint. If THREAD is -1, make the
1191 breakpoint work for any thread. */
1192
1193void
1194breakpoint_set_thread (struct breakpoint *b, int thread)
1195{
1196 int old_thread = b->thread;
1197
1198 b->thread = thread;
1199 if (old_thread != thread)
76727919 1200 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1201}
1202
1203/* Set the task for this breakpoint. If TASK is 0, make the
1204 breakpoint work for any task. */
1205
1206void
1207breakpoint_set_task (struct breakpoint *b, int task)
1208{
1209 int old_task = b->task;
1210
1211 b->task = task;
1212 if (old_task != task)
76727919 1213 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1214}
1215
95a42b64 1216static void
896b6bda 1217commands_command_1 (const char *arg, int from_tty,
4a64f543 1218 struct command_line *control)
95a42b64 1219{
d1b0a7bf 1220 counted_command_line cmd;
999700cd
PW
1221 /* cmd_read will be true once we have read cmd. Note that cmd might still be
1222 NULL after the call to read_command_lines if the user provides an empty
1223 list of command by just typing "end". */
1224 bool cmd_read = false;
95a42b64 1225
896b6bda
PA
1226 std::string new_arg;
1227
95a42b64
TT
1228 if (arg == NULL || !*arg)
1229 {
86b17b60 1230 if (breakpoint_count - prev_breakpoint_count > 1)
896b6bda
PA
1231 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1232 breakpoint_count);
95a42b64 1233 else if (breakpoint_count > 0)
896b6bda 1234 new_arg = string_printf ("%d", breakpoint_count);
48649e1b
TT
1235 arg = new_arg.c_str ();
1236 }
1237
1238 map_breakpoint_numbers
1239 (arg, [&] (breakpoint *b)
1240 {
999700cd 1241 if (!cmd_read)
48649e1b 1242 {
999700cd 1243 gdb_assert (cmd == NULL);
48649e1b 1244 if (control != NULL)
12973681 1245 cmd = control->body_list_0;
48649e1b
TT
1246 else
1247 {
81b1e71c
TT
1248 std::string str
1249 = string_printf (_("Type commands for breakpoint(s) "
1250 "%s, one per line."),
1251 arg);
48649e1b 1252
60b3cef2
TT
1253 auto do_validate = [=] (const char *line)
1254 {
1255 validate_actionline (line, b);
1256 };
1257 gdb::function_view<void (const char *)> validator;
1258 if (is_tracepoint (b))
1259 validator = do_validate;
1260
1261 cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
48649e1b 1262 }
999700cd 1263 cmd_read = true;
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
d7e15655
TT
1552 && (b->watchpoint_thread == null_ptid
1553 || (inferior_ptid == b->watchpoint_thread
00431a78 1554 && !inferior_thread ()->executing)));
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;
a6535de1 1780 std::vector<value_ref_ptr> val_chain;
8d49165d 1781 struct value *v, *result;
2d134ed3 1782 struct program_space *frame_pspace;
a5606eee 1783
4d01a485 1784 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
a5606eee 1785
a5606eee
VP
1786 /* Avoid setting b->val if it's already set. The meaning of
1787 b->val is 'the last value' user saw, and we should update
1788 it only if we reported that last value to user. As it
9c06b0b4
TJB
1789 happens, the code that reports it updates b->val directly.
1790 We don't keep track of the memory value for masked
1791 watchpoints. */
c1fc2657 1792 if (!b->val_valid && !is_masked_watchpoint (b))
fa4727a6 1793 {
bb9d5f81 1794 if (b->val_bitsize != 0)
850645cf
TT
1795 v = extract_bitfield_from_watchpoint_value (b, v);
1796 b->val = release_value (v);
fa4727a6
DJ
1797 b->val_valid = 1;
1798 }
a5606eee 1799
2d134ed3
PA
1800 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1801
a5606eee 1802 /* Look at each value on the value chain. */
a6535de1
TT
1803 gdb_assert (!val_chain.empty ());
1804 for (const value_ref_ptr &iter : val_chain)
a5606eee 1805 {
a6535de1
TT
1806 v = iter.get ();
1807
a5606eee
VP
1808 /* If it's a memory location, and GDB actually needed
1809 its contents to evaluate the expression, then we
fa4727a6
DJ
1810 must watch it. If the first value returned is
1811 still lazy, that means an error occurred reading it;
1812 watch it anyway in case it becomes readable. */
a5606eee 1813 if (VALUE_LVAL (v) == lval_memory
a6535de1 1814 && (v == val_chain[0] || ! value_lazy (v)))
a5606eee
VP
1815 {
1816 struct type *vtype = check_typedef (value_type (v));
7270d8f2 1817
a5606eee
VP
1818 /* We only watch structs and arrays if user asked
1819 for it explicitly, never if they just happen to
1820 appear in the middle of some value chain. */
fa4727a6 1821 if (v == result
a5606eee
VP
1822 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1823 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1824 {
1825 CORE_ADDR addr;
f486487f 1826 enum target_hw_bp_type type;
a5606eee 1827 struct bp_location *loc, **tmp;
bb9d5f81
PP
1828 int bitpos = 0, bitsize = 0;
1829
1830 if (value_bitsize (v) != 0)
1831 {
1832 /* Extract the bit parameters out from the bitfield
1833 sub-expression. */
1834 bitpos = value_bitpos (v);
1835 bitsize = value_bitsize (v);
1836 }
1837 else if (v == result && b->val_bitsize != 0)
1838 {
1839 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1840 lvalue whose bit parameters are saved in the fields
1841 VAL_BITPOS and VAL_BITSIZE. */
1842 bitpos = b->val_bitpos;
1843 bitsize = b->val_bitsize;
1844 }
a5606eee 1845
42ae5230 1846 addr = value_address (v);
bb9d5f81
PP
1847 if (bitsize != 0)
1848 {
1849 /* Skip the bytes that don't contain the bitfield. */
1850 addr += bitpos / 8;
1851 }
1852
a5606eee 1853 type = hw_write;
c1fc2657 1854 if (b->type == bp_read_watchpoint)
a5606eee 1855 type = hw_read;
c1fc2657 1856 else if (b->type == bp_access_watchpoint)
a5606eee 1857 type = hw_access;
3a5c3e22 1858
c1fc2657
SM
1859 loc = allocate_bp_location (b);
1860 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
a5606eee
VP
1861 ;
1862 *tmp = loc;
a6d9a66e 1863 loc->gdbarch = get_type_arch (value_type (v));
6c95b8df
PA
1864
1865 loc->pspace = frame_pspace;
f17d9474 1866 loc->address = address_significant (loc->gdbarch, addr);
bb9d5f81
PP
1867
1868 if (bitsize != 0)
1869 {
1870 /* Just cover the bytes that make up the bitfield. */
1871 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1872 }
1873 else
1874 loc->length = TYPE_LENGTH (value_type (v));
1875
a5606eee
VP
1876 loc->watchpoint_type = type;
1877 }
1878 }
9fa40276
TJB
1879 }
1880
1881 /* Change the type of breakpoint between hardware assisted or
1882 an ordinary watchpoint depending on the hardware support
1883 and free hardware slots. REPARSE is set when the inferior
1884 is started. */
a9634178 1885 if (reparse)
9fa40276 1886 {
e09342b5 1887 int reg_cnt;
9fa40276
TJB
1888 enum bp_loc_type loc_type;
1889 struct bp_location *bl;
a5606eee 1890
a9634178 1891 reg_cnt = can_use_hardware_watchpoint (val_chain);
e09342b5
TJB
1892
1893 if (reg_cnt)
9fa40276
TJB
1894 {
1895 int i, target_resources_ok, other_type_used;
a1398e0c 1896 enum bptype type;
9fa40276 1897
a9634178
TJB
1898 /* Use an exact watchpoint when there's only one memory region to be
1899 watched, and only one debug register is needed to watch it. */
1900 b->exact = target_exact_watchpoints && reg_cnt == 1;
1901
9fa40276 1902 /* We need to determine how many resources are already
e09342b5
TJB
1903 used for all other hardware watchpoints plus this one
1904 to see if we still have enough resources to also fit
a1398e0c
PA
1905 this watchpoint in as well. */
1906
1907 /* If this is a software watchpoint, we try to turn it
1908 to a hardware one -- count resources as if B was of
1909 hardware watchpoint type. */
c1fc2657 1910 type = b->type;
a1398e0c
PA
1911 if (type == bp_watchpoint)
1912 type = bp_hardware_watchpoint;
1913
1914 /* This watchpoint may or may not have been placed on
1915 the list yet at this point (it won't be in the list
1916 if we're trying to create it for the first time,
1917 through watch_command), so always account for it
1918 manually. */
1919
1920 /* Count resources used by all watchpoints except B. */
c1fc2657 1921 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
a1398e0c
PA
1922
1923 /* Add in the resources needed for B. */
c1fc2657 1924 i += hw_watchpoint_use_count (b);
a1398e0c
PA
1925
1926 target_resources_ok
1927 = target_can_use_hardware_watchpoint (type, i, other_type_used);
e09342b5 1928 if (target_resources_ok <= 0)
a9634178 1929 {
c1fc2657 1930 int sw_mode = b->ops->works_in_software_mode (b);
9c06b0b4
TJB
1931
1932 if (target_resources_ok == 0 && !sw_mode)
a9634178
TJB
1933 error (_("Target does not support this type of "
1934 "hardware watchpoint."));
9c06b0b4
TJB
1935 else if (target_resources_ok < 0 && !sw_mode)
1936 error (_("There are not enough available hardware "
1937 "resources for this watchpoint."));
a1398e0c
PA
1938
1939 /* Downgrade to software watchpoint. */
c1fc2657 1940 b->type = bp_watchpoint;
a1398e0c
PA
1941 }
1942 else
1943 {
1944 /* If this was a software watchpoint, we've just
1945 found we have enough resources to turn it to a
1946 hardware watchpoint. Otherwise, this is a
1947 nop. */
c1fc2657 1948 b->type = type;
a9634178 1949 }
9fa40276 1950 }
c1fc2657 1951 else if (!b->ops->works_in_software_mode (b))
638aa5a1
AB
1952 {
1953 if (!can_use_hw_watchpoints)
1954 error (_("Can't set read/access watchpoint when "
1955 "hardware watchpoints are disabled."));
1956 else
1957 error (_("Expression cannot be implemented with "
1958 "read/access watchpoint."));
1959 }
9fa40276 1960 else
c1fc2657 1961 b->type = bp_watchpoint;
9fa40276 1962
c1fc2657 1963 loc_type = (b->type == bp_watchpoint? bp_loc_other
9fa40276 1964 : bp_loc_hardware_watchpoint);
c1fc2657 1965 for (bl = b->loc; bl; bl = bl->next)
9fa40276
TJB
1966 bl->loc_type = loc_type;
1967 }
1968
c7437ca6
PA
1969 /* If a software watchpoint is not watching any memory, then the
1970 above left it without any location set up. But,
1971 bpstat_stop_status requires a location to be able to report
1972 stops, so make sure there's at least a dummy one. */
c1fc2657
SM
1973 if (b->type == bp_watchpoint && b->loc == NULL)
1974 software_watchpoint_add_no_memory_location (b, frame_pspace);
a5606eee
VP
1975 }
1976 else if (!within_current_scope)
7270d8f2 1977 {
ac74f770
MS
1978 printf_filtered (_("\
1979Watchpoint %d deleted because the program has left the block\n\
1980in which its expression is valid.\n"),
c1fc2657 1981 b->number);
d0fb5eae 1982 watchpoint_del_at_next_stop (b);
7270d8f2 1983 }
a5606eee
VP
1984
1985 /* Restore the selected frame. */
66076460
DJ
1986 if (frame_saved)
1987 select_frame (frame_find_by_id (saved_frame_id));
7270d8f2
OF
1988}
1989
a5606eee 1990
74960c60 1991/* Returns 1 iff breakpoint location should be
1e4d1764
YQ
1992 inserted in the inferior. We don't differentiate the type of BL's owner
1993 (breakpoint vs. tracepoint), although insert_location in tracepoint's
1994 breakpoint_ops is not defined, because in insert_bp_location,
1995 tracepoint's insert_location will not be called. */
74960c60 1996static int
35df4500 1997should_be_inserted (struct bp_location *bl)
74960c60 1998{
35df4500 1999 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
74960c60
VP
2000 return 0;
2001
35df4500 2002 if (bl->owner->disposition == disp_del_at_next_stop)
74960c60
VP
2003 return 0;
2004
35df4500 2005 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
74960c60
VP
2006 return 0;
2007
f8eba3c6
TT
2008 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2009 return 0;
2010
56710373
PA
2011 /* This is set for example, when we're attached to the parent of a
2012 vfork, and have detached from the child. The child is running
2013 free, and we expect it to do an exec or exit, at which point the
2014 OS makes the parent schedulable again (and the target reports
2015 that the vfork is done). Until the child is done with the shared
2016 memory region, do not insert breakpoints in the parent, otherwise
2017 the child could still trip on the parent's breakpoints. Since
2018 the parent is blocked anyway, it won't miss any breakpoint. */
35df4500 2019 if (bl->pspace->breakpoints_not_allowed)
56710373
PA
2020 return 0;
2021
31e77af2 2022 /* Don't insert a breakpoint if we're trying to step past its
21edc42f
YQ
2023 location, except if the breakpoint is a single-step breakpoint,
2024 and the breakpoint's thread is the thread which is stepping past
2025 a breakpoint. */
31e77af2
PA
2026 if ((bl->loc_type == bp_loc_software_breakpoint
2027 || bl->loc_type == bp_loc_hardware_breakpoint)
2028 && stepping_past_instruction_at (bl->pspace->aspace,
21edc42f
YQ
2029 bl->address)
2030 /* The single-step breakpoint may be inserted at the location
2031 we're trying to step if the instruction branches to itself.
2032 However, the instruction won't be executed at all and it may
2033 break the semantics of the instruction, for example, the
2034 instruction is a conditional branch or updates some flags.
2035 We can't fix it unless GDB is able to emulate the instruction
2036 or switch to displaced stepping. */
2037 && !(bl->owner->type == bp_single_step
2038 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
e558d7c1
PA
2039 {
2040 if (debug_infrun)
2041 {
2042 fprintf_unfiltered (gdb_stdlog,
2043 "infrun: skipping breakpoint: "
2044 "stepping past insn at: %s\n",
2045 paddress (bl->gdbarch, bl->address));
2046 }
2047 return 0;
2048 }
31e77af2 2049
963f9c80
PA
2050 /* Don't insert watchpoints if we're trying to step past the
2051 instruction that triggered one. */
2052 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2053 && stepping_past_nonsteppable_watchpoint ())
2054 {
2055 if (debug_infrun)
2056 {
2057 fprintf_unfiltered (gdb_stdlog,
2058 "infrun: stepping past non-steppable watchpoint. "
2059 "skipping watchpoint at %s:%d\n",
2060 paddress (bl->gdbarch, bl->address),
2061 bl->length);
2062 }
2063 return 0;
2064 }
2065
74960c60
VP
2066 return 1;
2067}
2068
934709f0
PW
2069/* Same as should_be_inserted but does the check assuming
2070 that the location is not duplicated. */
2071
2072static int
2073unduplicated_should_be_inserted (struct bp_location *bl)
2074{
2075 int result;
2076 const int save_duplicate = bl->duplicate;
2077
2078 bl->duplicate = 0;
2079 result = should_be_inserted (bl);
2080 bl->duplicate = save_duplicate;
2081 return result;
2082}
2083
b775012e
LM
2084/* Parses a conditional described by an expression COND into an
2085 agent expression bytecode suitable for evaluation
2086 by the bytecode interpreter. Return NULL if there was
2087 any error during parsing. */
2088
833177a4 2089static agent_expr_up
b775012e
LM
2090parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2091{
833177a4 2092 if (cond == NULL)
b775012e
LM
2093 return NULL;
2094
833177a4
PA
2095 agent_expr_up aexpr;
2096
b775012e
LM
2097 /* We don't want to stop processing, so catch any errors
2098 that may show up. */
492d29ea 2099 TRY
b775012e 2100 {
036e657b 2101 aexpr = gen_eval_for_expr (scope, cond);
b775012e
LM
2102 }
2103
492d29ea 2104 CATCH (ex, RETURN_MASK_ERROR)
b775012e
LM
2105 {
2106 /* If we got here, it means the condition could not be parsed to a valid
2107 bytecode expression and thus can't be evaluated on the target's side.
2108 It's no use iterating through the conditions. */
b775012e 2109 }
492d29ea 2110 END_CATCH
b775012e
LM
2111
2112 /* We have a valid agent expression. */
2113 return aexpr;
2114}
2115
2116/* Based on location BL, create a list of breakpoint conditions to be
2117 passed on to the target. If we have duplicated locations with different
2118 conditions, we will add such conditions to the list. The idea is that the
2119 target will evaluate the list of conditions and will only notify GDB when
2120 one of them is true. */
2121
2122static void
2123build_target_condition_list (struct bp_location *bl)
2124{
2125 struct bp_location **locp = NULL, **loc2p;
2126 int null_condition_or_parse_error = 0;
2127 int modified = bl->needs_update;
2128 struct bp_location *loc;
2129
8b4f3082 2130 /* Release conditions left over from a previous insert. */
3cde5c42 2131 bl->target_info.conditions.clear ();
8b4f3082 2132
b775012e
LM
2133 /* This is only meaningful if the target is
2134 evaluating conditions and if the user has
2135 opted for condition evaluation on the target's
2136 side. */
2137 if (gdb_evaluates_breakpoint_condition_p ()
2138 || !target_supports_evaluation_of_breakpoint_conditions ())
2139 return;
2140
2141 /* Do a first pass to check for locations with no assigned
2142 conditions or conditions that fail to parse to a valid agent expression
2143 bytecode. If any of these happen, then it's no use to send conditions
2144 to the target since this location will always trigger and generate a
2145 response back to GDB. */
2146 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2147 {
2148 loc = (*loc2p);
2149 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2150 {
2151 if (modified)
2152 {
b775012e
LM
2153 /* Re-parse the conditions since something changed. In that
2154 case we already freed the condition bytecodes (see
2155 force_breakpoint_reinsertion). We just
2156 need to parse the condition to bytecodes again. */
833177a4
PA
2157 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2158 loc->cond.get ());
b775012e
LM
2159 }
2160
2161 /* If we have a NULL bytecode expression, it means something
2162 went wrong or we have a null condition expression. */
2163 if (!loc->cond_bytecode)
2164 {
2165 null_condition_or_parse_error = 1;
2166 break;
2167 }
2168 }
2169 }
2170
2171 /* If any of these happened, it means we will have to evaluate the conditions
2172 for the location's address on gdb's side. It is no use keeping bytecodes
2173 for all the other duplicate locations, thus we free all of them here.
2174
2175 This is so we have a finer control over which locations' conditions are
2176 being evaluated by GDB or the remote stub. */
2177 if (null_condition_or_parse_error)
2178 {
2179 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2180 {
2181 loc = (*loc2p);
2182 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2183 {
2184 /* Only go as far as the first NULL bytecode is
2185 located. */
2186 if (!loc->cond_bytecode)
2187 return;
2188
833177a4 2189 loc->cond_bytecode.reset ();
b775012e
LM
2190 }
2191 }
2192 }
2193
2194 /* No NULL conditions or failed bytecode generation. Build a condition list
2195 for this location's address. */
2196 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2197 {
2198 loc = (*loc2p);
2199 if (loc->cond
2200 && is_breakpoint (loc->owner)
2201 && loc->pspace->num == bl->pspace->num
2202 && loc->owner->enable_state == bp_enabled
2203 && loc->enabled)
3cde5c42
PA
2204 {
2205 /* Add the condition to the vector. This will be used later
2206 to send the conditions to the target. */
2207 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2208 }
b775012e
LM
2209 }
2210
2211 return;
2212}
2213
d3ce09f5
SS
2214/* Parses a command described by string CMD into an agent expression
2215 bytecode suitable for evaluation by the bytecode interpreter.
2216 Return NULL if there was any error during parsing. */
2217
833177a4 2218static agent_expr_up
d3ce09f5
SS
2219parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2220{
bbc13ae3
KS
2221 const char *cmdrest;
2222 const char *format_start, *format_end;
d3ce09f5
SS
2223 struct gdbarch *gdbarch = get_current_arch ();
2224
833177a4 2225 if (cmd == NULL)
d3ce09f5
SS
2226 return NULL;
2227
2228 cmdrest = cmd;
2229
2230 if (*cmdrest == ',')
2231 ++cmdrest;
f1735a53 2232 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2233
2234 if (*cmdrest++ != '"')
2235 error (_("No format string following the location"));
2236
2237 format_start = cmdrest;
2238
8e481c3b 2239 format_pieces fpieces (&cmdrest);
d3ce09f5
SS
2240
2241 format_end = cmdrest;
2242
2243 if (*cmdrest++ != '"')
2244 error (_("Bad format string, non-terminated '\"'."));
2245
f1735a53 2246 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2247
2248 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2249 error (_("Invalid argument syntax"));
2250
2251 if (*cmdrest == ',')
2252 cmdrest++;
f1735a53 2253 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2254
2255 /* For each argument, make an expression. */
2256
8e481c3b 2257 std::vector<struct expression *> argvec;
d3ce09f5
SS
2258 while (*cmdrest != '\0')
2259 {
bbc13ae3 2260 const char *cmd1;
d3ce09f5
SS
2261
2262 cmd1 = cmdrest;
4d01a485 2263 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
8e481c3b 2264 argvec.push_back (expr.release ());
d3ce09f5
SS
2265 cmdrest = cmd1;
2266 if (*cmdrest == ',')
2267 ++cmdrest;
2268 }
2269
833177a4
PA
2270 agent_expr_up aexpr;
2271
d3ce09f5
SS
2272 /* We don't want to stop processing, so catch any errors
2273 that may show up. */
492d29ea 2274 TRY
d3ce09f5 2275 {
036e657b
JB
2276 aexpr = gen_printf (scope, gdbarch, 0, 0,
2277 format_start, format_end - format_start,
8e481c3b 2278 argvec.size (), argvec.data ());
d3ce09f5 2279 }
492d29ea 2280 CATCH (ex, RETURN_MASK_ERROR)
d3ce09f5
SS
2281 {
2282 /* If we got here, it means the command could not be parsed to a valid
2283 bytecode expression and thus can't be evaluated on the target's side.
2284 It's no use iterating through the other commands. */
d3ce09f5 2285 }
492d29ea
PA
2286 END_CATCH
2287
d3ce09f5
SS
2288 /* We have a valid agent expression, return it. */
2289 return aexpr;
2290}
2291
2292/* Based on location BL, create a list of breakpoint commands to be
2293 passed on to the target. If we have duplicated locations with
2294 different commands, we will add any such to the list. */
2295
2296static void
2297build_target_command_list (struct bp_location *bl)
2298{
2299 struct bp_location **locp = NULL, **loc2p;
2300 int null_command_or_parse_error = 0;
2301 int modified = bl->needs_update;
2302 struct bp_location *loc;
2303
3cde5c42
PA
2304 /* Clear commands left over from a previous insert. */
2305 bl->target_info.tcommands.clear ();
8b4f3082 2306
41fac0cf 2307 if (!target_can_run_breakpoint_commands ())
d3ce09f5
SS
2308 return;
2309
41fac0cf
PA
2310 /* For now, limit to agent-style dprintf breakpoints. */
2311 if (dprintf_style != dprintf_style_agent)
d3ce09f5
SS
2312 return;
2313
41fac0cf
PA
2314 /* For now, if we have any duplicate location that isn't a dprintf,
2315 don't install the target-side commands, as that would make the
2316 breakpoint not be reported to the core, and we'd lose
2317 control. */
2318 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2319 {
2320 loc = (*loc2p);
2321 if (is_breakpoint (loc->owner)
2322 && loc->pspace->num == bl->pspace->num
2323 && loc->owner->type != bp_dprintf)
2324 return;
2325 }
2326
d3ce09f5
SS
2327 /* Do a first pass to check for locations with no assigned
2328 conditions or conditions that fail to parse to a valid agent expression
2329 bytecode. If any of these happen, then it's no use to send conditions
2330 to the target since this location will always trigger and generate a
2331 response back to GDB. */
2332 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2333 {
2334 loc = (*loc2p);
2335 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2336 {
2337 if (modified)
2338 {
d3ce09f5
SS
2339 /* Re-parse the commands since something changed. In that
2340 case we already freed the command bytecodes (see
2341 force_breakpoint_reinsertion). We just
2342 need to parse the command to bytecodes again. */
833177a4
PA
2343 loc->cmd_bytecode
2344 = parse_cmd_to_aexpr (bl->address,
2345 loc->owner->extra_string);
d3ce09f5
SS
2346 }
2347
2348 /* If we have a NULL bytecode expression, it means something
2349 went wrong or we have a null command expression. */
2350 if (!loc->cmd_bytecode)
2351 {
2352 null_command_or_parse_error = 1;
2353 break;
2354 }
2355 }
2356 }
2357
2358 /* If anything failed, then we're not doing target-side commands,
2359 and so clean up. */
2360 if (null_command_or_parse_error)
2361 {
2362 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2363 {
2364 loc = (*loc2p);
2365 if (is_breakpoint (loc->owner)
2366 && loc->pspace->num == bl->pspace->num)
2367 {
2368 /* Only go as far as the first NULL bytecode is
2369 located. */
40fb6c5e 2370 if (loc->cmd_bytecode == NULL)
d3ce09f5
SS
2371 return;
2372
833177a4 2373 loc->cmd_bytecode.reset ();
d3ce09f5
SS
2374 }
2375 }
2376 }
2377
2378 /* No NULL commands or failed bytecode generation. Build a command list
2379 for this location's address. */
2380 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2381 {
2382 loc = (*loc2p);
2383 if (loc->owner->extra_string
2384 && is_breakpoint (loc->owner)
2385 && loc->pspace->num == bl->pspace->num
2386 && loc->owner->enable_state == bp_enabled
2387 && loc->enabled)
3cde5c42
PA
2388 {
2389 /* Add the command to the vector. This will be used later
2390 to send the commands to the target. */
2391 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2392 }
d3ce09f5
SS
2393 }
2394
2395 bl->target_info.persist = 0;
2396 /* Maybe flag this location as persistent. */
2397 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2398 bl->target_info.persist = 1;
2399}
2400
833b7ab5
YQ
2401/* Return the kind of breakpoint on address *ADDR. Get the kind
2402 of breakpoint according to ADDR except single-step breakpoint.
2403 Get the kind of single-step breakpoint according to the current
2404 registers state. */
cd6c3b4f
YQ
2405
2406static int
2407breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2408{
833b7ab5
YQ
2409 if (bl->owner->type == bp_single_step)
2410 {
2411 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2412 struct regcache *regcache;
2413
00431a78 2414 regcache = get_thread_regcache (thr);
833b7ab5
YQ
2415
2416 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2417 regcache, addr);
2418 }
2419 else
2420 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
cd6c3b4f
YQ
2421}
2422
35df4500
TJB
2423/* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2424 location. Any error messages are printed to TMP_ERROR_STREAM; and
3fbb6ffa 2425 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
c30eee59
TJB
2426 Returns 0 for success, 1 if the bp_location type is not supported or
2427 -1 for failure.
879bfdc2 2428
4a64f543
MS
2429 NOTE drow/2003-09-09: This routine could be broken down to an
2430 object-style method for each breakpoint or catchpoint type. */
26bb91f3 2431static int
35df4500 2432insert_bp_location (struct bp_location *bl,
26bb91f3 2433 struct ui_file *tmp_error_stream,
3fbb6ffa 2434 int *disabled_breaks,
dd61ec5c
MW
2435 int *hw_breakpoint_error,
2436 int *hw_bp_error_explained_already)
879bfdc2 2437{
688fca4f 2438 gdb_exception bp_excpt = exception_none;
879bfdc2 2439
b775012e 2440 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2441 return 0;
2442
35c63cd8
JB
2443 /* Note we don't initialize bl->target_info, as that wipes out
2444 the breakpoint location's shadow_contents if the breakpoint
2445 is still inserted at that location. This in turn breaks
2446 target_read_memory which depends on these buffers when
2447 a memory read is requested at the breakpoint location:
2448 Once the target_info has been wiped, we fail to see that
2449 we have a breakpoint inserted at that address and thus
2450 read the breakpoint instead of returning the data saved in
2451 the breakpoint location's shadow contents. */
0d5ed153 2452 bl->target_info.reqstd_address = bl->address;
35df4500 2453 bl->target_info.placed_address_space = bl->pspace->aspace;
f1310107 2454 bl->target_info.length = bl->length;
8181d85f 2455
b775012e
LM
2456 /* When working with target-side conditions, we must pass all the conditions
2457 for the same breakpoint address down to the target since GDB will not
2458 insert those locations. With a list of breakpoint conditions, the target
2459 can decide when to stop and notify GDB. */
2460
2461 if (is_breakpoint (bl->owner))
2462 {
2463 build_target_condition_list (bl);
d3ce09f5
SS
2464 build_target_command_list (bl);
2465 /* Reset the modification marker. */
b775012e
LM
2466 bl->needs_update = 0;
2467 }
2468
35df4500
TJB
2469 if (bl->loc_type == bp_loc_software_breakpoint
2470 || bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2471 {
35df4500 2472 if (bl->owner->type != bp_hardware_breakpoint)
765dc015
VP
2473 {
2474 /* If the explicitly specified breakpoint type
2475 is not hardware breakpoint, check the memory map to see
2476 if the breakpoint address is in read only memory or not.
4a64f543 2477
765dc015
VP
2478 Two important cases are:
2479 - location type is not hardware breakpoint, memory
2480 is readonly. We change the type of the location to
2481 hardware breakpoint.
4a64f543
MS
2482 - location type is hardware breakpoint, memory is
2483 read-write. This means we've previously made the
2484 location hardware one, but then the memory map changed,
2485 so we undo.
765dc015 2486
4a64f543
MS
2487 When breakpoints are removed, remove_breakpoints will use
2488 location types we've just set here, the only possible
2489 problem is that memory map has changed during running
2490 program, but it's not going to work anyway with current
2491 gdb. */
765dc015 2492 struct mem_region *mr
0d5ed153 2493 = lookup_mem_region (bl->target_info.reqstd_address);
765dc015
VP
2494
2495 if (mr)
2496 {
2497 if (automatic_hardware_breakpoints)
2498 {
765dc015
VP
2499 enum bp_loc_type new_type;
2500
2501 if (mr->attrib.mode != MEM_RW)
2502 new_type = bp_loc_hardware_breakpoint;
2503 else
2504 new_type = bp_loc_software_breakpoint;
2505
35df4500 2506 if (new_type != bl->loc_type)
765dc015
VP
2507 {
2508 static int said = 0;
cc59ec59 2509
35df4500 2510 bl->loc_type = new_type;
765dc015
VP
2511 if (!said)
2512 {
3e43a32a
MS
2513 fprintf_filtered (gdb_stdout,
2514 _("Note: automatically using "
2515 "hardware breakpoints for "
2516 "read-only addresses.\n"));
765dc015
VP
2517 said = 1;
2518 }
2519 }
2520 }
35df4500 2521 else if (bl->loc_type == bp_loc_software_breakpoint
0fec99e8
PA
2522 && mr->attrib.mode != MEM_RW)
2523 {
2524 fprintf_unfiltered (tmp_error_stream,
2525 _("Cannot insert breakpoint %d.\n"
2526 "Cannot set software breakpoint "
2527 "at read-only address %s\n"),
2528 bl->owner->number,
2529 paddress (bl->gdbarch, bl->address));
2530 return 1;
2531 }
765dc015
VP
2532 }
2533 }
2534
879bfdc2
DJ
2535 /* First check to see if we have to handle an overlay. */
2536 if (overlay_debugging == ovly_off
35df4500
TJB
2537 || bl->section == NULL
2538 || !(section_is_overlay (bl->section)))
879bfdc2
DJ
2539 {
2540 /* No overlay handling: just set the breakpoint. */
492d29ea 2541 TRY
dd61ec5c 2542 {
0000e5cc
PA
2543 int val;
2544
dd61ec5c 2545 val = bl->owner->ops->insert_location (bl);
0000e5cc 2546 if (val)
688fca4f 2547 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
dd61ec5c 2548 }
492d29ea 2549 CATCH (e, RETURN_MASK_ALL)
dd61ec5c 2550 {
688fca4f 2551 bp_excpt = e;
dd61ec5c 2552 }
492d29ea 2553 END_CATCH
879bfdc2
DJ
2554 }
2555 else
2556 {
4a64f543 2557 /* This breakpoint is in an overlay section.
879bfdc2
DJ
2558 Shall we set a breakpoint at the LMA? */
2559 if (!overlay_events_enabled)
2560 {
2561 /* Yes -- overlay event support is not active,
2562 so we must try to set a breakpoint at the LMA.
2563 This will not work for a hardware breakpoint. */
35df4500 2564 if (bl->loc_type == bp_loc_hardware_breakpoint)
8a3fe4f8 2565 warning (_("hardware breakpoint %d not supported in overlay!"),
35df4500 2566 bl->owner->number);
879bfdc2
DJ
2567 else
2568 {
35df4500
TJB
2569 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2570 bl->section);
879bfdc2 2571 /* Set a software (trap) breakpoint at the LMA. */
35df4500 2572 bl->overlay_target_info = bl->target_info;
0d5ed153 2573 bl->overlay_target_info.reqstd_address = addr;
0000e5cc
PA
2574
2575 /* No overlay handling: just set the breakpoint. */
492d29ea 2576 TRY
0000e5cc
PA
2577 {
2578 int val;
2579
579c6ad9 2580 bl->overlay_target_info.kind
cd6c3b4f
YQ
2581 = breakpoint_kind (bl, &addr);
2582 bl->overlay_target_info.placed_address = addr;
0000e5cc
PA
2583 val = target_insert_breakpoint (bl->gdbarch,
2584 &bl->overlay_target_info);
2585 if (val)
688fca4f
PA
2586 bp_excpt
2587 = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
0000e5cc 2588 }
492d29ea 2589 CATCH (e, RETURN_MASK_ALL)
0000e5cc 2590 {
688fca4f 2591 bp_excpt = e;
0000e5cc 2592 }
492d29ea 2593 END_CATCH
0000e5cc 2594
688fca4f 2595 if (bp_excpt.reason != 0)
99361f52 2596 fprintf_unfiltered (tmp_error_stream,
3e43a32a
MS
2597 "Overlay breakpoint %d "
2598 "failed: in ROM?\n",
35df4500 2599 bl->owner->number);
879bfdc2
DJ
2600 }
2601 }
2602 /* Shall we set a breakpoint at the VMA? */
35df4500 2603 if (section_is_mapped (bl->section))
879bfdc2
DJ
2604 {
2605 /* Yes. This overlay section is mapped into memory. */
492d29ea 2606 TRY
dd61ec5c 2607 {
0000e5cc
PA
2608 int val;
2609
dd61ec5c 2610 val = bl->owner->ops->insert_location (bl);
0000e5cc 2611 if (val)
688fca4f 2612 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
dd61ec5c 2613 }
492d29ea 2614 CATCH (e, RETURN_MASK_ALL)
dd61ec5c 2615 {
688fca4f 2616 bp_excpt = e;
dd61ec5c 2617 }
492d29ea 2618 END_CATCH
879bfdc2
DJ
2619 }
2620 else
2621 {
2622 /* No. This breakpoint will not be inserted.
2623 No error, but do not mark the bp as 'inserted'. */
2624 return 0;
2625 }
2626 }
2627
688fca4f 2628 if (bp_excpt.reason != 0)
879bfdc2
DJ
2629 {
2630 /* Can't set the breakpoint. */
0000e5cc
PA
2631
2632 /* In some cases, we might not be able to insert a
2633 breakpoint in a shared library that has already been
2634 removed, but we have not yet processed the shlib unload
2635 event. Unfortunately, some targets that implement
076855f9
PA
2636 breakpoint insertion themselves can't tell why the
2637 breakpoint insertion failed (e.g., the remote target
2638 doesn't define error codes), so we must treat generic
2639 errors as memory errors. */
688fca4f
PA
2640 if (bp_excpt.reason == RETURN_ERROR
2641 && (bp_excpt.error == GENERIC_ERROR
2642 || bp_excpt.error == MEMORY_ERROR)
076855f9 2643 && bl->loc_type == bp_loc_software_breakpoint
08351840 2644 && (solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
2645 || shared_objfile_contains_address_p (bl->pspace,
2646 bl->address)))
879bfdc2 2647 {
4a64f543 2648 /* See also: disable_breakpoints_in_shlibs. */
35df4500 2649 bl->shlib_disabled = 1;
76727919 2650 gdb::observers::breakpoint_modified.notify (bl->owner);
3fbb6ffa
TJB
2651 if (!*disabled_breaks)
2652 {
2653 fprintf_unfiltered (tmp_error_stream,
2654 "Cannot insert breakpoint %d.\n",
2655 bl->owner->number);
2656 fprintf_unfiltered (tmp_error_stream,
2657 "Temporarily disabling shared "
2658 "library breakpoints:\n");
2659 }
2660 *disabled_breaks = 1;
879bfdc2 2661 fprintf_unfiltered (tmp_error_stream,
35df4500 2662 "breakpoint #%d\n", bl->owner->number);
0000e5cc 2663 return 0;
879bfdc2
DJ
2664 }
2665 else
879bfdc2 2666 {
35df4500 2667 if (bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2668 {
0000e5cc 2669 *hw_breakpoint_error = 1;
688fca4f 2670 *hw_bp_error_explained_already = bp_excpt.message != NULL;
dd61ec5c
MW
2671 fprintf_unfiltered (tmp_error_stream,
2672 "Cannot insert hardware breakpoint %d%s",
688fca4f
PA
2673 bl->owner->number,
2674 bp_excpt.message ? ":" : ".\n");
2675 if (bp_excpt.message != NULL)
2676 fprintf_unfiltered (tmp_error_stream, "%s.\n",
2677 bp_excpt.message);
879bfdc2
DJ
2678 }
2679 else
2680 {
688fca4f 2681 if (bp_excpt.message == NULL)
0000e5cc 2682 {
1ccbe998 2683 std::string message
0000e5cc
PA
2684 = memory_error_message (TARGET_XFER_E_IO,
2685 bl->gdbarch, bl->address);
0000e5cc
PA
2686
2687 fprintf_unfiltered (tmp_error_stream,
2688 "Cannot insert breakpoint %d.\n"
2689 "%s\n",
1ccbe998 2690 bl->owner->number, message.c_str ());
0000e5cc
PA
2691 }
2692 else
2693 {
2694 fprintf_unfiltered (tmp_error_stream,
2695 "Cannot insert breakpoint %d: %s\n",
2696 bl->owner->number,
688fca4f 2697 bp_excpt.message);
0000e5cc 2698 }
879bfdc2 2699 }
0000e5cc 2700 return 1;
879bfdc2
DJ
2701
2702 }
2703 }
2704 else
35df4500 2705 bl->inserted = 1;
879bfdc2 2706
0000e5cc 2707 return 0;
879bfdc2
DJ
2708 }
2709
35df4500 2710 else if (bl->loc_type == bp_loc_hardware_watchpoint
879bfdc2 2711 /* NOTE drow/2003-09-08: This state only exists for removing
4a64f543 2712 watchpoints. It's not clear that it's necessary... */
35df4500 2713 && bl->owner->disposition != disp_del_at_next_stop)
879bfdc2 2714 {
0000e5cc
PA
2715 int val;
2716
77b06cd7
TJB
2717 gdb_assert (bl->owner->ops != NULL
2718 && bl->owner->ops->insert_location != NULL);
2719
2720 val = bl->owner->ops->insert_location (bl);
85d721b8
PA
2721
2722 /* If trying to set a read-watchpoint, and it turns out it's not
2723 supported, try emulating one with an access watchpoint. */
35df4500 2724 if (val == 1 && bl->watchpoint_type == hw_read)
85d721b8
PA
2725 {
2726 struct bp_location *loc, **loc_temp;
2727
2728 /* But don't try to insert it, if there's already another
2729 hw_access location that would be considered a duplicate
2730 of this one. */
2731 ALL_BP_LOCATIONS (loc, loc_temp)
35df4500 2732 if (loc != bl
85d721b8 2733 && loc->watchpoint_type == hw_access
35df4500 2734 && watchpoint_locations_match (bl, loc))
85d721b8 2735 {
35df4500
TJB
2736 bl->duplicate = 1;
2737 bl->inserted = 1;
2738 bl->target_info = loc->target_info;
2739 bl->watchpoint_type = hw_access;
85d721b8
PA
2740 val = 0;
2741 break;
2742 }
2743
2744 if (val == 1)
2745 {
77b06cd7
TJB
2746 bl->watchpoint_type = hw_access;
2747 val = bl->owner->ops->insert_location (bl);
2748
2749 if (val)
2750 /* Back to the original value. */
2751 bl->watchpoint_type = hw_read;
85d721b8
PA
2752 }
2753 }
2754
35df4500 2755 bl->inserted = (val == 0);
879bfdc2
DJ
2756 }
2757
35df4500 2758 else if (bl->owner->type == bp_catchpoint)
879bfdc2 2759 {
0000e5cc
PA
2760 int val;
2761
77b06cd7
TJB
2762 gdb_assert (bl->owner->ops != NULL
2763 && bl->owner->ops->insert_location != NULL);
2764
2765 val = bl->owner->ops->insert_location (bl);
2766 if (val)
2767 {
2768 bl->owner->enable_state = bp_disabled;
2769
2770 if (val == 1)
2771 warning (_("\
2772Error inserting catchpoint %d: Your system does not support this type\n\
2773of catchpoint."), bl->owner->number);
2774 else
2775 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2776 }
2777
2778 bl->inserted = (val == 0);
1640b821
DJ
2779
2780 /* We've already printed an error message if there was a problem
2781 inserting this catchpoint, and we've disabled the catchpoint,
2782 so just return success. */
2783 return 0;
879bfdc2
DJ
2784 }
2785
2786 return 0;
2787}
2788
6c95b8df
PA
2789/* This function is called when program space PSPACE is about to be
2790 deleted. It takes care of updating breakpoints to not reference
2791 PSPACE anymore. */
2792
2793void
2794breakpoint_program_space_exit (struct program_space *pspace)
2795{
2796 struct breakpoint *b, *b_temp;
876fa593 2797 struct bp_location *loc, **loc_temp;
6c95b8df
PA
2798
2799 /* Remove any breakpoint that was set through this program space. */
2800 ALL_BREAKPOINTS_SAFE (b, b_temp)
2801 {
2802 if (b->pspace == pspace)
2803 delete_breakpoint (b);
2804 }
2805
2806 /* Breakpoints set through other program spaces could have locations
2807 bound to PSPACE as well. Remove those. */
876fa593 2808 ALL_BP_LOCATIONS (loc, loc_temp)
6c95b8df
PA
2809 {
2810 struct bp_location *tmp;
2811
2812 if (loc->pspace == pspace)
2813 {
2bdf28a0 2814 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6c95b8df
PA
2815 if (loc->owner->loc == loc)
2816 loc->owner->loc = loc->next;
2817 else
2818 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2819 if (tmp->next == loc)
2820 {
2821 tmp->next = loc->next;
2822 break;
2823 }
2824 }
2825 }
2826
2827 /* Now update the global location list to permanently delete the
2828 removed locations above. */
44702360 2829 update_global_location_list (UGLL_DONT_INSERT);
6c95b8df
PA
2830}
2831
74960c60
VP
2832/* Make sure all breakpoints are inserted in inferior.
2833 Throws exception on any error.
2834 A breakpoint that is already inserted won't be inserted
2835 again, so calling this function twice is safe. */
2836void
2837insert_breakpoints (void)
2838{
2839 struct breakpoint *bpt;
2840
2841 ALL_BREAKPOINTS (bpt)
2842 if (is_hardware_watchpoint (bpt))
3a5c3e22
PA
2843 {
2844 struct watchpoint *w = (struct watchpoint *) bpt;
2845
2846 update_watchpoint (w, 0 /* don't reparse. */);
2847 }
74960c60 2848
04086b45
PA
2849 /* Updating watchpoints creates new locations, so update the global
2850 location list. Explicitly tell ugll to insert locations and
2851 ignore breakpoints_always_inserted_mode. */
2852 update_global_location_list (UGLL_INSERT);
74960c60
VP
2853}
2854
20388dd6
YQ
2855/* Invoke CALLBACK for each of bp_location. */
2856
2857void
2858iterate_over_bp_locations (walk_bp_location_callback callback)
2859{
2860 struct bp_location *loc, **loc_tmp;
2861
2862 ALL_BP_LOCATIONS (loc, loc_tmp)
2863 {
2864 callback (loc, NULL);
2865 }
2866}
2867
b775012e
LM
2868/* This is used when we need to synch breakpoint conditions between GDB and the
2869 target. It is the case with deleting and disabling of breakpoints when using
2870 always-inserted mode. */
2871
2872static void
2873update_inserted_breakpoint_locations (void)
2874{
2875 struct bp_location *bl, **blp_tmp;
2876 int error_flag = 0;
2877 int val = 0;
2878 int disabled_breaks = 0;
2879 int hw_breakpoint_error = 0;
dd61ec5c 2880 int hw_bp_details_reported = 0;
b775012e 2881
d7e74731 2882 string_file tmp_error_stream;
b775012e
LM
2883
2884 /* Explicitly mark the warning -- this will only be printed if
2885 there was an error. */
d7e74731 2886 tmp_error_stream.puts ("Warning:\n");
b775012e 2887
5ed8105e 2888 scoped_restore_current_pspace_and_thread restore_pspace_thread;
b775012e
LM
2889
2890 ALL_BP_LOCATIONS (bl, blp_tmp)
2891 {
2892 /* We only want to update software breakpoints and hardware
2893 breakpoints. */
2894 if (!is_breakpoint (bl->owner))
2895 continue;
2896
2897 /* We only want to update locations that are already inserted
2898 and need updating. This is to avoid unwanted insertion during
2899 deletion of breakpoints. */
4daf1902 2900 if (!bl->inserted || !bl->needs_update)
b775012e
LM
2901 continue;
2902
2903 switch_to_program_space_and_thread (bl->pspace);
2904
2905 /* For targets that support global breakpoints, there's no need
2906 to select an inferior to insert breakpoint to. In fact, even
2907 if we aren't attached to any process yet, we should still
2908 insert breakpoints. */
f5656ead 2909 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
d7e15655 2910 && inferior_ptid == null_ptid)
b775012e
LM
2911 continue;
2912
d7e74731 2913 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 2914 &hw_breakpoint_error, &hw_bp_details_reported);
b775012e
LM
2915 if (val)
2916 error_flag = val;
2917 }
2918
2919 if (error_flag)
2920 {
223ffa71 2921 target_terminal::ours_for_output ();
b775012e
LM
2922 error_stream (tmp_error_stream);
2923 }
b775012e
LM
2924}
2925
c30eee59 2926/* Used when starting or continuing the program. */
c906108c 2927
74960c60
VP
2928static void
2929insert_breakpoint_locations (void)
c906108c 2930{
a5606eee 2931 struct breakpoint *bpt;
35df4500 2932 struct bp_location *bl, **blp_tmp;
eacd795a 2933 int error_flag = 0;
c906108c 2934 int val = 0;
3fbb6ffa 2935 int disabled_breaks = 0;
81d0cc19 2936 int hw_breakpoint_error = 0;
dd61ec5c 2937 int hw_bp_error_explained_already = 0;
c906108c 2938
d7e74731
PA
2939 string_file tmp_error_stream;
2940
81d0cc19
GS
2941 /* Explicitly mark the warning -- this will only be printed if
2942 there was an error. */
d7e74731 2943 tmp_error_stream.puts ("Warning:\n");
6c95b8df 2944
5ed8105e 2945 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 2946
35df4500 2947 ALL_BP_LOCATIONS (bl, blp_tmp)
879bfdc2 2948 {
b775012e 2949 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2950 continue;
2951
4a64f543
MS
2952 /* There is no point inserting thread-specific breakpoints if
2953 the thread no longer exists. ALL_BP_LOCATIONS bp_location
2954 has BL->OWNER always non-NULL. */
35df4500 2955 if (bl->owner->thread != -1
5d5658a1 2956 && !valid_global_thread_id (bl->owner->thread))
f365de73
AS
2957 continue;
2958
35df4500 2959 switch_to_program_space_and_thread (bl->pspace);
6c95b8df
PA
2960
2961 /* For targets that support global breakpoints, there's no need
2962 to select an inferior to insert breakpoint to. In fact, even
2963 if we aren't attached to any process yet, we should still
2964 insert breakpoints. */
f5656ead 2965 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
d7e15655 2966 && inferior_ptid == null_ptid)
6c95b8df
PA
2967 continue;
2968
d7e74731 2969 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 2970 &hw_breakpoint_error, &hw_bp_error_explained_already);
879bfdc2 2971 if (val)
eacd795a 2972 error_flag = val;
879bfdc2 2973 }
c906108c 2974
4a64f543
MS
2975 /* If we failed to insert all locations of a watchpoint, remove
2976 them, as half-inserted watchpoint is of limited use. */
a5606eee
VP
2977 ALL_BREAKPOINTS (bpt)
2978 {
2979 int some_failed = 0;
2980 struct bp_location *loc;
2981
2982 if (!is_hardware_watchpoint (bpt))
2983 continue;
2984
d6b74ac4 2985 if (!breakpoint_enabled (bpt))
a5606eee 2986 continue;
74960c60
VP
2987
2988 if (bpt->disposition == disp_del_at_next_stop)
2989 continue;
a5606eee
VP
2990
2991 for (loc = bpt->loc; loc; loc = loc->next)
56710373 2992 if (!loc->inserted && should_be_inserted (loc))
a5606eee
VP
2993 {
2994 some_failed = 1;
2995 break;
2996 }
2997 if (some_failed)
2998 {
2999 for (loc = bpt->loc; loc; loc = loc->next)
3000 if (loc->inserted)
834c0d03 3001 remove_breakpoint (loc);
a5606eee
VP
3002
3003 hw_breakpoint_error = 1;
d7e74731
PA
3004 tmp_error_stream.printf ("Could not insert "
3005 "hardware watchpoint %d.\n",
3006 bpt->number);
eacd795a 3007 error_flag = -1;
a5606eee
VP
3008 }
3009 }
3010
eacd795a 3011 if (error_flag)
81d0cc19
GS
3012 {
3013 /* If a hardware breakpoint or watchpoint was inserted, add a
3014 message about possibly exhausted resources. */
dd61ec5c 3015 if (hw_breakpoint_error && !hw_bp_error_explained_already)
81d0cc19 3016 {
d7e74731 3017 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
c6510018 3018You may have requested too many hardware breakpoints/watchpoints.\n");
81d0cc19 3019 }
223ffa71 3020 target_terminal::ours_for_output ();
81d0cc19
GS
3021 error_stream (tmp_error_stream);
3022 }
c906108c
SS
3023}
3024
c30eee59
TJB
3025/* Used when the program stops.
3026 Returns zero if successful, or non-zero if there was a problem
3027 removing a breakpoint location. */
3028
c906108c 3029int
fba45db2 3030remove_breakpoints (void)
c906108c 3031{
35df4500 3032 struct bp_location *bl, **blp_tmp;
3a1bae8e 3033 int val = 0;
c906108c 3034
35df4500 3035 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3036 {
1e4d1764 3037 if (bl->inserted && !is_tracepoint (bl->owner))
834c0d03 3038 val |= remove_breakpoint (bl);
c5aa993b 3039 }
3a1bae8e 3040 return val;
c906108c
SS
3041}
3042
49fa26b0
PA
3043/* When a thread exits, remove breakpoints that are related to
3044 that thread. */
3045
3046static void
3047remove_threaded_breakpoints (struct thread_info *tp, int silent)
3048{
3049 struct breakpoint *b, *b_tmp;
3050
3051 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3052 {
5d5658a1 3053 if (b->thread == tp->global_num && user_breakpoint_p (b))
49fa26b0
PA
3054 {
3055 b->disposition = disp_del_at_next_stop;
3056
3057 printf_filtered (_("\
43792cf0
PA
3058Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3059 b->number, print_thread_id (tp));
49fa26b0
PA
3060
3061 /* Hide it from the user. */
3062 b->number = 0;
3063 }
3064 }
3065}
3066
00431a78 3067/* Remove breakpoints of inferior INF. */
6c95b8df
PA
3068
3069int
00431a78 3070remove_breakpoints_inf (inferior *inf)
6c95b8df 3071{
35df4500 3072 struct bp_location *bl, **blp_tmp;
6c95b8df 3073 int val;
6c95b8df 3074
35df4500 3075 ALL_BP_LOCATIONS (bl, blp_tmp)
6c95b8df 3076 {
35df4500 3077 if (bl->pspace != inf->pspace)
6c95b8df
PA
3078 continue;
3079
fc126975 3080 if (bl->inserted && !bl->target_info.persist)
6c95b8df 3081 {
834c0d03 3082 val = remove_breakpoint (bl);
6c95b8df
PA
3083 if (val != 0)
3084 return val;
3085 }
3086 }
3087 return 0;
3088}
3089
e58b0e63
PA
3090static int internal_breakpoint_number = -1;
3091
84f4c1fe
PM
3092/* Set the breakpoint number of B, depending on the value of INTERNAL.
3093 If INTERNAL is non-zero, the breakpoint number will be populated
3094 from internal_breakpoint_number and that variable decremented.
e5dd4106 3095 Otherwise the breakpoint number will be populated from
84f4c1fe
PM
3096 breakpoint_count and that value incremented. Internal breakpoints
3097 do not set the internal var bpnum. */
3098static void
3099set_breakpoint_number (int internal, struct breakpoint *b)
3100{
3101 if (internal)
3102 b->number = internal_breakpoint_number--;
3103 else
3104 {
3105 set_breakpoint_count (breakpoint_count + 1);
3106 b->number = breakpoint_count;
3107 }
3108}
3109
e62c965a 3110static struct breakpoint *
a6d9a66e 3111create_internal_breakpoint (struct gdbarch *gdbarch,
06edf0c0 3112 CORE_ADDR address, enum bptype type,
c0a91b2b 3113 const struct breakpoint_ops *ops)
e62c965a 3114{
51abb421 3115 symtab_and_line sal;
e62c965a
PP
3116 sal.pc = address;
3117 sal.section = find_pc_overlay (sal.pc);
6c95b8df 3118 sal.pspace = current_program_space;
e62c965a 3119
51abb421 3120 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
e62c965a
PP
3121 b->number = internal_breakpoint_number--;
3122 b->disposition = disp_donttouch;
3123
3124 return b;
3125}
3126
17450429
PP
3127static const char *const longjmp_names[] =
3128 {
3129 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3130 };
3131#define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3132
3133/* Per-objfile data private to breakpoint.c. */
3134struct breakpoint_objfile_data
3135{
3136 /* Minimal symbol for "_ovly_debug_event" (if any). */
43dce439 3137 struct bound_minimal_symbol overlay_msym {};
17450429
PP
3138
3139 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
43dce439 3140 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
17450429 3141
28106bc2 3142 /* True if we have looked for longjmp probes. */
43dce439 3143 int longjmp_searched = 0;
28106bc2 3144
45461e0d
SM
3145 /* SystemTap probe points for longjmp (if any). These are non-owning
3146 references. */
3147 std::vector<probe *> longjmp_probes;
28106bc2 3148
17450429 3149 /* Minimal symbol for "std::terminate()" (if any). */
43dce439 3150 struct bound_minimal_symbol terminate_msym {};
17450429
PP
3151
3152 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
43dce439 3153 struct bound_minimal_symbol exception_msym {};
28106bc2
SDJ
3154
3155 /* True if we have looked for exception probes. */
43dce439 3156 int exception_searched = 0;
28106bc2 3157
45461e0d
SM
3158 /* SystemTap probe points for unwinding (if any). These are non-owning
3159 references. */
3160 std::vector<probe *> exception_probes;
17450429
PP
3161};
3162
3163static const struct objfile_data *breakpoint_objfile_key;
3164
3165/* Minimal symbol not found sentinel. */
3166static struct minimal_symbol msym_not_found;
3167
3168/* Returns TRUE if MSYM point to the "not found" sentinel. */
3169
3170static int
3171msym_not_found_p (const struct minimal_symbol *msym)
3172{
3173 return msym == &msym_not_found;
3174}
3175
3176/* Return per-objfile data needed by breakpoint.c.
3177 Allocate the data if necessary. */
3178
3179static struct breakpoint_objfile_data *
3180get_breakpoint_objfile_data (struct objfile *objfile)
3181{
3182 struct breakpoint_objfile_data *bp_objfile_data;
3183
9a3c8263
SM
3184 bp_objfile_data = ((struct breakpoint_objfile_data *)
3185 objfile_data (objfile, breakpoint_objfile_key));
17450429
PP
3186 if (bp_objfile_data == NULL)
3187 {
43dce439 3188 bp_objfile_data = new breakpoint_objfile_data ();
17450429
PP
3189 set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3190 }
3191 return bp_objfile_data;
3192}
3193
28106bc2 3194static void
43dce439 3195free_breakpoint_objfile_data (struct objfile *obj, void *data)
28106bc2 3196{
9a3c8263
SM
3197 struct breakpoint_objfile_data *bp_objfile_data
3198 = (struct breakpoint_objfile_data *) data;
28106bc2 3199
43dce439 3200 delete bp_objfile_data;
28106bc2
SDJ
3201}
3202
e62c965a 3203static void
af02033e 3204create_overlay_event_breakpoint (void)
e62c965a 3205{
69de3c6a 3206 struct objfile *objfile;
af02033e 3207 const char *const func_name = "_ovly_debug_event";
e62c965a 3208
69de3c6a
PP
3209 ALL_OBJFILES (objfile)
3210 {
3211 struct breakpoint *b;
17450429
PP
3212 struct breakpoint_objfile_data *bp_objfile_data;
3213 CORE_ADDR addr;
67994074 3214 struct explicit_location explicit_loc;
69de3c6a 3215
17450429
PP
3216 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3217
3b7344d5 3218 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
17450429
PP
3219 continue;
3220
3b7344d5 3221 if (bp_objfile_data->overlay_msym.minsym == NULL)
17450429 3222 {
3b7344d5 3223 struct bound_minimal_symbol m;
17450429
PP
3224
3225 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3226 if (m.minsym == NULL)
17450429
PP
3227 {
3228 /* Avoid future lookups in this objfile. */
3b7344d5 3229 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
17450429
PP
3230 continue;
3231 }
3232 bp_objfile_data->overlay_msym = m;
3233 }
e62c965a 3234
77e371c0 3235 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
17450429 3236 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
06edf0c0
PA
3237 bp_overlay_event,
3238 &internal_breakpoint_ops);
67994074
KS
3239 initialize_explicit_location (&explicit_loc);
3240 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3241 b->location = new_explicit_location (&explicit_loc);
e62c965a 3242
69de3c6a
PP
3243 if (overlay_debugging == ovly_auto)
3244 {
3245 b->enable_state = bp_enabled;
3246 overlay_events_enabled = 1;
3247 }
3248 else
3249 {
3250 b->enable_state = bp_disabled;
3251 overlay_events_enabled = 0;
3252 }
e62c965a 3253 }
e62c965a
PP
3254}
3255
0fd8e87f 3256static void
af02033e 3257create_longjmp_master_breakpoint (void)
0fd8e87f 3258{
6c95b8df 3259 struct program_space *pspace;
6c95b8df 3260
5ed8105e 3261 scoped_restore_current_program_space restore_pspace;
0fd8e87f 3262
6c95b8df 3263 ALL_PSPACES (pspace)
af02033e
PP
3264 {
3265 struct objfile *objfile;
3266
3267 set_current_program_space (pspace);
3268
3269 ALL_OBJFILES (objfile)
0fd8e87f 3270 {
af02033e
PP
3271 int i;
3272 struct gdbarch *gdbarch;
17450429 3273 struct breakpoint_objfile_data *bp_objfile_data;
0fd8e87f 3274
af02033e 3275 gdbarch = get_objfile_arch (objfile);
0fd8e87f 3276
17450429
PP
3277 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3278
28106bc2
SDJ
3279 if (!bp_objfile_data->longjmp_searched)
3280 {
45461e0d
SM
3281 std::vector<probe *> ret
3282 = find_probes_in_objfile (objfile, "libc", "longjmp");
25f9533e 3283
45461e0d 3284 if (!ret.empty ())
25f9533e
SDJ
3285 {
3286 /* We are only interested in checking one element. */
45461e0d 3287 probe *p = ret[0];
25f9533e 3288
935676c9 3289 if (!p->can_evaluate_arguments ())
25f9533e
SDJ
3290 {
3291 /* We cannot use the probe interface here, because it does
3292 not know how to evaluate arguments. */
45461e0d 3293 ret.clear ();
25f9533e
SDJ
3294 }
3295 }
3296 bp_objfile_data->longjmp_probes = ret;
28106bc2
SDJ
3297 bp_objfile_data->longjmp_searched = 1;
3298 }
3299
45461e0d 3300 if (!bp_objfile_data->longjmp_probes.empty ())
28106bc2 3301 {
45461e0d 3302 for (probe *p : bp_objfile_data->longjmp_probes)
28106bc2
SDJ
3303 {
3304 struct breakpoint *b;
3305
729662a5 3306 b = create_internal_breakpoint (gdbarch,
935676c9 3307 p->get_relocated_address (objfile),
28106bc2
SDJ
3308 bp_longjmp_master,
3309 &internal_breakpoint_ops);
d28cd78a 3310 b->location = new_probe_location ("-probe-stap libc:longjmp");
28106bc2
SDJ
3311 b->enable_state = bp_disabled;
3312 }
3313
3314 continue;
3315 }
3316
0569175e
TSD
3317 if (!gdbarch_get_longjmp_target_p (gdbarch))
3318 continue;
3319
17450429 3320 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
af02033e
PP
3321 {
3322 struct breakpoint *b;
af02033e 3323 const char *func_name;
17450429 3324 CORE_ADDR addr;
67994074 3325 struct explicit_location explicit_loc;
6c95b8df 3326
3b7344d5 3327 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
af02033e 3328 continue;
0fd8e87f 3329
17450429 3330 func_name = longjmp_names[i];
3b7344d5 3331 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
17450429 3332 {
3b7344d5 3333 struct bound_minimal_symbol m;
17450429
PP
3334
3335 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3336 if (m.minsym == NULL)
17450429
PP
3337 {
3338 /* Prevent future lookups in this objfile. */
3b7344d5 3339 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
17450429
PP
3340 continue;
3341 }
3342 bp_objfile_data->longjmp_msym[i] = m;
3343 }
3344
77e371c0 3345 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
06edf0c0
PA
3346 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3347 &internal_breakpoint_ops);
67994074
KS
3348 initialize_explicit_location (&explicit_loc);
3349 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3350 b->location = new_explicit_location (&explicit_loc);
af02033e
PP
3351 b->enable_state = bp_disabled;
3352 }
0fd8e87f 3353 }
af02033e 3354 }
0fd8e87f
UW
3355}
3356
af02033e 3357/* Create a master std::terminate breakpoint. */
aa7d318d 3358static void
af02033e 3359create_std_terminate_master_breakpoint (void)
aa7d318d
TT
3360{
3361 struct program_space *pspace;
af02033e 3362 const char *const func_name = "std::terminate()";
aa7d318d 3363
5ed8105e 3364 scoped_restore_current_program_space restore_pspace;
aa7d318d
TT
3365
3366 ALL_PSPACES (pspace)
17450429
PP
3367 {
3368 struct objfile *objfile;
3369 CORE_ADDR addr;
3370
3371 set_current_program_space (pspace);
3372
aa7d318d
TT
3373 ALL_OBJFILES (objfile)
3374 {
3375 struct breakpoint *b;
17450429 3376 struct breakpoint_objfile_data *bp_objfile_data;
67994074 3377 struct explicit_location explicit_loc;
aa7d318d 3378
17450429 3379 bp_objfile_data = get_breakpoint_objfile_data (objfile);
aa7d318d 3380
3b7344d5 3381 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
17450429
PP
3382 continue;
3383
3b7344d5 3384 if (bp_objfile_data->terminate_msym.minsym == NULL)
17450429 3385 {
3b7344d5 3386 struct bound_minimal_symbol m;
17450429
PP
3387
3388 m = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5
TT
3389 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3390 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
17450429
PP
3391 {
3392 /* Prevent future lookups in this objfile. */
3b7344d5 3393 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
17450429
PP
3394 continue;
3395 }
3396 bp_objfile_data->terminate_msym = m;
3397 }
aa7d318d 3398
77e371c0 3399 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
17450429 3400 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
06edf0c0
PA
3401 bp_std_terminate_master,
3402 &internal_breakpoint_ops);
67994074
KS
3403 initialize_explicit_location (&explicit_loc);
3404 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3405 b->location = new_explicit_location (&explicit_loc);
aa7d318d
TT
3406 b->enable_state = bp_disabled;
3407 }
17450429 3408 }
aa7d318d
TT
3409}
3410
186c406b
TT
3411/* Install a master breakpoint on the unwinder's debug hook. */
3412
70221824 3413static void
186c406b
TT
3414create_exception_master_breakpoint (void)
3415{
3416 struct objfile *objfile;
17450429 3417 const char *const func_name = "_Unwind_DebugHook";
186c406b
TT
3418
3419 ALL_OBJFILES (objfile)
3420 {
17450429
PP
3421 struct breakpoint *b;
3422 struct gdbarch *gdbarch;
3423 struct breakpoint_objfile_data *bp_objfile_data;
3424 CORE_ADDR addr;
67994074 3425 struct explicit_location explicit_loc;
17450429
PP
3426
3427 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3428
28106bc2
SDJ
3429 /* We prefer the SystemTap probe point if it exists. */
3430 if (!bp_objfile_data->exception_searched)
3431 {
45461e0d
SM
3432 std::vector<probe *> ret
3433 = find_probes_in_objfile (objfile, "libgcc", "unwind");
25f9533e 3434
45461e0d 3435 if (!ret.empty ())
25f9533e
SDJ
3436 {
3437 /* We are only interested in checking one element. */
45461e0d 3438 probe *p = ret[0];
25f9533e 3439
935676c9 3440 if (!p->can_evaluate_arguments ())
25f9533e
SDJ
3441 {
3442 /* We cannot use the probe interface here, because it does
3443 not know how to evaluate arguments. */
45461e0d 3444 ret.clear ();
25f9533e
SDJ
3445 }
3446 }
3447 bp_objfile_data->exception_probes = ret;
28106bc2
SDJ
3448 bp_objfile_data->exception_searched = 1;
3449 }
3450
45461e0d 3451 if (!bp_objfile_data->exception_probes.empty ())
28106bc2 3452 {
b926417a 3453 gdbarch = get_objfile_arch (objfile);
45461e0d
SM
3454
3455 for (probe *p : bp_objfile_data->exception_probes)
28106bc2 3456 {
729662a5 3457 b = create_internal_breakpoint (gdbarch,
935676c9 3458 p->get_relocated_address (objfile),
28106bc2
SDJ
3459 bp_exception_master,
3460 &internal_breakpoint_ops);
d28cd78a 3461 b->location = new_probe_location ("-probe-stap libgcc:unwind");
28106bc2
SDJ
3462 b->enable_state = bp_disabled;
3463 }
3464
3465 continue;
3466 }
3467
3468 /* Otherwise, try the hook function. */
3469
3b7344d5 3470 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
17450429
PP
3471 continue;
3472
3473 gdbarch = get_objfile_arch (objfile);
186c406b 3474
3b7344d5 3475 if (bp_objfile_data->exception_msym.minsym == NULL)
186c406b 3476 {
3b7344d5 3477 struct bound_minimal_symbol debug_hook;
186c406b 3478
17450429 3479 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5 3480 if (debug_hook.minsym == NULL)
17450429 3481 {
3b7344d5 3482 bp_objfile_data->exception_msym.minsym = &msym_not_found;
17450429
PP
3483 continue;
3484 }
3485
3486 bp_objfile_data->exception_msym = debug_hook;
186c406b 3487 }
17450429 3488
77e371c0 3489 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
8b88a78e
PA
3490 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3491 current_top_target ());
06edf0c0
PA
3492 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3493 &internal_breakpoint_ops);
67994074
KS
3494 initialize_explicit_location (&explicit_loc);
3495 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3496 b->location = new_explicit_location (&explicit_loc);
17450429 3497 b->enable_state = bp_disabled;
186c406b 3498 }
186c406b
TT
3499}
3500
9ef9e6a6
KS
3501/* Does B have a location spec? */
3502
3503static int
3504breakpoint_event_location_empty_p (const struct breakpoint *b)
3505{
d28cd78a 3506 return b->location != NULL && event_location_empty_p (b->location.get ());
9ef9e6a6
KS
3507}
3508
c906108c 3509void
fba45db2 3510update_breakpoints_after_exec (void)
c906108c 3511{
35df4500 3512 struct breakpoint *b, *b_tmp;
876fa593 3513 struct bp_location *bploc, **bplocp_tmp;
c906108c 3514
25b22b0a
PA
3515 /* We're about to delete breakpoints from GDB's lists. If the
3516 INSERTED flag is true, GDB will try to lift the breakpoints by
3517 writing the breakpoints' "shadow contents" back into memory. The
3518 "shadow contents" are NOT valid after an exec, so GDB should not
3519 do that. Instead, the target is responsible from marking
3520 breakpoints out as soon as it detects an exec. We don't do that
3521 here instead, because there may be other attempts to delete
3522 breakpoints after detecting an exec and before reaching here. */
876fa593 3523 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
6c95b8df
PA
3524 if (bploc->pspace == current_program_space)
3525 gdb_assert (!bploc->inserted);
c906108c 3526
35df4500 3527 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3528 {
6c95b8df
PA
3529 if (b->pspace != current_program_space)
3530 continue;
3531
4a64f543 3532 /* Solib breakpoints must be explicitly reset after an exec(). */
c5aa993b
JM
3533 if (b->type == bp_shlib_event)
3534 {
3535 delete_breakpoint (b);
3536 continue;
3537 }
c906108c 3538
4a64f543 3539 /* JIT breakpoints must be explicitly reset after an exec(). */
4efc6507
DE
3540 if (b->type == bp_jit_event)
3541 {
3542 delete_breakpoint (b);
3543 continue;
3544 }
3545
1900040c 3546 /* Thread event breakpoints must be set anew after an exec(),
0fd8e87f
UW
3547 as must overlay event and longjmp master breakpoints. */
3548 if (b->type == bp_thread_event || b->type == bp_overlay_event
186c406b
TT
3549 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3550 || b->type == bp_exception_master)
c4093a6a
JM
3551 {
3552 delete_breakpoint (b);
3553 continue;
3554 }
3555
4a64f543 3556 /* Step-resume breakpoints are meaningless after an exec(). */
2c03e5be 3557 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
c5aa993b
JM
3558 {
3559 delete_breakpoint (b);
3560 continue;
3561 }
3562
7c16b83e
PA
3563 /* Just like single-step breakpoints. */
3564 if (b->type == bp_single_step)
3565 {
3566 delete_breakpoint (b);
3567 continue;
3568 }
3569
611c83ae
PA
3570 /* Longjmp and longjmp-resume breakpoints are also meaningless
3571 after an exec. */
186c406b 3572 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
e2e4d78b 3573 || b->type == bp_longjmp_call_dummy
186c406b 3574 || b->type == bp_exception || b->type == bp_exception_resume)
611c83ae
PA
3575 {
3576 delete_breakpoint (b);
3577 continue;
3578 }
3579
ce78b96d
JB
3580 if (b->type == bp_catchpoint)
3581 {
3582 /* For now, none of the bp_catchpoint breakpoints need to
3583 do anything at this point. In the future, if some of
3584 the catchpoints need to something, we will need to add
3585 a new method, and call this method from here. */
3586 continue;
3587 }
3588
c5aa993b
JM
3589 /* bp_finish is a special case. The only way we ought to be able
3590 to see one of these when an exec() has happened, is if the user
3591 caught a vfork, and then said "finish". Ordinarily a finish just
3592 carries them to the call-site of the current callee, by setting
3593 a temporary bp there and resuming. But in this case, the finish
3594 will carry them entirely through the vfork & exec.
3595
3596 We don't want to allow a bp_finish to remain inserted now. But
3597 we can't safely delete it, 'cause finish_command has a handle to
3598 the bp on a bpstat, and will later want to delete it. There's a
3599 chance (and I've seen it happen) that if we delete the bp_finish
3600 here, that its storage will get reused by the time finish_command
3601 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3602 We really must allow finish_command to delete a bp_finish.
3603
e5dd4106 3604 In the absence of a general solution for the "how do we know
53a5351d
JM
3605 it's safe to delete something others may have handles to?"
3606 problem, what we'll do here is just uninsert the bp_finish, and
3607 let finish_command delete it.
3608
3609 (We know the bp_finish is "doomed" in the sense that it's
3610 momentary, and will be deleted as soon as finish_command sees
3611 the inferior stopped. So it doesn't matter that the bp's
3612 address is probably bogus in the new a.out, unlike e.g., the
3613 solib breakpoints.) */
c5aa993b 3614
c5aa993b
JM
3615 if (b->type == bp_finish)
3616 {
3617 continue;
3618 }
3619
3620 /* Without a symbolic address, we have little hope of the
3621 pre-exec() address meaning the same thing in the post-exec()
4a64f543 3622 a.out. */
9ef9e6a6 3623 if (breakpoint_event_location_empty_p (b))
c5aa993b
JM
3624 {
3625 delete_breakpoint (b);
3626 continue;
3627 }
c5aa993b 3628 }
c906108c
SS
3629}
3630
3631int
d80ee84f 3632detach_breakpoints (ptid_t ptid)
c906108c 3633{
35df4500 3634 struct bp_location *bl, **blp_tmp;
3a1bae8e 3635 int val = 0;
2989a365 3636 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
6c95b8df 3637 struct inferior *inf = current_inferior ();
c5aa993b 3638
e99b03dc 3639 if (ptid.pid () == inferior_ptid.pid ())
8a3fe4f8 3640 error (_("Cannot detach breakpoints of inferior_ptid"));
c5aa993b 3641
6c95b8df 3642 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
d80ee84f 3643 inferior_ptid = ptid;
35df4500 3644 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3645 {
35df4500 3646 if (bl->pspace != inf->pspace)
6c95b8df
PA
3647 continue;
3648
bd9673a4
PW
3649 /* This function must physically remove breakpoints locations
3650 from the specified ptid, without modifying the breakpoint
3651 package's state. Locations of type bp_loc_other are only
3652 maintained at GDB side. So, there is no need to remove
3653 these bp_loc_other locations. Moreover, removing these
3654 would modify the breakpoint package's state. */
3655 if (bl->loc_type == bp_loc_other)
3656 continue;
3657
35df4500 3658 if (bl->inserted)
b2b6a7da 3659 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
c5aa993b 3660 }
d03285ec 3661
3a1bae8e 3662 return val;
c906108c
SS
3663}
3664
35df4500 3665/* Remove the breakpoint location BL from the current address space.
6c95b8df
PA
3666 Note that this is used to detach breakpoints from a child fork.
3667 When we get here, the child isn't in the inferior list, and neither
3668 do we have objects to represent its address space --- we should
35df4500 3669 *not* look at bl->pspace->aspace here. */
6c95b8df 3670
c906108c 3671static int
b2b6a7da 3672remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
c906108c
SS
3673{
3674 int val;
c5aa993b 3675
35df4500
TJB
3676 /* BL is never in moribund_locations by our callers. */
3677 gdb_assert (bl->owner != NULL);
2bdf28a0 3678
74960c60
VP
3679 /* The type of none suggests that owner is actually deleted.
3680 This should not ever happen. */
35df4500 3681 gdb_assert (bl->owner->type != bp_none);
0bde7532 3682
35df4500
TJB
3683 if (bl->loc_type == bp_loc_software_breakpoint
3684 || bl->loc_type == bp_loc_hardware_breakpoint)
c906108c 3685 {
c02f5703
MS
3686 /* "Normal" instruction breakpoint: either the standard
3687 trap-instruction bp (bp_breakpoint), or a
3688 bp_hardware_breakpoint. */
3689
3690 /* First check to see if we have to handle an overlay. */
3691 if (overlay_debugging == ovly_off
35df4500
TJB
3692 || bl->section == NULL
3693 || !(section_is_overlay (bl->section)))
c02f5703
MS
3694 {
3695 /* No overlay handling: just remove the breakpoint. */
08351840
PA
3696
3697 /* If we're trying to uninsert a memory breakpoint that we
3698 know is set in a dynamic object that is marked
3699 shlib_disabled, then either the dynamic object was
3700 removed with "remove-symbol-file" or with
3701 "nosharedlibrary". In the former case, we don't know
3702 whether another dynamic object might have loaded over the
3703 breakpoint's address -- the user might well let us know
3704 about it next with add-symbol-file (the whole point of
d03de421 3705 add-symbol-file is letting the user manually maintain a
08351840
PA
3706 list of dynamically loaded objects). If we have the
3707 breakpoint's shadow memory, that is, this is a software
3708 breakpoint managed by GDB, check whether the breakpoint
3709 is still inserted in memory, to avoid overwriting wrong
3710 code with stale saved shadow contents. Note that HW
3711 breakpoints don't have shadow memory, as they're
3712 implemented using a mechanism that is not dependent on
3713 being able to modify the target's memory, and as such
3714 they should always be removed. */
3715 if (bl->shlib_disabled
3716 && bl->target_info.shadow_len != 0
3717 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3718 val = 0;
3719 else
73971819 3720 val = bl->owner->ops->remove_location (bl, reason);
c02f5703 3721 }
c906108c
SS
3722 else
3723 {
4a64f543 3724 /* This breakpoint is in an overlay section.
c02f5703
MS
3725 Did we set a breakpoint at the LMA? */
3726 if (!overlay_events_enabled)
3727 {
3728 /* Yes -- overlay event support is not active, so we
3729 should have set a breakpoint at the LMA. Remove it.
3730 */
c02f5703
MS
3731 /* Ignore any failures: if the LMA is in ROM, we will
3732 have already warned when we failed to insert it. */
35df4500
TJB
3733 if (bl->loc_type == bp_loc_hardware_breakpoint)
3734 target_remove_hw_breakpoint (bl->gdbarch,
3735 &bl->overlay_target_info);
c02f5703 3736 else
35df4500 3737 target_remove_breakpoint (bl->gdbarch,
73971819
PA
3738 &bl->overlay_target_info,
3739 reason);
c02f5703
MS
3740 }
3741 /* Did we set a breakpoint at the VMA?
3742 If so, we will have marked the breakpoint 'inserted'. */
35df4500 3743 if (bl->inserted)
c906108c 3744 {
c02f5703
MS
3745 /* Yes -- remove it. Previously we did not bother to
3746 remove the breakpoint if the section had been
3747 unmapped, but let's not rely on that being safe. We
3748 don't know what the overlay manager might do. */
aa67235e
UW
3749
3750 /* However, we should remove *software* breakpoints only
3751 if the section is still mapped, or else we overwrite
3752 wrong code with the saved shadow contents. */
348d480f
PA
3753 if (bl->loc_type == bp_loc_hardware_breakpoint
3754 || section_is_mapped (bl->section))
73971819 3755 val = bl->owner->ops->remove_location (bl, reason);
aa67235e
UW
3756 else
3757 val = 0;
c906108c 3758 }
c02f5703
MS
3759 else
3760 {
3761 /* No -- not inserted, so no need to remove. No error. */
3762 val = 0;
3763 }
c906108c 3764 }
879d1e6b 3765
08351840
PA
3766 /* In some cases, we might not be able to remove a breakpoint in
3767 a shared library that has already been removed, but we have
3768 not yet processed the shlib unload event. Similarly for an
3769 unloaded add-symbol-file object - the user might not yet have
3770 had the chance to remove-symbol-file it. shlib_disabled will
3771 be set if the library/object has already been removed, but
3772 the breakpoint hasn't been uninserted yet, e.g., after
3773 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3774 always-inserted mode. */
076855f9 3775 if (val
08351840
PA
3776 && (bl->loc_type == bp_loc_software_breakpoint
3777 && (bl->shlib_disabled
3778 || solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
3779 || shared_objfile_contains_address_p (bl->pspace,
3780 bl->address))))
879d1e6b
UW
3781 val = 0;
3782
c906108c
SS
3783 if (val)
3784 return val;
b2b6a7da 3785 bl->inserted = (reason == DETACH_BREAKPOINT);
c906108c 3786 }
35df4500 3787 else if (bl->loc_type == bp_loc_hardware_watchpoint)
c906108c 3788 {
77b06cd7
TJB
3789 gdb_assert (bl->owner->ops != NULL
3790 && bl->owner->ops->remove_location != NULL);
3791
b2b6a7da 3792 bl->inserted = (reason == DETACH_BREAKPOINT);
73971819 3793 bl->owner->ops->remove_location (bl, reason);
2e70b7b9 3794
c906108c 3795 /* Failure to remove any of the hardware watchpoints comes here. */
b2b6a7da 3796 if (reason == REMOVE_BREAKPOINT && bl->inserted)
8a3fe4f8 3797 warning (_("Could not remove hardware watchpoint %d."),
35df4500 3798 bl->owner->number);
c906108c 3799 }
35df4500
TJB
3800 else if (bl->owner->type == bp_catchpoint
3801 && breakpoint_enabled (bl->owner)
3802 && !bl->duplicate)
ce78b96d 3803 {
77b06cd7
TJB
3804 gdb_assert (bl->owner->ops != NULL
3805 && bl->owner->ops->remove_location != NULL);
ce78b96d 3806
73971819 3807 val = bl->owner->ops->remove_location (bl, reason);
ce78b96d
JB
3808 if (val)
3809 return val;
77b06cd7 3810
b2b6a7da 3811 bl->inserted = (reason == DETACH_BREAKPOINT);
ce78b96d 3812 }
c906108c
SS
3813
3814 return 0;
3815}
3816
6c95b8df 3817static int
834c0d03 3818remove_breakpoint (struct bp_location *bl)
6c95b8df 3819{
35df4500
TJB
3820 /* BL is never in moribund_locations by our callers. */
3821 gdb_assert (bl->owner != NULL);
2bdf28a0 3822
6c95b8df
PA
3823 /* The type of none suggests that owner is actually deleted.
3824 This should not ever happen. */
35df4500 3825 gdb_assert (bl->owner->type != bp_none);
6c95b8df 3826
5ed8105e 3827 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 3828
35df4500 3829 switch_to_program_space_and_thread (bl->pspace);
6c95b8df 3830
5ed8105e 3831 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
6c95b8df
PA
3832}
3833
c906108c
SS
3834/* Clear the "inserted" flag in all breakpoints. */
3835
25b22b0a 3836void
fba45db2 3837mark_breakpoints_out (void)
c906108c 3838{
35df4500 3839 struct bp_location *bl, **blp_tmp;
c906108c 3840
35df4500 3841 ALL_BP_LOCATIONS (bl, blp_tmp)
66c4b3e8 3842 if (bl->pspace == current_program_space)
35df4500 3843 bl->inserted = 0;
c906108c
SS
3844}
3845
53a5351d
JM
3846/* Clear the "inserted" flag in all breakpoints and delete any
3847 breakpoints which should go away between runs of the program.
c906108c
SS
3848
3849 Plus other such housekeeping that has to be done for breakpoints
3850 between runs.
3851
53a5351d
JM
3852 Note: this function gets called at the end of a run (by
3853 generic_mourn_inferior) and when a run begins (by
4a64f543 3854 init_wait_for_inferior). */
c906108c
SS
3855
3856
3857
3858void
fba45db2 3859breakpoint_init_inferior (enum inf_context context)
c906108c 3860{
35df4500 3861 struct breakpoint *b, *b_tmp;
6c95b8df 3862 struct program_space *pspace = current_program_space;
c906108c 3863
50c71eaf
PA
3864 /* If breakpoint locations are shared across processes, then there's
3865 nothing to do. */
f5656ead 3866 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
50c71eaf
PA
3867 return;
3868
1a853c52 3869 mark_breakpoints_out ();
075f6582 3870
35df4500 3871 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3872 {
6c95b8df
PA
3873 if (b->loc && b->loc->pspace != pspace)
3874 continue;
3875
c5aa993b
JM
3876 switch (b->type)
3877 {
3878 case bp_call_dummy:
e2e4d78b 3879 case bp_longjmp_call_dummy:
c906108c 3880
c5aa993b 3881 /* If the call dummy breakpoint is at the entry point it will
ab92d69b
PA
3882 cause problems when the inferior is rerun, so we better get
3883 rid of it. */
3884
3885 case bp_watchpoint_scope:
3886
3887 /* Also get rid of scope breakpoints. */
3888
3889 case bp_shlib_event:
3890
3891 /* Also remove solib event breakpoints. Their addresses may
3892 have changed since the last time we ran the program.
3893 Actually we may now be debugging against different target;
3894 and so the solib backend that installed this breakpoint may
3895 not be used in by the target. E.g.,
3896
3897 (gdb) file prog-linux
3898 (gdb) run # native linux target
3899 ...
3900 (gdb) kill
3901 (gdb) file prog-win.exe
3902 (gdb) tar rem :9999 # remote Windows gdbserver.
3903 */
c906108c 3904
f59f708a
PA
3905 case bp_step_resume:
3906
3907 /* Also remove step-resume breakpoints. */
3908
7c16b83e
PA
3909 case bp_single_step:
3910
3911 /* Also remove single-step breakpoints. */
3912
c5aa993b
JM
3913 delete_breakpoint (b);
3914 break;
c906108c 3915
c5aa993b
JM
3916 case bp_watchpoint:
3917 case bp_hardware_watchpoint:
3918 case bp_read_watchpoint:
3919 case bp_access_watchpoint:
3a5c3e22
PA
3920 {
3921 struct watchpoint *w = (struct watchpoint *) b;
c906108c 3922
3a5c3e22
PA
3923 /* Likewise for watchpoints on local expressions. */
3924 if (w->exp_valid_block != NULL)
3925 delete_breakpoint (b);
63000888 3926 else
3a5c3e22 3927 {
63000888
PA
3928 /* Get rid of existing locations, which are no longer
3929 valid. New ones will be created in
3930 update_watchpoint, when the inferior is restarted.
3931 The next update_global_location_list call will
3932 garbage collect them. */
3933 b->loc = NULL;
3934
3935 if (context == inf_starting)
3936 {
3937 /* Reset val field to force reread of starting value in
3938 insert_breakpoints. */
850645cf 3939 w->val.reset (nullptr);
63000888
PA
3940 w->val_valid = 0;
3941 }
3942 }
3a5c3e22 3943 }
c5aa993b
JM
3944 break;
3945 default:
c5aa993b
JM
3946 break;
3947 }
3948 }
1c5cfe86
PA
3949
3950 /* Get rid of the moribund locations. */
1123588c 3951 for (bp_location *bl : moribund_locations)
35df4500 3952 decref_bp_location (&bl);
1123588c 3953 moribund_locations.clear ();
c906108c
SS
3954}
3955
6c95b8df
PA
3956/* These functions concern about actual breakpoints inserted in the
3957 target --- to e.g. check if we need to do decr_pc adjustment or if
3958 we need to hop over the bkpt --- so we check for address space
3959 match, not program space. */
3960
c2c6d25f
JM
3961/* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3962 exists at PC. It returns ordinary_breakpoint_here if it's an
3963 ordinary breakpoint, or permanent_breakpoint_here if it's a
3964 permanent breakpoint.
3965 - When continuing from a location with an ordinary breakpoint, we
3966 actually single step once before calling insert_breakpoints.
e5dd4106 3967 - When continuing from a location with a permanent breakpoint, we
c2c6d25f
JM
3968 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3969 the target, to advance the PC past the breakpoint. */
c906108c 3970
c2c6d25f 3971enum breakpoint_here
accd0bcd 3972breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 3973{
35df4500 3974 struct bp_location *bl, **blp_tmp;
c2c6d25f 3975 int any_breakpoint_here = 0;
c906108c 3976
35df4500 3977 ALL_BP_LOCATIONS (bl, blp_tmp)
075f6582 3978 {
35df4500
TJB
3979 if (bl->loc_type != bp_loc_software_breakpoint
3980 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
3981 continue;
3982
f1310107 3983 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
35df4500 3984 if ((breakpoint_enabled (bl->owner)
1a853c52 3985 || bl->permanent)
f1310107 3986 && breakpoint_location_address_match (bl, aspace, pc))
075f6582
DJ
3987 {
3988 if (overlay_debugging
35df4500
TJB
3989 && section_is_overlay (bl->section)
3990 && !section_is_mapped (bl->section))
075f6582 3991 continue; /* unmapped overlay -- can't be a match */
1a853c52 3992 else if (bl->permanent)
075f6582
DJ
3993 return permanent_breakpoint_here;
3994 else
3995 any_breakpoint_here = 1;
3996 }
3997 }
c906108c 3998
f486487f 3999 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
c906108c
SS
4000}
4001
d35ae833
PA
4002/* See breakpoint.h. */
4003
4004int
accd0bcd 4005breakpoint_in_range_p (const address_space *aspace,
d35ae833
PA
4006 CORE_ADDR addr, ULONGEST len)
4007{
4008 struct bp_location *bl, **blp_tmp;
4009
4010 ALL_BP_LOCATIONS (bl, blp_tmp)
4011 {
4012 if (bl->loc_type != bp_loc_software_breakpoint
4013 && bl->loc_type != bp_loc_hardware_breakpoint)
4014 continue;
4015
4016 if ((breakpoint_enabled (bl->owner)
4017 || bl->permanent)
4018 && breakpoint_location_address_range_overlap (bl, aspace,
4019 addr, len))
4020 {
4021 if (overlay_debugging
4022 && section_is_overlay (bl->section)
4023 && !section_is_mapped (bl->section))
4024 {
4025 /* Unmapped overlay -- can't be a match. */
4026 continue;
4027 }
4028
4029 return 1;
4030 }
4031 }
4032
4033 return 0;
4034}
4035
1c5cfe86
PA
4036/* Return true if there's a moribund breakpoint at PC. */
4037
4038int
accd0bcd 4039moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
1c5cfe86 4040{
1123588c 4041 for (bp_location *loc : moribund_locations)
f1310107 4042 if (breakpoint_location_address_match (loc, aspace, pc))
1c5cfe86
PA
4043 return 1;
4044
4045 return 0;
4046}
c2c6d25f 4047
f7ce857f
PA
4048/* Returns non-zero iff BL is inserted at PC, in address space
4049 ASPACE. */
4050
4051static int
4052bp_location_inserted_here_p (struct bp_location *bl,
accd0bcd 4053 const address_space *aspace, CORE_ADDR pc)
f7ce857f
PA
4054{
4055 if (bl->inserted
4056 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4057 aspace, pc))
4058 {
4059 if (overlay_debugging
4060 && section_is_overlay (bl->section)
4061 && !section_is_mapped (bl->section))
4062 return 0; /* unmapped overlay -- can't be a match */
4063 else
4064 return 1;
4065 }
4066 return 0;
4067}
4068
a1fd2fa5 4069/* Returns non-zero iff there's a breakpoint inserted at PC. */
c906108c
SS
4070
4071int
accd0bcd 4072breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 4073{
f7ce857f 4074 struct bp_location **blp, **blp_tmp = NULL;
c906108c 4075
f7ce857f 4076 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
c5aa993b 4077 {
f7ce857f
PA
4078 struct bp_location *bl = *blp;
4079
35df4500
TJB
4080 if (bl->loc_type != bp_loc_software_breakpoint
4081 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4082 continue;
4083
f7ce857f
PA
4084 if (bp_location_inserted_here_p (bl, aspace, pc))
4085 return 1;
c5aa993b 4086 }
c36b740a
VP
4087 return 0;
4088}
4089
a1fd2fa5
PA
4090/* This function returns non-zero iff there is a software breakpoint
4091 inserted at PC. */
c36b740a
VP
4092
4093int
accd0bcd 4094software_breakpoint_inserted_here_p (const address_space *aspace,
a1fd2fa5 4095 CORE_ADDR pc)
4fa8626c 4096{
f7ce857f 4097 struct bp_location **blp, **blp_tmp = NULL;
4fa8626c 4098
f7ce857f 4099 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4fa8626c 4100 {
f7ce857f
PA
4101 struct bp_location *bl = *blp;
4102
35df4500 4103 if (bl->loc_type != bp_loc_software_breakpoint)
4fa8626c
DJ
4104 continue;
4105
f7ce857f
PA
4106 if (bp_location_inserted_here_p (bl, aspace, pc))
4107 return 1;
4fa8626c
DJ
4108 }
4109
4110 return 0;
9c02b525
PA
4111}
4112
4113/* See breakpoint.h. */
4114
4115int
accd0bcd 4116hardware_breakpoint_inserted_here_p (const address_space *aspace,
9c02b525
PA
4117 CORE_ADDR pc)
4118{
4119 struct bp_location **blp, **blp_tmp = NULL;
9c02b525
PA
4120
4121 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4122 {
4123 struct bp_location *bl = *blp;
4124
4125 if (bl->loc_type != bp_loc_hardware_breakpoint)
4126 continue;
4127
4128 if (bp_location_inserted_here_p (bl, aspace, pc))
4129 return 1;
4130 }
4131
4132 return 0;
4fa8626c
DJ
4133}
4134
9093389c 4135int
accd0bcd 4136hardware_watchpoint_inserted_in_range (const address_space *aspace,
9093389c
PA
4137 CORE_ADDR addr, ULONGEST len)
4138{
4139 struct breakpoint *bpt;
4140
4141 ALL_BREAKPOINTS (bpt)
4142 {
4143 struct bp_location *loc;
4144
4145 if (bpt->type != bp_hardware_watchpoint
4146 && bpt->type != bp_access_watchpoint)
4147 continue;
4148
4149 if (!breakpoint_enabled (bpt))
4150 continue;
4151
4152 for (loc = bpt->loc; loc; loc = loc->next)
4153 if (loc->pspace->aspace == aspace && loc->inserted)
4154 {
4155 CORE_ADDR l, h;
4156
4157 /* Check for intersection. */
768adc05
PA
4158 l = std::max<CORE_ADDR> (loc->address, addr);
4159 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
9093389c
PA
4160 if (l < h)
4161 return 1;
4162 }
4163 }
4164 return 0;
4165}
c906108c 4166\f
c5aa993b 4167
c906108c
SS
4168/* bpstat stuff. External routines' interfaces are documented
4169 in breakpoint.h. */
4170
4171int
c326b90e 4172is_catchpoint (struct breakpoint *ep)
c906108c 4173{
533be4dd 4174 return (ep->type == bp_catchpoint);
c906108c
SS
4175}
4176
f431efe5
PA
4177/* Frees any storage that is part of a bpstat. Does not walk the
4178 'next' chain. */
4179
04afa70c 4180bpstats::~bpstats ()
198757a8 4181{
04afa70c
TT
4182 if (bp_location_at != NULL)
4183 decref_bp_location (&bp_location_at);
198757a8
VP
4184}
4185
c906108c
SS
4186/* Clear a bpstat so that it says we are not at any breakpoint.
4187 Also free any storage that is part of a bpstat. */
4188
4189void
fba45db2 4190bpstat_clear (bpstat *bsp)
c906108c
SS
4191{
4192 bpstat p;
4193 bpstat q;
4194
4195 if (bsp == 0)
4196 return;
4197 p = *bsp;
4198 while (p != NULL)
4199 {
4200 q = p->next;
04afa70c 4201 delete p;
c906108c
SS
4202 p = q;
4203 }
4204 *bsp = NULL;
4205}
4206
04afa70c
TT
4207bpstats::bpstats (const bpstats &other)
4208 : next (NULL),
4209 bp_location_at (other.bp_location_at),
4210 breakpoint_at (other.breakpoint_at),
4211 commands (other.commands),
04afa70c
TT
4212 print (other.print),
4213 stop (other.stop),
4214 print_it (other.print_it)
4215{
850645cf
TT
4216 if (other.old_val != NULL)
4217 old_val = release_value (value_copy (other.old_val.get ()));
04afa70c 4218 incref_bp_location (bp_location_at);
04afa70c
TT
4219}
4220
c906108c
SS
4221/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4222 is part of the bpstat is copied as well. */
4223
4224bpstat
fba45db2 4225bpstat_copy (bpstat bs)
c906108c
SS
4226{
4227 bpstat p = NULL;
4228 bpstat tmp;
4229 bpstat retval = NULL;
4230
4231 if (bs == NULL)
4232 return bs;
4233
4234 for (; bs != NULL; bs = bs->next)
4235 {
04afa70c 4236 tmp = new bpstats (*bs);
31cc81e9 4237
c906108c
SS
4238 if (p == NULL)
4239 /* This is the first thing in the chain. */
4240 retval = tmp;
4241 else
4242 p->next = tmp;
4243 p = tmp;
4244 }
4245 p->next = NULL;
4246 return retval;
4247}
4248
4a64f543 4249/* Find the bpstat associated with this breakpoint. */
c906108c
SS
4250
4251bpstat
fba45db2 4252bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
c906108c 4253{
c5aa993b
JM
4254 if (bsp == NULL)
4255 return NULL;
c906108c 4256
c5aa993b
JM
4257 for (; bsp != NULL; bsp = bsp->next)
4258 {
f431efe5 4259 if (bsp->breakpoint_at == breakpoint)
c5aa993b
JM
4260 return bsp;
4261 }
c906108c
SS
4262 return NULL;
4263}
4264
ab04a2af
TT
4265/* See breakpoint.h. */
4266
47591c29 4267int
427cd150 4268bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
ab04a2af 4269{
ab04a2af
TT
4270 for (; bsp != NULL; bsp = bsp->next)
4271 {
427cd150
TT
4272 if (bsp->breakpoint_at == NULL)
4273 {
4274 /* A moribund location can never explain a signal other than
4275 GDB_SIGNAL_TRAP. */
4276 if (sig == GDB_SIGNAL_TRAP)
47591c29 4277 return 1;
427cd150
TT
4278 }
4279 else
47591c29
PA
4280 {
4281 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4282 sig))
4283 return 1;
4284 }
ab04a2af
TT
4285 }
4286
47591c29 4287 return 0;
ab04a2af
TT
4288}
4289
4a64f543
MS
4290/* Put in *NUM the breakpoint number of the first breakpoint we are
4291 stopped at. *BSP upon return is a bpstat which points to the
4292 remaining breakpoints stopped at (but which is not guaranteed to be
4293 good for anything but further calls to bpstat_num).
4294
8671a17b
PA
4295 Return 0 if passed a bpstat which does not indicate any breakpoints.
4296 Return -1 if stopped at a breakpoint that has been deleted since
4297 we set it.
4298 Return 1 otherwise. */
c906108c
SS
4299
4300int
8671a17b 4301bpstat_num (bpstat *bsp, int *num)
c906108c
SS
4302{
4303 struct breakpoint *b;
4304
4305 if ((*bsp) == NULL)
4306 return 0; /* No more breakpoint values */
8671a17b 4307
4a64f543
MS
4308 /* We assume we'll never have several bpstats that correspond to a
4309 single breakpoint -- otherwise, this function might return the
4310 same number more than once and this will look ugly. */
f431efe5 4311 b = (*bsp)->breakpoint_at;
8671a17b
PA
4312 *bsp = (*bsp)->next;
4313 if (b == NULL)
4314 return -1; /* breakpoint that's been deleted since */
4315
4316 *num = b->number; /* We have its number */
4317 return 1;
c906108c
SS
4318}
4319
e93ca019 4320/* See breakpoint.h. */
c906108c
SS
4321
4322void
e93ca019 4323bpstat_clear_actions (void)
c906108c 4324{
e93ca019
JK
4325 bpstat bs;
4326
00431a78 4327 if (inferior_ptid == null_ptid)
e93ca019
JK
4328 return;
4329
00431a78 4330 thread_info *tp = inferior_thread ();
e93ca019 4331 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
c906108c 4332 {
d1b0a7bf 4333 bs->commands = NULL;
850645cf 4334 bs->old_val.reset (nullptr);
c906108c
SS
4335 }
4336}
4337
f3b1572e
PA
4338/* Called when a command is about to proceed the inferior. */
4339
4340static void
4341breakpoint_about_to_proceed (void)
4342{
d7e15655 4343 if (inferior_ptid != null_ptid)
f3b1572e
PA
4344 {
4345 struct thread_info *tp = inferior_thread ();
4346
4347 /* Allow inferior function calls in breakpoint commands to not
4348 interrupt the command list. When the call finishes
4349 successfully, the inferior will be standing at the same
4350 breakpoint as if nothing happened. */
16c381f0 4351 if (tp->control.in_infcall)
f3b1572e
PA
4352 return;
4353 }
4354
4355 breakpoint_proceeded = 1;
4356}
4357
abf85f46
JK
4358/* Return non-zero iff CMD as the first line of a command sequence is `silent'
4359 or its equivalent. */
4360
4361static int
4362command_line_is_silent (struct command_line *cmd)
4363{
4f45d445 4364 return cmd && (strcmp ("silent", cmd->line) == 0);
abf85f46
JK
4365}
4366
4a64f543
MS
4367/* Execute all the commands associated with all the breakpoints at
4368 this location. Any of these commands could cause the process to
4369 proceed beyond this point, etc. We look out for such changes by
4370 checking the global "breakpoint_proceeded" after each command.
c906108c 4371
347bddb7
PA
4372 Returns true if a breakpoint command resumed the inferior. In that
4373 case, it is the caller's responsibility to recall it again with the
4374 bpstat of the current thread. */
4375
4376static int
4377bpstat_do_actions_1 (bpstat *bsp)
c906108c
SS
4378{
4379 bpstat bs;
347bddb7 4380 int again = 0;
c906108c
SS
4381
4382 /* Avoid endless recursion if a `source' command is contained
4383 in bs->commands. */
4384 if (executing_breakpoint_commands)
347bddb7 4385 return 0;
c906108c 4386
81b1e71c
TT
4387 scoped_restore save_executing
4388 = make_scoped_restore (&executing_breakpoint_commands, 1);
c906108c 4389
1ac32117 4390 scoped_restore preventer = prevent_dont_repeat ();
cf6c5ffb 4391
4a64f543 4392 /* This pointer will iterate over the list of bpstat's. */
c906108c
SS
4393 bs = *bsp;
4394
4395 breakpoint_proceeded = 0;
4396 for (; bs != NULL; bs = bs->next)
4397 {
d1b0a7bf 4398 struct command_line *cmd = NULL;
6c50ab1c
JB
4399
4400 /* Take ownership of the BSP's command tree, if it has one.
4401
4402 The command tree could legitimately contain commands like
4403 'step' and 'next', which call clear_proceed_status, which
4404 frees stop_bpstat's command tree. To make sure this doesn't
4405 free the tree we're executing out from under us, we need to
4406 take ownership of the tree ourselves. Since a given bpstat's
4407 commands are only executed once, we don't need to copy it; we
4408 can clear the pointer in the bpstat, and make sure we free
4409 the tree when we're done. */
d1b0a7bf 4410 counted_command_line ccmd = bs->commands;
9add0f1b 4411 bs->commands = NULL;
d1b0a7bf
TT
4412 if (ccmd != NULL)
4413 cmd = ccmd.get ();
abf85f46
JK
4414 if (command_line_is_silent (cmd))
4415 {
4416 /* The action has been already done by bpstat_stop_status. */
4417 cmd = cmd->next;
4418 }
6c50ab1c 4419
c906108c
SS
4420 while (cmd != NULL)
4421 {
4422 execute_control_command (cmd);
4423
4424 if (breakpoint_proceeded)
4425 break;
4426 else
4427 cmd = cmd->next;
4428 }
6c50ab1c 4429
c906108c 4430 if (breakpoint_proceeded)
32c1e744 4431 {
cb814510 4432 if (current_ui->async)
347bddb7
PA
4433 /* If we are in async mode, then the target might be still
4434 running, not stopped at any breakpoint, so nothing for
4435 us to do here -- just return to the event loop. */
4436 ;
32c1e744
VP
4437 else
4438 /* In sync mode, when execute_control_command returns
4439 we're already standing on the next breakpoint.
347bddb7
PA
4440 Breakpoint commands for that stop were not run, since
4441 execute_command does not run breakpoint commands --
4442 only command_line_handler does, but that one is not
4443 involved in execution of breakpoint commands. So, we
4444 can now execute breakpoint commands. It should be
4445 noted that making execute_command do bpstat actions is
4446 not an option -- in this case we'll have recursive
4447 invocation of bpstat for each breakpoint with a
4448 command, and can easily blow up GDB stack. Instead, we
4449 return true, which will trigger the caller to recall us
4450 with the new stop_bpstat. */
4451 again = 1;
4452 break;
32c1e744 4453 }
c906108c 4454 }
347bddb7
PA
4455 return again;
4456}
4457
00431a78
PA
4458/* Helper for bpstat_do_actions. Get the current thread, if there's
4459 one, is alive and has execution. Return NULL otherwise. */
4460
4461static thread_info *
4462get_bpstat_thread ()
4463{
4464 if (inferior_ptid == null_ptid || !target_has_execution)
4465 return NULL;
4466
4467 thread_info *tp = inferior_thread ();
4468 if (tp->state == THREAD_EXITED || tp->executing)
4469 return NULL;
4470 return tp;
4471}
4472
347bddb7
PA
4473void
4474bpstat_do_actions (void)
4475{
353d1d73 4476 struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
00431a78 4477 thread_info *tp;
353d1d73 4478
347bddb7 4479 /* Do any commands attached to breakpoint we are stopped at. */
00431a78
PA
4480 while ((tp = get_bpstat_thread ()) != NULL)
4481 {
4482 /* Since in sync mode, bpstat_do_actions may resume the
4483 inferior, and only return when it is stopped at the next
4484 breakpoint, we keep doing breakpoint actions until it returns
4485 false to indicate the inferior was not resumed. */
4486 if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4487 break;
4488 }
353d1d73
JK
4489
4490 discard_cleanups (cleanup_if_error);
c906108c
SS
4491}
4492
fa4727a6
DJ
4493/* Print out the (old or new) value associated with a watchpoint. */
4494
4495static void
4496watchpoint_value_print (struct value *val, struct ui_file *stream)
4497{
4498 if (val == NULL)
4499 fprintf_unfiltered (stream, _("<unreadable>"));
4500 else
79a45b7d
TT
4501 {
4502 struct value_print_options opts;
4503 get_user_print_options (&opts);
4504 value_print (val, stream, &opts);
4505 }
fa4727a6
DJ
4506}
4507
f303dbd6
PA
4508/* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4509 debugging multiple threads. */
4510
4511void
4512maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4513{
112e8700 4514 if (uiout->is_mi_like_p ())
f303dbd6
PA
4515 return;
4516
112e8700 4517 uiout->text ("\n");
f303dbd6
PA
4518
4519 if (show_thread_that_caused_stop ())
4520 {
4521 const char *name;
4522 struct thread_info *thr = inferior_thread ();
4523
112e8700
SM
4524 uiout->text ("Thread ");
4525 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
f303dbd6
PA
4526
4527 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4528 if (name != NULL)
4529 {
112e8700
SM
4530 uiout->text (" \"");
4531 uiout->field_fmt ("name", "%s", name);
4532 uiout->text ("\"");
f303dbd6
PA
4533 }
4534
112e8700 4535 uiout->text (" hit ");
f303dbd6
PA
4536 }
4537}
4538
e514a9d6 4539/* Generic routine for printing messages indicating why we
4a64f543 4540 stopped. The behavior of this function depends on the value
e514a9d6
JM
4541 'print_it' in the bpstat structure. Under some circumstances we
4542 may decide not to print anything here and delegate the task to
4a64f543 4543 normal_stop(). */
e514a9d6
JM
4544
4545static enum print_stop_action
4546print_bp_stop_message (bpstat bs)
4547{
4548 switch (bs->print_it)
4549 {
4550 case print_it_noop:
4a64f543 4551 /* Nothing should be printed for this bpstat entry. */
e514a9d6
JM
4552 return PRINT_UNKNOWN;
4553 break;
4554
4555 case print_it_done:
4556 /* We still want to print the frame, but we already printed the
4a64f543 4557 relevant messages. */
e514a9d6
JM
4558 return PRINT_SRC_AND_LOC;
4559 break;
4560
4561 case print_it_normal:
4f8d1dc6 4562 {
f431efe5
PA
4563 struct breakpoint *b = bs->breakpoint_at;
4564
1a6a67de
TJB
4565 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4566 which has since been deleted. */
4567 if (b == NULL)
4568 return PRINT_UNKNOWN;
4569
348d480f
PA
4570 /* Normal case. Call the breakpoint's print_it method. */
4571 return b->ops->print_it (bs);
4f8d1dc6 4572 }
348d480f 4573 break;
3086aeae 4574
e514a9d6 4575 default:
8e65ff28 4576 internal_error (__FILE__, __LINE__,
e2e0b3e5 4577 _("print_bp_stop_message: unrecognized enum value"));
e514a9d6 4578 break;
c906108c 4579 }
c906108c
SS
4580}
4581
edcc5120
TT
4582/* A helper function that prints a shared library stopped event. */
4583
4584static void
4585print_solib_event (int is_catchpoint)
4586{
6fb16ce6 4587 bool any_deleted = !current_program_space->deleted_solibs.empty ();
bcb430e4 4588 bool any_added = !current_program_space->added_solibs.empty ();
edcc5120
TT
4589
4590 if (!is_catchpoint)
4591 {
4592 if (any_added || any_deleted)
112e8700 4593 current_uiout->text (_("Stopped due to shared library event:\n"));
edcc5120 4594 else
112e8700
SM
4595 current_uiout->text (_("Stopped due to shared library event (no "
4596 "libraries added or removed)\n"));
edcc5120
TT
4597 }
4598
112e8700
SM
4599 if (current_uiout->is_mi_like_p ())
4600 current_uiout->field_string ("reason",
4601 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
edcc5120
TT
4602
4603 if (any_deleted)
4604 {
112e8700 4605 current_uiout->text (_(" Inferior unloaded "));
10f489e5 4606 ui_out_emit_list list_emitter (current_uiout, "removed");
6fb16ce6 4607 for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
edcc5120 4608 {
6fb16ce6
SM
4609 const std::string &name = current_program_space->deleted_solibs[ix];
4610
edcc5120 4611 if (ix > 0)
112e8700
SM
4612 current_uiout->text (" ");
4613 current_uiout->field_string ("library", name);
4614 current_uiout->text ("\n");
edcc5120 4615 }
edcc5120
TT
4616 }
4617
4618 if (any_added)
4619 {
112e8700 4620 current_uiout->text (_(" Inferior loaded "));
10f489e5 4621 ui_out_emit_list list_emitter (current_uiout, "added");
bcb430e4 4622 bool first = true;
52941706 4623 for (so_list *iter : current_program_space->added_solibs)
edcc5120 4624 {
bcb430e4 4625 if (!first)
112e8700 4626 current_uiout->text (" ");
bcb430e4 4627 first = false;
112e8700
SM
4628 current_uiout->field_string ("library", iter->so_name);
4629 current_uiout->text ("\n");
edcc5120 4630 }
edcc5120
TT
4631 }
4632}
4633
e514a9d6
JM
4634/* Print a message indicating what happened. This is called from
4635 normal_stop(). The input to this routine is the head of the bpstat
36dfb11c
TT
4636 list - a list of the eventpoints that caused this stop. KIND is
4637 the target_waitkind for the stopping event. This
e514a9d6
JM
4638 routine calls the generic print routine for printing a message
4639 about reasons for stopping. This will print (for example) the
4640 "Breakpoint n," part of the output. The return value of this
4641 routine is one of:
c906108c 4642
4a64f543 4643 PRINT_UNKNOWN: Means we printed nothing.
917317f4 4644 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4a64f543 4645 code to print the location. An example is
c5aa993b
JM
4646 "Breakpoint 1, " which should be followed by
4647 the location.
917317f4 4648 PRINT_SRC_ONLY: Means we printed something, but there is no need
c5aa993b
JM
4649 to also print the location part of the message.
4650 An example is the catch/throw messages, which
4a64f543 4651 don't require a location appended to the end.
917317f4 4652 PRINT_NOTHING: We have done some printing and we don't need any
4a64f543 4653 further info to be printed. */
c906108c 4654
917317f4 4655enum print_stop_action
36dfb11c 4656bpstat_print (bpstat bs, int kind)
c906108c 4657{
f486487f 4658 enum print_stop_action val;
c5aa993b 4659
c906108c 4660 /* Maybe another breakpoint in the chain caused us to stop.
53a5351d
JM
4661 (Currently all watchpoints go on the bpstat whether hit or not.
4662 That probably could (should) be changed, provided care is taken
c906108c 4663 with respect to bpstat_explains_signal). */
e514a9d6
JM
4664 for (; bs; bs = bs->next)
4665 {
4666 val = print_bp_stop_message (bs);
4667 if (val == PRINT_SRC_ONLY
4668 || val == PRINT_SRC_AND_LOC
4669 || val == PRINT_NOTHING)
4670 return val;
4671 }
c906108c 4672
36dfb11c
TT
4673 /* If we had hit a shared library event breakpoint,
4674 print_bp_stop_message would print out this message. If we hit an
4675 OS-level shared library event, do the same thing. */
4676 if (kind == TARGET_WAITKIND_LOADED)
4677 {
edcc5120 4678 print_solib_event (0);
36dfb11c
TT
4679 return PRINT_NOTHING;
4680 }
4681
e514a9d6 4682 /* We reached the end of the chain, or we got a null BS to start
4a64f543 4683 with and nothing was printed. */
917317f4 4684 return PRINT_UNKNOWN;
c906108c
SS
4685}
4686
bf469271 4687/* Evaluate the boolean expression EXP and return the result. */
c906108c 4688
bf469271
PA
4689static bool
4690breakpoint_cond_eval (expression *exp)
c906108c 4691{
278cd55f 4692 struct value *mark = value_mark ();
bf469271 4693 bool res = value_true (evaluate_expression (exp));
cc59ec59 4694
c906108c 4695 value_free_to_mark (mark);
bf469271 4696 return res;
c906108c
SS
4697}
4698
5760d0ab 4699/* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
c906108c 4700
04afa70c
TT
4701bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4702 : next (NULL),
4703 bp_location_at (bl),
4704 breakpoint_at (bl->owner),
4705 commands (NULL),
04afa70c
TT
4706 print (0),
4707 stop (0),
4708 print_it (print_it_normal)
c906108c 4709{
f431efe5 4710 incref_bp_location (bl);
04afa70c
TT
4711 **bs_link_pointer = this;
4712 *bs_link_pointer = &next;
4713}
4714
4715bpstats::bpstats ()
4716 : next (NULL),
4717 bp_location_at (NULL),
4718 breakpoint_at (NULL),
4719 commands (NULL),
04afa70c
TT
4720 print (0),
4721 stop (0),
4722 print_it (print_it_normal)
4723{
c906108c
SS
4724}
4725\f
d983da9c
DJ
4726/* The target has stopped with waitstatus WS. Check if any hardware
4727 watchpoints have triggered, according to the target. */
4728
4729int
4730watchpoints_triggered (struct target_waitstatus *ws)
4731{
57810aa7 4732 bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
d983da9c
DJ
4733 CORE_ADDR addr;
4734 struct breakpoint *b;
4735
4736 if (!stopped_by_watchpoint)
4737 {
4738 /* We were not stopped by a watchpoint. Mark all watchpoints
4739 as not triggered. */
4740 ALL_BREAKPOINTS (b)
cc60f2e3 4741 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4742 {
4743 struct watchpoint *w = (struct watchpoint *) b;
4744
4745 w->watchpoint_triggered = watch_triggered_no;
4746 }
d983da9c
DJ
4747
4748 return 0;
4749 }
4750
8b88a78e 4751 if (!target_stopped_data_address (current_top_target (), &addr))
d983da9c
DJ
4752 {
4753 /* We were stopped by a watchpoint, but we don't know where.
4754 Mark all watchpoints as unknown. */
4755 ALL_BREAKPOINTS (b)
cc60f2e3 4756 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4757 {
4758 struct watchpoint *w = (struct watchpoint *) b;
4759
4760 w->watchpoint_triggered = watch_triggered_unknown;
4761 }
d983da9c 4762
3c4797ba 4763 return 1;
d983da9c
DJ
4764 }
4765
4766 /* The target could report the data address. Mark watchpoints
4767 affected by this data address as triggered, and all others as not
4768 triggered. */
4769
4770 ALL_BREAKPOINTS (b)
cc60f2e3 4771 if (is_hardware_watchpoint (b))
d983da9c 4772 {
3a5c3e22 4773 struct watchpoint *w = (struct watchpoint *) b;
a5606eee 4774 struct bp_location *loc;
d983da9c 4775
3a5c3e22 4776 w->watchpoint_triggered = watch_triggered_no;
a5606eee 4777 for (loc = b->loc; loc; loc = loc->next)
9c06b0b4 4778 {
3a5c3e22 4779 if (is_masked_watchpoint (b))
9c06b0b4 4780 {
3a5c3e22
PA
4781 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4782 CORE_ADDR start = loc->address & w->hw_wp_mask;
9c06b0b4
TJB
4783
4784 if (newaddr == start)
4785 {
3a5c3e22 4786 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4787 break;
4788 }
4789 }
4790 /* Exact match not required. Within range is sufficient. */
8b88a78e 4791 else if (target_watchpoint_addr_within_range (current_top_target (),
9c06b0b4
TJB
4792 addr, loc->address,
4793 loc->length))
4794 {
3a5c3e22 4795 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4796 break;
4797 }
4798 }
d983da9c
DJ
4799 }
4800
4801 return 1;
4802}
4803
bf469271
PA
4804/* Possible return values for watchpoint_check. */
4805enum wp_check_result
4806 {
4807 /* The watchpoint has been deleted. */
4808 WP_DELETED = 1,
4809
4810 /* The value has changed. */
4811 WP_VALUE_CHANGED = 2,
4812
4813 /* The value has not changed. */
4814 WP_VALUE_NOT_CHANGED = 3,
4815
4816 /* Ignore this watchpoint, no matter if the value changed or not. */
4817 WP_IGNORE = 4,
4818 };
c906108c
SS
4819
4820#define BP_TEMPFLAG 1
4821#define BP_HARDWAREFLAG 2
4822
4a64f543 4823/* Evaluate watchpoint condition expression and check if its value
bf469271 4824 changed. */
553e4c11 4825
bf469271
PA
4826static wp_check_result
4827watchpoint_check (bpstat bs)
c906108c 4828{
3a5c3e22 4829 struct watchpoint *b;
c906108c
SS
4830 struct frame_info *fr;
4831 int within_current_scope;
4832
f431efe5 4833 /* BS is built from an existing struct breakpoint. */
2bdf28a0 4834 gdb_assert (bs->breakpoint_at != NULL);
3a5c3e22 4835 b = (struct watchpoint *) bs->breakpoint_at;
d0fb5eae 4836
f6bc2008
PA
4837 /* If this is a local watchpoint, we only want to check if the
4838 watchpoint frame is in scope if the current thread is the thread
4839 that was used to create the watchpoint. */
4840 if (!watchpoint_in_thread_scope (b))
60e1c644 4841 return WP_IGNORE;
f6bc2008 4842
c906108c
SS
4843 if (b->exp_valid_block == NULL)
4844 within_current_scope = 1;
4845 else
4846 {
edb3359d
DJ
4847 struct frame_info *frame = get_current_frame ();
4848 struct gdbarch *frame_arch = get_frame_arch (frame);
4849 CORE_ADDR frame_pc = get_frame_pc (frame);
4850
c9cf6e20 4851 /* stack_frame_destroyed_p() returns a non-zero value if we're
4a64f543
MS
4852 still in the function but the stack frame has already been
4853 invalidated. Since we can't rely on the values of local
4854 variables after the stack has been destroyed, we are treating
4855 the watchpoint in that state as `not changed' without further
4856 checking. Don't mark watchpoints as changed if the current
4857 frame is in an epilogue - even if they are in some other
4858 frame, our view of the stack is likely to be wrong and
4859 frame_find_by_id could error out. */
c9cf6e20 4860 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
60e1c644 4861 return WP_IGNORE;
a0f49112 4862
101dcfbe 4863 fr = frame_find_by_id (b->watchpoint_frame);
c906108c 4864 within_current_scope = (fr != NULL);
69fbadd5
DJ
4865
4866 /* If we've gotten confused in the unwinder, we might have
4867 returned a frame that can't describe this variable. */
edb3359d
DJ
4868 if (within_current_scope)
4869 {
4870 struct symbol *function;
4871
4872 function = get_frame_function (fr);
4873 if (function == NULL
4874 || !contained_in (b->exp_valid_block,
4875 SYMBOL_BLOCK_VALUE (function)))
4876 within_current_scope = 0;
4877 }
69fbadd5 4878
edb3359d 4879 if (within_current_scope)
c906108c
SS
4880 /* If we end up stopping, the current frame will get selected
4881 in normal_stop. So this call to select_frame won't affect
4882 the user. */
0f7d239c 4883 select_frame (fr);
c906108c 4884 }
c5aa993b 4885
c906108c
SS
4886 if (within_current_scope)
4887 {
4a64f543
MS
4888 /* We use value_{,free_to_}mark because it could be a *long*
4889 time before we return to the command level and call
4890 free_all_values. We can't call free_all_values because we
4891 might be in the middle of evaluating a function call. */
c906108c 4892
0cf6dd15 4893 int pc = 0;
9c06b0b4 4894 struct value *mark;
fa4727a6
DJ
4895 struct value *new_val;
4896
c1fc2657 4897 if (is_masked_watchpoint (b))
9c06b0b4
TJB
4898 /* Since we don't know the exact trigger address (from
4899 stopped_data_address), just tell the user we've triggered
4900 a mask watchpoint. */
4901 return WP_VALUE_CHANGED;
4902
4903 mark = value_mark ();
4d01a485 4904 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
218d2fc6 4905
bb9d5f81
PP
4906 if (b->val_bitsize != 0)
4907 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4908
4a64f543
MS
4909 /* We use value_equal_contents instead of value_equal because
4910 the latter coerces an array to a pointer, thus comparing just
4911 the address of the array instead of its contents. This is
4912 not what we want. */
fa4727a6 4913 if ((b->val != NULL) != (new_val != NULL)
850645cf
TT
4914 || (b->val != NULL && !value_equal_contents (b->val.get (),
4915 new_val)))
c906108c 4916 {
c906108c 4917 bs->old_val = b->val;
850645cf 4918 b->val = release_value (new_val);
fa4727a6 4919 b->val_valid = 1;
850645cf
TT
4920 if (new_val != NULL)
4921 value_free_to_mark (mark);
c906108c
SS
4922 return WP_VALUE_CHANGED;
4923 }
4924 else
4925 {
60e1c644 4926 /* Nothing changed. */
c906108c 4927 value_free_to_mark (mark);
c906108c
SS
4928 return WP_VALUE_NOT_CHANGED;
4929 }
4930 }
4931 else
4932 {
4933 /* This seems like the only logical thing to do because
c5aa993b
JM
4934 if we temporarily ignored the watchpoint, then when
4935 we reenter the block in which it is valid it contains
4936 garbage (in the case of a function, it may have two
4937 garbage values, one before and one after the prologue).
4938 So we can't even detect the first assignment to it and
4939 watch after that (since the garbage may or may not equal
4940 the first value assigned). */
348d480f
PA
4941 /* We print all the stop information in
4942 breakpoint_ops->print_it, but in this case, by the time we
4943 call breakpoint_ops->print_it this bp will be deleted
4944 already. So we have no choice but print the information
4945 here. */
468afe6c 4946
0e454242 4947 SWITCH_THRU_ALL_UIS ()
468afe6c
PA
4948 {
4949 struct ui_out *uiout = current_uiout;
4950
112e8700
SM
4951 if (uiout->is_mi_like_p ())
4952 uiout->field_string
4953 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4954 uiout->text ("\nWatchpoint ");
c1fc2657 4955 uiout->field_int ("wpnum", b->number);
112e8700 4956 uiout->text (" deleted because the program has left the block in\n"
468afe6c
PA
4957 "which its expression is valid.\n");
4958 }
4ce44c66 4959
cdac0397 4960 /* Make sure the watchpoint's commands aren't executed. */
d1b0a7bf 4961 b->commands = NULL;
d0fb5eae 4962 watchpoint_del_at_next_stop (b);
c906108c
SS
4963
4964 return WP_DELETED;
4965 }
4966}
4967
18a18393 4968/* Return true if it looks like target has stopped due to hitting
348d480f
PA
4969 breakpoint location BL. This function does not check if we should
4970 stop, only if BL explains the stop. */
4971
18a18393 4972static int
6c95b8df 4973bpstat_check_location (const struct bp_location *bl,
accd0bcd 4974 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 4975 const struct target_waitstatus *ws)
18a18393
VP
4976{
4977 struct breakpoint *b = bl->owner;
4978
348d480f 4979 /* BL is from an existing breakpoint. */
2bdf28a0
JK
4980 gdb_assert (b != NULL);
4981
bd522513 4982 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
18a18393
VP
4983}
4984
3a5c3e22
PA
4985/* Determine if the watched values have actually changed, and we
4986 should stop. If not, set BS->stop to 0. */
4987
18a18393
VP
4988static void
4989bpstat_check_watchpoint (bpstat bs)
4990{
2bdf28a0 4991 const struct bp_location *bl;
3a5c3e22 4992 struct watchpoint *b;
2bdf28a0
JK
4993
4994 /* BS is built for existing struct breakpoint. */
f431efe5 4995 bl = bs->bp_location_at;
2bdf28a0 4996 gdb_assert (bl != NULL);
3a5c3e22 4997 b = (struct watchpoint *) bs->breakpoint_at;
2bdf28a0 4998 gdb_assert (b != NULL);
18a18393 4999
18a18393 5000 {
18a18393
VP
5001 int must_check_value = 0;
5002
c1fc2657 5003 if (b->type == bp_watchpoint)
18a18393
VP
5004 /* For a software watchpoint, we must always check the
5005 watched value. */
5006 must_check_value = 1;
5007 else if (b->watchpoint_triggered == watch_triggered_yes)
5008 /* We have a hardware watchpoint (read, write, or access)
5009 and the target earlier reported an address watched by
5010 this watchpoint. */
5011 must_check_value = 1;
5012 else if (b->watchpoint_triggered == watch_triggered_unknown
c1fc2657 5013 && b->type == bp_hardware_watchpoint)
18a18393
VP
5014 /* We were stopped by a hardware watchpoint, but the target could
5015 not report the data address. We must check the watchpoint's
5016 value. Access and read watchpoints are out of luck; without
5017 a data address, we can't figure it out. */
5018 must_check_value = 1;
3a5c3e22 5019
18a18393
VP
5020 if (must_check_value)
5021 {
bf469271
PA
5022 wp_check_result e;
5023
5024 TRY
5025 {
5026 e = watchpoint_check (bs);
5027 }
5028 CATCH (ex, RETURN_MASK_ALL)
5029 {
5030 exception_fprintf (gdb_stderr, ex,
5031 "Error evaluating expression "
5032 "for watchpoint %d\n",
5033 b->number);
5034
5035 SWITCH_THRU_ALL_UIS ()
5036 {
5037 printf_filtered (_("Watchpoint %d deleted.\n"),
5038 b->number);
5039 }
5040 watchpoint_del_at_next_stop (b);
5041 e = WP_DELETED;
5042 }
5043 END_CATCH
5044
18a18393
VP
5045 switch (e)
5046 {
5047 case WP_DELETED:
5048 /* We've already printed what needs to be printed. */
5049 bs->print_it = print_it_done;
5050 /* Stop. */
5051 break;
60e1c644
PA
5052 case WP_IGNORE:
5053 bs->print_it = print_it_noop;
5054 bs->stop = 0;
5055 break;
18a18393 5056 case WP_VALUE_CHANGED:
c1fc2657 5057 if (b->type == bp_read_watchpoint)
18a18393 5058 {
85d721b8
PA
5059 /* There are two cases to consider here:
5060
4a64f543 5061 1. We're watching the triggered memory for reads.
85d721b8
PA
5062 In that case, trust the target, and always report
5063 the watchpoint hit to the user. Even though
5064 reads don't cause value changes, the value may
5065 have changed since the last time it was read, and
5066 since we're not trapping writes, we will not see
5067 those, and as such we should ignore our notion of
5068 old value.
5069
4a64f543 5070 2. We're watching the triggered memory for both
85d721b8
PA
5071 reads and writes. There are two ways this may
5072 happen:
5073
4a64f543 5074 2.1. This is a target that can't break on data
85d721b8
PA
5075 reads only, but can break on accesses (reads or
5076 writes), such as e.g., x86. We detect this case
5077 at the time we try to insert read watchpoints.
5078
4a64f543 5079 2.2. Otherwise, the target supports read
85d721b8
PA
5080 watchpoints, but, the user set an access or write
5081 watchpoint watching the same memory as this read
5082 watchpoint.
5083
5084 If we're watching memory writes as well as reads,
5085 ignore watchpoint hits when we find that the
5086 value hasn't changed, as reads don't cause
5087 changes. This still gives false positives when
5088 the program writes the same value to memory as
5089 what there was already in memory (we will confuse
5090 it for a read), but it's much better than
5091 nothing. */
5092
5093 int other_write_watchpoint = 0;
5094
5095 if (bl->watchpoint_type == hw_read)
5096 {
5097 struct breakpoint *other_b;
5098
5099 ALL_BREAKPOINTS (other_b)
3a5c3e22
PA
5100 if (other_b->type == bp_hardware_watchpoint
5101 || other_b->type == bp_access_watchpoint)
85d721b8 5102 {
3a5c3e22
PA
5103 struct watchpoint *other_w =
5104 (struct watchpoint *) other_b;
5105
5106 if (other_w->watchpoint_triggered
5107 == watch_triggered_yes)
5108 {
5109 other_write_watchpoint = 1;
5110 break;
5111 }
85d721b8
PA
5112 }
5113 }
5114
5115 if (other_write_watchpoint
5116 || bl->watchpoint_type == hw_access)
5117 {
5118 /* We're watching the same memory for writes,
5119 and the value changed since the last time we
5120 updated it, so this trap must be for a write.
5121 Ignore it. */
5122 bs->print_it = print_it_noop;
5123 bs->stop = 0;
5124 }
18a18393
VP
5125 }
5126 break;
5127 case WP_VALUE_NOT_CHANGED:
c1fc2657
SM
5128 if (b->type == bp_hardware_watchpoint
5129 || b->type == bp_watchpoint)
18a18393
VP
5130 {
5131 /* Don't stop: write watchpoints shouldn't fire if
5132 the value hasn't changed. */
5133 bs->print_it = print_it_noop;
5134 bs->stop = 0;
5135 }
5136 /* Stop. */
5137 break;
5138 default:
5139 /* Can't happen. */
18a18393
VP
5140 break;
5141 }
5142 }
5143 else /* must_check_value == 0 */
5144 {
5145 /* This is a case where some watchpoint(s) triggered, but
5146 not at the address of this watchpoint, or else no
5147 watchpoint triggered after all. So don't print
5148 anything for this watchpoint. */
5149 bs->print_it = print_it_noop;
5150 bs->stop = 0;
5151 }
5152 }
5153}
5154
7d4df6a4
DE
5155/* For breakpoints that are currently marked as telling gdb to stop,
5156 check conditions (condition proper, frame, thread and ignore count)
18a18393
VP
5157 of breakpoint referred to by BS. If we should not stop for this
5158 breakpoint, set BS->stop to 0. */
f431efe5 5159
18a18393 5160static void
00431a78 5161bpstat_check_breakpoint_conditions (bpstat bs, thread_info *thread)
18a18393 5162{
2bdf28a0
JK
5163 const struct bp_location *bl;
5164 struct breakpoint *b;
bf469271
PA
5165 /* Assume stop. */
5166 bool condition_result = true;
7d4df6a4
DE
5167 struct expression *cond;
5168
5169 gdb_assert (bs->stop);
2bdf28a0
JK
5170
5171 /* BS is built for existing struct breakpoint. */
f431efe5 5172 bl = bs->bp_location_at;
2bdf28a0 5173 gdb_assert (bl != NULL);
f431efe5 5174 b = bs->breakpoint_at;
2bdf28a0 5175 gdb_assert (b != NULL);
18a18393 5176
b775012e
LM
5177 /* Even if the target evaluated the condition on its end and notified GDB, we
5178 need to do so again since GDB does not know if we stopped due to a
5179 breakpoint or a single step breakpoint. */
5180
18a18393 5181 if (frame_id_p (b->frame_id)
edb3359d 5182 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
18a18393 5183 {
7d4df6a4
DE
5184 bs->stop = 0;
5185 return;
5186 }
60e1c644 5187
12ab52e9
PA
5188 /* If this is a thread/task-specific breakpoint, don't waste cpu
5189 evaluating the condition if this isn't the specified
5190 thread/task. */
00431a78
PA
5191 if ((b->thread != -1 && b->thread != thread->global_num)
5192 || (b->task != 0 && b->task != ada_get_task_number (thread)))
6c1b0f7b
DE
5193 {
5194 bs->stop = 0;
5195 return;
5196 }
5197
6dddc817
DE
5198 /* Evaluate extension language breakpoints that have a "stop" method
5199 implemented. */
5200 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
7371cf6d 5201
7d4df6a4
DE
5202 if (is_watchpoint (b))
5203 {
5204 struct watchpoint *w = (struct watchpoint *) b;
3a5c3e22 5205
4d01a485 5206 cond = w->cond_exp.get ();
7d4df6a4
DE
5207 }
5208 else
4d01a485 5209 cond = bl->cond.get ();
60e1c644 5210
7d4df6a4
DE
5211 if (cond && b->disposition != disp_del_at_next_stop)
5212 {
5213 int within_current_scope = 1;
5214 struct watchpoint * w;
60e1c644 5215
7d4df6a4
DE
5216 /* We use value_mark and value_free_to_mark because it could
5217 be a long time before we return to the command level and
5218 call free_all_values. We can't call free_all_values
5219 because we might be in the middle of evaluating a
5220 function call. */
5221 struct value *mark = value_mark ();
5222
5223 if (is_watchpoint (b))
5224 w = (struct watchpoint *) b;
5225 else
5226 w = NULL;
5227
5228 /* Need to select the frame, with all that implies so that
5229 the conditions will have the right context. Because we
5230 use the frame, we will not see an inlined function's
5231 variables when we arrive at a breakpoint at the start
5232 of the inlined function; the current frame will be the
5233 call site. */
5234 if (w == NULL || w->cond_exp_valid_block == NULL)
5235 select_frame (get_current_frame ());
5236 else
18a18393 5237 {
7d4df6a4
DE
5238 struct frame_info *frame;
5239
5240 /* For local watchpoint expressions, which particular
5241 instance of a local is being watched matters, so we
5242 keep track of the frame to evaluate the expression
5243 in. To evaluate the condition however, it doesn't
5244 really matter which instantiation of the function
5245 where the condition makes sense triggers the
5246 watchpoint. This allows an expression like "watch
5247 global if q > 10" set in `func', catch writes to
5248 global on all threads that call `func', or catch
5249 writes on all recursive calls of `func' by a single
5250 thread. We simply always evaluate the condition in
5251 the innermost frame that's executing where it makes
5252 sense to evaluate the condition. It seems
5253 intuitive. */
5254 frame = block_innermost_frame (w->cond_exp_valid_block);
5255 if (frame != NULL)
5256 select_frame (frame);
5257 else
5258 within_current_scope = 0;
18a18393 5259 }
7d4df6a4 5260 if (within_current_scope)
bf469271
PA
5261 {
5262 TRY
5263 {
5264 condition_result = breakpoint_cond_eval (cond);
5265 }
5266 CATCH (ex, RETURN_MASK_ALL)
5267 {
5268 exception_fprintf (gdb_stderr, ex,
5269 "Error in testing breakpoint condition:\n");
5270 }
5271 END_CATCH
5272 }
7d4df6a4 5273 else
18a18393 5274 {
7d4df6a4
DE
5275 warning (_("Watchpoint condition cannot be tested "
5276 "in the current scope"));
5277 /* If we failed to set the right context for this
5278 watchpoint, unconditionally report it. */
18a18393 5279 }
7d4df6a4
DE
5280 /* FIXME-someday, should give breakpoint #. */
5281 value_free_to_mark (mark);
18a18393 5282 }
7d4df6a4 5283
bf469271 5284 if (cond && !condition_result)
7d4df6a4
DE
5285 {
5286 bs->stop = 0;
5287 }
7d4df6a4
DE
5288 else if (b->ignore_count > 0)
5289 {
5290 b->ignore_count--;
5291 bs->stop = 0;
5292 /* Increase the hit count even though we don't stop. */
5293 ++(b->hit_count);
76727919 5294 gdb::observers::breakpoint_modified.notify (b);
7d4df6a4 5295 }
18a18393
VP
5296}
5297
1cf4d951
PA
5298/* Returns true if we need to track moribund locations of LOC's type
5299 on the current target. */
5300
5301static int
5302need_moribund_for_location_type (struct bp_location *loc)
5303{
5304 return ((loc->loc_type == bp_loc_software_breakpoint
5305 && !target_supports_stopped_by_sw_breakpoint ())
5306 || (loc->loc_type == bp_loc_hardware_breakpoint
5307 && !target_supports_stopped_by_hw_breakpoint ()));
5308}
5309
ddfe970e 5310/* See breakpoint.h. */
c906108c
SS
5311
5312bpstat
ddfe970e 5313build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 5314 const struct target_waitstatus *ws)
c906108c 5315{
ddfe970e 5316 struct breakpoint *b;
5760d0ab 5317 bpstat bs_head = NULL, *bs_link = &bs_head;
c5aa993b 5318
429374b8
JK
5319 ALL_BREAKPOINTS (b)
5320 {
1a853c52 5321 if (!breakpoint_enabled (b))
429374b8 5322 continue;
a5606eee 5323
ddfe970e 5324 for (bp_location *bl = b->loc; bl != NULL; bl = bl->next)
429374b8 5325 {
4a64f543
MS
5326 /* For hardware watchpoints, we look only at the first
5327 location. The watchpoint_check function will work on the
5328 entire expression, not the individual locations. For
5329 read watchpoints, the watchpoints_triggered function has
5330 checked all locations already. */
429374b8
JK
5331 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5332 break;
18a18393 5333
f6592439 5334 if (!bl->enabled || bl->shlib_disabled)
429374b8 5335 continue;
c5aa993b 5336
09ac7c10 5337 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
429374b8 5338 continue;
c5aa993b 5339
4a64f543
MS
5340 /* Come here if it's a watchpoint, or if the break address
5341 matches. */
c5aa993b 5342
ddfe970e
KS
5343 bpstat bs = new bpstats (bl, &bs_link); /* Alloc a bpstat to
5344 explain stop. */
c5aa993b 5345
f431efe5
PA
5346 /* Assume we stop. Should we find a watchpoint that is not
5347 actually triggered, or if the condition of the breakpoint
5348 evaluates as false, we'll reset 'stop' to 0. */
429374b8
JK
5349 bs->stop = 1;
5350 bs->print = 1;
d983da9c 5351
f431efe5
PA
5352 /* If this is a scope breakpoint, mark the associated
5353 watchpoint as triggered so that we will handle the
5354 out-of-scope event. We'll get to the watchpoint next
5355 iteration. */
d0fb5eae 5356 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
3a5c3e22
PA
5357 {
5358 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5359
5360 w->watchpoint_triggered = watch_triggered_yes;
5361 }
f431efe5
PA
5362 }
5363 }
5364
7c16b83e 5365 /* Check if a moribund breakpoint explains the stop. */
1cf4d951
PA
5366 if (!target_supports_stopped_by_sw_breakpoint ()
5367 || !target_supports_stopped_by_hw_breakpoint ())
f431efe5 5368 {
1123588c 5369 for (bp_location *loc : moribund_locations)
f431efe5 5370 {
1cf4d951
PA
5371 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5372 && need_moribund_for_location_type (loc))
5373 {
ddfe970e 5374 bpstat bs = new bpstats (loc, &bs_link);
1cf4d951
PA
5375 /* For hits of moribund locations, we should just proceed. */
5376 bs->stop = 0;
5377 bs->print = 0;
5378 bs->print_it = print_it_noop;
5379 }
f431efe5
PA
5380 }
5381 }
5382
ddfe970e
KS
5383 return bs_head;
5384}
5385
5386/* See breakpoint.h. */
5387
5388bpstat
5389bpstat_stop_status (const address_space *aspace,
00431a78 5390 CORE_ADDR bp_addr, thread_info *thread,
ddfe970e
KS
5391 const struct target_waitstatus *ws,
5392 bpstat stop_chain)
5393{
5394 struct breakpoint *b = NULL;
5395 /* First item of allocated bpstat's. */
5396 bpstat bs_head = stop_chain;
5397 bpstat bs;
5398 int need_remove_insert;
5399 int removed_any;
5400
5401 /* First, build the bpstat chain with locations that explain a
5402 target stop, while being careful to not set the target running,
5403 as that may invalidate locations (in particular watchpoint
5404 locations are recreated). Resuming will happen here with
5405 breakpoint conditions or watchpoint expressions that include
5406 inferior function calls. */
5407 if (bs_head == NULL)
5408 bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5409
edcc5120
TT
5410 /* A bit of special processing for shlib breakpoints. We need to
5411 process solib loading here, so that the lists of loaded and
5412 unloaded libraries are correct before we handle "catch load" and
5413 "catch unload". */
5414 for (bs = bs_head; bs != NULL; bs = bs->next)
5415 {
5d268276 5416 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
edcc5120
TT
5417 {
5418 handle_solib_event ();
5419 break;
5420 }
5421 }
5422
f431efe5
PA
5423 /* Now go through the locations that caused the target to stop, and
5424 check whether we're interested in reporting this stop to higher
5425 layers, or whether we should resume the target transparently. */
5426
5427 removed_any = 0;
5428
5760d0ab 5429 for (bs = bs_head; bs != NULL; bs = bs->next)
f431efe5
PA
5430 {
5431 if (!bs->stop)
5432 continue;
5433
f431efe5 5434 b = bs->breakpoint_at;
348d480f
PA
5435 b->ops->check_status (bs);
5436 if (bs->stop)
28010a5d 5437 {
00431a78 5438 bpstat_check_breakpoint_conditions (bs, thread);
f431efe5 5439
429374b8
JK
5440 if (bs->stop)
5441 {
5442 ++(b->hit_count);
76727919 5443 gdb::observers::breakpoint_modified.notify (b);
c906108c 5444
4a64f543 5445 /* We will stop here. */
429374b8
JK
5446 if (b->disposition == disp_disable)
5447 {
816338b5 5448 --(b->enable_count);
1a853c52 5449 if (b->enable_count <= 0)
429374b8 5450 b->enable_state = bp_disabled;
f431efe5 5451 removed_any = 1;
429374b8
JK
5452 }
5453 if (b->silent)
5454 bs->print = 0;
5455 bs->commands = b->commands;
abf85f46 5456 if (command_line_is_silent (bs->commands
d1b0a7bf 5457 ? bs->commands.get () : NULL))
abf85f46 5458 bs->print = 0;
9d6e6e84
HZ
5459
5460 b->ops->after_condition_true (bs);
429374b8
JK
5461 }
5462
348d480f 5463 }
a9b3a50f
PA
5464
5465 /* Print nothing for this entry if we don't stop or don't
5466 print. */
5467 if (!bs->stop || !bs->print)
5468 bs->print_it = print_it_noop;
429374b8 5469 }
876fa593 5470
d983da9c
DJ
5471 /* If we aren't stopping, the value of some hardware watchpoint may
5472 not have changed, but the intermediate memory locations we are
5473 watching may have. Don't bother if we're stopping; this will get
5474 done later. */
d832cb68 5475 need_remove_insert = 0;
5760d0ab
JK
5476 if (! bpstat_causes_stop (bs_head))
5477 for (bs = bs_head; bs != NULL; bs = bs->next)
d983da9c 5478 if (!bs->stop
f431efe5
PA
5479 && bs->breakpoint_at
5480 && is_hardware_watchpoint (bs->breakpoint_at))
d983da9c 5481 {
3a5c3e22
PA
5482 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5483
5484 update_watchpoint (w, 0 /* don't reparse. */);
d832cb68 5485 need_remove_insert = 1;
d983da9c
DJ
5486 }
5487
d832cb68 5488 if (need_remove_insert)
44702360 5489 update_global_location_list (UGLL_MAY_INSERT);
f431efe5 5490 else if (removed_any)
44702360 5491 update_global_location_list (UGLL_DONT_INSERT);
d832cb68 5492
5760d0ab 5493 return bs_head;
c906108c 5494}
628fe4e4
JK
5495
5496static void
5497handle_jit_event (void)
5498{
5499 struct frame_info *frame;
5500 struct gdbarch *gdbarch;
5501
243a9253
PA
5502 if (debug_infrun)
5503 fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5504
628fe4e4
JK
5505 /* Switch terminal for any messages produced by
5506 breakpoint_re_set. */
223ffa71 5507 target_terminal::ours_for_output ();
628fe4e4
JK
5508
5509 frame = get_current_frame ();
5510 gdbarch = get_frame_arch (frame);
5511
5512 jit_event_handler (gdbarch);
5513
223ffa71 5514 target_terminal::inferior ();
628fe4e4
JK
5515}
5516
5517/* Prepare WHAT final decision for infrun. */
5518
5519/* Decide what infrun needs to do with this bpstat. */
5520
c906108c 5521struct bpstat_what
0e30163f 5522bpstat_what (bpstat bs_head)
c906108c 5523{
c906108c 5524 struct bpstat_what retval;
0e30163f 5525 bpstat bs;
c906108c 5526
628fe4e4 5527 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
aa7d318d 5528 retval.call_dummy = STOP_NONE;
186c406b 5529 retval.is_longjmp = 0;
628fe4e4 5530
0e30163f 5531 for (bs = bs_head; bs != NULL; bs = bs->next)
c906108c 5532 {
628fe4e4
JK
5533 /* Extract this BS's action. After processing each BS, we check
5534 if its action overrides all we've seem so far. */
5535 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5536 enum bptype bptype;
5537
c906108c 5538 if (bs->breakpoint_at == NULL)
628fe4e4
JK
5539 {
5540 /* I suspect this can happen if it was a momentary
5541 breakpoint which has since been deleted. */
5542 bptype = bp_none;
5543 }
20874c92 5544 else
f431efe5 5545 bptype = bs->breakpoint_at->type;
628fe4e4
JK
5546
5547 switch (bptype)
c906108c
SS
5548 {
5549 case bp_none:
628fe4e4 5550 break;
c906108c
SS
5551 case bp_breakpoint:
5552 case bp_hardware_breakpoint:
7c16b83e 5553 case bp_single_step:
c906108c
SS
5554 case bp_until:
5555 case bp_finish:
a9b3a50f 5556 case bp_shlib_event:
c906108c
SS
5557 if (bs->stop)
5558 {
5559 if (bs->print)
628fe4e4 5560 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5561 else
628fe4e4 5562 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5563 }
5564 else
628fe4e4 5565 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5566 break;
5567 case bp_watchpoint:
5568 case bp_hardware_watchpoint:
5569 case bp_read_watchpoint:
5570 case bp_access_watchpoint:
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
JK
5579 {
5580 /* There was a watchpoint, but we're not stopping.
5581 This requires no further action. */
5582 }
c906108c
SS
5583 break;
5584 case bp_longjmp:
e2e4d78b 5585 case bp_longjmp_call_dummy:
186c406b 5586 case bp_exception:
0a39bb32
PA
5587 if (bs->stop)
5588 {
5589 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5590 retval.is_longjmp = bptype != bp_exception;
5591 }
5592 else
5593 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5594 break;
5595 case bp_longjmp_resume:
186c406b 5596 case bp_exception_resume:
0a39bb32
PA
5597 if (bs->stop)
5598 {
5599 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5600 retval.is_longjmp = bptype == bp_longjmp_resume;
5601 }
5602 else
5603 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5604 break;
5605 case bp_step_resume:
5606 if (bs->stop)
628fe4e4
JK
5607 this_action = BPSTAT_WHAT_STEP_RESUME;
5608 else
c906108c 5609 {
628fe4e4
JK
5610 /* It is for the wrong frame. */
5611 this_action = BPSTAT_WHAT_SINGLE;
c906108c 5612 }
c906108c 5613 break;
2c03e5be
PA
5614 case bp_hp_step_resume:
5615 if (bs->stop)
5616 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5617 else
5618 {
5619 /* It is for the wrong frame. */
5620 this_action = BPSTAT_WHAT_SINGLE;
5621 }
5622 break;
c906108c 5623 case bp_watchpoint_scope:
c4093a6a 5624 case bp_thread_event:
1900040c 5625 case bp_overlay_event:
0fd8e87f 5626 case bp_longjmp_master:
aa7d318d 5627 case bp_std_terminate_master:
186c406b 5628 case bp_exception_master:
628fe4e4 5629 this_action = BPSTAT_WHAT_SINGLE;
c4093a6a 5630 break;
ce78b96d 5631 case bp_catchpoint:
c5aa993b
JM
5632 if (bs->stop)
5633 {
5634 if (bs->print)
628fe4e4 5635 this_action = BPSTAT_WHAT_STOP_NOISY;
c5aa993b 5636 else
628fe4e4 5637 this_action = BPSTAT_WHAT_STOP_SILENT;
c5aa993b
JM
5638 }
5639 else
628fe4e4
JK
5640 {
5641 /* There was a catchpoint, but we're not stopping.
5642 This requires no further action. */
5643 }
5644 break;
628fe4e4 5645 case bp_jit_event:
628fe4e4 5646 this_action = BPSTAT_WHAT_SINGLE;
c5aa993b 5647 break;
c906108c 5648 case bp_call_dummy:
53a5351d
JM
5649 /* Make sure the action is stop (silent or noisy),
5650 so infrun.c pops the dummy frame. */
aa7d318d 5651 retval.call_dummy = STOP_STACK_DUMMY;
628fe4e4 5652 this_action = BPSTAT_WHAT_STOP_SILENT;
aa7d318d
TT
5653 break;
5654 case bp_std_terminate:
5655 /* Make sure the action is stop (silent or noisy),
5656 so infrun.c pops the dummy frame. */
aa7d318d 5657 retval.call_dummy = STOP_STD_TERMINATE;
628fe4e4 5658 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c 5659 break;
1042e4c0 5660 case bp_tracepoint:
7a697b8d 5661 case bp_fast_tracepoint:
0fb4aa4b 5662 case bp_static_tracepoint:
1042e4c0
SS
5663 /* Tracepoint hits should not be reported back to GDB, and
5664 if one got through somehow, it should have been filtered
5665 out already. */
5666 internal_error (__FILE__, __LINE__,
7a697b8d 5667 _("bpstat_what: tracepoint encountered"));
0e30163f
JK
5668 break;
5669 case bp_gnu_ifunc_resolver:
5670 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5671 this_action = BPSTAT_WHAT_SINGLE;
5672 break;
5673 case bp_gnu_ifunc_resolver_return:
5674 /* The breakpoint will be removed, execution will restart from the
5675 PC of the former breakpoint. */
5676 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5677 break;
e7e0cddf
SS
5678
5679 case bp_dprintf:
a11cfd87
HZ
5680 if (bs->stop)
5681 this_action = BPSTAT_WHAT_STOP_SILENT;
5682 else
5683 this_action = BPSTAT_WHAT_SINGLE;
e7e0cddf
SS
5684 break;
5685
628fe4e4
JK
5686 default:
5687 internal_error (__FILE__, __LINE__,
5688 _("bpstat_what: unhandled bptype %d"), (int) bptype);
c906108c 5689 }
628fe4e4 5690
325fac50 5691 retval.main_action = std::max (retval.main_action, this_action);
c906108c 5692 }
628fe4e4 5693
243a9253
PA
5694 return retval;
5695}
628fe4e4 5696
243a9253
PA
5697void
5698bpstat_run_callbacks (bpstat bs_head)
5699{
5700 bpstat bs;
628fe4e4 5701
0e30163f
JK
5702 for (bs = bs_head; bs != NULL; bs = bs->next)
5703 {
5704 struct breakpoint *b = bs->breakpoint_at;
5705
5706 if (b == NULL)
5707 continue;
5708 switch (b->type)
5709 {
243a9253
PA
5710 case bp_jit_event:
5711 handle_jit_event ();
5712 break;
0e30163f
JK
5713 case bp_gnu_ifunc_resolver:
5714 gnu_ifunc_resolver_stop (b);
5715 break;
5716 case bp_gnu_ifunc_resolver_return:
5717 gnu_ifunc_resolver_return_stop (b);
5718 break;
5719 }
5720 }
c906108c
SS
5721}
5722
5723/* Nonzero if we should step constantly (e.g. watchpoints on machines
5724 without hardware support). This isn't related to a specific bpstat,
5725 just to things like whether watchpoints are set. */
5726
c5aa993b 5727int
fba45db2 5728bpstat_should_step (void)
c906108c
SS
5729{
5730 struct breakpoint *b;
cc59ec59 5731
c906108c 5732 ALL_BREAKPOINTS (b)
717a8278 5733 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
3172dc30 5734 return 1;
c906108c
SS
5735 return 0;
5736}
5737
67822962
PA
5738int
5739bpstat_causes_stop (bpstat bs)
5740{
5741 for (; bs != NULL; bs = bs->next)
5742 if (bs->stop)
5743 return 1;
5744
5745 return 0;
5746}
5747
c906108c 5748\f
c5aa993b 5749
170b53b2
UW
5750/* Compute a string of spaces suitable to indent the next line
5751 so it starts at the position corresponding to the table column
5752 named COL_NAME in the currently active table of UIOUT. */
5753
5754static char *
5755wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5756{
5757 static char wrap_indent[80];
5758 int i, total_width, width, align;
c5209615 5759 const char *text;
170b53b2
UW
5760
5761 total_width = 0;
112e8700 5762 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
170b53b2
UW
5763 {
5764 if (strcmp (text, col_name) == 0)
5765 {
5766 gdb_assert (total_width < sizeof wrap_indent);
5767 memset (wrap_indent, ' ', total_width);
5768 wrap_indent[total_width] = 0;
5769
5770 return wrap_indent;
5771 }
5772
5773 total_width += width + 1;
5774 }
5775
5776 return NULL;
5777}
5778
b775012e
LM
5779/* Determine if the locations of this breakpoint will have their conditions
5780 evaluated by the target, host or a mix of both. Returns the following:
5781
5782 "host": Host evals condition.
5783 "host or target": Host or Target evals condition.
5784 "target": Target evals condition.
5785*/
5786
5787static const char *
5788bp_condition_evaluator (struct breakpoint *b)
5789{
5790 struct bp_location *bl;
5791 char host_evals = 0;
5792 char target_evals = 0;
5793
5794 if (!b)
5795 return NULL;
5796
5797 if (!is_breakpoint (b))
5798 return NULL;
5799
5800 if (gdb_evaluates_breakpoint_condition_p ()
5801 || !target_supports_evaluation_of_breakpoint_conditions ())
5802 return condition_evaluation_host;
5803
5804 for (bl = b->loc; bl; bl = bl->next)
5805 {
5806 if (bl->cond_bytecode)
5807 target_evals++;
5808 else
5809 host_evals++;
5810 }
5811
5812 if (host_evals && target_evals)
5813 return condition_evaluation_both;
5814 else if (target_evals)
5815 return condition_evaluation_target;
5816 else
5817 return condition_evaluation_host;
5818}
5819
5820/* Determine the breakpoint location's condition evaluator. This is
5821 similar to bp_condition_evaluator, but for locations. */
5822
5823static const char *
5824bp_location_condition_evaluator (struct bp_location *bl)
5825{
5826 if (bl && !is_breakpoint (bl->owner))
5827 return NULL;
5828
5829 if (gdb_evaluates_breakpoint_condition_p ()
5830 || !target_supports_evaluation_of_breakpoint_conditions ())
5831 return condition_evaluation_host;
5832
5833 if (bl && bl->cond_bytecode)
5834 return condition_evaluation_target;
5835 else
5836 return condition_evaluation_host;
5837}
5838
859825b8
JK
5839/* Print the LOC location out of the list of B->LOC locations. */
5840
170b53b2
UW
5841static void
5842print_breakpoint_location (struct breakpoint *b,
5843 struct bp_location *loc)
0d381245 5844{
79a45e25 5845 struct ui_out *uiout = current_uiout;
5ed8105e
PA
5846
5847 scoped_restore_current_program_space restore_pspace;
6c95b8df 5848
859825b8
JK
5849 if (loc != NULL && loc->shlib_disabled)
5850 loc = NULL;
5851
6c95b8df
PA
5852 if (loc != NULL)
5853 set_current_program_space (loc->pspace);
5854
56435ebe 5855 if (b->display_canonical)
d28cd78a 5856 uiout->field_string ("what", event_location_to_string (b->location.get ()));
2f202fde 5857 else if (loc && loc->symtab)
0d381245 5858 {
4a27f119
KS
5859 const struct symbol *sym = loc->symbol;
5860
0d381245
VP
5861 if (sym)
5862 {
112e8700 5863 uiout->text ("in ");
cbe56571
TT
5864 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
5865 ui_out_style_kind::FUNCTION);
112e8700
SM
5866 uiout->text (" ");
5867 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5868 uiout->text ("at ");
0d381245 5869 }
112e8700 5870 uiout->field_string ("file",
cbe56571
TT
5871 symtab_to_filename_for_display (loc->symtab),
5872 ui_out_style_kind::FILE);
112e8700 5873 uiout->text (":");
05cba821 5874
112e8700
SM
5875 if (uiout->is_mi_like_p ())
5876 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
0d381245 5877
112e8700 5878 uiout->field_int ("line", loc->line_number);
0d381245 5879 }
859825b8 5880 else if (loc)
0d381245 5881 {
d7e74731 5882 string_file stb;
170b53b2 5883
d7e74731 5884 print_address_symbolic (loc->gdbarch, loc->address, &stb,
22e722e1 5885 demangle, "");
112e8700 5886 uiout->field_stream ("at", stb);
0d381245 5887 }
859825b8 5888 else
f00aae0f 5889 {
d28cd78a
TT
5890 uiout->field_string ("pending",
5891 event_location_to_string (b->location.get ()));
f00aae0f
KS
5892 /* If extra_string is available, it could be holding a condition
5893 or dprintf arguments. In either case, make sure it is printed,
5894 too, but only for non-MI streams. */
112e8700 5895 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
f00aae0f
KS
5896 {
5897 if (b->type == bp_dprintf)
112e8700 5898 uiout->text (",");
f00aae0f 5899 else
112e8700
SM
5900 uiout->text (" ");
5901 uiout->text (b->extra_string);
f00aae0f
KS
5902 }
5903 }
6c95b8df 5904
b775012e
LM
5905 if (loc && is_breakpoint (b)
5906 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5907 && bp_condition_evaluator (b) == condition_evaluation_both)
5908 {
112e8700
SM
5909 uiout->text (" (");
5910 uiout->field_string ("evaluated-by",
b775012e 5911 bp_location_condition_evaluator (loc));
112e8700 5912 uiout->text (")");
b775012e 5913 }
0d381245
VP
5914}
5915
269b11a2
PA
5916static const char *
5917bptype_string (enum bptype type)
c906108c 5918{
c4093a6a
JM
5919 struct ep_type_description
5920 {
5921 enum bptype type;
a121b7c1 5922 const char *description;
c4093a6a
JM
5923 };
5924 static struct ep_type_description bptypes[] =
c906108c 5925 {
c5aa993b
JM
5926 {bp_none, "?deleted?"},
5927 {bp_breakpoint, "breakpoint"},
c906108c 5928 {bp_hardware_breakpoint, "hw breakpoint"},
7c16b83e 5929 {bp_single_step, "sw single-step"},
c5aa993b
JM
5930 {bp_until, "until"},
5931 {bp_finish, "finish"},
5932 {bp_watchpoint, "watchpoint"},
c906108c 5933 {bp_hardware_watchpoint, "hw watchpoint"},
c5aa993b
JM
5934 {bp_read_watchpoint, "read watchpoint"},
5935 {bp_access_watchpoint, "acc watchpoint"},
5936 {bp_longjmp, "longjmp"},
5937 {bp_longjmp_resume, "longjmp resume"},
e2e4d78b 5938 {bp_longjmp_call_dummy, "longjmp for call dummy"},
186c406b
TT
5939 {bp_exception, "exception"},
5940 {bp_exception_resume, "exception resume"},
c5aa993b 5941 {bp_step_resume, "step resume"},
2c03e5be 5942 {bp_hp_step_resume, "high-priority step resume"},
c5aa993b
JM
5943 {bp_watchpoint_scope, "watchpoint scope"},
5944 {bp_call_dummy, "call dummy"},
aa7d318d 5945 {bp_std_terminate, "std::terminate"},
c5aa993b 5946 {bp_shlib_event, "shlib events"},
c4093a6a 5947 {bp_thread_event, "thread events"},
1900040c 5948 {bp_overlay_event, "overlay events"},
0fd8e87f 5949 {bp_longjmp_master, "longjmp master"},
aa7d318d 5950 {bp_std_terminate_master, "std::terminate master"},
186c406b 5951 {bp_exception_master, "exception master"},
ce78b96d 5952 {bp_catchpoint, "catchpoint"},
1042e4c0 5953 {bp_tracepoint, "tracepoint"},
7a697b8d 5954 {bp_fast_tracepoint, "fast tracepoint"},
0fb4aa4b 5955 {bp_static_tracepoint, "static tracepoint"},
e7e0cddf 5956 {bp_dprintf, "dprintf"},
4efc6507 5957 {bp_jit_event, "jit events"},
0e30163f
JK
5958 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5959 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
c5aa993b 5960 };
269b11a2
PA
5961
5962 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5963 || ((int) type != bptypes[(int) type].type))
5964 internal_error (__FILE__, __LINE__,
5965 _("bptypes table does not describe type #%d."),
5966 (int) type);
5967
5968 return bptypes[(int) type].description;
5969}
5970
998580f1
MK
5971/* For MI, output a field named 'thread-groups' with a list as the value.
5972 For CLI, prefix the list with the string 'inf'. */
5973
5974static void
5975output_thread_groups (struct ui_out *uiout,
5976 const char *field_name,
5c632425 5977 const std::vector<int> &inf_nums,
998580f1
MK
5978 int mi_only)
5979{
112e8700 5980 int is_mi = uiout->is_mi_like_p ();
998580f1
MK
5981
5982 /* For backward compatibility, don't display inferiors in CLI unless
5983 there are several. Always display them for MI. */
5984 if (!is_mi && mi_only)
5985 return;
5986
10f489e5 5987 ui_out_emit_list list_emitter (uiout, field_name);
752eb8b4 5988
5c632425 5989 for (size_t i = 0; i < inf_nums.size (); i++)
998580f1
MK
5990 {
5991 if (is_mi)
5992 {
5993 char mi_group[10];
5994
5c632425 5995 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
112e8700 5996 uiout->field_string (NULL, mi_group);
998580f1
MK
5997 }
5998 else
5999 {
6000 if (i == 0)
112e8700 6001 uiout->text (" inf ");
998580f1 6002 else
112e8700 6003 uiout->text (", ");
998580f1 6004
5c632425 6005 uiout->text (plongest (inf_nums[i]));
998580f1
MK
6006 }
6007 }
998580f1
MK
6008}
6009
269b11a2
PA
6010/* Print B to gdb_stdout. */
6011
6012static void
6013print_one_breakpoint_location (struct breakpoint *b,
6014 struct bp_location *loc,
6015 int loc_number,
6016 struct bp_location **last_loc,
269b11a2
PA
6017 int allflag)
6018{
6019 struct command_line *l;
c2c6d25f 6020 static char bpenables[] = "nynny";
c906108c 6021
79a45e25 6022 struct ui_out *uiout = current_uiout;
0d381245
VP
6023 int header_of_multiple = 0;
6024 int part_of_multiple = (loc != NULL);
79a45b7d
TT
6025 struct value_print_options opts;
6026
6027 get_user_print_options (&opts);
0d381245
VP
6028
6029 gdb_assert (!loc || loc_number != 0);
4a64f543
MS
6030 /* See comment in print_one_breakpoint concerning treatment of
6031 breakpoints with single disabled location. */
0d381245
VP
6032 if (loc == NULL
6033 && (b->loc != NULL
6034 && (b->loc->next != NULL || !b->loc->enabled)))
6035 header_of_multiple = 1;
6036 if (loc == NULL)
6037 loc = b->loc;
6038
c4093a6a
JM
6039 annotate_record ();
6040
6041 /* 1 */
6042 annotate_field (0);
0d381245 6043 if (part_of_multiple)
528e1572 6044 uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
0d381245 6045 else
528e1572 6046 uiout->field_int ("number", b->number);
c4093a6a
JM
6047
6048 /* 2 */
6049 annotate_field (1);
0d381245 6050 if (part_of_multiple)
112e8700 6051 uiout->field_skip ("type");
269b11a2 6052 else
112e8700 6053 uiout->field_string ("type", bptype_string (b->type));
c4093a6a
JM
6054
6055 /* 3 */
6056 annotate_field (2);
0d381245 6057 if (part_of_multiple)
112e8700 6058 uiout->field_skip ("disp");
0d381245 6059 else
112e8700 6060 uiout->field_string ("disp", bpdisp_text (b->disposition));
0d381245 6061
c4093a6a
JM
6062 /* 4 */
6063 annotate_field (3);
0d381245 6064 if (part_of_multiple)
112e8700 6065 uiout->field_string ("enabled", loc->enabled ? "y" : "n");
0d381245 6066 else
112e8700 6067 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
0d381245 6068
c4093a6a 6069 /* 5 and 6 */
3086aeae 6070 if (b->ops != NULL && b->ops->print_one != NULL)
0d381245 6071 {
4a64f543
MS
6072 /* Although the print_one can possibly print all locations,
6073 calling it here is not likely to get any nice result. So,
6074 make sure there's just one location. */
0d381245 6075 gdb_assert (b->loc == NULL || b->loc->next == NULL);
a6d9a66e 6076 b->ops->print_one (b, last_loc);
0d381245 6077 }
3086aeae
DJ
6078 else
6079 switch (b->type)
6080 {
6081 case bp_none:
6082 internal_error (__FILE__, __LINE__,
e2e0b3e5 6083 _("print_one_breakpoint: bp_none encountered\n"));
3086aeae 6084 break;
c906108c 6085
3086aeae
DJ
6086 case bp_watchpoint:
6087 case bp_hardware_watchpoint:
6088 case bp_read_watchpoint:
6089 case bp_access_watchpoint:
3a5c3e22
PA
6090 {
6091 struct watchpoint *w = (struct watchpoint *) b;
6092
6093 /* Field 4, the address, is omitted (which makes the columns
6094 not line up too nicely with the headers, but the effect
6095 is relatively readable). */
6096 if (opts.addressprint)
112e8700 6097 uiout->field_skip ("addr");
3a5c3e22 6098 annotate_field (5);
112e8700 6099 uiout->field_string ("what", w->exp_string);
3a5c3e22 6100 }
3086aeae
DJ
6101 break;
6102
3086aeae
DJ
6103 case bp_breakpoint:
6104 case bp_hardware_breakpoint:
7c16b83e 6105 case bp_single_step:
3086aeae
DJ
6106 case bp_until:
6107 case bp_finish:
6108 case bp_longjmp:
6109 case bp_longjmp_resume:
e2e4d78b 6110 case bp_longjmp_call_dummy:
186c406b
TT
6111 case bp_exception:
6112 case bp_exception_resume:
3086aeae 6113 case bp_step_resume:
2c03e5be 6114 case bp_hp_step_resume:
3086aeae
DJ
6115 case bp_watchpoint_scope:
6116 case bp_call_dummy:
aa7d318d 6117 case bp_std_terminate:
3086aeae
DJ
6118 case bp_shlib_event:
6119 case bp_thread_event:
6120 case bp_overlay_event:
0fd8e87f 6121 case bp_longjmp_master:
aa7d318d 6122 case bp_std_terminate_master:
186c406b 6123 case bp_exception_master:
1042e4c0 6124 case bp_tracepoint:
7a697b8d 6125 case bp_fast_tracepoint:
0fb4aa4b 6126 case bp_static_tracepoint:
e7e0cddf 6127 case bp_dprintf:
4efc6507 6128 case bp_jit_event:
0e30163f
JK
6129 case bp_gnu_ifunc_resolver:
6130 case bp_gnu_ifunc_resolver_return:
79a45b7d 6131 if (opts.addressprint)
3086aeae
DJ
6132 {
6133 annotate_field (4);
54e52265 6134 if (header_of_multiple)
112e8700 6135 uiout->field_string ("addr", "<MULTIPLE>");
e9bbd7c5 6136 else if (b->loc == NULL || loc->shlib_disabled)
112e8700 6137 uiout->field_string ("addr", "<PENDING>");
0101ce28 6138 else
112e8700 6139 uiout->field_core_addr ("addr",
5af949e3 6140 loc->gdbarch, loc->address);
3086aeae
DJ
6141 }
6142 annotate_field (5);
0d381245 6143 if (!header_of_multiple)
170b53b2 6144 print_breakpoint_location (b, loc);
0d381245 6145 if (b->loc)
a6d9a66e 6146 *last_loc = b->loc;
3086aeae
DJ
6147 break;
6148 }
c906108c 6149
6c95b8df 6150
998580f1 6151 if (loc != NULL && !header_of_multiple)
6c95b8df 6152 {
5c632425 6153 std::vector<int> inf_nums;
998580f1 6154 int mi_only = 1;
6c95b8df 6155
08036331 6156 for (inferior *inf : all_inferiors ())
6c95b8df
PA
6157 {
6158 if (inf->pspace == loc->pspace)
5c632425 6159 inf_nums.push_back (inf->num);
6c95b8df 6160 }
998580f1
MK
6161
6162 /* For backward compatibility, don't display inferiors in CLI unless
6163 there are several. Always display for MI. */
6164 if (allflag
6165 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6166 && (number_of_program_spaces () > 1
6167 || number_of_inferiors () > 1)
6168 /* LOC is for existing B, it cannot be in
6169 moribund_locations and thus having NULL OWNER. */
6170 && loc->owner->type != bp_catchpoint))
6171 mi_only = 0;
5c632425 6172 output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6c95b8df
PA
6173 }
6174
4a306c9a 6175 if (!part_of_multiple)
c4093a6a 6176 {
4a306c9a
JB
6177 if (b->thread != -1)
6178 {
6179 /* FIXME: This seems to be redundant and lost here; see the
4a64f543 6180 "stop only in" line a little further down. */
112e8700
SM
6181 uiout->text (" thread ");
6182 uiout->field_int ("thread", b->thread);
4a306c9a
JB
6183 }
6184 else if (b->task != 0)
6185 {
112e8700
SM
6186 uiout->text (" task ");
6187 uiout->field_int ("task", b->task);
4a306c9a 6188 }
c4093a6a 6189 }
f1310107 6190
112e8700 6191 uiout->text ("\n");
f1310107 6192
348d480f 6193 if (!part_of_multiple)
f1310107
TJB
6194 b->ops->print_one_detail (b, uiout);
6195
0d381245 6196 if (part_of_multiple && frame_id_p (b->frame_id))
c4093a6a
JM
6197 {
6198 annotate_field (6);
112e8700 6199 uiout->text ("\tstop only in stack frame at ");
e5dd4106 6200 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
818dd999 6201 the frame ID. */
112e8700 6202 uiout->field_core_addr ("frame",
5af949e3 6203 b->gdbarch, b->frame_id.stack_addr);
112e8700 6204 uiout->text ("\n");
c4093a6a
JM
6205 }
6206
28010a5d 6207 if (!part_of_multiple && b->cond_string)
c4093a6a
JM
6208 {
6209 annotate_field (7);
d77f58be 6210 if (is_tracepoint (b))
112e8700 6211 uiout->text ("\ttrace only if ");
1042e4c0 6212 else
112e8700
SM
6213 uiout->text ("\tstop only if ");
6214 uiout->field_string ("cond", b->cond_string);
b775012e
LM
6215
6216 /* Print whether the target is doing the breakpoint's condition
6217 evaluation. If GDB is doing the evaluation, don't print anything. */
6218 if (is_breakpoint (b)
6219 && breakpoint_condition_evaluation_mode ()
6220 == condition_evaluation_target)
6221 {
112e8700
SM
6222 uiout->text (" (");
6223 uiout->field_string ("evaluated-by",
b775012e 6224 bp_condition_evaluator (b));
112e8700 6225 uiout->text (" evals)");
b775012e 6226 }
112e8700 6227 uiout->text ("\n");
0101ce28
JJ
6228 }
6229
0d381245 6230 if (!part_of_multiple && b->thread != -1)
c4093a6a 6231 {
4a64f543 6232 /* FIXME should make an annotation for this. */
112e8700
SM
6233 uiout->text ("\tstop only in thread ");
6234 if (uiout->is_mi_like_p ())
6235 uiout->field_int ("thread", b->thread);
5d5658a1
PA
6236 else
6237 {
6238 struct thread_info *thr = find_thread_global_id (b->thread);
6239
112e8700 6240 uiout->field_string ("thread", print_thread_id (thr));
5d5658a1 6241 }
112e8700 6242 uiout->text ("\n");
c4093a6a
JM
6243 }
6244
556ec64d
YQ
6245 if (!part_of_multiple)
6246 {
6247 if (b->hit_count)
31f56a27
YQ
6248 {
6249 /* FIXME should make an annotation for this. */
6250 if (is_catchpoint (b))
112e8700 6251 uiout->text ("\tcatchpoint");
31f56a27 6252 else if (is_tracepoint (b))
112e8700 6253 uiout->text ("\ttracepoint");
31f56a27 6254 else
112e8700
SM
6255 uiout->text ("\tbreakpoint");
6256 uiout->text (" already hit ");
6257 uiout->field_int ("times", b->hit_count);
31f56a27 6258 if (b->hit_count == 1)
112e8700 6259 uiout->text (" time\n");
31f56a27 6260 else
112e8700 6261 uiout->text (" times\n");
31f56a27 6262 }
556ec64d
YQ
6263 else
6264 {
31f56a27 6265 /* Output the count also if it is zero, but only if this is mi. */
112e8700
SM
6266 if (uiout->is_mi_like_p ())
6267 uiout->field_int ("times", b->hit_count);
556ec64d
YQ
6268 }
6269 }
8b93c638 6270
0d381245 6271 if (!part_of_multiple && b->ignore_count)
c4093a6a
JM
6272 {
6273 annotate_field (8);
112e8700
SM
6274 uiout->text ("\tignore next ");
6275 uiout->field_int ("ignore", b->ignore_count);
6276 uiout->text (" hits\n");
c4093a6a 6277 }
059fb39f 6278
816338b5
SS
6279 /* Note that an enable count of 1 corresponds to "enable once"
6280 behavior, which is reported by the combination of enablement and
6281 disposition, so we don't need to mention it here. */
6282 if (!part_of_multiple && b->enable_count > 1)
6283 {
6284 annotate_field (8);
112e8700 6285 uiout->text ("\tdisable after ");
816338b5
SS
6286 /* Tweak the wording to clarify that ignore and enable counts
6287 are distinct, and have additive effect. */
6288 if (b->ignore_count)
112e8700 6289 uiout->text ("additional ");
816338b5 6290 else
112e8700
SM
6291 uiout->text ("next ");
6292 uiout->field_int ("enable", b->enable_count);
6293 uiout->text (" hits\n");
816338b5
SS
6294 }
6295
f196051f
SS
6296 if (!part_of_multiple && is_tracepoint (b))
6297 {
6298 struct tracepoint *tp = (struct tracepoint *) b;
6299
6300 if (tp->traceframe_usage)
6301 {
112e8700
SM
6302 uiout->text ("\ttrace buffer usage ");
6303 uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6304 uiout->text (" bytes\n");
f196051f
SS
6305 }
6306 }
d3ce09f5 6307
d1b0a7bf 6308 l = b->commands ? b->commands.get () : NULL;
059fb39f 6309 if (!part_of_multiple && l)
c4093a6a
JM
6310 {
6311 annotate_field (9);
2e783024 6312 ui_out_emit_tuple tuple_emitter (uiout, "script");
8b93c638 6313 print_command_lines (uiout, l, 4);
c4093a6a 6314 }
d24317b4 6315
d9b3f62e 6316 if (is_tracepoint (b))
1042e4c0 6317 {
d9b3f62e
PA
6318 struct tracepoint *t = (struct tracepoint *) b;
6319
6320 if (!part_of_multiple && t->pass_count)
6321 {
6322 annotate_field (10);
112e8700
SM
6323 uiout->text ("\tpass count ");
6324 uiout->field_int ("pass", t->pass_count);
6325 uiout->text (" \n");
d9b3f62e 6326 }
f2a8bc8a
YQ
6327
6328 /* Don't display it when tracepoint or tracepoint location is
6329 pending. */
6330 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6331 {
6332 annotate_field (11);
6333
112e8700
SM
6334 if (uiout->is_mi_like_p ())
6335 uiout->field_string ("installed",
f2a8bc8a
YQ
6336 loc->inserted ? "y" : "n");
6337 else
6338 {
6339 if (loc->inserted)
112e8700 6340 uiout->text ("\t");
f2a8bc8a 6341 else
112e8700
SM
6342 uiout->text ("\tnot ");
6343 uiout->text ("installed on target\n");
f2a8bc8a
YQ
6344 }
6345 }
1042e4c0
SS
6346 }
6347
112e8700 6348 if (uiout->is_mi_like_p () && !part_of_multiple)
d24317b4 6349 {
3a5c3e22
PA
6350 if (is_watchpoint (b))
6351 {
6352 struct watchpoint *w = (struct watchpoint *) b;
6353
112e8700 6354 uiout->field_string ("original-location", w->exp_string);
3a5c3e22 6355 }
f00aae0f 6356 else if (b->location != NULL
d28cd78a 6357 && event_location_to_string (b->location.get ()) != NULL)
112e8700 6358 uiout->field_string ("original-location",
d28cd78a 6359 event_location_to_string (b->location.get ()));
d24317b4 6360 }
c4093a6a 6361}
c5aa993b 6362
0d381245
VP
6363static void
6364print_one_breakpoint (struct breakpoint *b,
4a64f543 6365 struct bp_location **last_loc,
6c95b8df 6366 int allflag)
0d381245 6367{
79a45e25 6368 struct ui_out *uiout = current_uiout;
8d3788bd 6369
2e783024
TT
6370 {
6371 ui_out_emit_tuple tuple_emitter (uiout, "bkpt");
8d3788bd 6372
2e783024
TT
6373 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6374 }
0d381245
VP
6375
6376 /* If this breakpoint has custom print function,
6377 it's already printed. Otherwise, print individual
6378 locations, if any. */
6379 if (b->ops == NULL || b->ops->print_one == NULL)
6380 {
4a64f543
MS
6381 /* If breakpoint has a single location that is disabled, we
6382 print it as if it had several locations, since otherwise it's
6383 hard to represent "breakpoint enabled, location disabled"
6384 situation.
6385
6386 Note that while hardware watchpoints have several locations
a3be7890 6387 internally, that's not a property exposed to user. */
0d381245 6388 if (b->loc
a5606eee 6389 && !is_hardware_watchpoint (b)
8d3788bd 6390 && (b->loc->next || !b->loc->enabled))
0d381245
VP
6391 {
6392 struct bp_location *loc;
6393 int n = 1;
8d3788bd 6394
0d381245 6395 for (loc = b->loc; loc; loc = loc->next, ++n)
8d3788bd 6396 {
2e783024 6397 ui_out_emit_tuple tuple_emitter (uiout, NULL);
8d3788bd 6398 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
8d3788bd 6399 }
0d381245
VP
6400 }
6401 }
6402}
6403
a6d9a66e
UW
6404static int
6405breakpoint_address_bits (struct breakpoint *b)
6406{
6407 int print_address_bits = 0;
6408 struct bp_location *loc;
6409
c6d81124
PA
6410 /* Software watchpoints that aren't watching memory don't have an
6411 address to print. */
6412 if (is_no_memory_software_watchpoint (b))
6413 return 0;
6414
a6d9a66e
UW
6415 for (loc = b->loc; loc; loc = loc->next)
6416 {
c7437ca6
PA
6417 int addr_bit;
6418
c7437ca6 6419 addr_bit = gdbarch_addr_bit (loc->gdbarch);
a6d9a66e
UW
6420 if (addr_bit > print_address_bits)
6421 print_address_bits = addr_bit;
6422 }
6423
6424 return print_address_bits;
6425}
0d381245 6426
65630365 6427/* See breakpoint.h. */
c5aa993b 6428
65630365
PA
6429void
6430print_breakpoint (breakpoint *b)
c4093a6a 6431{
a6d9a66e 6432 struct bp_location *dummy_loc = NULL;
65630365 6433 print_one_breakpoint (b, &dummy_loc, 0);
c4093a6a 6434}
c5aa993b 6435
09d682a4
TT
6436/* Return true if this breakpoint was set by the user, false if it is
6437 internal or momentary. */
6438
6439int
6440user_breakpoint_p (struct breakpoint *b)
6441{
46c6471b 6442 return b->number > 0;
09d682a4
TT
6443}
6444
93daf339
TT
6445/* See breakpoint.h. */
6446
6447int
6448pending_breakpoint_p (struct breakpoint *b)
6449{
6450 return b->loc == NULL;
6451}
6452
7f3b0473 6453/* Print information on user settable breakpoint (watchpoint, etc)
d77f58be
SS
6454 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6455 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6456 FILTER is non-NULL, call it on each breakpoint and only include the
6457 ones for which it returns non-zero. Return the total number of
6458 breakpoints listed. */
c906108c 6459
d77f58be 6460static int
4495129a 6461breakpoint_1 (const char *args, int allflag,
4a64f543 6462 int (*filter) (const struct breakpoint *))
c4093a6a 6463{
52f0bd74 6464 struct breakpoint *b;
a6d9a66e 6465 struct bp_location *last_loc = NULL;
7f3b0473 6466 int nr_printable_breakpoints;
79a45b7d 6467 struct value_print_options opts;
a6d9a66e 6468 int print_address_bits = 0;
269b11a2 6469 int print_type_col_width = 14;
79a45e25 6470 struct ui_out *uiout = current_uiout;
269b11a2 6471
79a45b7d
TT
6472 get_user_print_options (&opts);
6473
4a64f543
MS
6474 /* Compute the number of rows in the table, as well as the size
6475 required for address fields. */
7f3b0473
AC
6476 nr_printable_breakpoints = 0;
6477 ALL_BREAKPOINTS (b)
e5a67952
MS
6478 {
6479 /* If we have a filter, only list the breakpoints it accepts. */
6480 if (filter && !filter (b))
6481 continue;
6482
6483 /* If we have an "args" string, it is a list of breakpoints to
6484 accept. Skip the others. */
6485 if (args != NULL && *args != '\0')
6486 {
6487 if (allflag && parse_and_eval_long (args) != b->number)
6488 continue;
6489 if (!allflag && !number_is_in_list (args, b->number))
6490 continue;
6491 }
269b11a2 6492
e5a67952
MS
6493 if (allflag || user_breakpoint_p (b))
6494 {
6495 int addr_bit, type_len;
a6d9a66e 6496
e5a67952
MS
6497 addr_bit = breakpoint_address_bits (b);
6498 if (addr_bit > print_address_bits)
6499 print_address_bits = addr_bit;
269b11a2 6500
e5a67952
MS
6501 type_len = strlen (bptype_string (b->type));
6502 if (type_len > print_type_col_width)
6503 print_type_col_width = type_len;
6504
6505 nr_printable_breakpoints++;
6506 }
6507 }
7f3b0473 6508
4a2b031d
TT
6509 {
6510 ui_out_emit_table table_emitter (uiout,
6511 opts.addressprint ? 6 : 5,
6512 nr_printable_breakpoints,
6513 "BreakpointTable");
6514
6515 if (nr_printable_breakpoints > 0)
6516 annotate_breakpoints_headers ();
6517 if (nr_printable_breakpoints > 0)
6518 annotate_field (0);
6519 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6520 if (nr_printable_breakpoints > 0)
6521 annotate_field (1);
6522 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6523 if (nr_printable_breakpoints > 0)
6524 annotate_field (2);
6525 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6526 if (nr_printable_breakpoints > 0)
6527 annotate_field (3);
6528 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6529 if (opts.addressprint)
6530 {
6531 if (nr_printable_breakpoints > 0)
6532 annotate_field (4);
6533 if (print_address_bits <= 32)
6534 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6535 else
6536 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6537 }
6538 if (nr_printable_breakpoints > 0)
6539 annotate_field (5);
6540 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6541 uiout->table_body ();
6542 if (nr_printable_breakpoints > 0)
6543 annotate_breakpoints_table ();
6544
6545 ALL_BREAKPOINTS (b)
6546 {
6547 QUIT;
6548 /* If we have a filter, only list the breakpoints it accepts. */
6549 if (filter && !filter (b))
6550 continue;
e5a67952 6551
4a2b031d
TT
6552 /* If we have an "args" string, it is a list of breakpoints to
6553 accept. Skip the others. */
e5a67952 6554
4a2b031d
TT
6555 if (args != NULL && *args != '\0')
6556 {
6557 if (allflag) /* maintenance info breakpoint */
6558 {
6559 if (parse_and_eval_long (args) != b->number)
6560 continue;
6561 }
6562 else /* all others */
6563 {
6564 if (!number_is_in_list (args, b->number))
6565 continue;
6566 }
6567 }
6568 /* We only print out user settable breakpoints unless the
6569 allflag is set. */
6570 if (allflag || user_breakpoint_p (b))
6571 print_one_breakpoint (b, &last_loc, allflag);
6572 }
6573 }
698384cd 6574
7f3b0473 6575 if (nr_printable_breakpoints == 0)
c906108c 6576 {
4a64f543
MS
6577 /* If there's a filter, let the caller decide how to report
6578 empty list. */
d77f58be
SS
6579 if (!filter)
6580 {
e5a67952 6581 if (args == NULL || *args == '\0')
112e8700 6582 uiout->message ("No breakpoints or watchpoints.\n");
d77f58be 6583 else
112e8700 6584 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
e5a67952 6585 args);
d77f58be 6586 }
c906108c
SS
6587 }
6588 else
c4093a6a 6589 {
a6d9a66e
UW
6590 if (last_loc && !server_command)
6591 set_next_address (last_loc->gdbarch, last_loc->address);
c4093a6a 6592 }
c906108c 6593
4a64f543 6594 /* FIXME? Should this be moved up so that it is only called when
c4093a6a 6595 there have been breakpoints? */
c906108c 6596 annotate_breakpoints_table_end ();
d77f58be
SS
6597
6598 return nr_printable_breakpoints;
c906108c
SS
6599}
6600
ad443146
SS
6601/* Display the value of default-collect in a way that is generally
6602 compatible with the breakpoint list. */
6603
6604static void
6605default_collect_info (void)
6606{
79a45e25
PA
6607 struct ui_out *uiout = current_uiout;
6608
ad443146
SS
6609 /* If it has no value (which is frequently the case), say nothing; a
6610 message like "No default-collect." gets in user's face when it's
6611 not wanted. */
6612 if (!*default_collect)
6613 return;
6614
6615 /* The following phrase lines up nicely with per-tracepoint collect
6616 actions. */
112e8700
SM
6617 uiout->text ("default collect ");
6618 uiout->field_string ("default-collect", default_collect);
6619 uiout->text (" \n");
ad443146
SS
6620}
6621
c906108c 6622static void
0b39b52e 6623info_breakpoints_command (const char *args, int from_tty)
c906108c 6624{
e5a67952 6625 breakpoint_1 (args, 0, NULL);
ad443146
SS
6626
6627 default_collect_info ();
d77f58be
SS
6628}
6629
6630static void
1d12d88f 6631info_watchpoints_command (const char *args, int from_tty)
d77f58be 6632{
e5a67952 6633 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
79a45e25 6634 struct ui_out *uiout = current_uiout;
d77f58be
SS
6635
6636 if (num_printed == 0)
6637 {
e5a67952 6638 if (args == NULL || *args == '\0')
112e8700 6639 uiout->message ("No watchpoints.\n");
d77f58be 6640 else
112e8700 6641 uiout->message ("No watchpoint matching '%s'.\n", args);
d77f58be 6642 }
c906108c
SS
6643}
6644
7a292a7a 6645static void
4495129a 6646maintenance_info_breakpoints (const char *args, int from_tty)
c906108c 6647{
e5a67952 6648 breakpoint_1 (args, 1, NULL);
ad443146
SS
6649
6650 default_collect_info ();
c906108c
SS
6651}
6652
0d381245 6653static int
714835d5 6654breakpoint_has_pc (struct breakpoint *b,
6c95b8df 6655 struct program_space *pspace,
714835d5 6656 CORE_ADDR pc, struct obj_section *section)
0d381245
VP
6657{
6658 struct bp_location *bl = b->loc;
cc59ec59 6659
0d381245
VP
6660 for (; bl; bl = bl->next)
6661 {
6c95b8df
PA
6662 if (bl->pspace == pspace
6663 && bl->address == pc
0d381245
VP
6664 && (!overlay_debugging || bl->section == section))
6665 return 1;
6666 }
6667 return 0;
6668}
6669
672f9b60 6670/* Print a message describing any user-breakpoints set at PC. This
6c95b8df
PA
6671 concerns with logical breakpoints, so we match program spaces, not
6672 address spaces. */
c906108c
SS
6673
6674static void
6c95b8df
PA
6675describe_other_breakpoints (struct gdbarch *gdbarch,
6676 struct program_space *pspace, CORE_ADDR pc,
5af949e3 6677 struct obj_section *section, int thread)
c906108c 6678{
52f0bd74
AC
6679 int others = 0;
6680 struct breakpoint *b;
c906108c
SS
6681
6682 ALL_BREAKPOINTS (b)
672f9b60
KP
6683 others += (user_breakpoint_p (b)
6684 && breakpoint_has_pc (b, pspace, pc, section));
c906108c
SS
6685 if (others > 0)
6686 {
a3f17187
AC
6687 if (others == 1)
6688 printf_filtered (_("Note: breakpoint "));
6689 else /* if (others == ???) */
6690 printf_filtered (_("Note: breakpoints "));
c906108c 6691 ALL_BREAKPOINTS (b)
672f9b60 6692 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
0d381245
VP
6693 {
6694 others--;
6695 printf_filtered ("%d", b->number);
6696 if (b->thread == -1 && thread != -1)
6697 printf_filtered (" (all threads)");
6698 else if (b->thread != -1)
6699 printf_filtered (" (thread %d)", b->thread);
6700 printf_filtered ("%s%s ",
059fb39f 6701 ((b->enable_state == bp_disabled
f8eba3c6 6702 || b->enable_state == bp_call_disabled)
0d381245 6703 ? " (disabled)"
0d381245
VP
6704 : ""),
6705 (others > 1) ? ","
6706 : ((others == 1) ? " and" : ""));
6707 }
a3f17187 6708 printf_filtered (_("also set at pc "));
5af949e3 6709 fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
c906108c
SS
6710 printf_filtered (".\n");
6711 }
6712}
6713\f
c906108c 6714
e4f237da 6715/* Return true iff it is meaningful to use the address member of
244558af
LM
6716 BPT locations. For some breakpoint types, the locations' address members
6717 are irrelevant and it makes no sense to attempt to compare them to other
6718 addresses (or use them for any other purpose either).
e4f237da 6719
4a64f543 6720 More specifically, each of the following breakpoint types will
244558af 6721 always have a zero valued location address and we don't want to mark
4a64f543 6722 breakpoints of any of these types to be a duplicate of an actual
244558af 6723 breakpoint location at address zero:
e4f237da
KB
6724
6725 bp_watchpoint
2d134ed3
PA
6726 bp_catchpoint
6727
6728*/
e4f237da
KB
6729
6730static int
6731breakpoint_address_is_meaningful (struct breakpoint *bpt)
6732{
6733 enum bptype type = bpt->type;
6734
2d134ed3
PA
6735 return (type != bp_watchpoint && type != bp_catchpoint);
6736}
6737
6738/* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6739 true if LOC1 and LOC2 represent the same watchpoint location. */
6740
6741static int
4a64f543
MS
6742watchpoint_locations_match (struct bp_location *loc1,
6743 struct bp_location *loc2)
2d134ed3 6744{
3a5c3e22
PA
6745 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6746 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6747
6748 /* Both of them must exist. */
6749 gdb_assert (w1 != NULL);
6750 gdb_assert (w2 != NULL);
2bdf28a0 6751
4a64f543
MS
6752 /* If the target can evaluate the condition expression in hardware,
6753 then we we need to insert both watchpoints even if they are at
6754 the same place. Otherwise the watchpoint will only trigger when
6755 the condition of whichever watchpoint was inserted evaluates to
6756 true, not giving a chance for GDB to check the condition of the
6757 other watchpoint. */
3a5c3e22 6758 if ((w1->cond_exp
4a64f543
MS
6759 && target_can_accel_watchpoint_condition (loc1->address,
6760 loc1->length,
0cf6dd15 6761 loc1->watchpoint_type,
4d01a485 6762 w1->cond_exp.get ()))
3a5c3e22 6763 || (w2->cond_exp
4a64f543
MS
6764 && target_can_accel_watchpoint_condition (loc2->address,
6765 loc2->length,
0cf6dd15 6766 loc2->watchpoint_type,
4d01a485 6767 w2->cond_exp.get ())))
0cf6dd15
TJB
6768 return 0;
6769
85d721b8
PA
6770 /* Note that this checks the owner's type, not the location's. In
6771 case the target does not support read watchpoints, but does
6772 support access watchpoints, we'll have bp_read_watchpoint
6773 watchpoints with hw_access locations. Those should be considered
6774 duplicates of hw_read locations. The hw_read locations will
6775 become hw_access locations later. */
2d134ed3
PA
6776 return (loc1->owner->type == loc2->owner->type
6777 && loc1->pspace->aspace == loc2->pspace->aspace
6778 && loc1->address == loc2->address
6779 && loc1->length == loc2->length);
e4f237da
KB
6780}
6781
31e77af2 6782/* See breakpoint.h. */
6c95b8df 6783
31e77af2 6784int
accd0bcd
YQ
6785breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6786 const address_space *aspace2, CORE_ADDR addr2)
6c95b8df 6787{
f5656ead 6788 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
6789 || aspace1 == aspace2)
6790 && addr1 == addr2);
6791}
6792
f1310107
TJB
6793/* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6794 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
6795 matches ASPACE2. On targets that have global breakpoints, the address
6796 space doesn't really matter. */
6797
6798static int
accd0bcd
YQ
6799breakpoint_address_match_range (const address_space *aspace1,
6800 CORE_ADDR addr1,
6801 int len1, const address_space *aspace2,
f1310107
TJB
6802 CORE_ADDR addr2)
6803{
f5656ead 6804 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
f1310107
TJB
6805 || aspace1 == aspace2)
6806 && addr2 >= addr1 && addr2 < addr1 + len1);
6807}
6808
6809/* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
6810 a ranged breakpoint. In most targets, a match happens only if ASPACE
6811 matches the breakpoint's address space. On targets that have global
6812 breakpoints, the address space doesn't really matter. */
6813
6814static int
6815breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 6816 const address_space *aspace,
f1310107
TJB
6817 CORE_ADDR addr)
6818{
6819 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6820 aspace, addr)
6821 || (bl->length
6822 && breakpoint_address_match_range (bl->pspace->aspace,
6823 bl->address, bl->length,
6824 aspace, addr)));
6825}
6826
d35ae833
PA
6827/* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6828 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
6829 match happens only if ASPACE matches the breakpoint's address
6830 space. On targets that have global breakpoints, the address space
6831 doesn't really matter. */
6832
6833static int
6834breakpoint_location_address_range_overlap (struct bp_location *bl,
accd0bcd 6835 const address_space *aspace,
d35ae833
PA
6836 CORE_ADDR addr, int len)
6837{
6838 if (gdbarch_has_global_breakpoints (target_gdbarch ())
6839 || bl->pspace->aspace == aspace)
6840 {
6841 int bl_len = bl->length != 0 ? bl->length : 1;
6842
6843 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6844 return 1;
6845 }
6846 return 0;
6847}
6848
1e4d1764
YQ
6849/* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6850 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6851 true, otherwise returns false. */
6852
6853static int
6854tracepoint_locations_match (struct bp_location *loc1,
6855 struct bp_location *loc2)
6856{
6857 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6858 /* Since tracepoint locations are never duplicated with others', tracepoint
6859 locations at the same address of different tracepoints are regarded as
6860 different locations. */
6861 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6862 else
6863 return 0;
6864}
6865
2d134ed3
PA
6866/* Assuming LOC1 and LOC2's types' have meaningful target addresses
6867 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6868 represent the same location. */
6869
6870static int
4a64f543
MS
6871breakpoint_locations_match (struct bp_location *loc1,
6872 struct bp_location *loc2)
2d134ed3 6873{
2bdf28a0
JK
6874 int hw_point1, hw_point2;
6875
6876 /* Both of them must not be in moribund_locations. */
6877 gdb_assert (loc1->owner != NULL);
6878 gdb_assert (loc2->owner != NULL);
6879
6880 hw_point1 = is_hardware_watchpoint (loc1->owner);
6881 hw_point2 = is_hardware_watchpoint (loc2->owner);
2d134ed3
PA
6882
6883 if (hw_point1 != hw_point2)
6884 return 0;
6885 else if (hw_point1)
6886 return watchpoint_locations_match (loc1, loc2);
1e4d1764
YQ
6887 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6888 return tracepoint_locations_match (loc1, loc2);
2d134ed3 6889 else
f1310107
TJB
6890 /* We compare bp_location.length in order to cover ranged breakpoints. */
6891 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6892 loc2->pspace->aspace, loc2->address)
6893 && loc1->length == loc2->length);
2d134ed3
PA
6894}
6895
76897487
KB
6896static void
6897breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6898 int bnum, int have_bnum)
6899{
f63fbe86
MS
6900 /* The longest string possibly returned by hex_string_custom
6901 is 50 chars. These must be at least that big for safety. */
6902 char astr1[64];
6903 char astr2[64];
76897487 6904
bb599908
PH
6905 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6906 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
76897487 6907 if (have_bnum)
8a3fe4f8 6908 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
76897487
KB
6909 bnum, astr1, astr2);
6910 else
8a3fe4f8 6911 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
76897487
KB
6912}
6913
4a64f543
MS
6914/* Adjust a breakpoint's address to account for architectural
6915 constraints on breakpoint placement. Return the adjusted address.
6916 Note: Very few targets require this kind of adjustment. For most
6917 targets, this function is simply the identity function. */
76897487
KB
6918
6919static CORE_ADDR
a6d9a66e
UW
6920adjust_breakpoint_address (struct gdbarch *gdbarch,
6921 CORE_ADDR bpaddr, enum bptype bptype)
76897487 6922{
a0de8c21
YQ
6923 if (bptype == bp_watchpoint
6924 || bptype == bp_hardware_watchpoint
6925 || bptype == bp_read_watchpoint
6926 || bptype == bp_access_watchpoint
6927 || bptype == bp_catchpoint)
88f7da05
KB
6928 {
6929 /* Watchpoints and the various bp_catch_* eventpoints should not
6930 have their addresses modified. */
6931 return bpaddr;
6932 }
7c16b83e
PA
6933 else if (bptype == bp_single_step)
6934 {
6935 /* Single-step breakpoints should not have their addresses
6936 modified. If there's any architectural constrain that
6937 applies to this address, then it should have already been
6938 taken into account when the breakpoint was created in the
6939 first place. If we didn't do this, stepping through e.g.,
6940 Thumb-2 IT blocks would break. */
6941 return bpaddr;
6942 }
76897487
KB
6943 else
6944 {
a0de8c21
YQ
6945 CORE_ADDR adjusted_bpaddr = bpaddr;
6946
6947 if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6948 {
6949 /* Some targets have architectural constraints on the placement
6950 of breakpoint instructions. Obtain the adjusted address. */
6951 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6952 }
76897487 6953
a0de8c21 6954 adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
76897487
KB
6955
6956 /* An adjusted breakpoint address can significantly alter
6957 a user's expectations. Print a warning if an adjustment
6958 is required. */
6959 if (adjusted_bpaddr != bpaddr)
6960 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6961
6962 return adjusted_bpaddr;
6963 }
6964}
6965
5625a286 6966bp_location::bp_location (const bp_location_ops *ops, breakpoint *owner)
7cc221ef 6967{
5625a286 6968 bp_location *loc = this;
7cc221ef 6969
348d480f
PA
6970 gdb_assert (ops != NULL);
6971
28010a5d
PA
6972 loc->ops = ops;
6973 loc->owner = owner;
b775012e 6974 loc->cond_bytecode = NULL;
0d381245
VP
6975 loc->shlib_disabled = 0;
6976 loc->enabled = 1;
e049a4b5 6977
28010a5d 6978 switch (owner->type)
e049a4b5
DJ
6979 {
6980 case bp_breakpoint:
7c16b83e 6981 case bp_single_step:
e049a4b5
DJ
6982 case bp_until:
6983 case bp_finish:
6984 case bp_longjmp:
6985 case bp_longjmp_resume:
e2e4d78b 6986 case bp_longjmp_call_dummy:
186c406b
TT
6987 case bp_exception:
6988 case bp_exception_resume:
e049a4b5 6989 case bp_step_resume:
2c03e5be 6990 case bp_hp_step_resume:
e049a4b5
DJ
6991 case bp_watchpoint_scope:
6992 case bp_call_dummy:
aa7d318d 6993 case bp_std_terminate:
e049a4b5
DJ
6994 case bp_shlib_event:
6995 case bp_thread_event:
6996 case bp_overlay_event:
4efc6507 6997 case bp_jit_event:
0fd8e87f 6998 case bp_longjmp_master:
aa7d318d 6999 case bp_std_terminate_master:
186c406b 7000 case bp_exception_master:
0e30163f
JK
7001 case bp_gnu_ifunc_resolver:
7002 case bp_gnu_ifunc_resolver_return:
e7e0cddf 7003 case bp_dprintf:
e049a4b5 7004 loc->loc_type = bp_loc_software_breakpoint;
b775012e 7005 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
7006 break;
7007 case bp_hardware_breakpoint:
7008 loc->loc_type = bp_loc_hardware_breakpoint;
b775012e 7009 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
7010 break;
7011 case bp_hardware_watchpoint:
7012 case bp_read_watchpoint:
7013 case bp_access_watchpoint:
7014 loc->loc_type = bp_loc_hardware_watchpoint;
7015 break;
7016 case bp_watchpoint:
ce78b96d 7017 case bp_catchpoint:
15c3d785
PA
7018 case bp_tracepoint:
7019 case bp_fast_tracepoint:
0fb4aa4b 7020 case bp_static_tracepoint:
e049a4b5
DJ
7021 loc->loc_type = bp_loc_other;
7022 break;
7023 default:
e2e0b3e5 7024 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
e049a4b5
DJ
7025 }
7026
f431efe5 7027 loc->refc = 1;
28010a5d
PA
7028}
7029
7030/* Allocate a struct bp_location. */
7031
7032static struct bp_location *
7033allocate_bp_location (struct breakpoint *bpt)
7034{
348d480f
PA
7035 return bpt->ops->allocate_location (bpt);
7036}
7cc221ef 7037
f431efe5
PA
7038static void
7039free_bp_location (struct bp_location *loc)
fe3f5fa8 7040{
348d480f 7041 loc->ops->dtor (loc);
4d01a485 7042 delete loc;
fe3f5fa8
VP
7043}
7044
f431efe5
PA
7045/* Increment reference count. */
7046
7047static void
7048incref_bp_location (struct bp_location *bl)
7049{
7050 ++bl->refc;
7051}
7052
7053/* Decrement reference count. If the reference count reaches 0,
7054 destroy the bp_location. Sets *BLP to NULL. */
7055
7056static void
7057decref_bp_location (struct bp_location **blp)
7058{
0807b50c
PA
7059 gdb_assert ((*blp)->refc > 0);
7060
f431efe5
PA
7061 if (--(*blp)->refc == 0)
7062 free_bp_location (*blp);
7063 *blp = NULL;
7064}
7065
346774a9 7066/* Add breakpoint B at the end of the global breakpoint chain. */
c906108c 7067
b270e6f9
TT
7068static breakpoint *
7069add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
c906108c 7070{
346774a9 7071 struct breakpoint *b1;
b270e6f9 7072 struct breakpoint *result = b.get ();
c906108c 7073
346774a9
PA
7074 /* Add this breakpoint to the end of the chain so that a list of
7075 breakpoints will come out in order of increasing numbers. */
7076
7077 b1 = breakpoint_chain;
7078 if (b1 == 0)
b270e6f9 7079 breakpoint_chain = b.release ();
346774a9
PA
7080 else
7081 {
7082 while (b1->next)
7083 b1 = b1->next;
b270e6f9 7084 b1->next = b.release ();
346774a9 7085 }
b270e6f9
TT
7086
7087 return result;
346774a9
PA
7088}
7089
7090/* Initializes breakpoint B with type BPTYPE and no locations yet. */
7091
7092static void
7093init_raw_breakpoint_without_location (struct breakpoint *b,
7094 struct gdbarch *gdbarch,
28010a5d 7095 enum bptype bptype,
c0a91b2b 7096 const struct breakpoint_ops *ops)
346774a9 7097{
348d480f
PA
7098 gdb_assert (ops != NULL);
7099
28010a5d 7100 b->ops = ops;
4d28f7a8 7101 b->type = bptype;
a6d9a66e 7102 b->gdbarch = gdbarch;
c906108c
SS
7103 b->language = current_language->la_language;
7104 b->input_radix = input_radix;
d0fb5eae 7105 b->related_breakpoint = b;
346774a9
PA
7106}
7107
7108/* Helper to set_raw_breakpoint below. Creates a breakpoint
7109 that has type BPTYPE and has no locations as yet. */
346774a9
PA
7110
7111static struct breakpoint *
7112set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
348d480f 7113 enum bptype bptype,
c0a91b2b 7114 const struct breakpoint_ops *ops)
346774a9 7115{
3b0871f4 7116 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7117
3b0871f4 7118 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
b270e6f9 7119 return add_to_breakpoint_chain (std::move (b));
0d381245
VP
7120}
7121
0e30163f
JK
7122/* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7123 resolutions should be made as the user specified the location explicitly
7124 enough. */
7125
0d381245 7126static void
0e30163f 7127set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
0d381245 7128{
2bdf28a0
JK
7129 gdb_assert (loc->owner != NULL);
7130
0d381245 7131 if (loc->owner->type == bp_breakpoint
1042e4c0 7132 || loc->owner->type == bp_hardware_breakpoint
d77f58be 7133 || is_tracepoint (loc->owner))
0d381245 7134 {
2c02bd72 7135 const char *function_name;
0e30163f 7136
3467ec66 7137 if (loc->msymbol != NULL
f50776aa
PA
7138 && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7139 || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc)
3467ec66 7140 && !explicit_loc)
0e30163f
JK
7141 {
7142 struct breakpoint *b = loc->owner;
7143
3467ec66
PA
7144 function_name = MSYMBOL_LINKAGE_NAME (loc->msymbol);
7145
7146 if (b->type == bp_breakpoint && b->loc == loc
7147 && loc->next == NULL && b->related_breakpoint == b)
0e30163f
JK
7148 {
7149 /* Create only the whole new breakpoint of this type but do not
7150 mess more complicated breakpoints with multiple locations. */
7151 b->type = bp_gnu_ifunc_resolver;
6a3a010b
MR
7152 /* Remember the resolver's address for use by the return
7153 breakpoint. */
3467ec66 7154 loc->related_address = loc->address;
0e30163f
JK
7155 }
7156 }
3467ec66
PA
7157 else
7158 find_pc_partial_function (loc->address, &function_name, NULL, NULL);
0e30163f 7159
2c02bd72
DE
7160 if (function_name)
7161 loc->function_name = xstrdup (function_name);
0d381245
VP
7162 }
7163}
7164
a6d9a66e 7165/* Attempt to determine architecture of location identified by SAL. */
1bfeeb0f 7166struct gdbarch *
a6d9a66e
UW
7167get_sal_arch (struct symtab_and_line sal)
7168{
7169 if (sal.section)
7170 return get_objfile_arch (sal.section->objfile);
7171 if (sal.symtab)
eb822aa6 7172 return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
a6d9a66e
UW
7173
7174 return NULL;
7175}
7176
346774a9
PA
7177/* Low level routine for partially initializing a breakpoint of type
7178 BPTYPE. The newly created breakpoint's address, section, source
c56053d2 7179 file name, and line number are provided by SAL.
0d381245
VP
7180
7181 It is expected that the caller will complete the initialization of
7182 the newly created breakpoint struct as well as output any status
c56053d2 7183 information regarding the creation of a new breakpoint. */
0d381245 7184
346774a9
PA
7185static void
7186init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
28010a5d 7187 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7188 const struct breakpoint_ops *ops)
0d381245 7189{
28010a5d 7190 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
346774a9 7191
3742cc8b 7192 add_location_to_breakpoint (b, &sal);
0d381245 7193
6c95b8df
PA
7194 if (bptype != bp_catchpoint)
7195 gdb_assert (sal.pspace != NULL);
7196
f8eba3c6
TT
7197 /* Store the program space that was used to set the breakpoint,
7198 except for ordinary breakpoints, which are independent of the
7199 program space. */
7200 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7201 b->pspace = sal.pspace;
346774a9 7202}
c906108c 7203
346774a9
PA
7204/* set_raw_breakpoint is a low level routine for allocating and
7205 partially initializing a breakpoint of type BPTYPE. The newly
7206 created breakpoint's address, section, source file name, and line
7207 number are provided by SAL. The newly created and partially
7208 initialized breakpoint is added to the breakpoint chain and
7209 is also returned as the value of this function.
7210
7211 It is expected that the caller will complete the initialization of
7212 the newly created breakpoint struct as well as output any status
7213 information regarding the creation of a new breakpoint. In
7214 particular, set_raw_breakpoint does NOT set the breakpoint
7215 number! Care should be taken to not allow an error to occur
7216 prior to completing the initialization of the breakpoint. If this
7217 should happen, a bogus breakpoint will be left on the chain. */
7218
7219struct breakpoint *
7220set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 7221 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7222 const struct breakpoint_ops *ops)
346774a9 7223{
3b0871f4 7224 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7225
3b0871f4 7226 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
b270e6f9 7227 return add_to_breakpoint_chain (std::move (b));
c906108c
SS
7228}
7229
53a5351d 7230/* Call this routine when stepping and nexting to enable a breakpoint
186c406b
TT
7231 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7232 initiated the operation. */
c906108c
SS
7233
7234void
186c406b 7235set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
c906108c 7236{
35df4500 7237 struct breakpoint *b, *b_tmp;
5d5658a1 7238 int thread = tp->global_num;
0fd8e87f
UW
7239
7240 /* To avoid having to rescan all objfile symbols at every step,
7241 we maintain a list of continually-inserted but always disabled
7242 longjmp "master" breakpoints. Here, we simply create momentary
7243 clones of those and enable them for the requested thread. */
35df4500 7244 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df 7245 if (b->pspace == current_program_space
186c406b
TT
7246 && (b->type == bp_longjmp_master
7247 || b->type == bp_exception_master))
0fd8e87f 7248 {
06edf0c0
PA
7249 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7250 struct breakpoint *clone;
cc59ec59 7251
e2e4d78b
JK
7252 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7253 after their removal. */
06edf0c0 7254 clone = momentary_breakpoint_from_master (b, type,
c1fc2657 7255 &momentary_breakpoint_ops, 1);
0fd8e87f
UW
7256 clone->thread = thread;
7257 }
186c406b
TT
7258
7259 tp->initiating_frame = frame;
c906108c
SS
7260}
7261
611c83ae 7262/* Delete all longjmp breakpoints from THREAD. */
c906108c 7263void
611c83ae 7264delete_longjmp_breakpoint (int thread)
c906108c 7265{
35df4500 7266 struct breakpoint *b, *b_tmp;
c906108c 7267
35df4500 7268 ALL_BREAKPOINTS_SAFE (b, b_tmp)
186c406b 7269 if (b->type == bp_longjmp || b->type == bp_exception)
611c83ae
PA
7270 {
7271 if (b->thread == thread)
7272 delete_breakpoint (b);
7273 }
c906108c
SS
7274}
7275
f59f708a
PA
7276void
7277delete_longjmp_breakpoint_at_next_stop (int thread)
7278{
7279 struct breakpoint *b, *b_tmp;
7280
7281 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7282 if (b->type == bp_longjmp || b->type == bp_exception)
7283 {
7284 if (b->thread == thread)
7285 b->disposition = disp_del_at_next_stop;
7286 }
7287}
7288
e2e4d78b
JK
7289/* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7290 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7291 pointer to any of them. Return NULL if this system cannot place longjmp
7292 breakpoints. */
7293
7294struct breakpoint *
7295set_longjmp_breakpoint_for_call_dummy (void)
7296{
7297 struct breakpoint *b, *retval = NULL;
7298
7299 ALL_BREAKPOINTS (b)
7300 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7301 {
7302 struct breakpoint *new_b;
7303
7304 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
a1aa2221
LM
7305 &momentary_breakpoint_ops,
7306 1);
00431a78 7307 new_b->thread = inferior_thread ()->global_num;
e2e4d78b
JK
7308
7309 /* Link NEW_B into the chain of RETVAL breakpoints. */
7310
7311 gdb_assert (new_b->related_breakpoint == new_b);
7312 if (retval == NULL)
7313 retval = new_b;
7314 new_b->related_breakpoint = retval;
7315 while (retval->related_breakpoint != new_b->related_breakpoint)
7316 retval = retval->related_breakpoint;
7317 retval->related_breakpoint = new_b;
7318 }
7319
7320 return retval;
7321}
7322
7323/* Verify all existing dummy frames and their associated breakpoints for
b67a2c6f 7324 TP. Remove those which can no longer be found in the current frame
e2e4d78b
JK
7325 stack.
7326
7327 You should call this function only at places where it is safe to currently
7328 unwind the whole stack. Failed stack unwind would discard live dummy
7329 frames. */
7330
7331void
b67a2c6f 7332check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
e2e4d78b
JK
7333{
7334 struct breakpoint *b, *b_tmp;
7335
7336 ALL_BREAKPOINTS_SAFE (b, b_tmp)
5d5658a1 7337 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
e2e4d78b
JK
7338 {
7339 struct breakpoint *dummy_b = b->related_breakpoint;
7340
7341 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7342 dummy_b = dummy_b->related_breakpoint;
7343 if (dummy_b->type != bp_call_dummy
7344 || frame_find_by_id (dummy_b->frame_id) != NULL)
7345 continue;
7346
00431a78 7347 dummy_frame_discard (dummy_b->frame_id, tp);
e2e4d78b
JK
7348
7349 while (b->related_breakpoint != b)
7350 {
7351 if (b_tmp == b->related_breakpoint)
7352 b_tmp = b->related_breakpoint->next;
7353 delete_breakpoint (b->related_breakpoint);
7354 }
7355 delete_breakpoint (b);
7356 }
7357}
7358
1900040c
MS
7359void
7360enable_overlay_breakpoints (void)
7361{
52f0bd74 7362 struct breakpoint *b;
1900040c
MS
7363
7364 ALL_BREAKPOINTS (b)
7365 if (b->type == bp_overlay_event)
7366 {
7367 b->enable_state = bp_enabled;
44702360 7368 update_global_location_list (UGLL_MAY_INSERT);
c02f5703 7369 overlay_events_enabled = 1;
1900040c
MS
7370 }
7371}
7372
7373void
7374disable_overlay_breakpoints (void)
7375{
52f0bd74 7376 struct breakpoint *b;
1900040c
MS
7377
7378 ALL_BREAKPOINTS (b)
7379 if (b->type == bp_overlay_event)
7380 {
7381 b->enable_state = bp_disabled;
44702360 7382 update_global_location_list (UGLL_DONT_INSERT);
c02f5703 7383 overlay_events_enabled = 0;
1900040c
MS
7384 }
7385}
7386
aa7d318d
TT
7387/* Set an active std::terminate breakpoint for each std::terminate
7388 master breakpoint. */
7389void
7390set_std_terminate_breakpoint (void)
7391{
35df4500 7392 struct breakpoint *b, *b_tmp;
aa7d318d 7393
35df4500 7394 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7395 if (b->pspace == current_program_space
7396 && b->type == bp_std_terminate_master)
7397 {
06edf0c0 7398 momentary_breakpoint_from_master (b, bp_std_terminate,
a1aa2221 7399 &momentary_breakpoint_ops, 1);
aa7d318d
TT
7400 }
7401}
7402
7403/* Delete all the std::terminate breakpoints. */
7404void
7405delete_std_terminate_breakpoint (void)
7406{
35df4500 7407 struct breakpoint *b, *b_tmp;
aa7d318d 7408
35df4500 7409 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7410 if (b->type == bp_std_terminate)
7411 delete_breakpoint (b);
7412}
7413
c4093a6a 7414struct breakpoint *
a6d9a66e 7415create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
c4093a6a
JM
7416{
7417 struct breakpoint *b;
c4093a6a 7418
06edf0c0
PA
7419 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7420 &internal_breakpoint_ops);
7421
b5de0fa7 7422 b->enable_state = bp_enabled;
f00aae0f 7423 /* location has to be used or breakpoint_re_set will delete me. */
d28cd78a 7424 b->location = new_address_location (b->loc->address, NULL, 0);
c4093a6a 7425
44702360 7426 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 7427
c4093a6a
JM
7428 return b;
7429}
7430
0101ce28
JJ
7431struct lang_and_radix
7432 {
7433 enum language lang;
7434 int radix;
7435 };
7436
4efc6507
DE
7437/* Create a breakpoint for JIT code registration and unregistration. */
7438
7439struct breakpoint *
7440create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7441{
2a7f3dff
PA
7442 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7443 &internal_breakpoint_ops);
4efc6507 7444}
0101ce28 7445
03673fc7
PP
7446/* Remove JIT code registration and unregistration breakpoint(s). */
7447
7448void
7449remove_jit_event_breakpoints (void)
7450{
7451 struct breakpoint *b, *b_tmp;
7452
7453 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7454 if (b->type == bp_jit_event
7455 && b->loc->pspace == current_program_space)
7456 delete_breakpoint (b);
7457}
7458
cae688ec
JJ
7459void
7460remove_solib_event_breakpoints (void)
7461{
35df4500 7462 struct breakpoint *b, *b_tmp;
cae688ec 7463
35df4500 7464 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df
PA
7465 if (b->type == bp_shlib_event
7466 && b->loc->pspace == current_program_space)
cae688ec
JJ
7467 delete_breakpoint (b);
7468}
7469
f37f681c
PA
7470/* See breakpoint.h. */
7471
7472void
7473remove_solib_event_breakpoints_at_next_stop (void)
7474{
7475 struct breakpoint *b, *b_tmp;
7476
7477 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7478 if (b->type == bp_shlib_event
7479 && b->loc->pspace == current_program_space)
7480 b->disposition = disp_del_at_next_stop;
7481}
7482
04086b45
PA
7483/* Helper for create_solib_event_breakpoint /
7484 create_and_insert_solib_event_breakpoint. Allows specifying which
7485 INSERT_MODE to pass through to update_global_location_list. */
7486
7487static struct breakpoint *
7488create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7489 enum ugll_insert_mode insert_mode)
cae688ec
JJ
7490{
7491 struct breakpoint *b;
7492
06edf0c0
PA
7493 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7494 &internal_breakpoint_ops);
04086b45 7495 update_global_location_list_nothrow (insert_mode);
cae688ec
JJ
7496 return b;
7497}
7498
04086b45
PA
7499struct breakpoint *
7500create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7501{
7502 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7503}
7504
f37f681c
PA
7505/* See breakpoint.h. */
7506
7507struct breakpoint *
7508create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7509{
7510 struct breakpoint *b;
7511
04086b45
PA
7512 /* Explicitly tell update_global_location_list to insert
7513 locations. */
7514 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
f37f681c
PA
7515 if (!b->loc->inserted)
7516 {
7517 delete_breakpoint (b);
7518 return NULL;
7519 }
7520 return b;
7521}
7522
cae688ec
JJ
7523/* Disable any breakpoints that are on code in shared libraries. Only
7524 apply to enabled breakpoints, disabled ones can just stay disabled. */
7525
7526void
cb851954 7527disable_breakpoints_in_shlibs (void)
cae688ec 7528{
876fa593 7529 struct bp_location *loc, **locp_tmp;
cae688ec 7530
876fa593 7531 ALL_BP_LOCATIONS (loc, locp_tmp)
cae688ec 7532 {
2bdf28a0 7533 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7534 struct breakpoint *b = loc->owner;
2bdf28a0 7535
4a64f543
MS
7536 /* We apply the check to all breakpoints, including disabled for
7537 those with loc->duplicate set. This is so that when breakpoint
7538 becomes enabled, or the duplicate is removed, gdb will try to
7539 insert all breakpoints. If we don't set shlib_disabled here,
7540 we'll try to insert those breakpoints and fail. */
1042e4c0 7541 if (((b->type == bp_breakpoint)
508ccb1f 7542 || (b->type == bp_jit_event)
1042e4c0 7543 || (b->type == bp_hardware_breakpoint)
d77f58be 7544 || (is_tracepoint (b)))
6c95b8df 7545 && loc->pspace == current_program_space
0d381245 7546 && !loc->shlib_disabled
6c95b8df 7547 && solib_name_from_address (loc->pspace, loc->address)
a77053c2 7548 )
0d381245
VP
7549 {
7550 loc->shlib_disabled = 1;
7551 }
cae688ec
JJ
7552 }
7553}
7554
63644780
NB
7555/* Disable any breakpoints and tracepoints that are in SOLIB upon
7556 notification of unloaded_shlib. Only apply to enabled breakpoints,
7557 disabled ones can just stay disabled. */
84acb35a 7558
75149521 7559static void
84acb35a
JJ
7560disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7561{
876fa593 7562 struct bp_location *loc, **locp_tmp;
84acb35a
JJ
7563 int disabled_shlib_breaks = 0;
7564
876fa593 7565 ALL_BP_LOCATIONS (loc, locp_tmp)
84acb35a 7566 {
2bdf28a0 7567 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7568 struct breakpoint *b = loc->owner;
cc59ec59 7569
1e4d1764 7570 if (solib->pspace == loc->pspace
e2dd7057 7571 && !loc->shlib_disabled
1e4d1764
YQ
7572 && (((b->type == bp_breakpoint
7573 || b->type == bp_jit_event
7574 || b->type == bp_hardware_breakpoint)
7575 && (loc->loc_type == bp_loc_hardware_breakpoint
7576 || loc->loc_type == bp_loc_software_breakpoint))
7577 || is_tracepoint (b))
e2dd7057 7578 && solib_contains_address_p (solib, loc->address))
84acb35a 7579 {
e2dd7057
PP
7580 loc->shlib_disabled = 1;
7581 /* At this point, we cannot rely on remove_breakpoint
7582 succeeding so we must mark the breakpoint as not inserted
7583 to prevent future errors occurring in remove_breakpoints. */
7584 loc->inserted = 0;
8d3788bd
VP
7585
7586 /* This may cause duplicate notifications for the same breakpoint. */
76727919 7587 gdb::observers::breakpoint_modified.notify (b);
8d3788bd 7588
e2dd7057
PP
7589 if (!disabled_shlib_breaks)
7590 {
223ffa71 7591 target_terminal::ours_for_output ();
3e43a32a
MS
7592 warning (_("Temporarily disabling breakpoints "
7593 "for unloaded shared library \"%s\""),
e2dd7057 7594 solib->so_name);
84acb35a 7595 }
e2dd7057 7596 disabled_shlib_breaks = 1;
84acb35a
JJ
7597 }
7598 }
84acb35a
JJ
7599}
7600
63644780
NB
7601/* Disable any breakpoints and tracepoints in OBJFILE upon
7602 notification of free_objfile. Only apply to enabled breakpoints,
7603 disabled ones can just stay disabled. */
7604
7605static void
7606disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7607{
7608 struct breakpoint *b;
7609
7610 if (objfile == NULL)
7611 return;
7612
d03de421
PA
7613 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7614 managed by the user with add-symbol-file/remove-symbol-file.
7615 Similarly to how breakpoints in shared libraries are handled in
7616 response to "nosharedlibrary", mark breakpoints in such modules
08351840
PA
7617 shlib_disabled so they end up uninserted on the next global
7618 location list update. Shared libraries not loaded by the user
7619 aren't handled here -- they're already handled in
7620 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7621 solib_unloaded observer. We skip objfiles that are not
d03de421
PA
7622 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7623 main objfile). */
7624 if ((objfile->flags & OBJF_SHARED) == 0
7625 || (objfile->flags & OBJF_USERLOADED) == 0)
63644780
NB
7626 return;
7627
7628 ALL_BREAKPOINTS (b)
7629 {
7630 struct bp_location *loc;
7631 int bp_modified = 0;
7632
7633 if (!is_breakpoint (b) && !is_tracepoint (b))
7634 continue;
7635
7636 for (loc = b->loc; loc != NULL; loc = loc->next)
7637 {
7638 CORE_ADDR loc_addr = loc->address;
7639
7640 if (loc->loc_type != bp_loc_hardware_breakpoint
7641 && loc->loc_type != bp_loc_software_breakpoint)
7642 continue;
7643
7644 if (loc->shlib_disabled != 0)
7645 continue;
7646
7647 if (objfile->pspace != loc->pspace)
7648 continue;
7649
7650 if (loc->loc_type != bp_loc_hardware_breakpoint
7651 && loc->loc_type != bp_loc_software_breakpoint)
7652 continue;
7653
7654 if (is_addr_in_objfile (loc_addr, objfile))
7655 {
7656 loc->shlib_disabled = 1;
08351840
PA
7657 /* At this point, we don't know whether the object was
7658 unmapped from the inferior or not, so leave the
7659 inserted flag alone. We'll handle failure to
7660 uninsert quietly, in case the object was indeed
7661 unmapped. */
63644780
NB
7662
7663 mark_breakpoint_location_modified (loc);
7664
7665 bp_modified = 1;
7666 }
7667 }
7668
7669 if (bp_modified)
76727919 7670 gdb::observers::breakpoint_modified.notify (b);
63644780
NB
7671 }
7672}
7673
ce78b96d
JB
7674/* FORK & VFORK catchpoints. */
7675
e29a4733 7676/* An instance of this type is used to represent a fork or vfork
c1fc2657
SM
7677 catchpoint. A breakpoint is really of this type iff its ops pointer points
7678 to CATCH_FORK_BREAKPOINT_OPS. */
e29a4733 7679
c1fc2657 7680struct fork_catchpoint : public breakpoint
e29a4733 7681{
e29a4733
PA
7682 /* Process id of a child process whose forking triggered this
7683 catchpoint. This field is only valid immediately after this
7684 catchpoint has triggered. */
7685 ptid_t forked_inferior_pid;
7686};
7687
4a64f543
MS
7688/* Implement the "insert" breakpoint_ops method for fork
7689 catchpoints. */
ce78b96d 7690
77b06cd7
TJB
7691static int
7692insert_catch_fork (struct bp_location *bl)
ce78b96d 7693{
e99b03dc 7694 return target_insert_fork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7695}
7696
4a64f543
MS
7697/* Implement the "remove" breakpoint_ops method for fork
7698 catchpoints. */
ce78b96d
JB
7699
7700static int
73971819 7701remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 7702{
e99b03dc 7703 return target_remove_fork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7704}
7705
7706/* Implement the "breakpoint_hit" breakpoint_ops method for fork
7707 catchpoints. */
7708
7709static int
f1310107 7710breakpoint_hit_catch_fork (const struct bp_location *bl,
bd522513 7711 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 7712 const struct target_waitstatus *ws)
ce78b96d 7713{
e29a4733
PA
7714 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7715
f90263c1
TT
7716 if (ws->kind != TARGET_WAITKIND_FORKED)
7717 return 0;
7718
7719 c->forked_inferior_pid = ws->value.related_pid;
7720 return 1;
ce78b96d
JB
7721}
7722
4a64f543
MS
7723/* Implement the "print_it" breakpoint_ops method for fork
7724 catchpoints. */
ce78b96d
JB
7725
7726static enum print_stop_action
348d480f 7727print_it_catch_fork (bpstat bs)
ce78b96d 7728{
36dfb11c 7729 struct ui_out *uiout = current_uiout;
348d480f
PA
7730 struct breakpoint *b = bs->breakpoint_at;
7731 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
e29a4733 7732
ce78b96d 7733 annotate_catchpoint (b->number);
f303dbd6 7734 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 7735 if (b->disposition == disp_del)
112e8700 7736 uiout->text ("Temporary catchpoint ");
36dfb11c 7737 else
112e8700
SM
7738 uiout->text ("Catchpoint ");
7739 if (uiout->is_mi_like_p ())
36dfb11c 7740 {
112e8700
SM
7741 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7742 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 7743 }
112e8700
SM
7744 uiout->field_int ("bkptno", b->number);
7745 uiout->text (" (forked process ");
e99b03dc 7746 uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
112e8700 7747 uiout->text ("), ");
ce78b96d
JB
7748 return PRINT_SRC_AND_LOC;
7749}
7750
4a64f543
MS
7751/* Implement the "print_one" breakpoint_ops method for fork
7752 catchpoints. */
ce78b96d
JB
7753
7754static void
a6d9a66e 7755print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 7756{
e29a4733 7757 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 7758 struct value_print_options opts;
79a45e25 7759 struct ui_out *uiout = current_uiout;
79a45b7d
TT
7760
7761 get_user_print_options (&opts);
7762
4a64f543
MS
7763 /* Field 4, the address, is omitted (which makes the columns not
7764 line up too nicely with the headers, but the effect is relatively
7765 readable). */
79a45b7d 7766 if (opts.addressprint)
112e8700 7767 uiout->field_skip ("addr");
ce78b96d 7768 annotate_field (5);
112e8700 7769 uiout->text ("fork");
d7e15655 7770 if (c->forked_inferior_pid != null_ptid)
ce78b96d 7771 {
112e8700 7772 uiout->text (", process ");
e99b03dc 7773 uiout->field_int ("what", c->forked_inferior_pid.pid ());
112e8700 7774 uiout->spaces (1);
ce78b96d 7775 }
8ac3646f 7776
112e8700
SM
7777 if (uiout->is_mi_like_p ())
7778 uiout->field_string ("catch-type", "fork");
ce78b96d
JB
7779}
7780
7781/* Implement the "print_mention" breakpoint_ops method for fork
7782 catchpoints. */
7783
7784static void
7785print_mention_catch_fork (struct breakpoint *b)
7786{
7787 printf_filtered (_("Catchpoint %d (fork)"), b->number);
7788}
7789
6149aea9
PA
7790/* Implement the "print_recreate" breakpoint_ops method for fork
7791 catchpoints. */
7792
7793static void
7794print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7795{
7796 fprintf_unfiltered (fp, "catch fork");
d9b3f62e 7797 print_recreate_thread (b, fp);
6149aea9
PA
7798}
7799
ce78b96d
JB
7800/* The breakpoint_ops structure to be used in fork catchpoints. */
7801
2060206e 7802static struct breakpoint_ops catch_fork_breakpoint_ops;
ce78b96d 7803
4a64f543
MS
7804/* Implement the "insert" breakpoint_ops method for vfork
7805 catchpoints. */
ce78b96d 7806
77b06cd7
TJB
7807static int
7808insert_catch_vfork (struct bp_location *bl)
ce78b96d 7809{
e99b03dc 7810 return target_insert_vfork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7811}
7812
4a64f543
MS
7813/* Implement the "remove" breakpoint_ops method for vfork
7814 catchpoints. */
ce78b96d
JB
7815
7816static int
73971819 7817remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 7818{
e99b03dc 7819 return target_remove_vfork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7820}
7821
7822/* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7823 catchpoints. */
7824
7825static int
f1310107 7826breakpoint_hit_catch_vfork (const struct bp_location *bl,
bd522513 7827 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 7828 const struct target_waitstatus *ws)
ce78b96d 7829{
e29a4733
PA
7830 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7831
f90263c1
TT
7832 if (ws->kind != TARGET_WAITKIND_VFORKED)
7833 return 0;
7834
7835 c->forked_inferior_pid = ws->value.related_pid;
7836 return 1;
ce78b96d
JB
7837}
7838
4a64f543
MS
7839/* Implement the "print_it" breakpoint_ops method for vfork
7840 catchpoints. */
ce78b96d
JB
7841
7842static enum print_stop_action
348d480f 7843print_it_catch_vfork (bpstat bs)
ce78b96d 7844{
36dfb11c 7845 struct ui_out *uiout = current_uiout;
348d480f 7846 struct breakpoint *b = bs->breakpoint_at;
e29a4733
PA
7847 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7848
ce78b96d 7849 annotate_catchpoint (b->number);
f303dbd6 7850 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 7851 if (b->disposition == disp_del)
112e8700 7852 uiout->text ("Temporary catchpoint ");
36dfb11c 7853 else
112e8700
SM
7854 uiout->text ("Catchpoint ");
7855 if (uiout->is_mi_like_p ())
36dfb11c 7856 {
112e8700
SM
7857 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7858 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 7859 }
112e8700
SM
7860 uiout->field_int ("bkptno", b->number);
7861 uiout->text (" (vforked process ");
e99b03dc 7862 uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
112e8700 7863 uiout->text ("), ");
ce78b96d
JB
7864 return PRINT_SRC_AND_LOC;
7865}
7866
4a64f543
MS
7867/* Implement the "print_one" breakpoint_ops method for vfork
7868 catchpoints. */
ce78b96d
JB
7869
7870static void
a6d9a66e 7871print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 7872{
e29a4733 7873 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 7874 struct value_print_options opts;
79a45e25 7875 struct ui_out *uiout = current_uiout;
79a45b7d
TT
7876
7877 get_user_print_options (&opts);
4a64f543
MS
7878 /* Field 4, the address, is omitted (which makes the columns not
7879 line up too nicely with the headers, but the effect is relatively
7880 readable). */
79a45b7d 7881 if (opts.addressprint)
112e8700 7882 uiout->field_skip ("addr");
ce78b96d 7883 annotate_field (5);
112e8700 7884 uiout->text ("vfork");
d7e15655 7885 if (c->forked_inferior_pid != null_ptid)
ce78b96d 7886 {
112e8700 7887 uiout->text (", process ");
e99b03dc 7888 uiout->field_int ("what", c->forked_inferior_pid.pid ());
112e8700 7889 uiout->spaces (1);
ce78b96d 7890 }
8ac3646f 7891
112e8700
SM
7892 if (uiout->is_mi_like_p ())
7893 uiout->field_string ("catch-type", "vfork");
ce78b96d
JB
7894}
7895
7896/* Implement the "print_mention" breakpoint_ops method for vfork
7897 catchpoints. */
7898
7899static void
7900print_mention_catch_vfork (struct breakpoint *b)
7901{
7902 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7903}
7904
6149aea9
PA
7905/* Implement the "print_recreate" breakpoint_ops method for vfork
7906 catchpoints. */
7907
7908static void
7909print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7910{
7911 fprintf_unfiltered (fp, "catch vfork");
d9b3f62e 7912 print_recreate_thread (b, fp);
6149aea9
PA
7913}
7914
ce78b96d
JB
7915/* The breakpoint_ops structure to be used in vfork catchpoints. */
7916
2060206e 7917static struct breakpoint_ops catch_vfork_breakpoint_ops;
ce78b96d 7918
edcc5120 7919/* An instance of this type is used to represent an solib catchpoint.
c1fc2657 7920 A breakpoint is really of this type iff its ops pointer points to
edcc5120
TT
7921 CATCH_SOLIB_BREAKPOINT_OPS. */
7922
c1fc2657 7923struct solib_catchpoint : public breakpoint
edcc5120 7924{
c1fc2657 7925 ~solib_catchpoint () override;
edcc5120
TT
7926
7927 /* True for "catch load", false for "catch unload". */
7928 unsigned char is_load;
7929
7930 /* Regular expression to match, if any. COMPILED is only valid when
7931 REGEX is non-NULL. */
7932 char *regex;
2d7cc5c7 7933 std::unique_ptr<compiled_regex> compiled;
edcc5120
TT
7934};
7935
c1fc2657 7936solib_catchpoint::~solib_catchpoint ()
edcc5120 7937{
c1fc2657 7938 xfree (this->regex);
edcc5120
TT
7939}
7940
7941static int
7942insert_catch_solib (struct bp_location *ignore)
7943{
7944 return 0;
7945}
7946
7947static int
73971819 7948remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
edcc5120
TT
7949{
7950 return 0;
7951}
7952
7953static int
7954breakpoint_hit_catch_solib (const struct bp_location *bl,
bd522513 7955 const address_space *aspace,
edcc5120
TT
7956 CORE_ADDR bp_addr,
7957 const struct target_waitstatus *ws)
7958{
7959 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7960 struct breakpoint *other;
7961
7962 if (ws->kind == TARGET_WAITKIND_LOADED)
7963 return 1;
7964
7965 ALL_BREAKPOINTS (other)
7966 {
7967 struct bp_location *other_bl;
7968
7969 if (other == bl->owner)
7970 continue;
7971
7972 if (other->type != bp_shlib_event)
7973 continue;
7974
c1fc2657 7975 if (self->pspace != NULL && other->pspace != self->pspace)
edcc5120
TT
7976 continue;
7977
7978 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7979 {
7980 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7981 return 1;
7982 }
7983 }
7984
7985 return 0;
7986}
7987
7988static void
7989check_status_catch_solib (struct bpstats *bs)
7990{
7991 struct solib_catchpoint *self
7992 = (struct solib_catchpoint *) bs->breakpoint_at;
edcc5120
TT
7993
7994 if (self->is_load)
7995 {
52941706 7996 for (so_list *iter : current_program_space->added_solibs)
edcc5120
TT
7997 {
7998 if (!self->regex
2d7cc5c7 7999 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
edcc5120
TT
8000 return;
8001 }
8002 }
8003 else
8004 {
6fb16ce6 8005 for (const std::string &iter : current_program_space->deleted_solibs)
edcc5120
TT
8006 {
8007 if (!self->regex
6fb16ce6 8008 || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
edcc5120
TT
8009 return;
8010 }
8011 }
8012
8013 bs->stop = 0;
8014 bs->print_it = print_it_noop;
8015}
8016
8017static enum print_stop_action
8018print_it_catch_solib (bpstat bs)
8019{
8020 struct breakpoint *b = bs->breakpoint_at;
8021 struct ui_out *uiout = current_uiout;
8022
8023 annotate_catchpoint (b->number);
f303dbd6 8024 maybe_print_thread_hit_breakpoint (uiout);
edcc5120 8025 if (b->disposition == disp_del)
112e8700 8026 uiout->text ("Temporary catchpoint ");
edcc5120 8027 else
112e8700
SM
8028 uiout->text ("Catchpoint ");
8029 uiout->field_int ("bkptno", b->number);
8030 uiout->text ("\n");
8031 if (uiout->is_mi_like_p ())
8032 uiout->field_string ("disp", bpdisp_text (b->disposition));
edcc5120
TT
8033 print_solib_event (1);
8034 return PRINT_SRC_AND_LOC;
8035}
8036
8037static void
8038print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8039{
8040 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8041 struct value_print_options opts;
8042 struct ui_out *uiout = current_uiout;
edcc5120
TT
8043
8044 get_user_print_options (&opts);
8045 /* Field 4, the address, is omitted (which makes the columns not
8046 line up too nicely with the headers, but the effect is relatively
8047 readable). */
8048 if (opts.addressprint)
8049 {
8050 annotate_field (4);
112e8700 8051 uiout->field_skip ("addr");
edcc5120
TT
8052 }
8053
528e1572 8054 std::string msg;
edcc5120
TT
8055 annotate_field (5);
8056 if (self->is_load)
8057 {
8058 if (self->regex)
528e1572 8059 msg = string_printf (_("load of library matching %s"), self->regex);
edcc5120 8060 else
528e1572 8061 msg = _("load of library");
edcc5120
TT
8062 }
8063 else
8064 {
8065 if (self->regex)
528e1572 8066 msg = string_printf (_("unload of library matching %s"), self->regex);
edcc5120 8067 else
528e1572 8068 msg = _("unload of library");
edcc5120 8069 }
112e8700 8070 uiout->field_string ("what", msg);
8ac3646f 8071
112e8700
SM
8072 if (uiout->is_mi_like_p ())
8073 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
edcc5120
TT
8074}
8075
8076static void
8077print_mention_catch_solib (struct breakpoint *b)
8078{
8079 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8080
8081 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8082 self->is_load ? "load" : "unload");
8083}
8084
8085static void
8086print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8087{
8088 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8089
8090 fprintf_unfiltered (fp, "%s %s",
8091 b->disposition == disp_del ? "tcatch" : "catch",
8092 self->is_load ? "load" : "unload");
8093 if (self->regex)
8094 fprintf_unfiltered (fp, " %s", self->regex);
8095 fprintf_unfiltered (fp, "\n");
8096}
8097
8098static struct breakpoint_ops catch_solib_breakpoint_ops;
8099
91985142
MG
8100/* Shared helper function (MI and CLI) for creating and installing
8101 a shared object event catchpoint. If IS_LOAD is non-zero then
8102 the events to be caught are load events, otherwise they are
8103 unload events. If IS_TEMP is non-zero the catchpoint is a
8104 temporary one. If ENABLED is non-zero the catchpoint is
8105 created in an enabled state. */
edcc5120 8106
91985142 8107void
a121b7c1 8108add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
edcc5120 8109{
edcc5120 8110 struct gdbarch *gdbarch = get_current_arch ();
edcc5120 8111
edcc5120
TT
8112 if (!arg)
8113 arg = "";
f1735a53 8114 arg = skip_spaces (arg);
edcc5120 8115
36bd8eaa 8116 std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
edcc5120
TT
8117
8118 if (*arg != '\0')
8119 {
2d7cc5c7
PA
8120 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8121 _("Invalid regexp")));
edcc5120
TT
8122 c->regex = xstrdup (arg);
8123 }
8124
8125 c->is_load = is_load;
36bd8eaa 8126 init_catchpoint (c.get (), gdbarch, is_temp, NULL,
edcc5120
TT
8127 &catch_solib_breakpoint_ops);
8128
c1fc2657 8129 c->enable_state = enabled ? bp_enabled : bp_disabled;
91985142 8130
b270e6f9 8131 install_breakpoint (0, std::move (c), 1);
edcc5120
TT
8132}
8133
91985142
MG
8134/* A helper function that does all the work for "catch load" and
8135 "catch unload". */
8136
8137static void
eb4c3f4a 8138catch_load_or_unload (const char *arg, int from_tty, int is_load,
91985142
MG
8139 struct cmd_list_element *command)
8140{
8141 int tempflag;
8142 const int enabled = 1;
8143
8144 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8145
8146 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8147}
8148
edcc5120 8149static void
eb4c3f4a 8150catch_load_command_1 (const char *arg, int from_tty,
edcc5120
TT
8151 struct cmd_list_element *command)
8152{
8153 catch_load_or_unload (arg, from_tty, 1, command);
8154}
8155
8156static void
eb4c3f4a 8157catch_unload_command_1 (const char *arg, int from_tty,
edcc5120
TT
8158 struct cmd_list_element *command)
8159{
8160 catch_load_or_unload (arg, from_tty, 0, command);
8161}
8162
346774a9
PA
8163/* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8164 is non-zero, then make the breakpoint temporary. If COND_STRING is
8165 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8166 the breakpoint_ops structure associated to the catchpoint. */
ce78b96d 8167
ab04a2af 8168void
346774a9
PA
8169init_catchpoint (struct breakpoint *b,
8170 struct gdbarch *gdbarch, int tempflag,
63160a43 8171 const char *cond_string,
c0a91b2b 8172 const struct breakpoint_ops *ops)
c906108c 8173{
51abb421 8174 symtab_and_line sal;
6c95b8df 8175 sal.pspace = current_program_space;
c5aa993b 8176
28010a5d 8177 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
ce78b96d 8178
1b36a34b 8179 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
b5de0fa7 8180 b->disposition = tempflag ? disp_del : disp_donttouch;
346774a9
PA
8181}
8182
28010a5d 8183void
b270e6f9 8184install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
c56053d2 8185{
b270e6f9 8186 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
3a5c3e22 8187 set_breakpoint_number (internal, b);
558a9d82
YQ
8188 if (is_tracepoint (b))
8189 set_tracepoint_count (breakpoint_count);
3a5c3e22
PA
8190 if (!internal)
8191 mention (b);
76727919 8192 gdb::observers::breakpoint_created.notify (b);
3ea46bff
YQ
8193
8194 if (update_gll)
44702360 8195 update_global_location_list (UGLL_MAY_INSERT);
c56053d2
PA
8196}
8197
9b70b993 8198static void
a6d9a66e 8199create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
63160a43 8200 int tempflag, const char *cond_string,
c0a91b2b 8201 const struct breakpoint_ops *ops)
c906108c 8202{
b270e6f9 8203 std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
ce78b96d 8204
b270e6f9 8205 init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
e29a4733
PA
8206
8207 c->forked_inferior_pid = null_ptid;
8208
b270e6f9 8209 install_breakpoint (0, std::move (c), 1);
c906108c
SS
8210}
8211
fe798b75
JB
8212/* Exec catchpoints. */
8213
b4d90040 8214/* An instance of this type is used to represent an exec catchpoint.
c1fc2657 8215 A breakpoint is really of this type iff its ops pointer points to
b4d90040
PA
8216 CATCH_EXEC_BREAKPOINT_OPS. */
8217
c1fc2657 8218struct exec_catchpoint : public breakpoint
b4d90040 8219{
c1fc2657 8220 ~exec_catchpoint () override;
b4d90040
PA
8221
8222 /* Filename of a program whose exec triggered this catchpoint.
8223 This field is only valid immediately after this catchpoint has
8224 triggered. */
8225 char *exec_pathname;
8226};
8227
c1fc2657 8228/* Exec catchpoint destructor. */
b4d90040 8229
c1fc2657 8230exec_catchpoint::~exec_catchpoint ()
b4d90040 8231{
c1fc2657 8232 xfree (this->exec_pathname);
b4d90040
PA
8233}
8234
77b06cd7
TJB
8235static int
8236insert_catch_exec (struct bp_location *bl)
c906108c 8237{
e99b03dc 8238 return target_insert_exec_catchpoint (inferior_ptid.pid ());
fe798b75 8239}
c906108c 8240
fe798b75 8241static int
73971819 8242remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
fe798b75 8243{
e99b03dc 8244 return target_remove_exec_catchpoint (inferior_ptid.pid ());
fe798b75 8245}
c906108c 8246
fe798b75 8247static int
f1310107 8248breakpoint_hit_catch_exec (const struct bp_location *bl,
bd522513 8249 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 8250 const struct target_waitstatus *ws)
fe798b75 8251{
b4d90040
PA
8252 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8253
f90263c1
TT
8254 if (ws->kind != TARGET_WAITKIND_EXECD)
8255 return 0;
8256
8257 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8258 return 1;
fe798b75 8259}
c906108c 8260
fe798b75 8261static enum print_stop_action
348d480f 8262print_it_catch_exec (bpstat bs)
fe798b75 8263{
36dfb11c 8264 struct ui_out *uiout = current_uiout;
348d480f 8265 struct breakpoint *b = bs->breakpoint_at;
b4d90040
PA
8266 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8267
fe798b75 8268 annotate_catchpoint (b->number);
f303dbd6 8269 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 8270 if (b->disposition == disp_del)
112e8700 8271 uiout->text ("Temporary catchpoint ");
36dfb11c 8272 else
112e8700
SM
8273 uiout->text ("Catchpoint ");
8274 if (uiout->is_mi_like_p ())
36dfb11c 8275 {
112e8700
SM
8276 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8277 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 8278 }
112e8700
SM
8279 uiout->field_int ("bkptno", b->number);
8280 uiout->text (" (exec'd ");
8281 uiout->field_string ("new-exec", c->exec_pathname);
8282 uiout->text ("), ");
36dfb11c 8283
fe798b75 8284 return PRINT_SRC_AND_LOC;
c906108c
SS
8285}
8286
fe798b75 8287static void
a6d9a66e 8288print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
fe798b75 8289{
b4d90040 8290 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
fe798b75 8291 struct value_print_options opts;
79a45e25 8292 struct ui_out *uiout = current_uiout;
fe798b75
JB
8293
8294 get_user_print_options (&opts);
8295
8296 /* Field 4, the address, is omitted (which makes the columns
8297 not line up too nicely with the headers, but the effect
8298 is relatively readable). */
8299 if (opts.addressprint)
112e8700 8300 uiout->field_skip ("addr");
fe798b75 8301 annotate_field (5);
112e8700 8302 uiout->text ("exec");
b4d90040 8303 if (c->exec_pathname != NULL)
fe798b75 8304 {
112e8700
SM
8305 uiout->text (", program \"");
8306 uiout->field_string ("what", c->exec_pathname);
8307 uiout->text ("\" ");
fe798b75 8308 }
8ac3646f 8309
112e8700
SM
8310 if (uiout->is_mi_like_p ())
8311 uiout->field_string ("catch-type", "exec");
fe798b75
JB
8312}
8313
8314static void
8315print_mention_catch_exec (struct breakpoint *b)
8316{
8317 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8318}
8319
6149aea9
PA
8320/* Implement the "print_recreate" breakpoint_ops method for exec
8321 catchpoints. */
8322
8323static void
8324print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8325{
8326 fprintf_unfiltered (fp, "catch exec");
d9b3f62e 8327 print_recreate_thread (b, fp);
6149aea9
PA
8328}
8329
2060206e 8330static struct breakpoint_ops catch_exec_breakpoint_ops;
fe798b75 8331
c906108c 8332static int
fba45db2 8333hw_breakpoint_used_count (void)
c906108c 8334{
c906108c 8335 int i = 0;
f1310107
TJB
8336 struct breakpoint *b;
8337 struct bp_location *bl;
c906108c
SS
8338
8339 ALL_BREAKPOINTS (b)
c5aa993b 8340 {
d6b74ac4 8341 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
f1310107
TJB
8342 for (bl = b->loc; bl; bl = bl->next)
8343 {
8344 /* Special types of hardware breakpoints may use more than
8345 one register. */
348d480f 8346 i += b->ops->resources_needed (bl);
f1310107 8347 }
c5aa993b 8348 }
c906108c
SS
8349
8350 return i;
8351}
8352
a1398e0c
PA
8353/* Returns the resources B would use if it were a hardware
8354 watchpoint. */
8355
c906108c 8356static int
a1398e0c 8357hw_watchpoint_use_count (struct breakpoint *b)
c906108c 8358{
c906108c 8359 int i = 0;
e09342b5 8360 struct bp_location *bl;
c906108c 8361
a1398e0c
PA
8362 if (!breakpoint_enabled (b))
8363 return 0;
8364
8365 for (bl = b->loc; bl; bl = bl->next)
8366 {
8367 /* Special types of hardware watchpoints may use more than
8368 one register. */
8369 i += b->ops->resources_needed (bl);
8370 }
8371
8372 return i;
8373}
8374
8375/* Returns the sum the used resources of all hardware watchpoints of
8376 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8377 the sum of the used resources of all hardware watchpoints of other
8378 types _not_ TYPE. */
8379
8380static int
8381hw_watchpoint_used_count_others (struct breakpoint *except,
8382 enum bptype type, int *other_type_used)
8383{
8384 int i = 0;
8385 struct breakpoint *b;
8386
c906108c
SS
8387 *other_type_used = 0;
8388 ALL_BREAKPOINTS (b)
e09342b5 8389 {
a1398e0c
PA
8390 if (b == except)
8391 continue;
e09342b5
TJB
8392 if (!breakpoint_enabled (b))
8393 continue;
8394
a1398e0c
PA
8395 if (b->type == type)
8396 i += hw_watchpoint_use_count (b);
8397 else if (is_hardware_watchpoint (b))
8398 *other_type_used = 1;
e09342b5
TJB
8399 }
8400
c906108c
SS
8401 return i;
8402}
8403
c906108c 8404void
fba45db2 8405disable_watchpoints_before_interactive_call_start (void)
c906108c 8406{
c5aa993b 8407 struct breakpoint *b;
c906108c
SS
8408
8409 ALL_BREAKPOINTS (b)
c5aa993b 8410 {
cc60f2e3 8411 if (is_watchpoint (b) && breakpoint_enabled (b))
c5aa993b 8412 {
b5de0fa7 8413 b->enable_state = bp_call_disabled;
44702360 8414 update_global_location_list (UGLL_DONT_INSERT);
c5aa993b
JM
8415 }
8416 }
c906108c
SS
8417}
8418
8419void
fba45db2 8420enable_watchpoints_after_interactive_call_stop (void)
c906108c 8421{
c5aa993b 8422 struct breakpoint *b;
c906108c
SS
8423
8424 ALL_BREAKPOINTS (b)
c5aa993b 8425 {
cc60f2e3 8426 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
c5aa993b 8427 {
b5de0fa7 8428 b->enable_state = bp_enabled;
44702360 8429 update_global_location_list (UGLL_MAY_INSERT);
c5aa993b
JM
8430 }
8431 }
c906108c
SS
8432}
8433
8bea4e01
UW
8434void
8435disable_breakpoints_before_startup (void)
8436{
6c95b8df 8437 current_program_space->executing_startup = 1;
44702360 8438 update_global_location_list (UGLL_DONT_INSERT);
8bea4e01
UW
8439}
8440
8441void
8442enable_breakpoints_after_startup (void)
8443{
6c95b8df 8444 current_program_space->executing_startup = 0;
f8eba3c6 8445 breakpoint_re_set ();
8bea4e01
UW
8446}
8447
7c16b83e
PA
8448/* Create a new single-step breakpoint for thread THREAD, with no
8449 locations. */
c906108c 8450
7c16b83e
PA
8451static struct breakpoint *
8452new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8453{
b270e6f9 8454 std::unique_ptr<breakpoint> b (new breakpoint ());
7c16b83e 8455
b270e6f9 8456 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
7c16b83e
PA
8457 &momentary_breakpoint_ops);
8458
8459 b->disposition = disp_donttouch;
8460 b->frame_id = null_frame_id;
8461
8462 b->thread = thread;
8463 gdb_assert (b->thread != 0);
8464
b270e6f9 8465 return add_to_breakpoint_chain (std::move (b));
7c16b83e
PA
8466}
8467
8468/* Set a momentary breakpoint of type TYPE at address specified by
8469 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8470 frame. */
c906108c 8471
454dafbd 8472breakpoint_up
a6d9a66e
UW
8473set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8474 struct frame_id frame_id, enum bptype type)
c906108c 8475{
52f0bd74 8476 struct breakpoint *b;
edb3359d 8477
193facb3
JK
8478 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8479 tail-called one. */
8480 gdb_assert (!frame_id_artificial_p (frame_id));
edb3359d 8481
06edf0c0 8482 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
b5de0fa7
EZ
8483 b->enable_state = bp_enabled;
8484 b->disposition = disp_donttouch;
818dd999 8485 b->frame_id = frame_id;
c906108c 8486
00431a78 8487 b->thread = inferior_thread ()->global_num;
c906108c 8488
44702360 8489 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 8490
454dafbd 8491 return breakpoint_up (b);
c906108c 8492}
611c83ae 8493
06edf0c0 8494/* Make a momentary breakpoint based on the master breakpoint ORIG.
a1aa2221
LM
8495 The new breakpoint will have type TYPE, use OPS as its
8496 breakpoint_ops, and will set enabled to LOC_ENABLED. */
e58b0e63 8497
06edf0c0
PA
8498static struct breakpoint *
8499momentary_breakpoint_from_master (struct breakpoint *orig,
8500 enum bptype type,
a1aa2221
LM
8501 const struct breakpoint_ops *ops,
8502 int loc_enabled)
e58b0e63
PA
8503{
8504 struct breakpoint *copy;
8505
06edf0c0 8506 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
e58b0e63 8507 copy->loc = allocate_bp_location (copy);
0e30163f 8508 set_breakpoint_location_function (copy->loc, 1);
e58b0e63 8509
a6d9a66e 8510 copy->loc->gdbarch = orig->loc->gdbarch;
e58b0e63
PA
8511 copy->loc->requested_address = orig->loc->requested_address;
8512 copy->loc->address = orig->loc->address;
8513 copy->loc->section = orig->loc->section;
6c95b8df 8514 copy->loc->pspace = orig->loc->pspace;
55aa24fb 8515 copy->loc->probe = orig->loc->probe;
f8eba3c6 8516 copy->loc->line_number = orig->loc->line_number;
2f202fde 8517 copy->loc->symtab = orig->loc->symtab;
a1aa2221 8518 copy->loc->enabled = loc_enabled;
e58b0e63
PA
8519 copy->frame_id = orig->frame_id;
8520 copy->thread = orig->thread;
6c95b8df 8521 copy->pspace = orig->pspace;
e58b0e63
PA
8522
8523 copy->enable_state = bp_enabled;
8524 copy->disposition = disp_donttouch;
8525 copy->number = internal_breakpoint_number--;
8526
44702360 8527 update_global_location_list_nothrow (UGLL_DONT_INSERT);
e58b0e63
PA
8528 return copy;
8529}
8530
06edf0c0
PA
8531/* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8532 ORIG is NULL. */
8533
8534struct breakpoint *
8535clone_momentary_breakpoint (struct breakpoint *orig)
8536{
8537 /* If there's nothing to clone, then return nothing. */
8538 if (orig == NULL)
8539 return NULL;
8540
a1aa2221 8541 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
06edf0c0
PA
8542}
8543
454dafbd 8544breakpoint_up
a6d9a66e
UW
8545set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8546 enum bptype type)
611c83ae
PA
8547{
8548 struct symtab_and_line sal;
8549
8550 sal = find_pc_line (pc, 0);
8551 sal.pc = pc;
8552 sal.section = find_pc_overlay (pc);
8553 sal.explicit_pc = 1;
8554
a6d9a66e 8555 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
611c83ae 8556}
c906108c 8557\f
c5aa993b 8558
c906108c
SS
8559/* Tell the user we have just set a breakpoint B. */
8560
8561static void
fba45db2 8562mention (struct breakpoint *b)
c906108c 8563{
348d480f 8564 b->ops->print_mention (b);
2d33446d 8565 current_uiout->text ("\n");
c906108c 8566}
c906108c 8567\f
c5aa993b 8568
1a853c52
PA
8569static int bp_loc_is_permanent (struct bp_location *loc);
8570
0d381245 8571static struct bp_location *
39d61571 8572add_location_to_breakpoint (struct breakpoint *b,
0d381245
VP
8573 const struct symtab_and_line *sal)
8574{
8575 struct bp_location *loc, **tmp;
3742cc8b
YQ
8576 CORE_ADDR adjusted_address;
8577 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8578
8579 if (loc_gdbarch == NULL)
8580 loc_gdbarch = b->gdbarch;
8581
8582 /* Adjust the breakpoint's address prior to allocating a location.
8583 Once we call allocate_bp_location(), that mostly uninitialized
8584 location will be placed on the location chain. Adjustment of the
8585 breakpoint may cause target_read_memory() to be called and we do
8586 not want its scan of the location chain to find a breakpoint and
8587 location that's only been partially initialized. */
8588 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8589 sal->pc, b->type);
0d381245 8590
d30113d4 8591 /* Sort the locations by their ADDRESS. */
39d61571 8592 loc = allocate_bp_location (b);
d30113d4
JK
8593 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8594 tmp = &((*tmp)->next))
0d381245 8595 ;
d30113d4 8596 loc->next = *tmp;
0d381245 8597 *tmp = loc;
3742cc8b 8598
0d381245 8599 loc->requested_address = sal->pc;
3742cc8b 8600 loc->address = adjusted_address;
6c95b8df 8601 loc->pspace = sal->pspace;
935676c9 8602 loc->probe.prob = sal->prob;
729662a5 8603 loc->probe.objfile = sal->objfile;
6c95b8df 8604 gdb_assert (loc->pspace != NULL);
0d381245 8605 loc->section = sal->section;
3742cc8b 8606 loc->gdbarch = loc_gdbarch;
f8eba3c6 8607 loc->line_number = sal->line;
2f202fde 8608 loc->symtab = sal->symtab;
4a27f119 8609 loc->symbol = sal->symbol;
3467ec66
PA
8610 loc->msymbol = sal->msymbol;
8611 loc->objfile = sal->objfile;
f8eba3c6 8612
0e30163f
JK
8613 set_breakpoint_location_function (loc,
8614 sal->explicit_pc || sal->explicit_line);
1a853c52 8615
6ae88661
LM
8616 /* While by definition, permanent breakpoints are already present in the
8617 code, we don't mark the location as inserted. Normally one would expect
8618 that GDB could rely on that breakpoint instruction to stop the program,
8619 thus removing the need to insert its own breakpoint, except that executing
8620 the breakpoint instruction can kill the target instead of reporting a
8621 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8622 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8623 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8624 breakpoint be inserted normally results in QEMU knowing about the GDB
8625 breakpoint, and thus trap before the breakpoint instruction is executed.
8626 (If GDB later needs to continue execution past the permanent breakpoint,
8627 it manually increments the PC, thus avoiding executing the breakpoint
8628 instruction.) */
1a853c52 8629 if (bp_loc_is_permanent (loc))
6ae88661 8630 loc->permanent = 1;
1a853c52 8631
0d381245
VP
8632 return loc;
8633}
514f746b
AR
8634\f
8635
1cf4d951 8636/* See breakpoint.h. */
514f746b 8637
1cf4d951
PA
8638int
8639program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
514f746b
AR
8640{
8641 int len;
8642 CORE_ADDR addr;
1afeeb75 8643 const gdb_byte *bpoint;
514f746b
AR
8644 gdb_byte *target_mem;
8645
1cf4d951
PA
8646 addr = address;
8647 bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8648
8649 /* Software breakpoints unsupported? */
8650 if (bpoint == NULL)
8651 return 0;
8652
224c3ddb 8653 target_mem = (gdb_byte *) alloca (len);
1cf4d951
PA
8654
8655 /* Enable the automatic memory restoration from breakpoints while
8656 we read the memory. Otherwise we could say about our temporary
8657 breakpoints they are permanent. */
cb85b21b
TT
8658 scoped_restore restore_memory
8659 = make_scoped_restore_show_memory_breakpoints (0);
1cf4d951
PA
8660
8661 if (target_read_memory (address, target_mem, len) == 0
8662 && memcmp (target_mem, bpoint, len) == 0)
cb85b21b 8663 return 1;
1cf4d951 8664
cb85b21b 8665 return 0;
1cf4d951
PA
8666}
8667
8668/* Return 1 if LOC is pointing to a permanent breakpoint,
8669 return 0 otherwise. */
8670
8671static int
8672bp_loc_is_permanent (struct bp_location *loc)
8673{
514f746b
AR
8674 gdb_assert (loc != NULL);
8675
244558af
LM
8676 /* If we have a catchpoint or a watchpoint, just return 0. We should not
8677 attempt to read from the addresses the locations of these breakpoint types
8678 point to. program_breakpoint_here_p, below, will attempt to read
8679 memory. */
8680 if (!breakpoint_address_is_meaningful (loc->owner))
8681 return 0;
8682
5ed8105e 8683 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 8684 switch_to_program_space_and_thread (loc->pspace);
5ed8105e 8685 return program_breakpoint_here_p (loc->gdbarch, loc->address);
514f746b
AR
8686}
8687
e7e0cddf
SS
8688/* Build a command list for the dprintf corresponding to the current
8689 settings of the dprintf style options. */
8690
8691static void
8692update_dprintf_command_list (struct breakpoint *b)
8693{
8694 char *dprintf_args = b->extra_string;
8695 char *printf_line = NULL;
8696
8697 if (!dprintf_args)
8698 return;
8699
8700 dprintf_args = skip_spaces (dprintf_args);
8701
8702 /* Allow a comma, as it may have terminated a location, but don't
8703 insist on it. */
8704 if (*dprintf_args == ',')
8705 ++dprintf_args;
8706 dprintf_args = skip_spaces (dprintf_args);
8707
8708 if (*dprintf_args != '"')
8709 error (_("Bad format string, missing '\"'."));
8710
d3ce09f5 8711 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
e7e0cddf 8712 printf_line = xstrprintf ("printf %s", dprintf_args);
d3ce09f5 8713 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
e7e0cddf
SS
8714 {
8715 if (!dprintf_function)
8716 error (_("No function supplied for dprintf call"));
8717
8718 if (dprintf_channel && strlen (dprintf_channel) > 0)
8719 printf_line = xstrprintf ("call (void) %s (%s,%s)",
8720 dprintf_function,
8721 dprintf_channel,
8722 dprintf_args);
8723 else
8724 printf_line = xstrprintf ("call (void) %s (%s)",
8725 dprintf_function,
8726 dprintf_args);
8727 }
d3ce09f5
SS
8728 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8729 {
8730 if (target_can_run_breakpoint_commands ())
8731 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8732 else
8733 {
8734 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8735 printf_line = xstrprintf ("printf %s", dprintf_args);
8736 }
8737 }
e7e0cddf
SS
8738 else
8739 internal_error (__FILE__, __LINE__,
8740 _("Invalid dprintf style."));
8741
f28045c2 8742 gdb_assert (printf_line != NULL);
e7e0cddf 8743
12973681
TT
8744 /* Manufacture a printf sequence. */
8745 struct command_line *printf_cmd_line
8746 = new struct command_line (simple_control, printf_line);
8747 breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8748 command_lines_deleter ()));
e7e0cddf
SS
8749}
8750
8751/* Update all dprintf commands, making their command lists reflect
8752 current style settings. */
8753
8754static void
eb4c3f4a 8755update_dprintf_commands (const char *args, int from_tty,
e7e0cddf
SS
8756 struct cmd_list_element *c)
8757{
8758 struct breakpoint *b;
8759
8760 ALL_BREAKPOINTS (b)
8761 {
8762 if (b->type == bp_dprintf)
8763 update_dprintf_command_list (b);
8764 }
8765}
c3f6f71d 8766
f00aae0f
KS
8767/* Create a breakpoint with SAL as location. Use LOCATION
8768 as a description of the location, and COND_STRING
b35a8b2f
DE
8769 as condition expression. If LOCATION is NULL then create an
8770 "address location" from the address in the SAL. */
018d34a4
VP
8771
8772static void
d9b3f62e 8773init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
6c5b2ebe 8774 gdb::array_view<const symtab_and_line> sals,
ffc2605c 8775 event_location_up &&location,
e1e01040
PA
8776 gdb::unique_xmalloc_ptr<char> filter,
8777 gdb::unique_xmalloc_ptr<char> cond_string,
8778 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
8779 enum bptype type, enum bpdisp disposition,
8780 int thread, int task, int ignore_count,
c0a91b2b 8781 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
8782 int enabled, int internal, unsigned flags,
8783 int display_canonical)
018d34a4 8784{
0d381245 8785 int i;
018d34a4
VP
8786
8787 if (type == bp_hardware_breakpoint)
8788 {
fbbd034e
AS
8789 int target_resources_ok;
8790
8791 i = hw_breakpoint_used_count ();
8792 target_resources_ok =
8793 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
018d34a4
VP
8794 i + 1, 0);
8795 if (target_resources_ok == 0)
8796 error (_("No hardware breakpoint support in the target."));
8797 else if (target_resources_ok < 0)
8798 error (_("Hardware breakpoints used exceeds limit."));
8799 }
8800
6c5b2ebe 8801 gdb_assert (!sals.empty ());
6c95b8df 8802
6c5b2ebe 8803 for (const auto &sal : sals)
0d381245 8804 {
0d381245
VP
8805 struct bp_location *loc;
8806
8807 if (from_tty)
5af949e3
UW
8808 {
8809 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8810 if (!loc_gdbarch)
8811 loc_gdbarch = gdbarch;
8812
8813 describe_other_breakpoints (loc_gdbarch,
6c95b8df 8814 sal.pspace, sal.pc, sal.section, thread);
5af949e3 8815 }
0d381245 8816
6c5b2ebe 8817 if (&sal == &sals[0])
0d381245 8818 {
d9b3f62e 8819 init_raw_breakpoint (b, gdbarch, sal, type, ops);
0d381245 8820 b->thread = thread;
4a306c9a 8821 b->task = task;
855a6e68 8822
e1e01040
PA
8823 b->cond_string = cond_string.release ();
8824 b->extra_string = extra_string.release ();
0d381245 8825 b->ignore_count = ignore_count;
41447f92 8826 b->enable_state = enabled ? bp_enabled : bp_disabled;
0d381245 8827 b->disposition = disposition;
6c95b8df 8828
44f238bb
PA
8829 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8830 b->loc->inserted = 1;
8831
0fb4aa4b
PA
8832 if (type == bp_static_tracepoint)
8833 {
d9b3f62e 8834 struct tracepoint *t = (struct tracepoint *) b;
0fb4aa4b
PA
8835 struct static_tracepoint_marker marker;
8836
983af33b 8837 if (strace_marker_p (b))
0fb4aa4b
PA
8838 {
8839 /* We already know the marker exists, otherwise, we
8840 wouldn't see a sal for it. */
d28cd78a
TT
8841 const char *p
8842 = &event_location_to_string (b->location.get ())[3];
f00aae0f 8843 const char *endp;
0fb4aa4b 8844
f1735a53 8845 p = skip_spaces (p);
0fb4aa4b 8846
f1735a53 8847 endp = skip_to_space (p);
0fb4aa4b 8848
5d9310c4 8849 t->static_trace_marker_id.assign (p, endp - p);
0fb4aa4b 8850
3e43a32a
MS
8851 printf_filtered (_("Probed static tracepoint "
8852 "marker \"%s\"\n"),
5d9310c4 8853 t->static_trace_marker_id.c_str ());
0fb4aa4b
PA
8854 }
8855 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8856 {
5d9310c4 8857 t->static_trace_marker_id = std::move (marker.str_id);
0fb4aa4b 8858
3e43a32a
MS
8859 printf_filtered (_("Probed static tracepoint "
8860 "marker \"%s\"\n"),
5d9310c4 8861 t->static_trace_marker_id.c_str ());
0fb4aa4b
PA
8862 }
8863 else
3e43a32a
MS
8864 warning (_("Couldn't determine the static "
8865 "tracepoint marker to probe"));
0fb4aa4b
PA
8866 }
8867
0d381245
VP
8868 loc = b->loc;
8869 }
8870 else
018d34a4 8871 {
39d61571 8872 loc = add_location_to_breakpoint (b, &sal);
44f238bb
PA
8873 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8874 loc->inserted = 1;
0d381245
VP
8875 }
8876
8877 if (b->cond_string)
8878 {
bbc13ae3
KS
8879 const char *arg = b->cond_string;
8880
1bb9788d
TT
8881 loc->cond = parse_exp_1 (&arg, loc->address,
8882 block_for_pc (loc->address), 0);
0d381245 8883 if (*arg)
588ae58c 8884 error (_("Garbage '%s' follows condition"), arg);
018d34a4 8885 }
e7e0cddf
SS
8886
8887 /* Dynamic printf requires and uses additional arguments on the
8888 command line, otherwise it's an error. */
8889 if (type == bp_dprintf)
8890 {
8891 if (b->extra_string)
8892 update_dprintf_command_list (b);
8893 else
8894 error (_("Format string required"));
8895 }
8896 else if (b->extra_string)
588ae58c 8897 error (_("Garbage '%s' at end of command"), b->extra_string);
855a6e68 8898 }
018d34a4 8899
56435ebe 8900 b->display_canonical = display_canonical;
f00aae0f 8901 if (location != NULL)
d28cd78a 8902 b->location = std::move (location);
018d34a4 8903 else
d28cd78a 8904 b->location = new_address_location (b->loc->address, NULL, 0);
e1e01040 8905 b->filter = filter.release ();
d9b3f62e 8906}
018d34a4 8907
d9b3f62e
PA
8908static void
8909create_breakpoint_sal (struct gdbarch *gdbarch,
6c5b2ebe 8910 gdb::array_view<const symtab_and_line> sals,
ffc2605c 8911 event_location_up &&location,
e1e01040
PA
8912 gdb::unique_xmalloc_ptr<char> filter,
8913 gdb::unique_xmalloc_ptr<char> cond_string,
8914 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
8915 enum bptype type, enum bpdisp disposition,
8916 int thread, int task, int ignore_count,
c0a91b2b 8917 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
8918 int enabled, int internal, unsigned flags,
8919 int display_canonical)
d9b3f62e 8920{
a5e364af 8921 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
d9b3f62e 8922
a5e364af 8923 init_breakpoint_sal (b.get (), gdbarch,
ffc2605c 8924 sals, std::move (location),
e1e01040
PA
8925 std::move (filter),
8926 std::move (cond_string),
8927 std::move (extra_string),
d9b3f62e
PA
8928 type, disposition,
8929 thread, task, ignore_count,
8930 ops, from_tty,
44f238bb
PA
8931 enabled, internal, flags,
8932 display_canonical);
d9b3f62e 8933
b270e6f9 8934 install_breakpoint (internal, std::move (b), 0);
018d34a4
VP
8935}
8936
8937/* Add SALS.nelts breakpoints to the breakpoint table. For each
8938 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8939 value. COND_STRING, if not NULL, specified the condition to be
8940 used for all breakpoints. Essentially the only case where
8941 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8942 function. In that case, it's still not possible to specify
8943 separate conditions for different overloaded functions, so
8944 we take just a single condition string.
8945
c3f6f71d 8946 NOTE: If the function succeeds, the caller is expected to cleanup
018d34a4 8947 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
c3f6f71d
JM
8948 array contents). If the function fails (error() is called), the
8949 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
4a64f543 8950 COND and SALS arrays and each of those arrays contents. */
c906108c
SS
8951
8952static void
8cdf0e15 8953create_breakpoints_sal (struct gdbarch *gdbarch,
7efd8fc2 8954 struct linespec_result *canonical,
e1e01040
PA
8955 gdb::unique_xmalloc_ptr<char> cond_string,
8956 gdb::unique_xmalloc_ptr<char> extra_string,
8cdf0e15
VP
8957 enum bptype type, enum bpdisp disposition,
8958 int thread, int task, int ignore_count,
c0a91b2b 8959 const struct breakpoint_ops *ops, int from_tty,
44f238bb 8960 int enabled, int internal, unsigned flags)
c906108c 8961{
f8eba3c6 8962 if (canonical->pre_expanded)
6c5b2ebe 8963 gdb_assert (canonical->lsals.size () == 1);
f8eba3c6 8964
6c5b2ebe 8965 for (const auto &lsal : canonical->lsals)
c3f6f71d 8966 {
f00aae0f 8967 /* Note that 'location' can be NULL in the case of a plain
f8eba3c6 8968 'break', without arguments. */
ffc2605c 8969 event_location_up location
f00aae0f 8970 = (canonical->location != NULL
8e9e35b1 8971 ? copy_event_location (canonical->location.get ()) : NULL);
e1e01040 8972 gdb::unique_xmalloc_ptr<char> filter_string
6c5b2ebe 8973 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
0d381245 8974
6c5b2ebe 8975 create_breakpoint_sal (gdbarch, lsal.sals,
ffc2605c 8976 std::move (location),
e1e01040
PA
8977 std::move (filter_string),
8978 std::move (cond_string),
8979 std::move (extra_string),
e7e0cddf 8980 type, disposition,
84f4c1fe 8981 thread, task, ignore_count, ops,
44f238bb 8982 from_tty, enabled, internal, flags,
56435ebe 8983 canonical->special_display);
c3f6f71d 8984 }
c3f6f71d 8985}
c906108c 8986
f00aae0f 8987/* Parse LOCATION which is assumed to be a SAL specification possibly
c3f6f71d 8988 followed by conditionals. On return, SALS contains an array of SAL
f00aae0f
KS
8989 addresses found. LOCATION points to the end of the SAL (for
8990 linespec locations).
9998af43
TJB
8991
8992 The array and the line spec strings are allocated on the heap, it is
8993 the caller's responsibility to free them. */
c906108c 8994
b9362cc7 8995static void
f00aae0f 8996parse_breakpoint_sals (const struct event_location *location,
58438ac1 8997 struct linespec_result *canonical)
c3f6f71d 8998{
f00aae0f
KS
8999 struct symtab_and_line cursal;
9000
9001 if (event_location_type (location) == LINESPEC_LOCATION)
9002 {
a20714ff 9003 const char *spec = get_linespec_location (location)->spec_string;
f00aae0f 9004
a20714ff 9005 if (spec == NULL)
f00aae0f
KS
9006 {
9007 /* The last displayed codepoint, if it's valid, is our default
9008 breakpoint address. */
9009 if (last_displayed_sal_is_valid ())
9010 {
f00aae0f
KS
9011 /* Set sal's pspace, pc, symtab, and line to the values
9012 corresponding to the last call to print_frame_info.
9013 Be sure to reinitialize LINE with NOTCURRENT == 0
9014 as the breakpoint line number is inappropriate otherwise.
9015 find_pc_line would adjust PC, re-set it back. */
51abb421
PA
9016 symtab_and_line sal = get_last_displayed_sal ();
9017 CORE_ADDR pc = sal.pc;
9018
f00aae0f
KS
9019 sal = find_pc_line (pc, 0);
9020
9021 /* "break" without arguments is equivalent to "break *PC"
9022 where PC is the last displayed codepoint's address. So
9023 make sure to set sal.explicit_pc to prevent GDB from
9024 trying to expand the list of sals to include all other
9025 instances with the same symtab and line. */
9026 sal.pc = pc;
9027 sal.explicit_pc = 1;
9028
6c5b2ebe
PA
9029 struct linespec_sals lsal;
9030 lsal.sals = {sal};
f00aae0f
KS
9031 lsal.canonical = NULL;
9032
6c5b2ebe 9033 canonical->lsals.push_back (std::move (lsal));
f00aae0f
KS
9034 return;
9035 }
9036 else
9037 error (_("No default breakpoint address now."));
c906108c 9038 }
c906108c 9039 }
f00aae0f
KS
9040
9041 /* Force almost all breakpoints to be in terms of the
9042 current_source_symtab (which is decode_line_1's default).
9043 This should produce the results we want almost all of the
9044 time while leaving default_breakpoint_* alone.
9045
9046 ObjC: However, don't match an Objective-C method name which
9047 may have a '+' or '-' succeeded by a '['. */
9048 cursal = get_current_source_symtab_and_line ();
9049 if (last_displayed_sal_is_valid ())
c906108c 9050 {
a20714ff 9051 const char *spec = NULL;
cc80f267 9052
f00aae0f 9053 if (event_location_type (location) == LINESPEC_LOCATION)
a20714ff 9054 spec = get_linespec_location (location)->spec_string;
cc80f267 9055
f00aae0f 9056 if (!cursal.symtab
a20714ff
PA
9057 || (spec != NULL
9058 && strchr ("+-", spec[0]) != NULL
9059 && spec[1] != '['))
f00aae0f 9060 {
c2f4122d 9061 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f
KS
9062 get_last_displayed_symtab (),
9063 get_last_displayed_line (),
9064 canonical, NULL, NULL);
9065 return;
9066 }
c906108c 9067 }
f00aae0f 9068
c2f4122d 9069 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f 9070 cursal.symtab, cursal.line, canonical, NULL, NULL);
c3f6f71d 9071}
c906108c 9072
c906108c 9073
c3f6f71d 9074/* Convert each SAL into a real PC. Verify that the PC can be
4a64f543 9075 inserted as a breakpoint. If it can't throw an error. */
c906108c 9076
b9362cc7 9077static void
6c5b2ebe 9078breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
c3f6f71d 9079{
6c5b2ebe
PA
9080 for (auto &sal : sals)
9081 resolve_sal_pc (&sal);
c3f6f71d
JM
9082}
9083
7a697b8d
SS
9084/* Fast tracepoints may have restrictions on valid locations. For
9085 instance, a fast tracepoint using a jump instead of a trap will
9086 likely have to overwrite more bytes than a trap would, and so can
9087 only be placed where the instruction is longer than the jump, or a
9088 multi-instruction sequence does not have a jump into the middle of
9089 it, etc. */
9090
9091static void
9092check_fast_tracepoint_sals (struct gdbarch *gdbarch,
6c5b2ebe 9093 gdb::array_view<const symtab_and_line> sals)
7a697b8d 9094{
6c5b2ebe 9095 for (const auto &sal : sals)
7a697b8d 9096 {
f8eba3c6
TT
9097 struct gdbarch *sarch;
9098
6c5b2ebe 9099 sarch = get_sal_arch (sal);
f8eba3c6
TT
9100 /* We fall back to GDBARCH if there is no architecture
9101 associated with SAL. */
9102 if (sarch == NULL)
9103 sarch = gdbarch;
281d762b
TT
9104 std::string msg;
9105 if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
53c3572a 9106 error (_("May not have a fast tracepoint at %s%s"),
281d762b 9107 paddress (sarch, sal.pc), msg.c_str ());
7a697b8d
SS
9108 }
9109}
9110
018d34a4
VP
9111/* Given TOK, a string specification of condition and thread, as
9112 accepted by the 'break' command, extract the condition
9113 string and thread number and set *COND_STRING and *THREAD.
4a64f543 9114 PC identifies the context at which the condition should be parsed.
018d34a4
VP
9115 If no condition is found, *COND_STRING is set to NULL.
9116 If no thread is found, *THREAD is set to -1. */
d634f2de
JB
9117
9118static void
bbc13ae3 9119find_condition_and_thread (const char *tok, CORE_ADDR pc,
e7e0cddf
SS
9120 char **cond_string, int *thread, int *task,
9121 char **rest)
018d34a4
VP
9122{
9123 *cond_string = NULL;
9124 *thread = -1;
ed1d1739
KS
9125 *task = 0;
9126 *rest = NULL;
9127
018d34a4
VP
9128 while (tok && *tok)
9129 {
bbc13ae3 9130 const char *end_tok;
018d34a4 9131 int toklen;
bbc13ae3
KS
9132 const char *cond_start = NULL;
9133 const char *cond_end = NULL;
cc59ec59 9134
f1735a53 9135 tok = skip_spaces (tok);
e7e0cddf
SS
9136
9137 if ((*tok == '"' || *tok == ',') && rest)
9138 {
9139 *rest = savestring (tok, strlen (tok));
9140 return;
9141 }
9142
f1735a53 9143 end_tok = skip_to_space (tok);
d634f2de 9144
018d34a4 9145 toklen = end_tok - tok;
d634f2de 9146
018d34a4
VP
9147 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9148 {
9149 tok = cond_start = end_tok + 1;
4d01a485 9150 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
018d34a4 9151 cond_end = tok;
d634f2de 9152 *cond_string = savestring (cond_start, cond_end - cond_start);
018d34a4
VP
9153 }
9154 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9155 {
5d5658a1
PA
9156 const char *tmptok;
9157 struct thread_info *thr;
d634f2de 9158
018d34a4 9159 tok = end_tok + 1;
5d5658a1 9160 thr = parse_thread_id (tok, &tmptok);
018d34a4
VP
9161 if (tok == tmptok)
9162 error (_("Junk after thread keyword."));
5d5658a1 9163 *thread = thr->global_num;
bbc13ae3 9164 tok = tmptok;
018d34a4 9165 }
4a306c9a
JB
9166 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9167 {
9168 char *tmptok;
9169
9170 tok = end_tok + 1;
bbc13ae3 9171 *task = strtol (tok, &tmptok, 0);
4a306c9a
JB
9172 if (tok == tmptok)
9173 error (_("Junk after task keyword."));
9174 if (!valid_task_id (*task))
b6199126 9175 error (_("Unknown task %d."), *task);
bbc13ae3 9176 tok = tmptok;
4a306c9a 9177 }
e7e0cddf
SS
9178 else if (rest)
9179 {
9180 *rest = savestring (tok, strlen (tok));
ccab2054 9181 return;
e7e0cddf 9182 }
018d34a4
VP
9183 else
9184 error (_("Junk at end of arguments."));
9185 }
9186}
9187
0fb4aa4b
PA
9188/* Decode a static tracepoint marker spec. */
9189
6c5b2ebe 9190static std::vector<symtab_and_line>
f00aae0f 9191decode_static_tracepoint_spec (const char **arg_p)
0fb4aa4b 9192{
f00aae0f
KS
9193 const char *p = &(*arg_p)[3];
9194 const char *endp;
0fb4aa4b 9195
f1735a53 9196 p = skip_spaces (p);
0fb4aa4b 9197
f1735a53 9198 endp = skip_to_space (p);
0fb4aa4b 9199
81b1e71c 9200 std::string marker_str (p, endp - p);
0fb4aa4b 9201
5d9310c4
SM
9202 std::vector<static_tracepoint_marker> markers
9203 = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9204 if (markers.empty ())
81b1e71c
TT
9205 error (_("No known static tracepoint marker named %s"),
9206 marker_str.c_str ());
0fb4aa4b 9207
6c5b2ebe 9208 std::vector<symtab_and_line> sals;
5d9310c4 9209 sals.reserve (markers.size ());
0fb4aa4b 9210
5d9310c4 9211 for (const static_tracepoint_marker &marker : markers)
0fb4aa4b 9212 {
5d9310c4
SM
9213 symtab_and_line sal = find_pc_line (marker.address, 0);
9214 sal.pc = marker.address;
6c5b2ebe 9215 sals.push_back (sal);
5d9310c4 9216 }
0fb4aa4b 9217
0fb4aa4b
PA
9218 *arg_p = endp;
9219 return sals;
9220}
9221
f00aae0f 9222/* See breakpoint.h. */
0101ce28 9223
8cdf0e15
VP
9224int
9225create_breakpoint (struct gdbarch *gdbarch,
e1e01040
PA
9226 const struct event_location *location,
9227 const char *cond_string,
9228 int thread, const char *extra_string,
f00aae0f 9229 int parse_extra,
0fb4aa4b 9230 int tempflag, enum bptype type_wanted,
8cdf0e15
VP
9231 int ignore_count,
9232 enum auto_boolean pending_break_support,
c0a91b2b 9233 const struct breakpoint_ops *ops,
44f238bb
PA
9234 int from_tty, int enabled, int internal,
9235 unsigned flags)
c3f6f71d 9236{
7efd8fc2 9237 struct linespec_result canonical;
80c99de1 9238 struct cleanup *bkpt_chain = NULL;
0101ce28 9239 int pending = 0;
4a306c9a 9240 int task = 0;
86b17b60 9241 int prev_bkpt_count = breakpoint_count;
c3f6f71d 9242
348d480f
PA
9243 gdb_assert (ops != NULL);
9244
f00aae0f
KS
9245 /* If extra_string isn't useful, set it to NULL. */
9246 if (extra_string != NULL && *extra_string == '\0')
9247 extra_string = NULL;
9248
492d29ea 9249 TRY
b78a6381 9250 {
f00aae0f 9251 ops->create_sals_from_location (location, &canonical, type_wanted);
b78a6381 9252 }
492d29ea 9253 CATCH (e, RETURN_MASK_ERROR)
0101ce28 9254 {
492d29ea
PA
9255 /* If caller is interested in rc value from parse, set
9256 value. */
9257 if (e.error == NOT_FOUND_ERROR)
0101ce28 9258 {
05ff989b
AC
9259 /* If pending breakpoint support is turned off, throw
9260 error. */
fa8d40ab
JJ
9261
9262 if (pending_break_support == AUTO_BOOLEAN_FALSE)
723a2275
VP
9263 throw_exception (e);
9264
9265 exception_print (gdb_stderr, e);
fa8d40ab 9266
05ff989b
AC
9267 /* If pending breakpoint support is auto query and the user
9268 selects no, then simply return the error code. */
059fb39f 9269 if (pending_break_support == AUTO_BOOLEAN_AUTO
bfccc43c
YQ
9270 && !nquery (_("Make %s pending on future shared library load? "),
9271 bptype_string (type_wanted)))
fd9b8c24 9272 return 0;
fa8d40ab 9273
05ff989b
AC
9274 /* At this point, either the user was queried about setting
9275 a pending breakpoint and selected yes, or pending
9276 breakpoint behavior is on and thus a pending breakpoint
9277 is defaulted on behalf of the user. */
f00aae0f 9278 pending = 1;
0101ce28 9279 }
492d29ea
PA
9280 else
9281 throw_exception (e);
0101ce28 9282 }
492d29ea
PA
9283 END_CATCH
9284
6c5b2ebe 9285 if (!pending && canonical.lsals.empty ())
492d29ea 9286 return 0;
c3f6f71d 9287
c3f6f71d
JM
9288 /* ----------------------------- SNIP -----------------------------
9289 Anything added to the cleanup chain beyond this point is assumed
9290 to be part of a breakpoint. If the breakpoint create succeeds
80c99de1
PA
9291 then the memory is not reclaimed. */
9292 bkpt_chain = make_cleanup (null_cleanup, 0);
c3f6f71d 9293
c3f6f71d
JM
9294 /* Resolve all line numbers to PC's and verify that the addresses
9295 are ok for the target. */
0101ce28 9296 if (!pending)
f8eba3c6 9297 {
6c5b2ebe
PA
9298 for (auto &lsal : canonical.lsals)
9299 breakpoint_sals_to_pc (lsal.sals);
f8eba3c6 9300 }
c3f6f71d 9301
7a697b8d 9302 /* Fast tracepoints may have additional restrictions on location. */
bfccc43c 9303 if (!pending && type_wanted == bp_fast_tracepoint)
f8eba3c6 9304 {
6c5b2ebe
PA
9305 for (const auto &lsal : canonical.lsals)
9306 check_fast_tracepoint_sals (gdbarch, lsal.sals);
f8eba3c6 9307 }
7a697b8d 9308
c3f6f71d
JM
9309 /* Verify that condition can be parsed, before setting any
9310 breakpoints. Allocate a separate condition expression for each
4a64f543 9311 breakpoint. */
0101ce28 9312 if (!pending)
c3f6f71d 9313 {
e1e01040
PA
9314 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9315 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9316
f00aae0f 9317 if (parse_extra)
72b2ff0e 9318 {
0878d0fa 9319 char *rest;
e1e01040 9320 char *cond;
52d361e1 9321
6c5b2ebe 9322 const linespec_sals &lsal = canonical.lsals[0];
52d361e1 9323
0878d0fa
YQ
9324 /* Here we only parse 'arg' to separate condition
9325 from thread number, so parsing in context of first
9326 sal is OK. When setting the breakpoint we'll
9327 re-parse it in context of each sal. */
9328
6c5b2ebe 9329 find_condition_and_thread (extra_string, lsal.sals[0].pc,
e1e01040
PA
9330 &cond, &thread, &task, &rest);
9331 cond_string_copy.reset (cond);
9332 extra_string_copy.reset (rest);
72b2ff0e 9333 }
2f069f6f 9334 else
72b2ff0e 9335 {
f00aae0f
KS
9336 if (type_wanted != bp_dprintf
9337 && extra_string != NULL && *extra_string != '\0')
9338 error (_("Garbage '%s' at end of location"), extra_string);
0878d0fa
YQ
9339
9340 /* Create a private copy of condition string. */
9341 if (cond_string)
e1e01040 9342 cond_string_copy.reset (xstrdup (cond_string));
0878d0fa
YQ
9343 /* Create a private copy of any extra string. */
9344 if (extra_string)
e1e01040 9345 extra_string_copy.reset (xstrdup (extra_string));
72b2ff0e 9346 }
0fb4aa4b 9347
52d361e1 9348 ops->create_breakpoints_sal (gdbarch, &canonical,
e1e01040
PA
9349 std::move (cond_string_copy),
9350 std::move (extra_string_copy),
9351 type_wanted,
d9b3f62e
PA
9352 tempflag ? disp_del : disp_donttouch,
9353 thread, task, ignore_count, ops,
44f238bb 9354 from_tty, enabled, internal, flags);
c906108c 9355 }
0101ce28
JJ
9356 else
9357 {
a5e364af 9358 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
bfccc43c 9359
a5e364af 9360 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
d28cd78a 9361 b->location = copy_event_location (location);
bfccc43c 9362
f00aae0f
KS
9363 if (parse_extra)
9364 b->cond_string = NULL;
e12c7713
MK
9365 else
9366 {
9367 /* Create a private copy of condition string. */
e1e01040 9368 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
15630549 9369 b->thread = thread;
e12c7713 9370 }
f00aae0f
KS
9371
9372 /* Create a private copy of any extra string. */
e1e01040 9373 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
0101ce28 9374 b->ignore_count = ignore_count;
0101ce28 9375 b->disposition = tempflag ? disp_del : disp_donttouch;
0d381245 9376 b->condition_not_parsed = 1;
41447f92 9377 b->enable_state = enabled ? bp_enabled : bp_disabled;
cc72b2a2
KP
9378 if ((type_wanted != bp_breakpoint
9379 && type_wanted != bp_hardware_breakpoint) || thread != -1)
f8eba3c6 9380 b->pspace = current_program_space;
8bea4e01 9381
b270e6f9 9382 install_breakpoint (internal, std::move (b), 0);
0101ce28
JJ
9383 }
9384
6c5b2ebe 9385 if (canonical.lsals.size () > 1)
95a42b64 9386 {
3e43a32a
MS
9387 warning (_("Multiple breakpoints were set.\nUse the "
9388 "\"delete\" command to delete unwanted breakpoints."));
86b17b60 9389 prev_breakpoint_count = prev_bkpt_count;
95a42b64
TT
9390 }
9391
80c99de1
PA
9392 /* That's it. Discard the cleanups for data inserted into the
9393 breakpoint. */
9394 discard_cleanups (bkpt_chain);
217dc9e2 9395
80c99de1 9396 /* error call may happen here - have BKPT_CHAIN already discarded. */
44702360 9397 update_global_location_list (UGLL_MAY_INSERT);
fd9b8c24
PA
9398
9399 return 1;
c3f6f71d 9400}
c906108c 9401
348d480f 9402/* Set a breakpoint.
72b2ff0e
VP
9403 ARG is a string describing breakpoint address,
9404 condition, and thread.
9405 FLAG specifies if a breakpoint is hardware on,
9406 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9407 and BP_TEMPFLAG. */
348d480f 9408
98deb0da 9409static void
f2fc3015 9410break_command_1 (const char *arg, int flag, int from_tty)
c3f6f71d 9411{
72b2ff0e 9412 int tempflag = flag & BP_TEMPFLAG;
0fb4aa4b
PA
9413 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9414 ? bp_hardware_breakpoint
9415 : bp_breakpoint);
55aa24fb 9416 struct breakpoint_ops *ops;
f00aae0f 9417
ffc2605c 9418 event_location_up location = string_to_event_location (&arg, current_language);
55aa24fb
SDJ
9419
9420 /* Matching breakpoints on probes. */
5b56227b 9421 if (location != NULL
ffc2605c 9422 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
9423 ops = &bkpt_probe_breakpoint_ops;
9424 else
9425 ops = &bkpt_breakpoint_ops;
c3f6f71d 9426
8cdf0e15 9427 create_breakpoint (get_current_arch (),
ffc2605c 9428 location.get (),
f00aae0f 9429 NULL, 0, arg, 1 /* parse arg */,
0fb4aa4b 9430 tempflag, type_wanted,
8cdf0e15
VP
9431 0 /* Ignore count */,
9432 pending_break_support,
55aa24fb 9433 ops,
8cdf0e15 9434 from_tty,
84f4c1fe 9435 1 /* enabled */,
44f238bb
PA
9436 0 /* internal */,
9437 0);
c906108c
SS
9438}
9439
c906108c
SS
9440/* Helper function for break_command_1 and disassemble_command. */
9441
9442void
fba45db2 9443resolve_sal_pc (struct symtab_and_line *sal)
c906108c
SS
9444{
9445 CORE_ADDR pc;
9446
9447 if (sal->pc == 0 && sal->symtab != NULL)
9448 {
9449 if (!find_line_pc (sal->symtab, sal->line, &pc))
8a3fe4f8 9450 error (_("No line %d in file \"%s\"."),
05cba821 9451 sal->line, symtab_to_filename_for_display (sal->symtab));
c906108c 9452 sal->pc = pc;
6a048695 9453
4a64f543
MS
9454 /* If this SAL corresponds to a breakpoint inserted using a line
9455 number, then skip the function prologue if necessary. */
6a048695 9456 if (sal->explicit_line)
059acae7 9457 skip_prologue_sal (sal);
c906108c
SS
9458 }
9459
9460 if (sal->section == 0 && sal->symtab != NULL)
9461 {
346d1dfe 9462 const struct blockvector *bv;
3977b71f 9463 const struct block *b;
c5aa993b 9464 struct symbol *sym;
c906108c 9465
43f3e411
DE
9466 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9467 SYMTAB_COMPUNIT (sal->symtab));
c906108c
SS
9468 if (bv != NULL)
9469 {
7f0df278 9470 sym = block_linkage_function (b);
c906108c
SS
9471 if (sym != NULL)
9472 {
eb822aa6
DE
9473 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9474 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9475 sym);
c906108c
SS
9476 }
9477 else
9478 {
4a64f543
MS
9479 /* It really is worthwhile to have the section, so we'll
9480 just have to look harder. This case can be executed
9481 if we have line numbers but no functions (as can
9482 happen in assembly source). */
c906108c 9483
5ed8105e 9484 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 9485 switch_to_program_space_and_thread (sal->pspace);
c906108c 9486
5ed8105e 9487 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
7cbd4a93 9488 if (msym.minsym)
efd66ac6 9489 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
c906108c
SS
9490 }
9491 }
9492 }
9493}
9494
9495void
0b39b52e 9496break_command (const char *arg, int from_tty)
c906108c 9497{
db107f19 9498 break_command_1 (arg, 0, from_tty);
c906108c
SS
9499}
9500
c906108c 9501void
0b39b52e 9502tbreak_command (const char *arg, int from_tty)
c906108c 9503{
db107f19 9504 break_command_1 (arg, BP_TEMPFLAG, from_tty);
c906108c
SS
9505}
9506
c906108c 9507static void
0b39b52e 9508hbreak_command (const char *arg, int from_tty)
c906108c 9509{
db107f19 9510 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
c906108c
SS
9511}
9512
9513static void
0b39b52e 9514thbreak_command (const char *arg, int from_tty)
c906108c 9515{
db107f19 9516 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
c906108c
SS
9517}
9518
9519static void
ee7ddd71 9520stop_command (const char *arg, int from_tty)
c906108c 9521{
a3f17187 9522 printf_filtered (_("Specify the type of breakpoint to set.\n\
c906108c 9523Usage: stop in <function | address>\n\
a3f17187 9524 stop at <line>\n"));
c906108c
SS
9525}
9526
9527static void
4495129a 9528stopin_command (const char *arg, int from_tty)
c906108c
SS
9529{
9530 int badInput = 0;
9531
c5aa993b 9532 if (arg == (char *) NULL)
c906108c
SS
9533 badInput = 1;
9534 else if (*arg != '*')
9535 {
4495129a 9536 const char *argptr = arg;
c906108c
SS
9537 int hasColon = 0;
9538
4a64f543 9539 /* Look for a ':'. If this is a line number specification, then
53a5351d 9540 say it is bad, otherwise, it should be an address or
4a64f543 9541 function/method name. */
c906108c 9542 while (*argptr && !hasColon)
c5aa993b
JM
9543 {
9544 hasColon = (*argptr == ':');
9545 argptr++;
9546 }
c906108c
SS
9547
9548 if (hasColon)
c5aa993b 9549 badInput = (*argptr != ':'); /* Not a class::method */
c906108c 9550 else
c5aa993b 9551 badInput = isdigit (*arg); /* a simple line number */
c906108c
SS
9552 }
9553
9554 if (badInput)
a3f17187 9555 printf_filtered (_("Usage: stop in <function | address>\n"));
c906108c 9556 else
db107f19 9557 break_command_1 (arg, 0, from_tty);
c906108c
SS
9558}
9559
9560static void
4495129a 9561stopat_command (const char *arg, int from_tty)
c906108c
SS
9562{
9563 int badInput = 0;
9564
c5aa993b 9565 if (arg == (char *) NULL || *arg == '*') /* no line number */
c906108c
SS
9566 badInput = 1;
9567 else
9568 {
4495129a 9569 const char *argptr = arg;
c906108c
SS
9570 int hasColon = 0;
9571
4a64f543
MS
9572 /* Look for a ':'. If there is a '::' then get out, otherwise
9573 it is probably a line number. */
c906108c 9574 while (*argptr && !hasColon)
c5aa993b
JM
9575 {
9576 hasColon = (*argptr == ':');
9577 argptr++;
9578 }
c906108c
SS
9579
9580 if (hasColon)
c5aa993b 9581 badInput = (*argptr == ':'); /* we have class::method */
c906108c 9582 else
c5aa993b 9583 badInput = !isdigit (*arg); /* not a line number */
c906108c
SS
9584 }
9585
9586 if (badInput)
65e65158 9587 printf_filtered (_("Usage: stop at LINE\n"));
c906108c 9588 else
db107f19 9589 break_command_1 (arg, 0, from_tty);
c906108c
SS
9590}
9591
e7e0cddf
SS
9592/* The dynamic printf command is mostly like a regular breakpoint, but
9593 with a prewired command list consisting of a single output command,
9594 built from extra arguments supplied on the dprintf command
9595 line. */
9596
da821c7b 9597static void
0b39b52e 9598dprintf_command (const char *arg, int from_tty)
e7e0cddf 9599{
ffc2605c 9600 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f
KS
9601
9602 /* If non-NULL, ARG should have been advanced past the location;
9603 the next character must be ','. */
9604 if (arg != NULL)
9605 {
9606 if (arg[0] != ',' || arg[1] == '\0')
9607 error (_("Format string required"));
9608 else
9609 {
9610 /* Skip the comma. */
9611 ++arg;
9612 }
9613 }
9614
e7e0cddf 9615 create_breakpoint (get_current_arch (),
ffc2605c 9616 location.get (),
f00aae0f 9617 NULL, 0, arg, 1 /* parse arg */,
e7e0cddf
SS
9618 0, bp_dprintf,
9619 0 /* Ignore count */,
9620 pending_break_support,
9621 &dprintf_breakpoint_ops,
9622 from_tty,
9623 1 /* enabled */,
9624 0 /* internal */,
9625 0);
9626}
9627
d3ce09f5 9628static void
0b39b52e 9629agent_printf_command (const char *arg, int from_tty)
d3ce09f5
SS
9630{
9631 error (_("May only run agent-printf on the target"));
9632}
9633
f1310107
TJB
9634/* Implement the "breakpoint_hit" breakpoint_ops method for
9635 ranged breakpoints. */
9636
9637static int
9638breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
bd522513 9639 const address_space *aspace,
09ac7c10
TT
9640 CORE_ADDR bp_addr,
9641 const struct target_waitstatus *ws)
f1310107 9642{
09ac7c10 9643 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 9644 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
9645 return 0;
9646
f1310107
TJB
9647 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9648 bl->length, aspace, bp_addr);
9649}
9650
9651/* Implement the "resources_needed" breakpoint_ops method for
9652 ranged breakpoints. */
9653
9654static int
9655resources_needed_ranged_breakpoint (const struct bp_location *bl)
9656{
9657 return target_ranged_break_num_registers ();
9658}
9659
9660/* Implement the "print_it" breakpoint_ops method for
9661 ranged breakpoints. */
9662
9663static enum print_stop_action
348d480f 9664print_it_ranged_breakpoint (bpstat bs)
f1310107 9665{
348d480f 9666 struct breakpoint *b = bs->breakpoint_at;
f1310107 9667 struct bp_location *bl = b->loc;
79a45e25 9668 struct ui_out *uiout = current_uiout;
f1310107
TJB
9669
9670 gdb_assert (b->type == bp_hardware_breakpoint);
9671
9672 /* Ranged breakpoints have only one location. */
9673 gdb_assert (bl && bl->next == NULL);
9674
9675 annotate_breakpoint (b->number);
f303dbd6
PA
9676
9677 maybe_print_thread_hit_breakpoint (uiout);
9678
f1310107 9679 if (b->disposition == disp_del)
112e8700 9680 uiout->text ("Temporary ranged breakpoint ");
f1310107 9681 else
112e8700
SM
9682 uiout->text ("Ranged breakpoint ");
9683 if (uiout->is_mi_like_p ())
f1310107 9684 {
112e8700 9685 uiout->field_string ("reason",
f1310107 9686 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 9687 uiout->field_string ("disp", bpdisp_text (b->disposition));
f1310107 9688 }
112e8700
SM
9689 uiout->field_int ("bkptno", b->number);
9690 uiout->text (", ");
f1310107
TJB
9691
9692 return PRINT_SRC_AND_LOC;
9693}
9694
9695/* Implement the "print_one" breakpoint_ops method for
9696 ranged breakpoints. */
9697
9698static void
9699print_one_ranged_breakpoint (struct breakpoint *b,
9700 struct bp_location **last_loc)
9701{
9702 struct bp_location *bl = b->loc;
9703 struct value_print_options opts;
79a45e25 9704 struct ui_out *uiout = current_uiout;
f1310107
TJB
9705
9706 /* Ranged breakpoints have only one location. */
9707 gdb_assert (bl && bl->next == NULL);
9708
9709 get_user_print_options (&opts);
9710
9711 if (opts.addressprint)
9712 /* We don't print the address range here, it will be printed later
9713 by print_one_detail_ranged_breakpoint. */
112e8700 9714 uiout->field_skip ("addr");
f1310107
TJB
9715 annotate_field (5);
9716 print_breakpoint_location (b, bl);
9717 *last_loc = bl;
9718}
9719
9720/* Implement the "print_one_detail" breakpoint_ops method for
9721 ranged breakpoints. */
9722
9723static void
9724print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9725 struct ui_out *uiout)
9726{
9727 CORE_ADDR address_start, address_end;
9728 struct bp_location *bl = b->loc;
d7e74731 9729 string_file stb;
f1310107
TJB
9730
9731 gdb_assert (bl);
9732
9733 address_start = bl->address;
9734 address_end = address_start + bl->length - 1;
9735
112e8700 9736 uiout->text ("\taddress range: ");
d7e74731
PA
9737 stb.printf ("[%s, %s]",
9738 print_core_address (bl->gdbarch, address_start),
9739 print_core_address (bl->gdbarch, address_end));
112e8700
SM
9740 uiout->field_stream ("addr", stb);
9741 uiout->text ("\n");
f1310107
TJB
9742}
9743
9744/* Implement the "print_mention" breakpoint_ops method for
9745 ranged breakpoints. */
9746
9747static void
9748print_mention_ranged_breakpoint (struct breakpoint *b)
9749{
9750 struct bp_location *bl = b->loc;
79a45e25 9751 struct ui_out *uiout = current_uiout;
f1310107
TJB
9752
9753 gdb_assert (bl);
9754 gdb_assert (b->type == bp_hardware_breakpoint);
9755
2d33446d
TT
9756 uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9757 b->number, paddress (bl->gdbarch, bl->address),
9758 paddress (bl->gdbarch, bl->address + bl->length - 1));
f1310107
TJB
9759}
9760
9761/* Implement the "print_recreate" breakpoint_ops method for
9762 ranged breakpoints. */
9763
9764static void
9765print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9766{
f00aae0f 9767 fprintf_unfiltered (fp, "break-range %s, %s",
d28cd78a
TT
9768 event_location_to_string (b->location.get ()),
9769 event_location_to_string (b->location_range_end.get ()));
d9b3f62e 9770 print_recreate_thread (b, fp);
f1310107
TJB
9771}
9772
9773/* The breakpoint_ops structure to be used in ranged breakpoints. */
9774
2060206e 9775static struct breakpoint_ops ranged_breakpoint_ops;
f1310107
TJB
9776
9777/* Find the address where the end of the breakpoint range should be
9778 placed, given the SAL of the end of the range. This is so that if
9779 the user provides a line number, the end of the range is set to the
9780 last instruction of the given line. */
9781
9782static CORE_ADDR
9783find_breakpoint_range_end (struct symtab_and_line sal)
9784{
9785 CORE_ADDR end;
9786
9787 /* If the user provided a PC value, use it. Otherwise,
9788 find the address of the end of the given location. */
9789 if (sal.explicit_pc)
9790 end = sal.pc;
9791 else
9792 {
9793 int ret;
9794 CORE_ADDR start;
9795
9796 ret = find_line_pc_range (sal, &start, &end);
9797 if (!ret)
9798 error (_("Could not find location of the end of the range."));
9799
9800 /* find_line_pc_range returns the start of the next line. */
9801 end--;
9802 }
9803
9804 return end;
9805}
9806
9807/* Implement the "break-range" CLI command. */
9808
9809static void
0b39b52e 9810break_range_command (const char *arg, int from_tty)
f1310107 9811{
f2fc3015 9812 const char *arg_start;
f1310107
TJB
9813 struct linespec_result canonical_start, canonical_end;
9814 int bp_count, can_use_bp, length;
9815 CORE_ADDR end;
9816 struct breakpoint *b;
f1310107
TJB
9817
9818 /* We don't support software ranged breakpoints. */
9819 if (target_ranged_break_num_registers () < 0)
9820 error (_("This target does not support hardware ranged breakpoints."));
9821
9822 bp_count = hw_breakpoint_used_count ();
9823 bp_count += target_ranged_break_num_registers ();
9824 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9825 bp_count, 0);
9826 if (can_use_bp < 0)
9827 error (_("Hardware breakpoints used exceeds limit."));
9828
f8eba3c6 9829 arg = skip_spaces (arg);
f1310107
TJB
9830 if (arg == NULL || arg[0] == '\0')
9831 error(_("No address range specified."));
9832
f8eba3c6 9833 arg_start = arg;
ffc2605c
TT
9834 event_location_up start_location = string_to_event_location (&arg,
9835 current_language);
9836 parse_breakpoint_sals (start_location.get (), &canonical_start);
f1310107
TJB
9837
9838 if (arg[0] != ',')
9839 error (_("Too few arguments."));
6c5b2ebe 9840 else if (canonical_start.lsals.empty ())
f1310107 9841 error (_("Could not find location of the beginning of the range."));
f8eba3c6 9842
6c5b2ebe 9843 const linespec_sals &lsal_start = canonical_start.lsals[0];
f8eba3c6 9844
6c5b2ebe
PA
9845 if (canonical_start.lsals.size () > 1
9846 || lsal_start.sals.size () != 1)
f1310107
TJB
9847 error (_("Cannot create a ranged breakpoint with multiple locations."));
9848
6c5b2ebe 9849 const symtab_and_line &sal_start = lsal_start.sals[0];
81b1e71c 9850 std::string addr_string_start (arg_start, arg - arg_start);
f1310107
TJB
9851
9852 arg++; /* Skip the comma. */
f8eba3c6 9853 arg = skip_spaces (arg);
f1310107
TJB
9854
9855 /* Parse the end location. */
9856
f1310107
TJB
9857 arg_start = arg;
9858
f8eba3c6 9859 /* We call decode_line_full directly here instead of using
f1310107
TJB
9860 parse_breakpoint_sals because we need to specify the start location's
9861 symtab and line as the default symtab and line for the end of the
9862 range. This makes it possible to have ranges like "foo.c:27, +14",
9863 where +14 means 14 lines from the start location. */
ffc2605c
TT
9864 event_location_up end_location = string_to_event_location (&arg,
9865 current_language);
9866 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
f8eba3c6
TT
9867 sal_start.symtab, sal_start.line,
9868 &canonical_end, NULL, NULL);
9869
6c5b2ebe 9870 if (canonical_end.lsals.empty ())
f1310107 9871 error (_("Could not find location of the end of the range."));
f8eba3c6 9872
6c5b2ebe
PA
9873 const linespec_sals &lsal_end = canonical_end.lsals[0];
9874 if (canonical_end.lsals.size () > 1
9875 || lsal_end.sals.size () != 1)
f1310107
TJB
9876 error (_("Cannot create a ranged breakpoint with multiple locations."));
9877
6c5b2ebe 9878 const symtab_and_line &sal_end = lsal_end.sals[0];
f1310107
TJB
9879
9880 end = find_breakpoint_range_end (sal_end);
9881 if (sal_start.pc > end)
177b42fe 9882 error (_("Invalid address range, end precedes start."));
f1310107
TJB
9883
9884 length = end - sal_start.pc + 1;
9885 if (length < 0)
9886 /* Length overflowed. */
9887 error (_("Address range too large."));
9888 else if (length == 1)
9889 {
9890 /* This range is simple enough to be handled by
9891 the `hbreak' command. */
81b1e71c 9892 hbreak_command (&addr_string_start[0], 1);
f1310107
TJB
9893
9894 return;
9895 }
9896
9897 /* Now set up the breakpoint. */
9898 b = set_raw_breakpoint (get_current_arch (), sal_start,
348d480f 9899 bp_hardware_breakpoint, &ranged_breakpoint_ops);
f1310107
TJB
9900 set_breakpoint_count (breakpoint_count + 1);
9901 b->number = breakpoint_count;
9902 b->disposition = disp_donttouch;
d28cd78a
TT
9903 b->location = std::move (start_location);
9904 b->location_range_end = std::move (end_location);
f1310107
TJB
9905 b->loc->length = length;
9906
f1310107 9907 mention (b);
76727919 9908 gdb::observers::breakpoint_created.notify (b);
44702360 9909 update_global_location_list (UGLL_MAY_INSERT);
f1310107
TJB
9910}
9911
4a64f543
MS
9912/* Return non-zero if EXP is verified as constant. Returned zero
9913 means EXP is variable. Also the constant detection may fail for
9914 some constant expressions and in such case still falsely return
9915 zero. */
2e6e3d9c 9916
65d79d4b
SDJ
9917static int
9918watchpoint_exp_is_const (const struct expression *exp)
9919{
9920 int i = exp->nelts;
9921
9922 while (i > 0)
9923 {
9924 int oplenp, argsp;
9925
9926 /* We are only interested in the descriptor of each element. */
9927 operator_length (exp, i, &oplenp, &argsp);
9928 i -= oplenp;
9929
9930 switch (exp->elts[i].opcode)
9931 {
9932 case BINOP_ADD:
9933 case BINOP_SUB:
9934 case BINOP_MUL:
9935 case BINOP_DIV:
9936 case BINOP_REM:
9937 case BINOP_MOD:
9938 case BINOP_LSH:
9939 case BINOP_RSH:
9940 case BINOP_LOGICAL_AND:
9941 case BINOP_LOGICAL_OR:
9942 case BINOP_BITWISE_AND:
9943 case BINOP_BITWISE_IOR:
9944 case BINOP_BITWISE_XOR:
9945 case BINOP_EQUAL:
9946 case BINOP_NOTEQUAL:
9947 case BINOP_LESS:
9948 case BINOP_GTR:
9949 case BINOP_LEQ:
9950 case BINOP_GEQ:
9951 case BINOP_REPEAT:
9952 case BINOP_COMMA:
9953 case BINOP_EXP:
9954 case BINOP_MIN:
9955 case BINOP_MAX:
9956 case BINOP_INTDIV:
9957 case BINOP_CONCAT:
65d79d4b
SDJ
9958 case TERNOP_COND:
9959 case TERNOP_SLICE:
65d79d4b
SDJ
9960
9961 case OP_LONG:
edd079d9 9962 case OP_FLOAT:
65d79d4b
SDJ
9963 case OP_LAST:
9964 case OP_COMPLEX:
9965 case OP_STRING:
65d79d4b
SDJ
9966 case OP_ARRAY:
9967 case OP_TYPE:
608b4967
TT
9968 case OP_TYPEOF:
9969 case OP_DECLTYPE:
6e72ca20 9970 case OP_TYPEID:
65d79d4b
SDJ
9971 case OP_NAME:
9972 case OP_OBJC_NSSTRING:
9973
9974 case UNOP_NEG:
9975 case UNOP_LOGICAL_NOT:
9976 case UNOP_COMPLEMENT:
9977 case UNOP_ADDR:
9978 case UNOP_HIGH:
aeaa2474 9979 case UNOP_CAST:
9eaf6705
TT
9980
9981 case UNOP_CAST_TYPE:
9982 case UNOP_REINTERPRET_CAST:
9983 case UNOP_DYNAMIC_CAST:
4a64f543
MS
9984 /* Unary, binary and ternary operators: We have to check
9985 their operands. If they are constant, then so is the
9986 result of that operation. For instance, if A and B are
9987 determined to be constants, then so is "A + B".
9988
9989 UNOP_IND is one exception to the rule above, because the
9990 value of *ADDR is not necessarily a constant, even when
9991 ADDR is. */
65d79d4b
SDJ
9992 break;
9993
9994 case OP_VAR_VALUE:
9995 /* Check whether the associated symbol is a constant.
4a64f543 9996
65d79d4b 9997 We use SYMBOL_CLASS rather than TYPE_CONST because it's
4a64f543
MS
9998 possible that a buggy compiler could mark a variable as
9999 constant even when it is not, and TYPE_CONST would return
10000 true in this case, while SYMBOL_CLASS wouldn't.
10001
10002 We also have to check for function symbols because they
10003 are always constant. */
65d79d4b
SDJ
10004 {
10005 struct symbol *s = exp->elts[i + 2].symbol;
10006
10007 if (SYMBOL_CLASS (s) != LOC_BLOCK
10008 && SYMBOL_CLASS (s) != LOC_CONST
10009 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10010 return 0;
10011 break;
10012 }
10013
10014 /* The default action is to return 0 because we are using
10015 the optimistic approach here: If we don't know something,
10016 then it is not a constant. */
10017 default:
10018 return 0;
10019 }
10020 }
10021
10022 return 1;
10023}
10024
c1fc2657 10025/* Watchpoint destructor. */
3a5c3e22 10026
c1fc2657 10027watchpoint::~watchpoint ()
3a5c3e22 10028{
c1fc2657
SM
10029 xfree (this->exp_string);
10030 xfree (this->exp_string_reparse);
3a5c3e22
PA
10031}
10032
348d480f
PA
10033/* Implement the "re_set" breakpoint_ops method for watchpoints. */
10034
10035static void
10036re_set_watchpoint (struct breakpoint *b)
10037{
3a5c3e22
PA
10038 struct watchpoint *w = (struct watchpoint *) b;
10039
348d480f
PA
10040 /* Watchpoint can be either on expression using entirely global
10041 variables, or it can be on local variables.
10042
10043 Watchpoints of the first kind are never auto-deleted, and even
10044 persist across program restarts. Since they can use variables
10045 from shared libraries, we need to reparse expression as libraries
10046 are loaded and unloaded.
10047
10048 Watchpoints on local variables can also change meaning as result
10049 of solib event. For example, if a watchpoint uses both a local
10050 and a global variables in expression, it's a local watchpoint,
10051 but unloading of a shared library will make the expression
10052 invalid. This is not a very common use case, but we still
10053 re-evaluate expression, to avoid surprises to the user.
10054
10055 Note that for local watchpoints, we re-evaluate it only if
10056 watchpoints frame id is still valid. If it's not, it means the
10057 watchpoint is out of scope and will be deleted soon. In fact,
10058 I'm not sure we'll ever be called in this case.
10059
10060 If a local watchpoint's frame id is still valid, then
3a5c3e22 10061 w->exp_valid_block is likewise valid, and we can safely use it.
348d480f 10062
3a5c3e22
PA
10063 Don't do anything about disabled watchpoints, since they will be
10064 reevaluated again when enabled. */
10065 update_watchpoint (w, 1 /* reparse */);
348d480f
PA
10066}
10067
77b06cd7
TJB
10068/* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10069
10070static int
10071insert_watchpoint (struct bp_location *bl)
10072{
3a5c3e22
PA
10073 struct watchpoint *w = (struct watchpoint *) bl->owner;
10074 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10075
10076 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10077 w->cond_exp.get ());
77b06cd7
TJB
10078}
10079
10080/* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10081
10082static int
73971819 10083remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
77b06cd7 10084{
3a5c3e22
PA
10085 struct watchpoint *w = (struct watchpoint *) bl->owner;
10086 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10087
10088 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10089 w->cond_exp.get ());
e09342b5
TJB
10090}
10091
e09342b5 10092static int
348d480f 10093breakpoint_hit_watchpoint (const struct bp_location *bl,
bd522513 10094 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 10095 const struct target_waitstatus *ws)
e09342b5 10096{
348d480f 10097 struct breakpoint *b = bl->owner;
3a5c3e22 10098 struct watchpoint *w = (struct watchpoint *) b;
77b06cd7 10099
348d480f
PA
10100 /* Continuable hardware watchpoints are treated as non-existent if the
10101 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10102 some data address). Otherwise gdb won't stop on a break instruction
10103 in the code (not from a breakpoint) when a hardware watchpoint has
10104 been defined. Also skip watchpoints which we know did not trigger
10105 (did not match the data address). */
10106 if (is_hardware_watchpoint (b)
3a5c3e22 10107 && w->watchpoint_triggered == watch_triggered_no)
348d480f 10108 return 0;
9c06b0b4 10109
348d480f 10110 return 1;
9c06b0b4
TJB
10111}
10112
348d480f
PA
10113static void
10114check_status_watchpoint (bpstat bs)
9c06b0b4 10115{
348d480f 10116 gdb_assert (is_watchpoint (bs->breakpoint_at));
9c06b0b4 10117
348d480f 10118 bpstat_check_watchpoint (bs);
9c06b0b4
TJB
10119}
10120
10121/* Implement the "resources_needed" breakpoint_ops method for
348d480f 10122 hardware watchpoints. */
9c06b0b4
TJB
10123
10124static int
348d480f 10125resources_needed_watchpoint (const struct bp_location *bl)
9c06b0b4 10126{
3a5c3e22
PA
10127 struct watchpoint *w = (struct watchpoint *) bl->owner;
10128 int length = w->exact? 1 : bl->length;
348d480f
PA
10129
10130 return target_region_ok_for_hw_watchpoint (bl->address, length);
9c06b0b4
TJB
10131}
10132
10133/* Implement the "works_in_software_mode" breakpoint_ops method for
348d480f 10134 hardware watchpoints. */
9c06b0b4
TJB
10135
10136static int
348d480f 10137works_in_software_mode_watchpoint (const struct breakpoint *b)
9c06b0b4 10138{
efa80663
PA
10139 /* Read and access watchpoints only work with hardware support. */
10140 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9c06b0b4
TJB
10141}
10142
9c06b0b4 10143static enum print_stop_action
348d480f 10144print_it_watchpoint (bpstat bs)
9c06b0b4 10145{
348d480f 10146 struct breakpoint *b;
348d480f 10147 enum print_stop_action result;
3a5c3e22 10148 struct watchpoint *w;
79a45e25 10149 struct ui_out *uiout = current_uiout;
348d480f
PA
10150
10151 gdb_assert (bs->bp_location_at != NULL);
10152
348d480f 10153 b = bs->breakpoint_at;
3a5c3e22 10154 w = (struct watchpoint *) b;
348d480f 10155
f303dbd6
PA
10156 annotate_watchpoint (b->number);
10157 maybe_print_thread_hit_breakpoint (uiout);
10158
d7e74731
PA
10159 string_file stb;
10160
76f9c9cf 10161 gdb::optional<ui_out_emit_tuple> tuple_emitter;
9c06b0b4
TJB
10162 switch (b->type)
10163 {
348d480f 10164 case bp_watchpoint:
9c06b0b4 10165 case bp_hardware_watchpoint:
112e8700
SM
10166 if (uiout->is_mi_like_p ())
10167 uiout->field_string
10168 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f 10169 mention (b);
76f9c9cf 10170 tuple_emitter.emplace (uiout, "value");
112e8700 10171 uiout->text ("\nOld value = ");
850645cf 10172 watchpoint_value_print (bs->old_val.get (), &stb);
112e8700
SM
10173 uiout->field_stream ("old", stb);
10174 uiout->text ("\nNew value = ");
850645cf 10175 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10176 uiout->field_stream ("new", stb);
10177 uiout->text ("\n");
348d480f
PA
10178 /* More than one watchpoint may have been triggered. */
10179 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10180 break;
10181
10182 case bp_read_watchpoint:
112e8700
SM
10183 if (uiout->is_mi_like_p ())
10184 uiout->field_string
10185 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f 10186 mention (b);
76f9c9cf 10187 tuple_emitter.emplace (uiout, "value");
112e8700 10188 uiout->text ("\nValue = ");
850645cf 10189 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10190 uiout->field_stream ("value", stb);
10191 uiout->text ("\n");
348d480f 10192 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10193 break;
10194
10195 case bp_access_watchpoint:
348d480f
PA
10196 if (bs->old_val != NULL)
10197 {
112e8700
SM
10198 if (uiout->is_mi_like_p ())
10199 uiout->field_string
10200 ("reason",
348d480f
PA
10201 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10202 mention (b);
76f9c9cf 10203 tuple_emitter.emplace (uiout, "value");
112e8700 10204 uiout->text ("\nOld value = ");
850645cf 10205 watchpoint_value_print (bs->old_val.get (), &stb);
112e8700
SM
10206 uiout->field_stream ("old", stb);
10207 uiout->text ("\nNew value = ");
348d480f
PA
10208 }
10209 else
10210 {
10211 mention (b);
112e8700
SM
10212 if (uiout->is_mi_like_p ())
10213 uiout->field_string
10214 ("reason",
348d480f 10215 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
76f9c9cf 10216 tuple_emitter.emplace (uiout, "value");
112e8700 10217 uiout->text ("\nValue = ");
348d480f 10218 }
850645cf 10219 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10220 uiout->field_stream ("new", stb);
10221 uiout->text ("\n");
348d480f 10222 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10223 break;
10224 default:
348d480f 10225 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10226 }
10227
348d480f
PA
10228 return result;
10229}
10230
10231/* Implement the "print_mention" breakpoint_ops method for hardware
10232 watchpoints. */
10233
10234static void
10235print_mention_watchpoint (struct breakpoint *b)
10236{
3a5c3e22 10237 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10238 struct ui_out *uiout = current_uiout;
46b9c129 10239 const char *tuple_name;
348d480f
PA
10240
10241 switch (b->type)
10242 {
10243 case bp_watchpoint:
112e8700 10244 uiout->text ("Watchpoint ");
46b9c129 10245 tuple_name = "wpt";
348d480f
PA
10246 break;
10247 case bp_hardware_watchpoint:
112e8700 10248 uiout->text ("Hardware watchpoint ");
46b9c129 10249 tuple_name = "wpt";
348d480f
PA
10250 break;
10251 case bp_read_watchpoint:
112e8700 10252 uiout->text ("Hardware read watchpoint ");
46b9c129 10253 tuple_name = "hw-rwpt";
348d480f
PA
10254 break;
10255 case bp_access_watchpoint:
112e8700 10256 uiout->text ("Hardware access (read/write) watchpoint ");
46b9c129 10257 tuple_name = "hw-awpt";
348d480f
PA
10258 break;
10259 default:
10260 internal_error (__FILE__, __LINE__,
10261 _("Invalid hardware watchpoint type."));
10262 }
10263
46b9c129 10264 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10265 uiout->field_int ("number", b->number);
10266 uiout->text (": ");
10267 uiout->field_string ("exp", w->exp_string);
348d480f
PA
10268}
10269
10270/* Implement the "print_recreate" breakpoint_ops method for
10271 watchpoints. */
10272
10273static void
10274print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10275{
3a5c3e22
PA
10276 struct watchpoint *w = (struct watchpoint *) b;
10277
348d480f
PA
10278 switch (b->type)
10279 {
10280 case bp_watchpoint:
10281 case bp_hardware_watchpoint:
10282 fprintf_unfiltered (fp, "watch");
10283 break;
10284 case bp_read_watchpoint:
10285 fprintf_unfiltered (fp, "rwatch");
10286 break;
10287 case bp_access_watchpoint:
10288 fprintf_unfiltered (fp, "awatch");
10289 break;
10290 default:
10291 internal_error (__FILE__, __LINE__,
10292 _("Invalid watchpoint type."));
10293 }
10294
3a5c3e22 10295 fprintf_unfiltered (fp, " %s", w->exp_string);
d9b3f62e 10296 print_recreate_thread (b, fp);
348d480f
PA
10297}
10298
427cd150
TT
10299/* Implement the "explains_signal" breakpoint_ops method for
10300 watchpoints. */
10301
47591c29 10302static int
427cd150
TT
10303explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10304{
10305 /* A software watchpoint cannot cause a signal other than
10306 GDB_SIGNAL_TRAP. */
10307 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
47591c29 10308 return 0;
427cd150 10309
47591c29 10310 return 1;
427cd150
TT
10311}
10312
348d480f
PA
10313/* The breakpoint_ops structure to be used in hardware watchpoints. */
10314
2060206e 10315static struct breakpoint_ops watchpoint_breakpoint_ops;
348d480f
PA
10316
10317/* Implement the "insert" breakpoint_ops method for
10318 masked hardware watchpoints. */
10319
10320static int
10321insert_masked_watchpoint (struct bp_location *bl)
10322{
3a5c3e22
PA
10323 struct watchpoint *w = (struct watchpoint *) bl->owner;
10324
10325 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10326 bl->watchpoint_type);
10327}
10328
10329/* Implement the "remove" breakpoint_ops method for
10330 masked hardware watchpoints. */
10331
10332static int
73971819 10333remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
348d480f 10334{
3a5c3e22
PA
10335 struct watchpoint *w = (struct watchpoint *) bl->owner;
10336
10337 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10338 bl->watchpoint_type);
10339}
10340
10341/* Implement the "resources_needed" breakpoint_ops method for
10342 masked hardware watchpoints. */
10343
10344static int
10345resources_needed_masked_watchpoint (const struct bp_location *bl)
10346{
3a5c3e22
PA
10347 struct watchpoint *w = (struct watchpoint *) bl->owner;
10348
10349 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
348d480f
PA
10350}
10351
10352/* Implement the "works_in_software_mode" breakpoint_ops method for
10353 masked hardware watchpoints. */
10354
10355static int
10356works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10357{
10358 return 0;
10359}
10360
10361/* Implement the "print_it" breakpoint_ops method for
10362 masked hardware watchpoints. */
10363
10364static enum print_stop_action
10365print_it_masked_watchpoint (bpstat bs)
10366{
10367 struct breakpoint *b = bs->breakpoint_at;
79a45e25 10368 struct ui_out *uiout = current_uiout;
348d480f
PA
10369
10370 /* Masked watchpoints have only one location. */
10371 gdb_assert (b->loc && b->loc->next == NULL);
10372
f303dbd6
PA
10373 annotate_watchpoint (b->number);
10374 maybe_print_thread_hit_breakpoint (uiout);
10375
348d480f
PA
10376 switch (b->type)
10377 {
10378 case bp_hardware_watchpoint:
112e8700
SM
10379 if (uiout->is_mi_like_p ())
10380 uiout->field_string
10381 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f
PA
10382 break;
10383
10384 case bp_read_watchpoint:
112e8700
SM
10385 if (uiout->is_mi_like_p ())
10386 uiout->field_string
10387 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f
PA
10388 break;
10389
10390 case bp_access_watchpoint:
112e8700
SM
10391 if (uiout->is_mi_like_p ())
10392 uiout->field_string
10393 ("reason",
348d480f
PA
10394 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10395 break;
10396 default:
10397 internal_error (__FILE__, __LINE__,
10398 _("Invalid hardware watchpoint type."));
10399 }
10400
10401 mention (b);
112e8700 10402 uiout->text (_("\n\
9c06b0b4
TJB
10403Check the underlying instruction at PC for the memory\n\
10404address and value which triggered this watchpoint.\n"));
112e8700 10405 uiout->text ("\n");
9c06b0b4
TJB
10406
10407 /* More than one watchpoint may have been triggered. */
10408 return PRINT_UNKNOWN;
10409}
10410
10411/* Implement the "print_one_detail" breakpoint_ops method for
10412 masked hardware watchpoints. */
10413
10414static void
10415print_one_detail_masked_watchpoint (const struct breakpoint *b,
10416 struct ui_out *uiout)
10417{
3a5c3e22
PA
10418 struct watchpoint *w = (struct watchpoint *) b;
10419
9c06b0b4
TJB
10420 /* Masked watchpoints have only one location. */
10421 gdb_assert (b->loc && b->loc->next == NULL);
10422
112e8700
SM
10423 uiout->text ("\tmask ");
10424 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10425 uiout->text ("\n");
9c06b0b4
TJB
10426}
10427
10428/* Implement the "print_mention" breakpoint_ops method for
10429 masked hardware watchpoints. */
10430
10431static void
10432print_mention_masked_watchpoint (struct breakpoint *b)
10433{
3a5c3e22 10434 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10435 struct ui_out *uiout = current_uiout;
46b9c129 10436 const char *tuple_name;
9c06b0b4
TJB
10437
10438 switch (b->type)
10439 {
10440 case bp_hardware_watchpoint:
112e8700 10441 uiout->text ("Masked hardware watchpoint ");
46b9c129 10442 tuple_name = "wpt";
9c06b0b4
TJB
10443 break;
10444 case bp_read_watchpoint:
112e8700 10445 uiout->text ("Masked hardware read watchpoint ");
46b9c129 10446 tuple_name = "hw-rwpt";
9c06b0b4
TJB
10447 break;
10448 case bp_access_watchpoint:
112e8700 10449 uiout->text ("Masked hardware access (read/write) watchpoint ");
46b9c129 10450 tuple_name = "hw-awpt";
9c06b0b4
TJB
10451 break;
10452 default:
10453 internal_error (__FILE__, __LINE__,
10454 _("Invalid hardware watchpoint type."));
10455 }
10456
46b9c129 10457 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10458 uiout->field_int ("number", b->number);
10459 uiout->text (": ");
10460 uiout->field_string ("exp", w->exp_string);
9c06b0b4
TJB
10461}
10462
10463/* Implement the "print_recreate" breakpoint_ops method for
10464 masked hardware watchpoints. */
10465
10466static void
10467print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10468{
3a5c3e22 10469 struct watchpoint *w = (struct watchpoint *) b;
9c06b0b4
TJB
10470 char tmp[40];
10471
10472 switch (b->type)
10473 {
10474 case bp_hardware_watchpoint:
10475 fprintf_unfiltered (fp, "watch");
10476 break;
10477 case bp_read_watchpoint:
10478 fprintf_unfiltered (fp, "rwatch");
10479 break;
10480 case bp_access_watchpoint:
10481 fprintf_unfiltered (fp, "awatch");
10482 break;
10483 default:
10484 internal_error (__FILE__, __LINE__,
10485 _("Invalid hardware watchpoint type."));
10486 }
10487
3a5c3e22
PA
10488 sprintf_vma (tmp, w->hw_wp_mask);
10489 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
d9b3f62e 10490 print_recreate_thread (b, fp);
9c06b0b4
TJB
10491}
10492
10493/* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10494
2060206e 10495static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
9c06b0b4
TJB
10496
10497/* Tell whether the given watchpoint is a masked hardware watchpoint. */
10498
10499static int
10500is_masked_watchpoint (const struct breakpoint *b)
10501{
10502 return b->ops == &masked_watchpoint_breakpoint_ops;
10503}
10504
53a5351d
JM
10505/* accessflag: hw_write: watch write,
10506 hw_read: watch read,
10507 hw_access: watch access (read or write) */
c906108c 10508static void
bbc13ae3 10509watch_command_1 (const char *arg, int accessflag, int from_tty,
84f4c1fe 10510 int just_location, int internal)
c906108c 10511{
c1fc2657 10512 struct breakpoint *scope_breakpoint = NULL;
270140bd 10513 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
b926417a 10514 struct value *result;
bb9d5f81 10515 int saved_bitpos = 0, saved_bitsize = 0;
bbc13ae3
KS
10516 const char *exp_start = NULL;
10517 const char *exp_end = NULL;
10518 const char *tok, *end_tok;
9c06b0b4 10519 int toklen = -1;
bbc13ae3
KS
10520 const char *cond_start = NULL;
10521 const char *cond_end = NULL;
c906108c 10522 enum bptype bp_type;
37e4754d 10523 int thread = -1;
0cf6dd15 10524 int pc = 0;
9c06b0b4
TJB
10525 /* Flag to indicate whether we are going to use masks for
10526 the hardware watchpoint. */
10527 int use_mask = 0;
10528 CORE_ADDR mask = 0;
c906108c 10529
37e4754d
LM
10530 /* Make sure that we actually have parameters to parse. */
10531 if (arg != NULL && arg[0] != '\0')
10532 {
bbc13ae3
KS
10533 const char *value_start;
10534
10535 exp_end = arg + strlen (arg);
37e4754d 10536
9c06b0b4
TJB
10537 /* Look for "parameter value" pairs at the end
10538 of the arguments string. */
bbc13ae3 10539 for (tok = exp_end - 1; tok > arg; tok--)
9c06b0b4
TJB
10540 {
10541 /* Skip whitespace at the end of the argument list. */
10542 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10543 tok--;
10544
10545 /* Find the beginning of the last token.
10546 This is the value of the parameter. */
10547 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10548 tok--;
10549 value_start = tok + 1;
10550
10551 /* Skip whitespace. */
10552 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10553 tok--;
10554
10555 end_tok = tok;
10556
10557 /* Find the beginning of the second to last token.
10558 This is the parameter itself. */
10559 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10560 tok--;
10561 tok++;
10562 toklen = end_tok - tok + 1;
10563
61012eef 10564 if (toklen == 6 && startswith (tok, "thread"))
9c06b0b4 10565 {
5d5658a1 10566 struct thread_info *thr;
9c06b0b4
TJB
10567 /* At this point we've found a "thread" token, which means
10568 the user is trying to set a watchpoint that triggers
10569 only in a specific thread. */
5d5658a1 10570 const char *endp;
37e4754d 10571
9c06b0b4
TJB
10572 if (thread != -1)
10573 error(_("You can specify only one thread."));
37e4754d 10574
9c06b0b4 10575 /* Extract the thread ID from the next token. */
5d5658a1 10576 thr = parse_thread_id (value_start, &endp);
37e4754d 10577
5d5658a1 10578 /* Check if the user provided a valid thread ID. */
9c06b0b4 10579 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
5d5658a1 10580 invalid_thread_id_error (value_start);
9c06b0b4 10581
5d5658a1 10582 thread = thr->global_num;
9c06b0b4 10583 }
61012eef 10584 else if (toklen == 4 && startswith (tok, "mask"))
9c06b0b4
TJB
10585 {
10586 /* We've found a "mask" token, which means the user wants to
10587 create a hardware watchpoint that is going to have the mask
10588 facility. */
10589 struct value *mask_value, *mark;
37e4754d 10590
9c06b0b4
TJB
10591 if (use_mask)
10592 error(_("You can specify only one mask."));
37e4754d 10593
9c06b0b4 10594 use_mask = just_location = 1;
37e4754d 10595
9c06b0b4
TJB
10596 mark = value_mark ();
10597 mask_value = parse_to_comma_and_eval (&value_start);
10598 mask = value_as_address (mask_value);
10599 value_free_to_mark (mark);
10600 }
10601 else
10602 /* We didn't recognize what we found. We should stop here. */
10603 break;
37e4754d 10604
9c06b0b4
TJB
10605 /* Truncate the string and get rid of the "parameter value" pair before
10606 the arguments string is parsed by the parse_exp_1 function. */
bbc13ae3 10607 exp_end = tok;
9c06b0b4 10608 }
37e4754d 10609 }
bbc13ae3
KS
10610 else
10611 exp_end = arg;
37e4754d 10612
bbc13ae3
KS
10613 /* Parse the rest of the arguments. From here on out, everything
10614 is in terms of a newly allocated string instead of the original
10615 ARG. */
aee1fcdf 10616 innermost_block.reset ();
81b1e71c
TT
10617 std::string expression (arg, exp_end - arg);
10618 exp_start = arg = expression.c_str ();
4d01a485 10619 expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
c906108c 10620 exp_end = arg;
fa8a61dc
TT
10621 /* Remove trailing whitespace from the expression before saving it.
10622 This makes the eventual display of the expression string a bit
10623 prettier. */
10624 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10625 --exp_end;
10626
65d79d4b 10627 /* Checking if the expression is not constant. */
4d01a485 10628 if (watchpoint_exp_is_const (exp.get ()))
65d79d4b
SDJ
10629 {
10630 int len;
10631
10632 len = exp_end - exp_start;
10633 while (len > 0 && isspace (exp_start[len - 1]))
10634 len--;
10635 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10636 }
10637
aee1fcdf 10638 exp_valid_block = innermost_block.block ();
b926417a 10639 struct value *mark = value_mark ();
850645cf
TT
10640 struct value *val_as_value = nullptr;
10641 fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10642 just_location);
06a64a0b 10643
850645cf 10644 if (val_as_value != NULL && just_location)
bb9d5f81 10645 {
850645cf
TT
10646 saved_bitpos = value_bitpos (val_as_value);
10647 saved_bitsize = value_bitsize (val_as_value);
bb9d5f81
PP
10648 }
10649
850645cf 10650 value_ref_ptr val;
06a64a0b
TT
10651 if (just_location)
10652 {
9c06b0b4
TJB
10653 int ret;
10654
06a64a0b 10655 exp_valid_block = NULL;
850645cf 10656 val = release_value (value_addr (result));
06a64a0b 10657 value_free_to_mark (mark);
9c06b0b4
TJB
10658
10659 if (use_mask)
10660 {
850645cf 10661 ret = target_masked_watch_num_registers (value_as_address (val.get ()),
9c06b0b4
TJB
10662 mask);
10663 if (ret == -1)
10664 error (_("This target does not support masked watchpoints."));
10665 else if (ret == -2)
10666 error (_("Invalid mask or memory region."));
10667 }
06a64a0b 10668 }
850645cf
TT
10669 else if (val_as_value != NULL)
10670 val = release_value (val_as_value);
c906108c 10671
f1735a53
TT
10672 tok = skip_spaces (arg);
10673 end_tok = skip_to_space (tok);
c906108c
SS
10674
10675 toklen = end_tok - tok;
10676 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10677 {
aee1fcdf 10678 innermost_block.reset ();
c906108c 10679 tok = cond_start = end_tok + 1;
4d01a485 10680 parse_exp_1 (&tok, 0, 0, 0);
60e1c644
PA
10681
10682 /* The watchpoint expression may not be local, but the condition
10683 may still be. E.g.: `watch global if local > 0'. */
aee1fcdf 10684 cond_exp_valid_block = innermost_block.block ();
60e1c644 10685
c906108c
SS
10686 cond_end = tok;
10687 }
10688 if (*tok)
8a3fe4f8 10689 error (_("Junk at end of command."));
c906108c 10690
441d7c93
PA
10691 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10692
10693 /* Save this because create_internal_breakpoint below invalidates
10694 'wp_frame'. */
10695 frame_id watchpoint_frame = get_frame_id (wp_frame);
d983da9c
DJ
10696
10697 /* If the expression is "local", then set up a "watchpoint scope"
10698 breakpoint at the point where we've left the scope of the watchpoint
10699 expression. Create the scope breakpoint before the watchpoint, so
10700 that we will encounter it first in bpstat_stop_status. */
441d7c93 10701 if (exp_valid_block != NULL && wp_frame != NULL)
d983da9c 10702 {
441d7c93
PA
10703 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10704
10705 if (frame_id_p (caller_frame_id))
edb3359d 10706 {
441d7c93
PA
10707 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10708 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10709
edb3359d 10710 scope_breakpoint
441d7c93 10711 = create_internal_breakpoint (caller_arch, caller_pc,
06edf0c0
PA
10712 bp_watchpoint_scope,
10713 &momentary_breakpoint_ops);
d983da9c 10714
441d7c93
PA
10715 /* create_internal_breakpoint could invalidate WP_FRAME. */
10716 wp_frame = NULL;
10717
edb3359d 10718 scope_breakpoint->enable_state = bp_enabled;
d983da9c 10719
edb3359d
DJ
10720 /* Automatically delete the breakpoint when it hits. */
10721 scope_breakpoint->disposition = disp_del;
d983da9c 10722
edb3359d 10723 /* Only break in the proper frame (help with recursion). */
441d7c93 10724 scope_breakpoint->frame_id = caller_frame_id;
d983da9c 10725
edb3359d 10726 /* Set the address at which we will stop. */
441d7c93
PA
10727 scope_breakpoint->loc->gdbarch = caller_arch;
10728 scope_breakpoint->loc->requested_address = caller_pc;
edb3359d 10729 scope_breakpoint->loc->address
a6d9a66e
UW
10730 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10731 scope_breakpoint->loc->requested_address,
edb3359d
DJ
10732 scope_breakpoint->type);
10733 }
d983da9c
DJ
10734 }
10735
e8369a73
AB
10736 /* Now set up the breakpoint. We create all watchpoints as hardware
10737 watchpoints here even if hardware watchpoints are turned off, a call
10738 to update_watchpoint later in this function will cause the type to
10739 drop back to bp_watchpoint (software watchpoint) if required. */
10740
10741 if (accessflag == hw_read)
10742 bp_type = bp_read_watchpoint;
10743 else if (accessflag == hw_access)
10744 bp_type = bp_access_watchpoint;
10745 else
10746 bp_type = bp_hardware_watchpoint;
3a5c3e22 10747
b270e6f9 10748 std::unique_ptr<watchpoint> w (new watchpoint ());
c1fc2657 10749
348d480f 10750 if (use_mask)
b270e6f9 10751 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 10752 &masked_watchpoint_breakpoint_ops);
348d480f 10753 else
b270e6f9 10754 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 10755 &watchpoint_breakpoint_ops);
c1fc2657
SM
10756 w->thread = thread;
10757 w->disposition = disp_donttouch;
10758 w->pspace = current_program_space;
b22e99fd 10759 w->exp = std::move (exp);
3a5c3e22
PA
10760 w->exp_valid_block = exp_valid_block;
10761 w->cond_exp_valid_block = cond_exp_valid_block;
06a64a0b
TT
10762 if (just_location)
10763 {
850645cf
TT
10764 struct type *t = value_type (val.get ());
10765 CORE_ADDR addr = value_as_address (val.get ());
06a64a0b 10766
43cc5389
TT
10767 w->exp_string_reparse
10768 = current_language->la_watch_location_expression (t, addr).release ();
06a64a0b 10769
3a5c3e22 10770 w->exp_string = xstrprintf ("-location %.*s",
d63d0675 10771 (int) (exp_end - exp_start), exp_start);
06a64a0b
TT
10772 }
10773 else
3a5c3e22 10774 w->exp_string = savestring (exp_start, exp_end - exp_start);
9c06b0b4
TJB
10775
10776 if (use_mask)
10777 {
3a5c3e22 10778 w->hw_wp_mask = mask;
9c06b0b4
TJB
10779 }
10780 else
10781 {
3a5c3e22 10782 w->val = val;
bb9d5f81
PP
10783 w->val_bitpos = saved_bitpos;
10784 w->val_bitsize = saved_bitsize;
3a5c3e22 10785 w->val_valid = 1;
9c06b0b4 10786 }
77b06cd7 10787
c906108c 10788 if (cond_start)
c1fc2657 10789 w->cond_string = savestring (cond_start, cond_end - cond_start);
c906108c 10790 else
c1fc2657 10791 w->cond_string = 0;
c5aa993b 10792
441d7c93 10793 if (frame_id_p (watchpoint_frame))
f6bc2008 10794 {
441d7c93 10795 w->watchpoint_frame = watchpoint_frame;
3a5c3e22 10796 w->watchpoint_thread = inferior_ptid;
f6bc2008 10797 }
c906108c 10798 else
f6bc2008 10799 {
3a5c3e22
PA
10800 w->watchpoint_frame = null_frame_id;
10801 w->watchpoint_thread = null_ptid;
f6bc2008 10802 }
c906108c 10803
d983da9c 10804 if (scope_breakpoint != NULL)
c906108c 10805 {
d983da9c
DJ
10806 /* The scope breakpoint is related to the watchpoint. We will
10807 need to act on them together. */
c1fc2657 10808 w->related_breakpoint = scope_breakpoint;
b270e6f9 10809 scope_breakpoint->related_breakpoint = w.get ();
c906108c 10810 }
d983da9c 10811
06a64a0b
TT
10812 if (!just_location)
10813 value_free_to_mark (mark);
2d134ed3 10814
b270e6f9
TT
10815 /* Finally update the new watchpoint. This creates the locations
10816 that should be inserted. */
10817 update_watchpoint (w.get (), 1);
a9634178 10818
b270e6f9 10819 install_breakpoint (internal, std::move (w), 1);
c906108c
SS
10820}
10821
e09342b5 10822/* Return count of debug registers needed to watch the given expression.
e09342b5 10823 If the watchpoint cannot be handled in hardware return zero. */
c906108c 10824
c906108c 10825static int
a6535de1 10826can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
c906108c
SS
10827{
10828 int found_memory_cnt = 0;
10829
10830 /* Did the user specifically forbid us to use hardware watchpoints? */
c5aa993b 10831 if (!can_use_hw_watchpoints)
c906108c 10832 return 0;
c5aa993b 10833
a6535de1
TT
10834 gdb_assert (!vals.empty ());
10835 struct value *head = vals[0].get ();
10836
5c44784c
JM
10837 /* Make sure that the value of the expression depends only upon
10838 memory contents, and values computed from them within GDB. If we
10839 find any register references or function calls, we can't use a
10840 hardware watchpoint.
10841
10842 The idea here is that evaluating an expression generates a series
10843 of values, one holding the value of every subexpression. (The
10844 expression a*b+c has five subexpressions: a, b, a*b, c, and
10845 a*b+c.) GDB's values hold almost enough information to establish
10846 the criteria given above --- they identify memory lvalues,
10847 register lvalues, computed values, etcetera. So we can evaluate
10848 the expression, and then scan the chain of values that leaves
10849 behind to decide whether we can detect any possible change to the
10850 expression's final value using only hardware watchpoints.
10851
10852 However, I don't think that the values returned by inferior
10853 function calls are special in any way. So this function may not
10854 notice that an expression involving an inferior function call
10855 can't be watched with hardware watchpoints. FIXME. */
a6535de1 10856 for (const value_ref_ptr &iter : vals)
c906108c 10857 {
a6535de1
TT
10858 struct value *v = iter.get ();
10859
5c44784c 10860 if (VALUE_LVAL (v) == lval_memory)
c906108c 10861 {
8464be76
DJ
10862 if (v != head && value_lazy (v))
10863 /* A lazy memory lvalue in the chain is one that GDB never
10864 needed to fetch; we either just used its address (e.g.,
10865 `a' in `a.b') or we never needed it at all (e.g., `a'
10866 in `a,b'). This doesn't apply to HEAD; if that is
10867 lazy then it was not readable, but watch it anyway. */
5c44784c 10868 ;
53a5351d 10869 else
5c44784c
JM
10870 {
10871 /* Ahh, memory we actually used! Check if we can cover
10872 it with hardware watchpoints. */
df407dfe 10873 struct type *vtype = check_typedef (value_type (v));
2e70b7b9
MS
10874
10875 /* We only watch structs and arrays if user asked for it
10876 explicitly, never if they just happen to appear in a
10877 middle of some value chain. */
10878 if (v == head
10879 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10880 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10881 {
42ae5230 10882 CORE_ADDR vaddr = value_address (v);
e09342b5
TJB
10883 int len;
10884 int num_regs;
10885
a9634178 10886 len = (target_exact_watchpoints
e09342b5
TJB
10887 && is_scalar_type_recursive (vtype))?
10888 1 : TYPE_LENGTH (value_type (v));
2e70b7b9 10889
e09342b5
TJB
10890 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10891 if (!num_regs)
2e70b7b9
MS
10892 return 0;
10893 else
e09342b5 10894 found_memory_cnt += num_regs;
2e70b7b9 10895 }
5c44784c 10896 }
c5aa993b 10897 }
5086187c
AC
10898 else if (VALUE_LVAL (v) != not_lval
10899 && deprecated_value_modifiable (v) == 0)
38b6c3b3 10900 return 0; /* These are values from the history (e.g., $1). */
5086187c 10901 else if (VALUE_LVAL (v) == lval_register)
38b6c3b3 10902 return 0; /* Cannot watch a register with a HW watchpoint. */
c906108c
SS
10903 }
10904
10905 /* The expression itself looks suitable for using a hardware
10906 watchpoint, but give the target machine a chance to reject it. */
10907 return found_memory_cnt;
10908}
10909
8b93c638 10910void
f2fc3015 10911watch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 10912{
84f4c1fe 10913 watch_command_1 (arg, hw_write, from_tty, 0, internal);
06a64a0b
TT
10914}
10915
06a64a0b
TT
10916/* A helper function that looks for the "-location" argument and then
10917 calls watch_command_1. */
10918
10919static void
0b39b52e 10920watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
06a64a0b
TT
10921{
10922 int just_location = 0;
10923
10924 if (arg
10925 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10926 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10927 {
e9cafbcc 10928 arg = skip_spaces (arg);
06a64a0b
TT
10929 just_location = 1;
10930 }
10931
84f4c1fe 10932 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
8b93c638 10933}
8926118c 10934
c5aa993b 10935static void
0b39b52e 10936watch_command (const char *arg, int from_tty)
c906108c 10937{
06a64a0b 10938 watch_maybe_just_location (arg, hw_write, from_tty);
c906108c
SS
10939}
10940
8b93c638 10941void
f2fc3015 10942rwatch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 10943{
84f4c1fe 10944 watch_command_1 (arg, hw_read, from_tty, 0, internal);
8b93c638 10945}
8926118c 10946
c5aa993b 10947static void
0b39b52e 10948rwatch_command (const char *arg, int from_tty)
c906108c 10949{
06a64a0b 10950 watch_maybe_just_location (arg, hw_read, from_tty);
c906108c
SS
10951}
10952
8b93c638 10953void
f2fc3015 10954awatch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 10955{
84f4c1fe 10956 watch_command_1 (arg, hw_access, from_tty, 0, internal);
8b93c638 10957}
8926118c 10958
c5aa993b 10959static void
0b39b52e 10960awatch_command (const char *arg, int from_tty)
c906108c 10961{
06a64a0b 10962 watch_maybe_just_location (arg, hw_access, from_tty);
c906108c 10963}
c906108c 10964\f
c5aa993b 10965
cfc31633
PA
10966/* Data for the FSM that manages the until(location)/advance commands
10967 in infcmd.c. Here because it uses the mechanisms of
10968 breakpoints. */
c906108c 10969
cfc31633 10970struct until_break_fsm
bfec99b2 10971{
cfc31633
PA
10972 /* The base class. */
10973 struct thread_fsm thread_fsm;
10974
10975 /* The thread that as current when the command was executed. */
10976 int thread;
10977
10978 /* The breakpoint set at the destination location. */
10979 struct breakpoint *location_breakpoint;
10980
10981 /* Breakpoint set at the return address in the caller frame. May be
10982 NULL. */
10983 struct breakpoint *caller_breakpoint;
bfec99b2
PA
10984};
10985
8980e177
PA
10986static void until_break_fsm_clean_up (struct thread_fsm *self,
10987 struct thread_info *thread);
10988static int until_break_fsm_should_stop (struct thread_fsm *self,
10989 struct thread_info *thread);
cfc31633
PA
10990static enum async_reply_reason
10991 until_break_fsm_async_reply_reason (struct thread_fsm *self);
10992
10993/* until_break_fsm's vtable. */
10994
10995static struct thread_fsm_ops until_break_fsm_ops =
10996{
10997 NULL, /* dtor */
10998 until_break_fsm_clean_up,
10999 until_break_fsm_should_stop,
11000 NULL, /* return_value */
11001 until_break_fsm_async_reply_reason,
11002};
11003
11004/* Allocate a new until_break_command_fsm. */
11005
11006static struct until_break_fsm *
8980e177 11007new_until_break_fsm (struct interp *cmd_interp, int thread,
454dafbd
TT
11008 breakpoint_up &&location_breakpoint,
11009 breakpoint_up &&caller_breakpoint)
cfc31633
PA
11010{
11011 struct until_break_fsm *sm;
11012
11013 sm = XCNEW (struct until_break_fsm);
8980e177 11014 thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
cfc31633
PA
11015
11016 sm->thread = thread;
454dafbd
TT
11017 sm->location_breakpoint = location_breakpoint.release ();
11018 sm->caller_breakpoint = caller_breakpoint.release ();
cfc31633
PA
11019
11020 return sm;
11021}
11022
11023/* Implementation of the 'should_stop' FSM method for the
11024 until(location)/advance commands. */
11025
11026static int
8980e177
PA
11027until_break_fsm_should_stop (struct thread_fsm *self,
11028 struct thread_info *tp)
cfc31633
PA
11029{
11030 struct until_break_fsm *sm = (struct until_break_fsm *) self;
cfc31633
PA
11031
11032 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11033 sm->location_breakpoint) != NULL
11034 || (sm->caller_breakpoint != NULL
11035 && bpstat_find_breakpoint (tp->control.stop_bpstat,
11036 sm->caller_breakpoint) != NULL))
11037 thread_fsm_set_finished (self);
11038
11039 return 1;
11040}
11041
11042/* Implementation of the 'clean_up' FSM method for the
11043 until(location)/advance commands. */
11044
c2c6d25f 11045static void
8980e177
PA
11046until_break_fsm_clean_up (struct thread_fsm *self,
11047 struct thread_info *thread)
43ff13b4 11048{
cfc31633 11049 struct until_break_fsm *sm = (struct until_break_fsm *) self;
bfec99b2 11050
cfc31633
PA
11051 /* Clean up our temporary breakpoints. */
11052 if (sm->location_breakpoint != NULL)
11053 {
11054 delete_breakpoint (sm->location_breakpoint);
11055 sm->location_breakpoint = NULL;
11056 }
11057 if (sm->caller_breakpoint != NULL)
11058 {
11059 delete_breakpoint (sm->caller_breakpoint);
11060 sm->caller_breakpoint = NULL;
11061 }
11062 delete_longjmp_breakpoint (sm->thread);
11063}
11064
11065/* Implementation of the 'async_reply_reason' FSM method for the
11066 until(location)/advance commands. */
11067
11068static enum async_reply_reason
11069until_break_fsm_async_reply_reason (struct thread_fsm *self)
11070{
11071 return EXEC_ASYNC_LOCATION_REACHED;
43ff13b4
JM
11072}
11073
c906108c 11074void
f2fc3015 11075until_break_command (const char *arg, int from_tty, int anywhere)
c906108c 11076{
8556afb4
PA
11077 struct frame_info *frame;
11078 struct gdbarch *frame_gdbarch;
11079 struct frame_id stack_frame_id;
11080 struct frame_id caller_frame_id;
ffc2605c 11081 struct cleanup *old_chain;
186c406b
TT
11082 int thread;
11083 struct thread_info *tp;
cfc31633 11084 struct until_break_fsm *sm;
c906108c 11085
70509625 11086 clear_proceed_status (0);
c906108c
SS
11087
11088 /* Set a breakpoint where the user wants it and at return from
4a64f543 11089 this function. */
c5aa993b 11090
ffc2605c 11091 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f 11092
6c5b2ebe
PA
11093 std::vector<symtab_and_line> sals
11094 = (last_displayed_sal_is_valid ()
11095 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11096 get_last_displayed_symtab (),
11097 get_last_displayed_line ())
11098 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11099 NULL, (struct symtab *) NULL, 0));
c5aa993b 11100
6c5b2ebe 11101 if (sals.size () != 1)
8a3fe4f8 11102 error (_("Couldn't get information on specified line."));
c5aa993b 11103
6c5b2ebe 11104 symtab_and_line &sal = sals[0];
c5aa993b 11105
c906108c 11106 if (*arg)
8a3fe4f8 11107 error (_("Junk at end of arguments."));
c5aa993b 11108
c906108c 11109 resolve_sal_pc (&sal);
c5aa993b 11110
186c406b 11111 tp = inferior_thread ();
5d5658a1 11112 thread = tp->global_num;
186c406b 11113
883bc8d1
PA
11114 old_chain = make_cleanup (null_cleanup, NULL);
11115
8556afb4
PA
11116 /* Note linespec handling above invalidates the frame chain.
11117 Installing a breakpoint also invalidates the frame chain (as it
11118 may need to switch threads), so do any frame handling before
11119 that. */
11120
11121 frame = get_selected_frame (NULL);
11122 frame_gdbarch = get_frame_arch (frame);
11123 stack_frame_id = get_stack_frame_id (frame);
11124 caller_frame_id = frame_unwind_caller_id (frame);
883bc8d1 11125
ae66c1fc
EZ
11126 /* Keep within the current frame, or in frames called by the current
11127 one. */
edb3359d 11128
454dafbd 11129 breakpoint_up caller_breakpoint;
883bc8d1 11130 if (frame_id_p (caller_frame_id))
c906108c 11131 {
883bc8d1 11132 struct symtab_and_line sal2;
cfc31633 11133 struct gdbarch *caller_gdbarch;
883bc8d1
PA
11134
11135 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11136 sal2.pc = frame_unwind_caller_pc (frame);
cfc31633
PA
11137 caller_gdbarch = frame_unwind_caller_arch (frame);
11138 caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11139 sal2,
11140 caller_frame_id,
11141 bp_until);
186c406b 11142
883bc8d1 11143 set_longjmp_breakpoint (tp, caller_frame_id);
186c406b 11144 make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
c906108c 11145 }
c5aa993b 11146
c70a6932
JK
11147 /* set_momentary_breakpoint could invalidate FRAME. */
11148 frame = NULL;
11149
454dafbd 11150 breakpoint_up location_breakpoint;
883bc8d1
PA
11151 if (anywhere)
11152 /* If the user told us to continue until a specified location,
11153 we don't specify a frame at which we need to stop. */
cfc31633
PA
11154 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11155 null_frame_id, bp_until);
883bc8d1
PA
11156 else
11157 /* Otherwise, specify the selected frame, because we want to stop
11158 only at the very same frame. */
cfc31633
PA
11159 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11160 stack_frame_id, bp_until);
883bc8d1 11161
8980e177 11162 sm = new_until_break_fsm (command_interp (), tp->global_num,
454dafbd
TT
11163 std::move (location_breakpoint),
11164 std::move (caller_breakpoint));
cfc31633 11165 tp->thread_fsm = &sm->thread_fsm;
f107f563 11166
cfc31633 11167 discard_cleanups (old_chain);
f107f563 11168
cfc31633 11169 proceed (-1, GDB_SIGNAL_DEFAULT);
c906108c 11170}
ae66c1fc 11171
c906108c
SS
11172/* This function attempts to parse an optional "if <cond>" clause
11173 from the arg string. If one is not found, it returns NULL.
c5aa993b 11174
c906108c
SS
11175 Else, it returns a pointer to the condition string. (It does not
11176 attempt to evaluate the string against a particular block.) And,
11177 it updates arg to point to the first character following the parsed
4a64f543 11178 if clause in the arg string. */
53a5351d 11179
63160a43
PA
11180const char *
11181ep_parse_optional_if_clause (const char **arg)
c906108c 11182{
63160a43 11183 const char *cond_string;
c5aa993b
JM
11184
11185 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
c906108c 11186 return NULL;
c5aa993b 11187
4a64f543 11188 /* Skip the "if" keyword. */
c906108c 11189 (*arg) += 2;
c5aa993b 11190
c906108c 11191 /* Skip any extra leading whitespace, and record the start of the
4a64f543 11192 condition string. */
f1735a53 11193 *arg = skip_spaces (*arg);
c906108c 11194 cond_string = *arg;
c5aa993b 11195
4a64f543
MS
11196 /* Assume that the condition occupies the remainder of the arg
11197 string. */
c906108c 11198 (*arg) += strlen (cond_string);
c5aa993b 11199
c906108c
SS
11200 return cond_string;
11201}
c5aa993b 11202
c906108c
SS
11203/* Commands to deal with catching events, such as signals, exceptions,
11204 process start/exit, etc. */
c5aa993b
JM
11205
11206typedef enum
11207{
44feb3ce
TT
11208 catch_fork_temporary, catch_vfork_temporary,
11209 catch_fork_permanent, catch_vfork_permanent
c5aa993b
JM
11210}
11211catch_fork_kind;
11212
c906108c 11213static void
eb4c3f4a 11214catch_fork_command_1 (const char *arg, int from_tty,
cc59ec59 11215 struct cmd_list_element *command)
c906108c 11216{
a6d9a66e 11217 struct gdbarch *gdbarch = get_current_arch ();
63160a43 11218 const char *cond_string = NULL;
44feb3ce
TT
11219 catch_fork_kind fork_kind;
11220 int tempflag;
11221
11222 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11223 tempflag = (fork_kind == catch_fork_temporary
11224 || fork_kind == catch_vfork_temporary);
c5aa993b 11225
44feb3ce
TT
11226 if (!arg)
11227 arg = "";
f1735a53 11228 arg = skip_spaces (arg);
c5aa993b 11229
c906108c 11230 /* The allowed syntax is:
c5aa993b
JM
11231 catch [v]fork
11232 catch [v]fork if <cond>
11233
4a64f543 11234 First, check if there's an if clause. */
c906108c 11235 cond_string = ep_parse_optional_if_clause (&arg);
c5aa993b 11236
c906108c 11237 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11238 error (_("Junk at end of arguments."));
c5aa993b 11239
c906108c 11240 /* If this target supports it, create a fork or vfork catchpoint
4a64f543 11241 and enable reporting of such events. */
c5aa993b
JM
11242 switch (fork_kind)
11243 {
44feb3ce
TT
11244 case catch_fork_temporary:
11245 case catch_fork_permanent:
a6d9a66e 11246 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11247 &catch_fork_breakpoint_ops);
c906108c 11248 break;
44feb3ce
TT
11249 case catch_vfork_temporary:
11250 case catch_vfork_permanent:
a6d9a66e 11251 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11252 &catch_vfork_breakpoint_ops);
c906108c 11253 break;
c5aa993b 11254 default:
8a3fe4f8 11255 error (_("unsupported or unknown fork kind; cannot catch it"));
c906108c 11256 break;
c5aa993b 11257 }
c906108c
SS
11258}
11259
11260static void
eb4c3f4a 11261catch_exec_command_1 (const char *arg, int from_tty,
cc59ec59 11262 struct cmd_list_element *command)
c906108c 11263{
a6d9a66e 11264 struct gdbarch *gdbarch = get_current_arch ();
44feb3ce 11265 int tempflag;
63160a43 11266 const char *cond_string = NULL;
c906108c 11267
44feb3ce
TT
11268 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11269
11270 if (!arg)
11271 arg = "";
f1735a53 11272 arg = skip_spaces (arg);
c906108c
SS
11273
11274 /* The allowed syntax is:
c5aa993b
JM
11275 catch exec
11276 catch exec if <cond>
c906108c 11277
4a64f543 11278 First, check if there's an if clause. */
c906108c
SS
11279 cond_string = ep_parse_optional_if_clause (&arg);
11280
11281 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11282 error (_("Junk at end of arguments."));
c906108c 11283
b270e6f9
TT
11284 std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11285 init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
b4d90040
PA
11286 &catch_exec_breakpoint_ops);
11287 c->exec_pathname = NULL;
11288
b270e6f9 11289 install_breakpoint (0, std::move (c), 1);
c906108c 11290}
c5aa993b 11291
9ac4176b 11292void
28010a5d
PA
11293init_ada_exception_breakpoint (struct breakpoint *b,
11294 struct gdbarch *gdbarch,
11295 struct symtab_and_line sal,
f2fc3015 11296 const char *addr_string,
c0a91b2b 11297 const struct breakpoint_ops *ops,
28010a5d 11298 int tempflag,
349774ef 11299 int enabled,
28010a5d 11300 int from_tty)
f7f9143b 11301{
f7f9143b
JB
11302 if (from_tty)
11303 {
5af949e3
UW
11304 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11305 if (!loc_gdbarch)
11306 loc_gdbarch = gdbarch;
11307
6c95b8df
PA
11308 describe_other_breakpoints (loc_gdbarch,
11309 sal.pspace, sal.pc, sal.section, -1);
f7f9143b
JB
11310 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11311 version for exception catchpoints, because two catchpoints
11312 used for different exception names will use the same address.
11313 In this case, a "breakpoint ... also set at..." warning is
4a64f543 11314 unproductive. Besides, the warning phrasing is also a bit
e5dd4106 11315 inappropriate, we should use the word catchpoint, and tell
f7f9143b
JB
11316 the user what type of catchpoint it is. The above is good
11317 enough for now, though. */
11318 }
11319
28010a5d 11320 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
f7f9143b 11321
349774ef 11322 b->enable_state = enabled ? bp_enabled : bp_disabled;
f7f9143b 11323 b->disposition = tempflag ? disp_del : disp_donttouch;
d28cd78a
TT
11324 b->location = string_to_event_location (&addr_string,
11325 language_def (language_ada));
f7f9143b 11326 b->language = language_ada;
f7f9143b
JB
11327}
11328
c906108c 11329static void
981a3fb3 11330catch_command (const char *arg, int from_tty)
c906108c 11331{
44feb3ce 11332 error (_("Catch requires an event name."));
c906108c
SS
11333}
11334\f
11335
11336static void
981a3fb3 11337tcatch_command (const char *arg, int from_tty)
c906108c 11338{
44feb3ce 11339 error (_("Catch requires an event name."));
c906108c
SS
11340}
11341
81b1e71c 11342/* Compare two breakpoints and return a strcmp-like result. */
8a2c437b
TT
11343
11344static int
81b1e71c 11345compare_breakpoints (const breakpoint *a, const breakpoint *b)
8a2c437b 11346{
81b1e71c
TT
11347 uintptr_t ua = (uintptr_t) a;
11348 uintptr_t ub = (uintptr_t) b;
8a2c437b 11349
81b1e71c 11350 if (a->number < b->number)
8a2c437b 11351 return -1;
81b1e71c 11352 else if (a->number > b->number)
8a2c437b
TT
11353 return 1;
11354
11355 /* Now sort by address, in case we see, e..g, two breakpoints with
11356 the number 0. */
11357 if (ua < ub)
11358 return -1;
94b0e70d 11359 return ua > ub ? 1 : 0;
8a2c437b
TT
11360}
11361
80f8a6eb 11362/* Delete breakpoints by address or line. */
c906108c
SS
11363
11364static void
0b39b52e 11365clear_command (const char *arg, int from_tty)
c906108c 11366{
81b1e71c 11367 struct breakpoint *b;
c906108c 11368 int default_match;
c906108c 11369
6c5b2ebe
PA
11370 std::vector<symtab_and_line> decoded_sals;
11371 symtab_and_line last_sal;
11372 gdb::array_view<symtab_and_line> sals;
c906108c
SS
11373 if (arg)
11374 {
6c5b2ebe
PA
11375 decoded_sals
11376 = decode_line_with_current_source (arg,
11377 (DECODE_LINE_FUNFIRSTLINE
11378 | DECODE_LINE_LIST_MODE));
c906108c 11379 default_match = 0;
6c5b2ebe 11380 sals = decoded_sals;
c906108c
SS
11381 }
11382 else
11383 {
1bfeeb0f
JL
11384 /* Set sal's line, symtab, pc, and pspace to the values
11385 corresponding to the last call to print_frame_info. If the
11386 codepoint is not valid, this will set all the fields to 0. */
51abb421 11387 last_sal = get_last_displayed_sal ();
6c5b2ebe 11388 if (last_sal.symtab == 0)
8a3fe4f8 11389 error (_("No source file specified."));
c906108c 11390
c906108c 11391 default_match = 1;
6c5b2ebe 11392 sals = last_sal;
c906108c
SS
11393 }
11394
4a64f543
MS
11395 /* We don't call resolve_sal_pc here. That's not as bad as it
11396 seems, because all existing breakpoints typically have both
11397 file/line and pc set. So, if clear is given file/line, we can
11398 match this to existing breakpoint without obtaining pc at all.
ed0616c6
VP
11399
11400 We only support clearing given the address explicitly
11401 present in breakpoint table. Say, we've set breakpoint
4a64f543 11402 at file:line. There were several PC values for that file:line,
ed0616c6 11403 due to optimization, all in one block.
4a64f543
MS
11404
11405 We've picked one PC value. If "clear" is issued with another
ed0616c6
VP
11406 PC corresponding to the same file:line, the breakpoint won't
11407 be cleared. We probably can still clear the breakpoint, but
11408 since the other PC value is never presented to user, user
11409 can only find it by guessing, and it does not seem important
11410 to support that. */
11411
4a64f543
MS
11412 /* For each line spec given, delete bps which correspond to it. Do
11413 it in two passes, solely to preserve the current behavior that
11414 from_tty is forced true if we delete more than one
11415 breakpoint. */
c906108c 11416
81b1e71c 11417 std::vector<struct breakpoint *> found;
6c5b2ebe 11418 for (const auto &sal : sals)
c906108c 11419 {
05cba821
JK
11420 const char *sal_fullname;
11421
c906108c 11422 /* If exact pc given, clear bpts at that pc.
c5aa993b
JM
11423 If line given (pc == 0), clear all bpts on specified line.
11424 If defaulting, clear all bpts on default line
c906108c 11425 or at default pc.
c5aa993b
JM
11426
11427 defaulting sal.pc != 0 tests to do
11428
11429 0 1 pc
11430 1 1 pc _and_ line
11431 0 0 line
11432 1 0 <can't happen> */
c906108c 11433
05cba821
JK
11434 sal_fullname = (sal.symtab == NULL
11435 ? NULL : symtab_to_fullname (sal.symtab));
c906108c 11436
4a64f543 11437 /* Find all matching breakpoints and add them to 'found'. */
d6e956e5 11438 ALL_BREAKPOINTS (b)
c5aa993b 11439 {
0d381245 11440 int match = 0;
4a64f543 11441 /* Are we going to delete b? */
cc60f2e3 11442 if (b->type != bp_none && !is_watchpoint (b))
0d381245
VP
11443 {
11444 struct bp_location *loc = b->loc;
11445 for (; loc; loc = loc->next)
11446 {
f8eba3c6
TT
11447 /* If the user specified file:line, don't allow a PC
11448 match. This matches historical gdb behavior. */
11449 int pc_match = (!sal.explicit_line
11450 && sal.pc
11451 && (loc->pspace == sal.pspace)
11452 && (loc->address == sal.pc)
11453 && (!section_is_overlay (loc->section)
11454 || loc->section == sal.section));
4aac40c8
TT
11455 int line_match = 0;
11456
11457 if ((default_match || sal.explicit_line)
2f202fde 11458 && loc->symtab != NULL
05cba821 11459 && sal_fullname != NULL
4aac40c8 11460 && sal.pspace == loc->pspace
05cba821
JK
11461 && loc->line_number == sal.line
11462 && filename_cmp (symtab_to_fullname (loc->symtab),
11463 sal_fullname) == 0)
11464 line_match = 1;
4aac40c8 11465
0d381245
VP
11466 if (pc_match || line_match)
11467 {
11468 match = 1;
11469 break;
11470 }
11471 }
11472 }
11473
11474 if (match)
81b1e71c 11475 found.push_back (b);
c906108c 11476 }
80f8a6eb 11477 }
8a2c437b 11478
80f8a6eb 11479 /* Now go thru the 'found' chain and delete them. */
81b1e71c 11480 if (found.empty ())
80f8a6eb
MS
11481 {
11482 if (arg)
8a3fe4f8 11483 error (_("No breakpoint at %s."), arg);
80f8a6eb 11484 else
8a3fe4f8 11485 error (_("No breakpoint at this line."));
80f8a6eb 11486 }
c906108c 11487
8a2c437b 11488 /* Remove duplicates from the vec. */
81b1e71c 11489 std::sort (found.begin (), found.end (),
b926417a 11490 [] (const breakpoint *bp_a, const breakpoint *bp_b)
81b1e71c 11491 {
b926417a 11492 return compare_breakpoints (bp_a, bp_b) < 0;
81b1e71c
TT
11493 });
11494 found.erase (std::unique (found.begin (), found.end (),
b926417a 11495 [] (const breakpoint *bp_a, const breakpoint *bp_b)
81b1e71c 11496 {
b926417a 11497 return compare_breakpoints (bp_a, bp_b) == 0;
81b1e71c
TT
11498 }),
11499 found.end ());
8a2c437b 11500
81b1e71c 11501 if (found.size () > 1)
4a64f543 11502 from_tty = 1; /* Always report if deleted more than one. */
80f8a6eb 11503 if (from_tty)
a3f17187 11504 {
81b1e71c 11505 if (found.size () == 1)
a3f17187
AC
11506 printf_unfiltered (_("Deleted breakpoint "));
11507 else
11508 printf_unfiltered (_("Deleted breakpoints "));
11509 }
d6e956e5 11510
81b1e71c 11511 for (breakpoint *iter : found)
80f8a6eb 11512 {
c5aa993b 11513 if (from_tty)
81b1e71c
TT
11514 printf_unfiltered ("%d ", iter->number);
11515 delete_breakpoint (iter);
c906108c 11516 }
80f8a6eb
MS
11517 if (from_tty)
11518 putchar_unfiltered ('\n');
c906108c
SS
11519}
11520\f
11521/* Delete breakpoint in BS if they are `delete' breakpoints and
11522 all breakpoints that are marked for deletion, whether hit or not.
11523 This is called after any breakpoint is hit, or after errors. */
11524
11525void
fba45db2 11526breakpoint_auto_delete (bpstat bs)
c906108c 11527{
35df4500 11528 struct breakpoint *b, *b_tmp;
c906108c
SS
11529
11530 for (; bs; bs = bs->next)
f431efe5
PA
11531 if (bs->breakpoint_at
11532 && bs->breakpoint_at->disposition == disp_del
c906108c 11533 && bs->stop)
f431efe5 11534 delete_breakpoint (bs->breakpoint_at);
c906108c 11535
35df4500 11536 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 11537 {
b5de0fa7 11538 if (b->disposition == disp_del_at_next_stop)
c5aa993b
JM
11539 delete_breakpoint (b);
11540 }
c906108c
SS
11541}
11542
4a64f543
MS
11543/* A comparison function for bp_location AP and BP being interfaced to
11544 qsort. Sort elements primarily by their ADDRESS (no matter what
11545 does breakpoint_address_is_meaningful say for its OWNER),
1a853c52 11546 secondarily by ordering first permanent elements and
4a64f543 11547 terciarily just ensuring the array is sorted stable way despite
e5dd4106 11548 qsort being an unstable algorithm. */
876fa593
JK
11549
11550static int
f5336ca5 11551bp_locations_compare (const void *ap, const void *bp)
876fa593 11552{
9a3c8263
SM
11553 const struct bp_location *a = *(const struct bp_location **) ap;
11554 const struct bp_location *b = *(const struct bp_location **) bp;
876fa593
JK
11555
11556 if (a->address != b->address)
11557 return (a->address > b->address) - (a->address < b->address);
11558
dea2aa5f
LM
11559 /* Sort locations at the same address by their pspace number, keeping
11560 locations of the same inferior (in a multi-inferior environment)
11561 grouped. */
11562
11563 if (a->pspace->num != b->pspace->num)
11564 return ((a->pspace->num > b->pspace->num)
11565 - (a->pspace->num < b->pspace->num));
11566
876fa593 11567 /* Sort permanent breakpoints first. */
1a853c52
PA
11568 if (a->permanent != b->permanent)
11569 return (a->permanent < b->permanent) - (a->permanent > b->permanent);
876fa593 11570
c56a97f9
JK
11571 /* Make the internal GDB representation stable across GDB runs
11572 where A and B memory inside GDB can differ. Breakpoint locations of
11573 the same type at the same address can be sorted in arbitrary order. */
876fa593
JK
11574
11575 if (a->owner->number != b->owner->number)
c56a97f9
JK
11576 return ((a->owner->number > b->owner->number)
11577 - (a->owner->number < b->owner->number));
876fa593
JK
11578
11579 return (a > b) - (a < b);
11580}
11581
f5336ca5
PA
11582/* Set bp_locations_placed_address_before_address_max and
11583 bp_locations_shadow_len_after_address_max according to the current
11584 content of the bp_locations array. */
f7545552
TT
11585
11586static void
f5336ca5 11587bp_locations_target_extensions_update (void)
f7545552 11588{
876fa593
JK
11589 struct bp_location *bl, **blp_tmp;
11590
f5336ca5
PA
11591 bp_locations_placed_address_before_address_max = 0;
11592 bp_locations_shadow_len_after_address_max = 0;
876fa593
JK
11593
11594 ALL_BP_LOCATIONS (bl, blp_tmp)
11595 {
11596 CORE_ADDR start, end, addr;
11597
11598 if (!bp_location_has_shadow (bl))
11599 continue;
11600
11601 start = bl->target_info.placed_address;
11602 end = start + bl->target_info.shadow_len;
11603
11604 gdb_assert (bl->address >= start);
11605 addr = bl->address - start;
f5336ca5
PA
11606 if (addr > bp_locations_placed_address_before_address_max)
11607 bp_locations_placed_address_before_address_max = addr;
876fa593
JK
11608
11609 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
11610
11611 gdb_assert (bl->address < end);
11612 addr = end - bl->address;
f5336ca5
PA
11613 if (addr > bp_locations_shadow_len_after_address_max)
11614 bp_locations_shadow_len_after_address_max = addr;
876fa593 11615 }
f7545552
TT
11616}
11617
1e4d1764
YQ
11618/* Download tracepoint locations if they haven't been. */
11619
11620static void
11621download_tracepoint_locations (void)
11622{
7ed2c994 11623 struct breakpoint *b;
dd2e65cc 11624 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
1e4d1764 11625
5ed8105e 11626 scoped_restore_current_pspace_and_thread restore_pspace_thread;
1e4d1764 11627
7ed2c994 11628 ALL_TRACEPOINTS (b)
1e4d1764 11629 {
7ed2c994 11630 struct bp_location *bl;
1e4d1764 11631 struct tracepoint *t;
f2a8bc8a 11632 int bp_location_downloaded = 0;
1e4d1764 11633
7ed2c994 11634 if ((b->type == bp_fast_tracepoint
1e4d1764
YQ
11635 ? !may_insert_fast_tracepoints
11636 : !may_insert_tracepoints))
11637 continue;
11638
dd2e65cc
YQ
11639 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11640 {
11641 if (target_can_download_tracepoint ())
11642 can_download_tracepoint = TRIBOOL_TRUE;
11643 else
11644 can_download_tracepoint = TRIBOOL_FALSE;
11645 }
11646
11647 if (can_download_tracepoint == TRIBOOL_FALSE)
11648 break;
11649
7ed2c994
YQ
11650 for (bl = b->loc; bl; bl = bl->next)
11651 {
11652 /* In tracepoint, locations are _never_ duplicated, so
11653 should_be_inserted is equivalent to
11654 unduplicated_should_be_inserted. */
11655 if (!should_be_inserted (bl) || bl->inserted)
11656 continue;
1e4d1764 11657
7ed2c994 11658 switch_to_program_space_and_thread (bl->pspace);
1e4d1764 11659
7ed2c994 11660 target_download_tracepoint (bl);
1e4d1764 11661
7ed2c994 11662 bl->inserted = 1;
f2a8bc8a 11663 bp_location_downloaded = 1;
7ed2c994
YQ
11664 }
11665 t = (struct tracepoint *) b;
11666 t->number_on_target = b->number;
f2a8bc8a 11667 if (bp_location_downloaded)
76727919 11668 gdb::observers::breakpoint_modified.notify (b);
1e4d1764 11669 }
1e4d1764
YQ
11670}
11671
934709f0
PW
11672/* Swap the insertion/duplication state between two locations. */
11673
11674static void
11675swap_insertion (struct bp_location *left, struct bp_location *right)
11676{
11677 const int left_inserted = left->inserted;
11678 const int left_duplicate = left->duplicate;
b775012e 11679 const int left_needs_update = left->needs_update;
934709f0
PW
11680 const struct bp_target_info left_target_info = left->target_info;
11681
1e4d1764
YQ
11682 /* Locations of tracepoints can never be duplicated. */
11683 if (is_tracepoint (left->owner))
11684 gdb_assert (!left->duplicate);
11685 if (is_tracepoint (right->owner))
11686 gdb_assert (!right->duplicate);
11687
934709f0
PW
11688 left->inserted = right->inserted;
11689 left->duplicate = right->duplicate;
b775012e 11690 left->needs_update = right->needs_update;
934709f0
PW
11691 left->target_info = right->target_info;
11692 right->inserted = left_inserted;
11693 right->duplicate = left_duplicate;
b775012e 11694 right->needs_update = left_needs_update;
934709f0
PW
11695 right->target_info = left_target_info;
11696}
11697
b775012e
LM
11698/* Force the re-insertion of the locations at ADDRESS. This is called
11699 once a new/deleted/modified duplicate location is found and we are evaluating
11700 conditions on the target's side. Such conditions need to be updated on
11701 the target. */
11702
11703static void
11704force_breakpoint_reinsertion (struct bp_location *bl)
11705{
11706 struct bp_location **locp = NULL, **loc2p;
11707 struct bp_location *loc;
11708 CORE_ADDR address = 0;
11709 int pspace_num;
11710
11711 address = bl->address;
11712 pspace_num = bl->pspace->num;
11713
11714 /* This is only meaningful if the target is
11715 evaluating conditions and if the user has
11716 opted for condition evaluation on the target's
11717 side. */
11718 if (gdb_evaluates_breakpoint_condition_p ()
11719 || !target_supports_evaluation_of_breakpoint_conditions ())
11720 return;
11721
11722 /* Flag all breakpoint locations with this address and
11723 the same program space as the location
11724 as "its condition has changed". We need to
11725 update the conditions on the target's side. */
11726 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11727 {
11728 loc = *loc2p;
11729
11730 if (!is_breakpoint (loc->owner)
11731 || pspace_num != loc->pspace->num)
11732 continue;
11733
11734 /* Flag the location appropriately. We use a different state to
11735 let everyone know that we already updated the set of locations
11736 with addr bl->address and program space bl->pspace. This is so
11737 we don't have to keep calling these functions just to mark locations
11738 that have already been marked. */
11739 loc->condition_changed = condition_updated;
11740
11741 /* Free the agent expression bytecode as well. We will compute
11742 it later on. */
833177a4 11743 loc->cond_bytecode.reset ();
b775012e
LM
11744 }
11745}
44702360
PA
11746/* Called whether new breakpoints are created, or existing breakpoints
11747 deleted, to update the global location list and recompute which
11748 locations are duplicate of which.
b775012e 11749
04086b45
PA
11750 The INSERT_MODE flag determines whether locations may not, may, or
11751 shall be inserted now. See 'enum ugll_insert_mode' for more
11752 info. */
b60e7edf 11753
0d381245 11754static void
44702360 11755update_global_location_list (enum ugll_insert_mode insert_mode)
0d381245 11756{
74960c60 11757 struct breakpoint *b;
876fa593 11758 struct bp_location **locp, *loc;
b775012e
LM
11759 /* Last breakpoint location address that was marked for update. */
11760 CORE_ADDR last_addr = 0;
11761 /* Last breakpoint location program space that was marked for update. */
11762 int last_pspace_num = -1;
f7545552 11763
2d134ed3
PA
11764 /* Used in the duplicates detection below. When iterating over all
11765 bp_locations, points to the first bp_location of a given address.
11766 Breakpoints and watchpoints of different types are never
11767 duplicates of each other. Keep one pointer for each type of
11768 breakpoint/watchpoint, so we only need to loop over all locations
11769 once. */
11770 struct bp_location *bp_loc_first; /* breakpoint */
11771 struct bp_location *wp_loc_first; /* hardware watchpoint */
11772 struct bp_location *awp_loc_first; /* access watchpoint */
11773 struct bp_location *rwp_loc_first; /* read watchpoint */
876fa593 11774
f5336ca5
PA
11775 /* Saved former bp_locations array which we compare against the newly
11776 built bp_locations from the current state of ALL_BREAKPOINTS. */
81b1e71c 11777 struct bp_location **old_locp;
f5336ca5 11778 unsigned old_locations_count;
81b1e71c 11779 gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
876fa593 11780
f5336ca5
PA
11781 old_locations_count = bp_locations_count;
11782 bp_locations = NULL;
11783 bp_locations_count = 0;
0d381245 11784
74960c60 11785 ALL_BREAKPOINTS (b)
876fa593 11786 for (loc = b->loc; loc; loc = loc->next)
f5336ca5 11787 bp_locations_count++;
876fa593 11788
f5336ca5
PA
11789 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11790 locp = bp_locations;
876fa593
JK
11791 ALL_BREAKPOINTS (b)
11792 for (loc = b->loc; loc; loc = loc->next)
11793 *locp++ = loc;
f5336ca5
PA
11794 qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11795 bp_locations_compare);
876fa593 11796
f5336ca5 11797 bp_locations_target_extensions_update ();
74960c60 11798
4a64f543
MS
11799 /* Identify bp_location instances that are no longer present in the
11800 new list, and therefore should be freed. Note that it's not
11801 necessary that those locations should be removed from inferior --
11802 if there's another location at the same address (previously
11803 marked as duplicate), we don't need to remove/insert the
11804 location.
876fa593 11805
4a64f543
MS
11806 LOCP is kept in sync with OLD_LOCP, each pointing to the current
11807 and former bp_location array state respectively. */
876fa593 11808
f5336ca5 11809 locp = bp_locations;
81b1e71c
TT
11810 for (old_locp = old_locations.get ();
11811 old_locp < old_locations.get () + old_locations_count;
876fa593 11812 old_locp++)
74960c60 11813 {
876fa593 11814 struct bp_location *old_loc = *old_locp;
c7d46a38 11815 struct bp_location **loc2p;
876fa593 11816
e5dd4106 11817 /* Tells if 'old_loc' is found among the new locations. If
4a64f543 11818 not, we have to free it. */
c7d46a38 11819 int found_object = 0;
20874c92
VP
11820 /* Tells if the location should remain inserted in the target. */
11821 int keep_in_target = 0;
11822 int removed = 0;
876fa593 11823
4a64f543
MS
11824 /* Skip LOCP entries which will definitely never be needed.
11825 Stop either at or being the one matching OLD_LOC. */
f5336ca5 11826 while (locp < bp_locations + bp_locations_count
c7d46a38 11827 && (*locp)->address < old_loc->address)
876fa593 11828 locp++;
c7d46a38
PA
11829
11830 for (loc2p = locp;
f5336ca5 11831 (loc2p < bp_locations + bp_locations_count
c7d46a38
PA
11832 && (*loc2p)->address == old_loc->address);
11833 loc2p++)
11834 {
b775012e
LM
11835 /* Check if this is a new/duplicated location or a duplicated
11836 location that had its condition modified. If so, we want to send
11837 its condition to the target if evaluation of conditions is taking
11838 place there. */
11839 if ((*loc2p)->condition_changed == condition_modified
11840 && (last_addr != old_loc->address
11841 || last_pspace_num != old_loc->pspace->num))
c7d46a38 11842 {
b775012e
LM
11843 force_breakpoint_reinsertion (*loc2p);
11844 last_pspace_num = old_loc->pspace->num;
c7d46a38 11845 }
b775012e
LM
11846
11847 if (*loc2p == old_loc)
11848 found_object = 1;
c7d46a38 11849 }
74960c60 11850
b775012e
LM
11851 /* We have already handled this address, update it so that we don't
11852 have to go through updates again. */
11853 last_addr = old_loc->address;
11854
11855 /* Target-side condition evaluation: Handle deleted locations. */
11856 if (!found_object)
11857 force_breakpoint_reinsertion (old_loc);
11858
4a64f543
MS
11859 /* If this location is no longer present, and inserted, look if
11860 there's maybe a new location at the same address. If so,
11861 mark that one inserted, and don't remove this one. This is
11862 needed so that we don't have a time window where a breakpoint
11863 at certain location is not inserted. */
74960c60 11864
876fa593 11865 if (old_loc->inserted)
0d381245 11866 {
4a64f543
MS
11867 /* If the location is inserted now, we might have to remove
11868 it. */
74960c60 11869
876fa593 11870 if (found_object && should_be_inserted (old_loc))
74960c60 11871 {
4a64f543
MS
11872 /* The location is still present in the location list,
11873 and still should be inserted. Don't do anything. */
20874c92 11874 keep_in_target = 1;
74960c60
VP
11875 }
11876 else
11877 {
b775012e
LM
11878 /* This location still exists, but it won't be kept in the
11879 target since it may have been disabled. We proceed to
11880 remove its target-side condition. */
11881
4a64f543
MS
11882 /* The location is either no longer present, or got
11883 disabled. See if there's another location at the
11884 same address, in which case we don't need to remove
11885 this one from the target. */
876fa593 11886
2bdf28a0 11887 /* OLD_LOC comes from existing struct breakpoint. */
876fa593
JK
11888 if (breakpoint_address_is_meaningful (old_loc->owner))
11889 {
876fa593 11890 for (loc2p = locp;
f5336ca5 11891 (loc2p < bp_locations + bp_locations_count
c7d46a38 11892 && (*loc2p)->address == old_loc->address);
876fa593
JK
11893 loc2p++)
11894 {
11895 struct bp_location *loc2 = *loc2p;
11896
2d134ed3 11897 if (breakpoint_locations_match (loc2, old_loc))
c7d46a38 11898 {
85d721b8
PA
11899 /* Read watchpoint locations are switched to
11900 access watchpoints, if the former are not
11901 supported, but the latter are. */
11902 if (is_hardware_watchpoint (old_loc->owner))
11903 {
11904 gdb_assert (is_hardware_watchpoint (loc2->owner));
11905 loc2->watchpoint_type = old_loc->watchpoint_type;
11906 }
11907
934709f0
PW
11908 /* loc2 is a duplicated location. We need to check
11909 if it should be inserted in case it will be
11910 unduplicated. */
11911 if (loc2 != old_loc
11912 && unduplicated_should_be_inserted (loc2))
c7d46a38 11913 {
934709f0 11914 swap_insertion (old_loc, loc2);
c7d46a38
PA
11915 keep_in_target = 1;
11916 break;
11917 }
876fa593
JK
11918 }
11919 }
11920 }
74960c60
VP
11921 }
11922
20874c92
VP
11923 if (!keep_in_target)
11924 {
834c0d03 11925 if (remove_breakpoint (old_loc))
20874c92 11926 {
4a64f543
MS
11927 /* This is just about all we can do. We could keep
11928 this location on the global list, and try to
11929 remove it next time, but there's no particular
11930 reason why we will succeed next time.
20874c92 11931
4a64f543
MS
11932 Note that at this point, old_loc->owner is still
11933 valid, as delete_breakpoint frees the breakpoint
11934 only after calling us. */
3e43a32a
MS
11935 printf_filtered (_("warning: Error removing "
11936 "breakpoint %d\n"),
876fa593 11937 old_loc->owner->number);
20874c92
VP
11938 }
11939 removed = 1;
11940 }
0d381245 11941 }
74960c60
VP
11942
11943 if (!found_object)
1c5cfe86 11944 {
fbea99ea 11945 if (removed && target_is_non_stop_p ()
1cf4d951 11946 && need_moribund_for_location_type (old_loc))
20874c92 11947 {
db82e815
PA
11948 /* This location was removed from the target. In
11949 non-stop mode, a race condition is possible where
11950 we've removed a breakpoint, but stop events for that
11951 breakpoint are already queued and will arrive later.
11952 We apply an heuristic to be able to distinguish such
11953 SIGTRAPs from other random SIGTRAPs: we keep this
11954 breakpoint location for a bit, and will retire it
11955 after we see some number of events. The theory here
11956 is that reporting of events should, "on the average",
11957 be fair, so after a while we'll see events from all
11958 threads that have anything of interest, and no longer
11959 need to keep this breakpoint location around. We
11960 don't hold locations forever so to reduce chances of
11961 mistaking a non-breakpoint SIGTRAP for a breakpoint
11962 SIGTRAP.
11963
11964 The heuristic failing can be disastrous on
11965 decr_pc_after_break targets.
11966
11967 On decr_pc_after_break targets, like e.g., x86-linux,
11968 if we fail to recognize a late breakpoint SIGTRAP,
11969 because events_till_retirement has reached 0 too
11970 soon, we'll fail to do the PC adjustment, and report
11971 a random SIGTRAP to the user. When the user resumes
11972 the inferior, it will most likely immediately crash
2dec564e 11973 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
db82e815
PA
11974 corrupted, because of being resumed e.g., in the
11975 middle of a multi-byte instruction, or skipped a
11976 one-byte instruction. This was actually seen happen
11977 on native x86-linux, and should be less rare on
11978 targets that do not support new thread events, like
11979 remote, due to the heuristic depending on
11980 thread_count.
11981
11982 Mistaking a random SIGTRAP for a breakpoint trap
11983 causes similar symptoms (PC adjustment applied when
11984 it shouldn't), but then again, playing with SIGTRAPs
11985 behind the debugger's back is asking for trouble.
11986
11987 Since hardware watchpoint traps are always
11988 distinguishable from other traps, so we don't need to
11989 apply keep hardware watchpoint moribund locations
11990 around. We simply always ignore hardware watchpoint
11991 traps we can no longer explain. */
11992
876fa593
JK
11993 old_loc->events_till_retirement = 3 * (thread_count () + 1);
11994 old_loc->owner = NULL;
20874c92 11995
1123588c 11996 moribund_locations.push_back (old_loc);
1c5cfe86
PA
11997 }
11998 else
f431efe5
PA
11999 {
12000 old_loc->owner = NULL;
12001 decref_bp_location (&old_loc);
12002 }
20874c92 12003 }
74960c60 12004 }
1c5cfe86 12005
348d480f
PA
12006 /* Rescan breakpoints at the same address and section, marking the
12007 first one as "first" and any others as "duplicates". This is so
12008 that the bpt instruction is only inserted once. If we have a
12009 permanent breakpoint at the same place as BPT, make that one the
12010 official one, and the rest as duplicates. Permanent breakpoints
12011 are sorted first for the same address.
12012
12013 Do the same for hardware watchpoints, but also considering the
12014 watchpoint's type (regular/access/read) and length. */
12015
12016 bp_loc_first = NULL;
12017 wp_loc_first = NULL;
12018 awp_loc_first = NULL;
12019 rwp_loc_first = NULL;
12020 ALL_BP_LOCATIONS (loc, locp)
12021 {
12022 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12023 non-NULL. */
348d480f 12024 struct bp_location **loc_first_p;
d3fbdd86 12025 b = loc->owner;
348d480f 12026
6f380991 12027 if (!unduplicated_should_be_inserted (loc)
348d480f 12028 || !breakpoint_address_is_meaningful (b)
1e4d1764
YQ
12029 /* Don't detect duplicate for tracepoint locations because they are
12030 never duplicated. See the comments in field `duplicate' of
12031 `struct bp_location'. */
348d480f 12032 || is_tracepoint (b))
b775012e
LM
12033 {
12034 /* Clear the condition modification flag. */
12035 loc->condition_changed = condition_unchanged;
12036 continue;
12037 }
348d480f 12038
348d480f
PA
12039 if (b->type == bp_hardware_watchpoint)
12040 loc_first_p = &wp_loc_first;
12041 else if (b->type == bp_read_watchpoint)
12042 loc_first_p = &rwp_loc_first;
12043 else if (b->type == bp_access_watchpoint)
12044 loc_first_p = &awp_loc_first;
12045 else
12046 loc_first_p = &bp_loc_first;
12047
12048 if (*loc_first_p == NULL
12049 || (overlay_debugging && loc->section != (*loc_first_p)->section)
12050 || !breakpoint_locations_match (loc, *loc_first_p))
12051 {
12052 *loc_first_p = loc;
12053 loc->duplicate = 0;
b775012e
LM
12054
12055 if (is_breakpoint (loc->owner) && loc->condition_changed)
12056 {
12057 loc->needs_update = 1;
12058 /* Clear the condition modification flag. */
12059 loc->condition_changed = condition_unchanged;
12060 }
348d480f
PA
12061 continue;
12062 }
12063
934709f0
PW
12064
12065 /* This and the above ensure the invariant that the first location
12066 is not duplicated, and is the inserted one.
12067 All following are marked as duplicated, and are not inserted. */
12068 if (loc->inserted)
12069 swap_insertion (loc, *loc_first_p);
348d480f
PA
12070 loc->duplicate = 1;
12071
b775012e
LM
12072 /* Clear the condition modification flag. */
12073 loc->condition_changed = condition_unchanged;
348d480f
PA
12074 }
12075
a25a5a45 12076 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
b775012e 12077 {
04086b45 12078 if (insert_mode != UGLL_DONT_INSERT)
b775012e
LM
12079 insert_breakpoint_locations ();
12080 else
12081 {
44702360
PA
12082 /* Even though the caller told us to not insert new
12083 locations, we may still need to update conditions on the
12084 target's side of breakpoints that were already inserted
12085 if the target is evaluating breakpoint conditions. We
b775012e
LM
12086 only update conditions for locations that are marked
12087 "needs_update". */
12088 update_inserted_breakpoint_locations ();
12089 }
12090 }
348d480f 12091
04086b45 12092 if (insert_mode != UGLL_DONT_INSERT)
1e4d1764 12093 download_tracepoint_locations ();
348d480f
PA
12094}
12095
12096void
12097breakpoint_retire_moribund (void)
12098{
1123588c
TT
12099 for (int ix = 0; ix < moribund_locations.size (); ++ix)
12100 {
12101 struct bp_location *loc = moribund_locations[ix];
12102 if (--(loc->events_till_retirement) == 0)
12103 {
12104 decref_bp_location (&loc);
12105 unordered_remove (moribund_locations, ix);
12106 --ix;
12107 }
12108 }
348d480f
PA
12109}
12110
12111static void
44702360 12112update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
348d480f 12113{
348d480f 12114
492d29ea
PA
12115 TRY
12116 {
12117 update_global_location_list (insert_mode);
12118 }
12119 CATCH (e, RETURN_MASK_ERROR)
12120 {
12121 }
12122 END_CATCH
348d480f
PA
12123}
12124
12125/* Clear BKP from a BPS. */
12126
12127static void
12128bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12129{
12130 bpstat bs;
12131
12132 for (bs = bps; bs; bs = bs->next)
12133 if (bs->breakpoint_at == bpt)
12134 {
12135 bs->breakpoint_at = NULL;
12136 bs->old_val = NULL;
12137 /* bs->commands will be freed later. */
12138 }
12139}
12140
12141/* Callback for iterate_over_threads. */
12142static int
12143bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12144{
9a3c8263 12145 struct breakpoint *bpt = (struct breakpoint *) data;
348d480f
PA
12146
12147 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12148 return 0;
12149}
12150
12151/* Helper for breakpoint and tracepoint breakpoint_ops->mention
12152 callbacks. */
12153
12154static void
12155say_where (struct breakpoint *b)
12156{
12157 struct value_print_options opts;
12158
12159 get_user_print_options (&opts);
12160
12161 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12162 single string. */
12163 if (b->loc == NULL)
12164 {
f00aae0f
KS
12165 /* For pending locations, the output differs slightly based
12166 on b->extra_string. If this is non-NULL, it contains either
12167 a condition or dprintf arguments. */
12168 if (b->extra_string == NULL)
12169 {
12170 printf_filtered (_(" (%s) pending."),
d28cd78a 12171 event_location_to_string (b->location.get ()));
f00aae0f
KS
12172 }
12173 else if (b->type == bp_dprintf)
12174 {
12175 printf_filtered (_(" (%s,%s) pending."),
d28cd78a 12176 event_location_to_string (b->location.get ()),
f00aae0f
KS
12177 b->extra_string);
12178 }
12179 else
12180 {
12181 printf_filtered (_(" (%s %s) pending."),
d28cd78a 12182 event_location_to_string (b->location.get ()),
f00aae0f
KS
12183 b->extra_string);
12184 }
348d480f
PA
12185 }
12186 else
12187 {
2f202fde 12188 if (opts.addressprint || b->loc->symtab == NULL)
348d480f
PA
12189 {
12190 printf_filtered (" at ");
12191 fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12192 gdb_stdout);
12193 }
2f202fde 12194 if (b->loc->symtab != NULL)
f8eba3c6
TT
12195 {
12196 /* If there is a single location, we can print the location
12197 more nicely. */
12198 if (b->loc->next == NULL)
0bb296cb
TT
12199 {
12200 puts_filtered (": file ");
12201 fputs_styled (symtab_to_filename_for_display (b->loc->symtab),
12202 file_name_style.style (),
12203 gdb_stdout);
12204 printf_filtered (", line %d.",
12205 b->loc->line_number);
12206 }
f8eba3c6
TT
12207 else
12208 /* This is not ideal, but each location may have a
12209 different file name, and this at least reflects the
12210 real situation somewhat. */
f00aae0f 12211 printf_filtered (": %s.",
d28cd78a 12212 event_location_to_string (b->location.get ()));
f8eba3c6 12213 }
348d480f
PA
12214
12215 if (b->loc->next)
12216 {
12217 struct bp_location *loc = b->loc;
12218 int n = 0;
12219 for (; loc; loc = loc->next)
12220 ++n;
12221 printf_filtered (" (%d locations)", n);
12222 }
12223 }
12224}
12225
348d480f
PA
12226/* Default bp_location_ops methods. */
12227
12228static void
12229bp_location_dtor (struct bp_location *self)
12230{
348d480f
PA
12231 xfree (self->function_name);
12232}
12233
12234static const struct bp_location_ops bp_location_ops =
12235{
12236 bp_location_dtor
12237};
12238
c1fc2657 12239/* Destructor for the breakpoint base class. */
348d480f 12240
c1fc2657 12241breakpoint::~breakpoint ()
348d480f 12242{
c1fc2657
SM
12243 xfree (this->cond_string);
12244 xfree (this->extra_string);
12245 xfree (this->filter);
348d480f
PA
12246}
12247
2060206e
PA
12248static struct bp_location *
12249base_breakpoint_allocate_location (struct breakpoint *self)
348d480f 12250{
5625a286 12251 return new bp_location (&bp_location_ops, self);
348d480f
PA
12252}
12253
2060206e
PA
12254static void
12255base_breakpoint_re_set (struct breakpoint *b)
12256{
12257 /* Nothing to re-set. */
12258}
12259
12260#define internal_error_pure_virtual_called() \
12261 gdb_assert_not_reached ("pure virtual function called")
12262
12263static int
12264base_breakpoint_insert_location (struct bp_location *bl)
12265{
12266 internal_error_pure_virtual_called ();
12267}
12268
12269static int
73971819
PA
12270base_breakpoint_remove_location (struct bp_location *bl,
12271 enum remove_bp_reason reason)
2060206e
PA
12272{
12273 internal_error_pure_virtual_called ();
12274}
12275
12276static int
12277base_breakpoint_breakpoint_hit (const struct bp_location *bl,
bd522513 12278 const address_space *aspace,
09ac7c10
TT
12279 CORE_ADDR bp_addr,
12280 const struct target_waitstatus *ws)
2060206e
PA
12281{
12282 internal_error_pure_virtual_called ();
12283}
12284
12285static void
12286base_breakpoint_check_status (bpstat bs)
12287{
12288 /* Always stop. */
12289}
12290
12291/* A "works_in_software_mode" breakpoint_ops method that just internal
12292 errors. */
12293
12294static int
12295base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12296{
12297 internal_error_pure_virtual_called ();
12298}
12299
12300/* A "resources_needed" breakpoint_ops method that just internal
12301 errors. */
12302
12303static int
12304base_breakpoint_resources_needed (const struct bp_location *bl)
12305{
12306 internal_error_pure_virtual_called ();
12307}
12308
12309static enum print_stop_action
12310base_breakpoint_print_it (bpstat bs)
12311{
12312 internal_error_pure_virtual_called ();
12313}
12314
12315static void
12316base_breakpoint_print_one_detail (const struct breakpoint *self,
12317 struct ui_out *uiout)
12318{
12319 /* nothing */
12320}
12321
12322static void
12323base_breakpoint_print_mention (struct breakpoint *b)
12324{
12325 internal_error_pure_virtual_called ();
12326}
12327
12328static void
12329base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12330{
12331 internal_error_pure_virtual_called ();
12332}
12333
983af33b 12334static void
f00aae0f
KS
12335base_breakpoint_create_sals_from_location
12336 (const struct event_location *location,
12337 struct linespec_result *canonical,
12338 enum bptype type_wanted)
983af33b
SDJ
12339{
12340 internal_error_pure_virtual_called ();
12341}
12342
12343static void
12344base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12345 struct linespec_result *c,
e1e01040
PA
12346 gdb::unique_xmalloc_ptr<char> cond_string,
12347 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12348 enum bptype type_wanted,
12349 enum bpdisp disposition,
12350 int thread,
12351 int task, int ignore_count,
12352 const struct breakpoint_ops *o,
12353 int from_tty, int enabled,
44f238bb 12354 int internal, unsigned flags)
983af33b
SDJ
12355{
12356 internal_error_pure_virtual_called ();
12357}
12358
6c5b2ebe 12359static std::vector<symtab_and_line>
f00aae0f
KS
12360base_breakpoint_decode_location (struct breakpoint *b,
12361 const struct event_location *location,
6c5b2ebe 12362 struct program_space *search_pspace)
983af33b
SDJ
12363{
12364 internal_error_pure_virtual_called ();
12365}
12366
ab04a2af
TT
12367/* The default 'explains_signal' method. */
12368
47591c29 12369static int
427cd150 12370base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
ab04a2af 12371{
47591c29 12372 return 1;
ab04a2af
TT
12373}
12374
9d6e6e84
HZ
12375/* The default "after_condition_true" method. */
12376
12377static void
12378base_breakpoint_after_condition_true (struct bpstats *bs)
12379{
12380 /* Nothing to do. */
12381}
12382
ab04a2af 12383struct breakpoint_ops base_breakpoint_ops =
2060206e 12384{
2060206e
PA
12385 base_breakpoint_allocate_location,
12386 base_breakpoint_re_set,
12387 base_breakpoint_insert_location,
12388 base_breakpoint_remove_location,
12389 base_breakpoint_breakpoint_hit,
12390 base_breakpoint_check_status,
12391 base_breakpoint_resources_needed,
12392 base_breakpoint_works_in_software_mode,
12393 base_breakpoint_print_it,
12394 NULL,
12395 base_breakpoint_print_one_detail,
12396 base_breakpoint_print_mention,
983af33b 12397 base_breakpoint_print_recreate,
5f700d83 12398 base_breakpoint_create_sals_from_location,
983af33b 12399 base_breakpoint_create_breakpoints_sal,
5f700d83 12400 base_breakpoint_decode_location,
9d6e6e84
HZ
12401 base_breakpoint_explains_signal,
12402 base_breakpoint_after_condition_true,
2060206e
PA
12403};
12404
12405/* Default breakpoint_ops methods. */
12406
12407static void
348d480f
PA
12408bkpt_re_set (struct breakpoint *b)
12409{
06edf0c0 12410 /* FIXME: is this still reachable? */
9ef9e6a6 12411 if (breakpoint_event_location_empty_p (b))
06edf0c0 12412 {
f00aae0f 12413 /* Anything without a location can't be re-set. */
348d480f 12414 delete_breakpoint (b);
06edf0c0 12415 return;
348d480f 12416 }
06edf0c0
PA
12417
12418 breakpoint_re_set_default (b);
348d480f
PA
12419}
12420
2060206e 12421static int
348d480f
PA
12422bkpt_insert_location (struct bp_location *bl)
12423{
cd6c3b4f
YQ
12424 CORE_ADDR addr = bl->target_info.reqstd_address;
12425
579c6ad9 12426 bl->target_info.kind = breakpoint_kind (bl, &addr);
cd6c3b4f
YQ
12427 bl->target_info.placed_address = addr;
12428
348d480f 12429 if (bl->loc_type == bp_loc_hardware_breakpoint)
7c16b83e 12430 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
348d480f 12431 else
7c16b83e 12432 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
348d480f
PA
12433}
12434
2060206e 12435static int
73971819 12436bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
348d480f
PA
12437{
12438 if (bl->loc_type == bp_loc_hardware_breakpoint)
12439 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12440 else
73971819 12441 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
348d480f
PA
12442}
12443
2060206e 12444static int
348d480f 12445bkpt_breakpoint_hit (const struct bp_location *bl,
bd522513 12446 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 12447 const struct target_waitstatus *ws)
348d480f 12448{
09ac7c10 12449 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 12450 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
12451 return 0;
12452
348d480f
PA
12453 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12454 aspace, bp_addr))
12455 return 0;
12456
12457 if (overlay_debugging /* unmapped overlay section */
12458 && section_is_overlay (bl->section)
12459 && !section_is_mapped (bl->section))
12460 return 0;
12461
12462 return 1;
12463}
12464
cd1608cc
PA
12465static int
12466dprintf_breakpoint_hit (const struct bp_location *bl,
bd522513 12467 const address_space *aspace, CORE_ADDR bp_addr,
cd1608cc
PA
12468 const struct target_waitstatus *ws)
12469{
12470 if (dprintf_style == dprintf_style_agent
12471 && target_can_run_breakpoint_commands ())
12472 {
12473 /* An agent-style dprintf never causes a stop. If we see a trap
12474 for this address it must be for a breakpoint that happens to
12475 be set at the same address. */
12476 return 0;
12477 }
12478
12479 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12480}
12481
2060206e 12482static int
348d480f
PA
12483bkpt_resources_needed (const struct bp_location *bl)
12484{
12485 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12486
12487 return 1;
12488}
12489
2060206e 12490static enum print_stop_action
348d480f
PA
12491bkpt_print_it (bpstat bs)
12492{
348d480f
PA
12493 struct breakpoint *b;
12494 const struct bp_location *bl;
001c8c33 12495 int bp_temp;
79a45e25 12496 struct ui_out *uiout = current_uiout;
348d480f
PA
12497
12498 gdb_assert (bs->bp_location_at != NULL);
12499
12500 bl = bs->bp_location_at;
12501 b = bs->breakpoint_at;
12502
001c8c33
PA
12503 bp_temp = b->disposition == disp_del;
12504 if (bl->address != bl->requested_address)
12505 breakpoint_adjustment_warning (bl->requested_address,
12506 bl->address,
12507 b->number, 1);
12508 annotate_breakpoint (b->number);
f303dbd6
PA
12509 maybe_print_thread_hit_breakpoint (uiout);
12510
001c8c33 12511 if (bp_temp)
112e8700 12512 uiout->text ("Temporary breakpoint ");
001c8c33 12513 else
112e8700
SM
12514 uiout->text ("Breakpoint ");
12515 if (uiout->is_mi_like_p ())
348d480f 12516 {
112e8700 12517 uiout->field_string ("reason",
001c8c33 12518 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 12519 uiout->field_string ("disp", bpdisp_text (b->disposition));
06edf0c0 12520 }
112e8700
SM
12521 uiout->field_int ("bkptno", b->number);
12522 uiout->text (", ");
06edf0c0 12523
001c8c33 12524 return PRINT_SRC_AND_LOC;
06edf0c0
PA
12525}
12526
2060206e 12527static void
06edf0c0
PA
12528bkpt_print_mention (struct breakpoint *b)
12529{
112e8700 12530 if (current_uiout->is_mi_like_p ())
06edf0c0
PA
12531 return;
12532
12533 switch (b->type)
12534 {
12535 case bp_breakpoint:
12536 case bp_gnu_ifunc_resolver:
12537 if (b->disposition == disp_del)
12538 printf_filtered (_("Temporary breakpoint"));
12539 else
12540 printf_filtered (_("Breakpoint"));
12541 printf_filtered (_(" %d"), b->number);
12542 if (b->type == bp_gnu_ifunc_resolver)
12543 printf_filtered (_(" at gnu-indirect-function resolver"));
12544 break;
12545 case bp_hardware_breakpoint:
12546 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12547 break;
e7e0cddf
SS
12548 case bp_dprintf:
12549 printf_filtered (_("Dprintf %d"), b->number);
12550 break;
06edf0c0
PA
12551 }
12552
12553 say_where (b);
12554}
12555
2060206e 12556static void
06edf0c0
PA
12557bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12558{
12559 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12560 fprintf_unfiltered (fp, "tbreak");
12561 else if (tp->type == bp_breakpoint)
12562 fprintf_unfiltered (fp, "break");
12563 else if (tp->type == bp_hardware_breakpoint
12564 && tp->disposition == disp_del)
12565 fprintf_unfiltered (fp, "thbreak");
12566 else if (tp->type == bp_hardware_breakpoint)
12567 fprintf_unfiltered (fp, "hbreak");
12568 else
12569 internal_error (__FILE__, __LINE__,
12570 _("unhandled breakpoint type %d"), (int) tp->type);
12571
f00aae0f 12572 fprintf_unfiltered (fp, " %s",
d28cd78a 12573 event_location_to_string (tp->location.get ()));
f00aae0f
KS
12574
12575 /* Print out extra_string if this breakpoint is pending. It might
12576 contain, for example, conditions that were set by the user. */
12577 if (tp->loc == NULL && tp->extra_string != NULL)
12578 fprintf_unfiltered (fp, " %s", tp->extra_string);
12579
dd11a36c 12580 print_recreate_thread (tp, fp);
06edf0c0
PA
12581}
12582
983af33b 12583static void
f00aae0f
KS
12584bkpt_create_sals_from_location (const struct event_location *location,
12585 struct linespec_result *canonical,
12586 enum bptype type_wanted)
983af33b 12587{
f00aae0f 12588 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
12589}
12590
12591static void
12592bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12593 struct linespec_result *canonical,
e1e01040
PA
12594 gdb::unique_xmalloc_ptr<char> cond_string,
12595 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12596 enum bptype type_wanted,
12597 enum bpdisp disposition,
12598 int thread,
12599 int task, int ignore_count,
12600 const struct breakpoint_ops *ops,
12601 int from_tty, int enabled,
44f238bb 12602 int internal, unsigned flags)
983af33b 12603{
023fa29b 12604 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
12605 std::move (cond_string),
12606 std::move (extra_string),
e7e0cddf 12607 type_wanted,
983af33b
SDJ
12608 disposition, thread, task,
12609 ignore_count, ops, from_tty,
44f238bb 12610 enabled, internal, flags);
983af33b
SDJ
12611}
12612
6c5b2ebe 12613static std::vector<symtab_and_line>
f00aae0f
KS
12614bkpt_decode_location (struct breakpoint *b,
12615 const struct event_location *location,
6c5b2ebe 12616 struct program_space *search_pspace)
983af33b 12617{
6c5b2ebe 12618 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
12619}
12620
06edf0c0
PA
12621/* Virtual table for internal breakpoints. */
12622
12623static void
12624internal_bkpt_re_set (struct breakpoint *b)
12625{
12626 switch (b->type)
12627 {
12628 /* Delete overlay event and longjmp master breakpoints; they
12629 will be reset later by breakpoint_re_set. */
12630 case bp_overlay_event:
12631 case bp_longjmp_master:
12632 case bp_std_terminate_master:
12633 case bp_exception_master:
12634 delete_breakpoint (b);
12635 break;
12636
12637 /* This breakpoint is special, it's set up when the inferior
12638 starts and we really don't want to touch it. */
12639 case bp_shlib_event:
12640
12641 /* Like bp_shlib_event, this breakpoint type is special. Once
12642 it is set up, we do not want to touch it. */
12643 case bp_thread_event:
12644 break;
12645 }
12646}
12647
12648static void
12649internal_bkpt_check_status (bpstat bs)
12650{
a9b3a50f
PA
12651 if (bs->breakpoint_at->type == bp_shlib_event)
12652 {
12653 /* If requested, stop when the dynamic linker notifies GDB of
12654 events. This allows the user to get control and place
12655 breakpoints in initializer routines for dynamically loaded
12656 objects (among other things). */
12657 bs->stop = stop_on_solib_events;
12658 bs->print = stop_on_solib_events;
12659 }
12660 else
12661 bs->stop = 0;
06edf0c0
PA
12662}
12663
12664static enum print_stop_action
12665internal_bkpt_print_it (bpstat bs)
12666{
06edf0c0 12667 struct breakpoint *b;
06edf0c0 12668
06edf0c0
PA
12669 b = bs->breakpoint_at;
12670
06edf0c0
PA
12671 switch (b->type)
12672 {
348d480f
PA
12673 case bp_shlib_event:
12674 /* Did we stop because the user set the stop_on_solib_events
12675 variable? (If so, we report this as a generic, "Stopped due
12676 to shlib event" message.) */
edcc5120 12677 print_solib_event (0);
348d480f
PA
12678 break;
12679
12680 case bp_thread_event:
12681 /* Not sure how we will get here.
12682 GDB should not stop for these breakpoints. */
12683 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
12684 break;
12685
12686 case bp_overlay_event:
12687 /* By analogy with the thread event, GDB should not stop for these. */
12688 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
12689 break;
12690
12691 case bp_longjmp_master:
12692 /* These should never be enabled. */
12693 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
348d480f
PA
12694 break;
12695
12696 case bp_std_terminate_master:
12697 /* These should never be enabled. */
12698 printf_filtered (_("std::terminate Master Breakpoint: "
12699 "gdb should not stop!\n"));
348d480f
PA
12700 break;
12701
12702 case bp_exception_master:
12703 /* These should never be enabled. */
12704 printf_filtered (_("Exception Master Breakpoint: "
12705 "gdb should not stop!\n"));
06edf0c0
PA
12706 break;
12707 }
12708
001c8c33 12709 return PRINT_NOTHING;
06edf0c0
PA
12710}
12711
12712static void
12713internal_bkpt_print_mention (struct breakpoint *b)
12714{
12715 /* Nothing to mention. These breakpoints are internal. */
12716}
12717
06edf0c0
PA
12718/* Virtual table for momentary breakpoints */
12719
12720static void
12721momentary_bkpt_re_set (struct breakpoint *b)
12722{
12723 /* Keep temporary breakpoints, which can be encountered when we step
4d1eb6b4 12724 over a dlopen call and solib_add is resetting the breakpoints.
06edf0c0
PA
12725 Otherwise these should have been blown away via the cleanup chain
12726 or by breakpoint_init_inferior when we rerun the executable. */
12727}
12728
12729static void
12730momentary_bkpt_check_status (bpstat bs)
12731{
12732 /* Nothing. The point of these breakpoints is causing a stop. */
12733}
12734
12735static enum print_stop_action
12736momentary_bkpt_print_it (bpstat bs)
12737{
001c8c33 12738 return PRINT_UNKNOWN;
348d480f
PA
12739}
12740
06edf0c0
PA
12741static void
12742momentary_bkpt_print_mention (struct breakpoint *b)
348d480f 12743{
06edf0c0 12744 /* Nothing to mention. These breakpoints are internal. */
348d480f
PA
12745}
12746
e2e4d78b
JK
12747/* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12748
12749 It gets cleared already on the removal of the first one of such placed
12750 breakpoints. This is OK as they get all removed altogether. */
12751
c1fc2657 12752longjmp_breakpoint::~longjmp_breakpoint ()
e2e4d78b 12753{
c1fc2657 12754 thread_info *tp = find_thread_global_id (this->thread);
e2e4d78b 12755
c1fc2657 12756 if (tp != NULL)
e2e4d78b 12757 tp->initiating_frame = null_frame_id;
e2e4d78b
JK
12758}
12759
55aa24fb
SDJ
12760/* Specific methods for probe breakpoints. */
12761
12762static int
12763bkpt_probe_insert_location (struct bp_location *bl)
12764{
12765 int v = bkpt_insert_location (bl);
12766
12767 if (v == 0)
12768 {
12769 /* The insertion was successful, now let's set the probe's semaphore
12770 if needed. */
935676c9 12771 bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
55aa24fb
SDJ
12772 }
12773
12774 return v;
12775}
12776
12777static int
73971819
PA
12778bkpt_probe_remove_location (struct bp_location *bl,
12779 enum remove_bp_reason reason)
55aa24fb
SDJ
12780{
12781 /* Let's clear the semaphore before removing the location. */
935676c9 12782 bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
55aa24fb 12783
73971819 12784 return bkpt_remove_location (bl, reason);
55aa24fb
SDJ
12785}
12786
12787static void
f00aae0f 12788bkpt_probe_create_sals_from_location (const struct event_location *location,
5f700d83 12789 struct linespec_result *canonical,
f00aae0f 12790 enum bptype type_wanted)
55aa24fb
SDJ
12791{
12792 struct linespec_sals lsal;
12793
c2f4122d 12794 lsal.sals = parse_probes (location, NULL, canonical);
8e9e35b1
TT
12795 lsal.canonical
12796 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 12797 canonical->lsals.push_back (std::move (lsal));
55aa24fb
SDJ
12798}
12799
6c5b2ebe 12800static std::vector<symtab_and_line>
f00aae0f
KS
12801bkpt_probe_decode_location (struct breakpoint *b,
12802 const struct event_location *location,
6c5b2ebe 12803 struct program_space *search_pspace)
55aa24fb 12804{
6c5b2ebe
PA
12805 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12806 if (sals.empty ())
55aa24fb 12807 error (_("probe not found"));
6c5b2ebe 12808 return sals;
55aa24fb
SDJ
12809}
12810
348d480f 12811/* The breakpoint_ops structure to be used in tracepoints. */
876fa593 12812
348d480f
PA
12813static void
12814tracepoint_re_set (struct breakpoint *b)
12815{
12816 breakpoint_re_set_default (b);
12817}
876fa593 12818
348d480f
PA
12819static int
12820tracepoint_breakpoint_hit (const struct bp_location *bl,
bd522513 12821 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 12822 const struct target_waitstatus *ws)
348d480f
PA
12823{
12824 /* By definition, the inferior does not report stops at
12825 tracepoints. */
12826 return 0;
74960c60
VP
12827}
12828
12829static void
348d480f
PA
12830tracepoint_print_one_detail (const struct breakpoint *self,
12831 struct ui_out *uiout)
74960c60 12832{
d9b3f62e 12833 struct tracepoint *tp = (struct tracepoint *) self;
5d9310c4 12834 if (!tp->static_trace_marker_id.empty ())
348d480f
PA
12835 {
12836 gdb_assert (self->type == bp_static_tracepoint);
cc59ec59 12837
112e8700
SM
12838 uiout->text ("\tmarker id is ");
12839 uiout->field_string ("static-tracepoint-marker-string-id",
d9b3f62e 12840 tp->static_trace_marker_id);
112e8700 12841 uiout->text ("\n");
348d480f 12842 }
0d381245
VP
12843}
12844
a474d7c2 12845static void
348d480f 12846tracepoint_print_mention (struct breakpoint *b)
a474d7c2 12847{
112e8700 12848 if (current_uiout->is_mi_like_p ())
348d480f 12849 return;
cc59ec59 12850
348d480f
PA
12851 switch (b->type)
12852 {
12853 case bp_tracepoint:
12854 printf_filtered (_("Tracepoint"));
12855 printf_filtered (_(" %d"), b->number);
12856 break;
12857 case bp_fast_tracepoint:
12858 printf_filtered (_("Fast tracepoint"));
12859 printf_filtered (_(" %d"), b->number);
12860 break;
12861 case bp_static_tracepoint:
12862 printf_filtered (_("Static tracepoint"));
12863 printf_filtered (_(" %d"), b->number);
12864 break;
12865 default:
12866 internal_error (__FILE__, __LINE__,
12867 _("unhandled tracepoint type %d"), (int) b->type);
12868 }
12869
12870 say_where (b);
a474d7c2
PA
12871}
12872
348d480f 12873static void
d9b3f62e 12874tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
a474d7c2 12875{
d9b3f62e
PA
12876 struct tracepoint *tp = (struct tracepoint *) self;
12877
12878 if (self->type == bp_fast_tracepoint)
348d480f 12879 fprintf_unfiltered (fp, "ftrace");
c93e8391 12880 else if (self->type == bp_static_tracepoint)
348d480f 12881 fprintf_unfiltered (fp, "strace");
d9b3f62e 12882 else if (self->type == bp_tracepoint)
348d480f
PA
12883 fprintf_unfiltered (fp, "trace");
12884 else
12885 internal_error (__FILE__, __LINE__,
d9b3f62e 12886 _("unhandled tracepoint type %d"), (int) self->type);
cc59ec59 12887
f00aae0f 12888 fprintf_unfiltered (fp, " %s",
d28cd78a 12889 event_location_to_string (self->location.get ()));
d9b3f62e
PA
12890 print_recreate_thread (self, fp);
12891
12892 if (tp->pass_count)
12893 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
a474d7c2
PA
12894}
12895
983af33b 12896static void
f00aae0f
KS
12897tracepoint_create_sals_from_location (const struct event_location *location,
12898 struct linespec_result *canonical,
12899 enum bptype type_wanted)
983af33b 12900{
f00aae0f 12901 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
12902}
12903
12904static void
12905tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12906 struct linespec_result *canonical,
e1e01040
PA
12907 gdb::unique_xmalloc_ptr<char> cond_string,
12908 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12909 enum bptype type_wanted,
12910 enum bpdisp disposition,
12911 int thread,
12912 int task, int ignore_count,
12913 const struct breakpoint_ops *ops,
12914 int from_tty, int enabled,
44f238bb 12915 int internal, unsigned flags)
983af33b 12916{
023fa29b 12917 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
12918 std::move (cond_string),
12919 std::move (extra_string),
e7e0cddf 12920 type_wanted,
983af33b
SDJ
12921 disposition, thread, task,
12922 ignore_count, ops, from_tty,
44f238bb 12923 enabled, internal, flags);
983af33b
SDJ
12924}
12925
6c5b2ebe 12926static std::vector<symtab_and_line>
f00aae0f
KS
12927tracepoint_decode_location (struct breakpoint *b,
12928 const struct event_location *location,
6c5b2ebe 12929 struct program_space *search_pspace)
983af33b 12930{
6c5b2ebe 12931 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
12932}
12933
2060206e 12934struct breakpoint_ops tracepoint_breakpoint_ops;
348d480f 12935
55aa24fb
SDJ
12936/* The breakpoint_ops structure to be use on tracepoints placed in a
12937 static probe. */
12938
12939static void
f00aae0f
KS
12940tracepoint_probe_create_sals_from_location
12941 (const struct event_location *location,
12942 struct linespec_result *canonical,
12943 enum bptype type_wanted)
55aa24fb
SDJ
12944{
12945 /* We use the same method for breakpoint on probes. */
f00aae0f 12946 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
55aa24fb
SDJ
12947}
12948
6c5b2ebe 12949static std::vector<symtab_and_line>
f00aae0f
KS
12950tracepoint_probe_decode_location (struct breakpoint *b,
12951 const struct event_location *location,
6c5b2ebe 12952 struct program_space *search_pspace)
55aa24fb
SDJ
12953{
12954 /* We use the same method for breakpoint on probes. */
6c5b2ebe 12955 return bkpt_probe_decode_location (b, location, search_pspace);
55aa24fb
SDJ
12956}
12957
12958static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12959
5c2b4418
HZ
12960/* Dprintf breakpoint_ops methods. */
12961
12962static void
12963dprintf_re_set (struct breakpoint *b)
12964{
12965 breakpoint_re_set_default (b);
12966
f00aae0f
KS
12967 /* extra_string should never be non-NULL for dprintf. */
12968 gdb_assert (b->extra_string != NULL);
5c2b4418
HZ
12969
12970 /* 1 - connect to target 1, that can run breakpoint commands.
12971 2 - create a dprintf, which resolves fine.
12972 3 - disconnect from target 1
12973 4 - connect to target 2, that can NOT run breakpoint commands.
12974
12975 After steps #3/#4, you'll want the dprintf command list to
12976 be updated, because target 1 and 2 may well return different
12977 answers for target_can_run_breakpoint_commands().
12978 Given absence of finer grained resetting, we get to do
12979 it all the time. */
12980 if (b->extra_string != NULL)
12981 update_dprintf_command_list (b);
12982}
12983
2d9442cc
HZ
12984/* Implement the "print_recreate" breakpoint_ops method for dprintf. */
12985
12986static void
12987dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12988{
f00aae0f 12989 fprintf_unfiltered (fp, "dprintf %s,%s",
d28cd78a 12990 event_location_to_string (tp->location.get ()),
2d9442cc
HZ
12991 tp->extra_string);
12992 print_recreate_thread (tp, fp);
12993}
12994
9d6e6e84
HZ
12995/* Implement the "after_condition_true" breakpoint_ops method for
12996 dprintf.
12997
12998 dprintf's are implemented with regular commands in their command
12999 list, but we run the commands here instead of before presenting the
13000 stop to the user, as dprintf's don't actually cause a stop. This
13001 also makes it so that the commands of multiple dprintfs at the same
13002 address are all handled. */
13003
13004static void
13005dprintf_after_condition_true (struct bpstats *bs)
13006{
04afa70c 13007 struct bpstats tmp_bs;
9d6e6e84
HZ
13008 struct bpstats *tmp_bs_p = &tmp_bs;
13009
13010 /* dprintf's never cause a stop. This wasn't set in the
13011 check_status hook instead because that would make the dprintf's
13012 condition not be evaluated. */
13013 bs->stop = 0;
13014
13015 /* Run the command list here. Take ownership of it instead of
13016 copying. We never want these commands to run later in
13017 bpstat_do_actions, if a breakpoint that causes a stop happens to
13018 be set at same address as this dprintf, or even if running the
13019 commands here throws. */
13020 tmp_bs.commands = bs->commands;
13021 bs->commands = NULL;
9d6e6e84
HZ
13022
13023 bpstat_do_actions_1 (&tmp_bs_p);
13024
13025 /* 'tmp_bs.commands' will usually be NULL by now, but
13026 bpstat_do_actions_1 may return early without processing the whole
13027 list. */
9d6e6e84
HZ
13028}
13029
983af33b
SDJ
13030/* The breakpoint_ops structure to be used on static tracepoints with
13031 markers (`-m'). */
13032
13033static void
f00aae0f 13034strace_marker_create_sals_from_location (const struct event_location *location,
5f700d83 13035 struct linespec_result *canonical,
f00aae0f 13036 enum bptype type_wanted)
983af33b
SDJ
13037{
13038 struct linespec_sals lsal;
f00aae0f 13039 const char *arg_start, *arg;
983af33b 13040
a20714ff 13041 arg = arg_start = get_linespec_location (location)->spec_string;
f00aae0f 13042 lsal.sals = decode_static_tracepoint_spec (&arg);
983af33b 13043
f2fc3015
TT
13044 std::string str (arg_start, arg - arg_start);
13045 const char *ptr = str.c_str ();
a20714ff
PA
13046 canonical->location
13047 = new_linespec_location (&ptr, symbol_name_match_type::FULL);
983af33b 13048
8e9e35b1
TT
13049 lsal.canonical
13050 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 13051 canonical->lsals.push_back (std::move (lsal));
983af33b
SDJ
13052}
13053
13054static void
13055strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13056 struct linespec_result *canonical,
e1e01040
PA
13057 gdb::unique_xmalloc_ptr<char> cond_string,
13058 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13059 enum bptype type_wanted,
13060 enum bpdisp disposition,
13061 int thread,
13062 int task, int ignore_count,
13063 const struct breakpoint_ops *ops,
13064 int from_tty, int enabled,
44f238bb 13065 int internal, unsigned flags)
983af33b 13066{
6c5b2ebe 13067 const linespec_sals &lsal = canonical->lsals[0];
983af33b
SDJ
13068
13069 /* If the user is creating a static tracepoint by marker id
13070 (strace -m MARKER_ID), then store the sals index, so that
13071 breakpoint_re_set can try to match up which of the newly
13072 found markers corresponds to this one, and, don't try to
13073 expand multiple locations for each sal, given than SALS
13074 already should contain all sals for MARKER_ID. */
13075
6c5b2ebe 13076 for (size_t i = 0; i < lsal.sals.size (); i++)
983af33b 13077 {
6c5b2ebe
PA
13078 event_location_up location
13079 = copy_event_location (canonical->location.get ());
983af33b 13080
b270e6f9 13081 std::unique_ptr<tracepoint> tp (new tracepoint ());
6c5b2ebe 13082 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
ffc2605c 13083 std::move (location), NULL,
e1e01040
PA
13084 std::move (cond_string),
13085 std::move (extra_string),
e7e0cddf 13086 type_wanted, disposition,
983af33b 13087 thread, task, ignore_count, ops,
44f238bb 13088 from_tty, enabled, internal, flags,
983af33b
SDJ
13089 canonical->special_display);
13090 /* Given that its possible to have multiple markers with
13091 the same string id, if the user is creating a static
13092 tracepoint by marker id ("strace -m MARKER_ID"), then
13093 store the sals index, so that breakpoint_re_set can
13094 try to match up which of the newly found markers
13095 corresponds to this one */
13096 tp->static_trace_marker_id_idx = i;
13097
b270e6f9 13098 install_breakpoint (internal, std::move (tp), 0);
983af33b
SDJ
13099 }
13100}
13101
6c5b2ebe 13102static std::vector<symtab_and_line>
f00aae0f
KS
13103strace_marker_decode_location (struct breakpoint *b,
13104 const struct event_location *location,
6c5b2ebe 13105 struct program_space *search_pspace)
983af33b
SDJ
13106{
13107 struct tracepoint *tp = (struct tracepoint *) b;
a20714ff 13108 const char *s = get_linespec_location (location)->spec_string;
983af33b 13109
6c5b2ebe
PA
13110 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13111 if (sals.size () > tp->static_trace_marker_id_idx)
983af33b 13112 {
6c5b2ebe
PA
13113 sals[0] = sals[tp->static_trace_marker_id_idx];
13114 sals.resize (1);
13115 return sals;
983af33b
SDJ
13116 }
13117 else
5d9310c4 13118 error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
983af33b
SDJ
13119}
13120
13121static struct breakpoint_ops strace_marker_breakpoint_ops;
13122
13123static int
13124strace_marker_p (struct breakpoint *b)
13125{
13126 return b->ops == &strace_marker_breakpoint_ops;
13127}
13128
53a5351d 13129/* Delete a breakpoint and clean up all traces of it in the data
f431efe5 13130 structures. */
c906108c
SS
13131
13132void
fba45db2 13133delete_breakpoint (struct breakpoint *bpt)
c906108c 13134{
52f0bd74 13135 struct breakpoint *b;
c906108c 13136
8a3fe4f8 13137 gdb_assert (bpt != NULL);
c906108c 13138
4a64f543
MS
13139 /* Has this bp already been deleted? This can happen because
13140 multiple lists can hold pointers to bp's. bpstat lists are
13141 especial culprits.
13142
13143 One example of this happening is a watchpoint's scope bp. When
13144 the scope bp triggers, we notice that the watchpoint is out of
13145 scope, and delete it. We also delete its scope bp. But the
13146 scope bp is marked "auto-deleting", and is already on a bpstat.
13147 That bpstat is then checked for auto-deleting bp's, which are
13148 deleted.
13149
13150 A real solution to this problem might involve reference counts in
13151 bp's, and/or giving them pointers back to their referencing
13152 bpstat's, and teaching delete_breakpoint to only free a bp's
13153 storage when no more references were extent. A cheaper bandaid
13154 was chosen. */
c906108c
SS
13155 if (bpt->type == bp_none)
13156 return;
13157
4a64f543
MS
13158 /* At least avoid this stale reference until the reference counting
13159 of breakpoints gets resolved. */
d0fb5eae 13160 if (bpt->related_breakpoint != bpt)
e5a0a904 13161 {
d0fb5eae 13162 struct breakpoint *related;
3a5c3e22 13163 struct watchpoint *w;
d0fb5eae
JK
13164
13165 if (bpt->type == bp_watchpoint_scope)
3a5c3e22 13166 w = (struct watchpoint *) bpt->related_breakpoint;
d0fb5eae 13167 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
3a5c3e22
PA
13168 w = (struct watchpoint *) bpt;
13169 else
13170 w = NULL;
13171 if (w != NULL)
13172 watchpoint_del_at_next_stop (w);
d0fb5eae
JK
13173
13174 /* Unlink bpt from the bpt->related_breakpoint ring. */
13175 for (related = bpt; related->related_breakpoint != bpt;
13176 related = related->related_breakpoint);
13177 related->related_breakpoint = bpt->related_breakpoint;
13178 bpt->related_breakpoint = bpt;
e5a0a904
JK
13179 }
13180
a9634178
TJB
13181 /* watch_command_1 creates a watchpoint but only sets its number if
13182 update_watchpoint succeeds in creating its bp_locations. If there's
13183 a problem in that process, we'll be asked to delete the half-created
13184 watchpoint. In that case, don't announce the deletion. */
13185 if (bpt->number)
76727919 13186 gdb::observers::breakpoint_deleted.notify (bpt);
c906108c 13187
c906108c
SS
13188 if (breakpoint_chain == bpt)
13189 breakpoint_chain = bpt->next;
13190
c906108c
SS
13191 ALL_BREAKPOINTS (b)
13192 if (b->next == bpt)
c5aa993b
JM
13193 {
13194 b->next = bpt->next;
13195 break;
13196 }
c906108c 13197
f431efe5
PA
13198 /* Be sure no bpstat's are pointing at the breakpoint after it's
13199 been freed. */
13200 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
e5dd4106 13201 in all threads for now. Note that we cannot just remove bpstats
f431efe5
PA
13202 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13203 commands are associated with the bpstat; if we remove it here,
13204 then the later call to bpstat_do_actions (&stop_bpstat); in
13205 event-top.c won't do anything, and temporary breakpoints with
13206 commands won't work. */
13207
13208 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13209
4a64f543
MS
13210 /* Now that breakpoint is removed from breakpoint list, update the
13211 global location list. This will remove locations that used to
13212 belong to this breakpoint. Do this before freeing the breakpoint
13213 itself, since remove_breakpoint looks at location's owner. It
13214 might be better design to have location completely
13215 self-contained, but it's not the case now. */
44702360 13216 update_global_location_list (UGLL_DONT_INSERT);
74960c60 13217
4a64f543
MS
13218 /* On the chance that someone will soon try again to delete this
13219 same bp, we mark it as deleted before freeing its storage. */
c906108c 13220 bpt->type = bp_none;
4d01a485 13221 delete bpt;
c906108c
SS
13222}
13223
51be5b68
PA
13224/* Iterator function to call a user-provided callback function once
13225 for each of B and its related breakpoints. */
13226
13227static void
13228iterate_over_related_breakpoints (struct breakpoint *b,
48649e1b 13229 gdb::function_view<void (breakpoint *)> function)
51be5b68
PA
13230{
13231 struct breakpoint *related;
13232
13233 related = b;
13234 do
13235 {
13236 struct breakpoint *next;
13237
13238 /* FUNCTION may delete RELATED. */
13239 next = related->related_breakpoint;
13240
13241 if (next == related)
13242 {
13243 /* RELATED is the last ring entry. */
48649e1b 13244 function (related);
51be5b68
PA
13245
13246 /* FUNCTION may have deleted it, so we'd never reach back to
13247 B. There's nothing left to do anyway, so just break
13248 out. */
13249 break;
13250 }
13251 else
48649e1b 13252 function (related);
51be5b68
PA
13253
13254 related = next;
13255 }
13256 while (related != b);
13257}
95a42b64 13258
4495129a 13259static void
981a3fb3 13260delete_command (const char *arg, int from_tty)
c906108c 13261{
35df4500 13262 struct breakpoint *b, *b_tmp;
c906108c 13263
ea9365bb
TT
13264 dont_repeat ();
13265
c906108c
SS
13266 if (arg == 0)
13267 {
13268 int breaks_to_delete = 0;
13269
46c6471b
PA
13270 /* Delete all breakpoints if no argument. Do not delete
13271 internal breakpoints, these have to be deleted with an
13272 explicit breakpoint number argument. */
c5aa993b 13273 ALL_BREAKPOINTS (b)
46c6471b 13274 if (user_breakpoint_p (b))
973d738b
DJ
13275 {
13276 breaks_to_delete = 1;
13277 break;
13278 }
c906108c
SS
13279
13280 /* Ask user only if there are some breakpoints to delete. */
13281 if (!from_tty
e2e0b3e5 13282 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
c906108c 13283 {
35df4500 13284 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 13285 if (user_breakpoint_p (b))
c5aa993b 13286 delete_breakpoint (b);
c906108c
SS
13287 }
13288 }
13289 else
48649e1b 13290 map_breakpoint_numbers
b926417a 13291 (arg, [&] (breakpoint *br)
48649e1b 13292 {
b926417a 13293 iterate_over_related_breakpoints (br, delete_breakpoint);
48649e1b 13294 });
c906108c
SS
13295}
13296
c2f4122d
PA
13297/* Return true if all locations of B bound to PSPACE are pending. If
13298 PSPACE is NULL, all locations of all program spaces are
13299 considered. */
13300
0d381245 13301static int
c2f4122d 13302all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
fe3f5fa8 13303{
c2f4122d
PA
13304 struct bp_location *loc;
13305
13306 for (loc = b->loc; loc != NULL; loc = loc->next)
13307 if ((pspace == NULL
13308 || loc->pspace == pspace)
13309 && !loc->shlib_disabled
8645ff69 13310 && !loc->pspace->executing_startup)
0d381245
VP
13311 return 0;
13312 return 1;
fe3f5fa8
VP
13313}
13314
776592bf
DE
13315/* Subroutine of update_breakpoint_locations to simplify it.
13316 Return non-zero if multiple fns in list LOC have the same name.
13317 Null names are ignored. */
13318
13319static int
13320ambiguous_names_p (struct bp_location *loc)
13321{
13322 struct bp_location *l;
459a2e4c
TT
13323 htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13324 xcalloc, xfree);
776592bf
DE
13325
13326 for (l = loc; l != NULL; l = l->next)
13327 {
13328 const char **slot;
13329 const char *name = l->function_name;
13330
13331 /* Allow for some names to be NULL, ignore them. */
13332 if (name == NULL)
13333 continue;
13334
13335 slot = (const char **) htab_find_slot (htab, (const void *) name,
13336 INSERT);
4a64f543
MS
13337 /* NOTE: We can assume slot != NULL here because xcalloc never
13338 returns NULL. */
776592bf
DE
13339 if (*slot != NULL)
13340 {
13341 htab_delete (htab);
13342 return 1;
13343 }
13344 *slot = name;
13345 }
13346
13347 htab_delete (htab);
13348 return 0;
13349}
13350
0fb4aa4b
PA
13351/* When symbols change, it probably means the sources changed as well,
13352 and it might mean the static tracepoint markers are no longer at
13353 the same address or line numbers they used to be at last we
13354 checked. Losing your static tracepoints whenever you rebuild is
13355 undesirable. This function tries to resync/rematch gdb static
13356 tracepoints with the markers on the target, for static tracepoints
13357 that have not been set by marker id. Static tracepoint that have
13358 been set by marker id are reset by marker id in breakpoint_re_set.
13359 The heuristic is:
13360
13361 1) For a tracepoint set at a specific address, look for a marker at
13362 the old PC. If one is found there, assume to be the same marker.
13363 If the name / string id of the marker found is different from the
13364 previous known name, assume that means the user renamed the marker
13365 in the sources, and output a warning.
13366
13367 2) For a tracepoint set at a given line number, look for a marker
13368 at the new address of the old line number. If one is found there,
13369 assume to be the same marker. If the name / string id of the
13370 marker found is different from the previous known name, assume that
13371 means the user renamed the marker in the sources, and output a
13372 warning.
13373
13374 3) If a marker is no longer found at the same address or line, it
13375 may mean the marker no longer exists. But it may also just mean
13376 the code changed a bit. Maybe the user added a few lines of code
13377 that made the marker move up or down (in line number terms). Ask
13378 the target for info about the marker with the string id as we knew
13379 it. If found, update line number and address in the matching
13380 static tracepoint. This will get confused if there's more than one
13381 marker with the same ID (possible in UST, although unadvised
13382 precisely because it confuses tools). */
13383
13384static struct symtab_and_line
13385update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13386{
d9b3f62e 13387 struct tracepoint *tp = (struct tracepoint *) b;
0fb4aa4b
PA
13388 struct static_tracepoint_marker marker;
13389 CORE_ADDR pc;
0fb4aa4b
PA
13390
13391 pc = sal.pc;
13392 if (sal.line)
13393 find_line_pc (sal.symtab, sal.line, &pc);
13394
13395 if (target_static_tracepoint_marker_at (pc, &marker))
13396 {
5d9310c4 13397 if (tp->static_trace_marker_id != marker.str_id)
0fb4aa4b 13398 warning (_("static tracepoint %d changed probed marker from %s to %s"),
5d9310c4
SM
13399 b->number, tp->static_trace_marker_id.c_str (),
13400 marker.str_id.c_str ());
0fb4aa4b 13401
5d9310c4 13402 tp->static_trace_marker_id = std::move (marker.str_id);
0fb4aa4b
PA
13403
13404 return sal;
13405 }
13406
13407 /* Old marker wasn't found on target at lineno. Try looking it up
13408 by string ID. */
13409 if (!sal.explicit_pc
13410 && sal.line != 0
13411 && sal.symtab != NULL
5d9310c4 13412 && !tp->static_trace_marker_id.empty ())
0fb4aa4b 13413 {
5d9310c4
SM
13414 std::vector<static_tracepoint_marker> markers
13415 = target_static_tracepoint_markers_by_strid
13416 (tp->static_trace_marker_id.c_str ());
0fb4aa4b 13417
5d9310c4 13418 if (!markers.empty ())
0fb4aa4b 13419 {
0fb4aa4b 13420 struct symbol *sym;
80e1d417 13421 struct static_tracepoint_marker *tpmarker;
79a45e25 13422 struct ui_out *uiout = current_uiout;
67994074 13423 struct explicit_location explicit_loc;
0fb4aa4b 13424
5d9310c4 13425 tpmarker = &markers[0];
0fb4aa4b 13426
5d9310c4 13427 tp->static_trace_marker_id = std::move (tpmarker->str_id);
0fb4aa4b
PA
13428
13429 warning (_("marker for static tracepoint %d (%s) not "
13430 "found at previous line number"),
5d9310c4 13431 b->number, tp->static_trace_marker_id.c_str ());
0fb4aa4b 13432
51abb421 13433 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
80e1d417 13434 sym = find_pc_sect_function (tpmarker->address, NULL);
112e8700 13435 uiout->text ("Now in ");
0fb4aa4b
PA
13436 if (sym)
13437 {
cbe56571
TT
13438 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
13439 ui_out_style_kind::FUNCTION);
112e8700 13440 uiout->text (" at ");
0fb4aa4b 13441 }
112e8700 13442 uiout->field_string ("file",
cbe56571
TT
13443 symtab_to_filename_for_display (sal2.symtab),
13444 ui_out_style_kind::FILE);
112e8700 13445 uiout->text (":");
0fb4aa4b 13446
112e8700 13447 if (uiout->is_mi_like_p ())
0fb4aa4b 13448 {
0b0865da 13449 const char *fullname = symtab_to_fullname (sal2.symtab);
0fb4aa4b 13450
112e8700 13451 uiout->field_string ("fullname", fullname);
0fb4aa4b
PA
13452 }
13453
112e8700
SM
13454 uiout->field_int ("line", sal2.line);
13455 uiout->text ("\n");
0fb4aa4b 13456
80e1d417 13457 b->loc->line_number = sal2.line;
2f202fde 13458 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
0fb4aa4b 13459
d28cd78a 13460 b->location.reset (NULL);
67994074
KS
13461 initialize_explicit_location (&explicit_loc);
13462 explicit_loc.source_filename
00e52e53 13463 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
67994074
KS
13464 explicit_loc.line_offset.offset = b->loc->line_number;
13465 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
d28cd78a 13466 b->location = new_explicit_location (&explicit_loc);
0fb4aa4b
PA
13467
13468 /* Might be nice to check if function changed, and warn if
13469 so. */
0fb4aa4b
PA
13470 }
13471 }
13472 return sal;
13473}
13474
8d3788bd
VP
13475/* Returns 1 iff locations A and B are sufficiently same that
13476 we don't need to report breakpoint as changed. */
13477
13478static int
13479locations_are_equal (struct bp_location *a, struct bp_location *b)
13480{
13481 while (a && b)
13482 {
13483 if (a->address != b->address)
13484 return 0;
13485
13486 if (a->shlib_disabled != b->shlib_disabled)
13487 return 0;
13488
13489 if (a->enabled != b->enabled)
13490 return 0;
13491
13492 a = a->next;
13493 b = b->next;
13494 }
13495
13496 if ((a == NULL) != (b == NULL))
13497 return 0;
13498
13499 return 1;
13500}
13501
c2f4122d
PA
13502/* Split all locations of B that are bound to PSPACE out of B's
13503 location list to a separate list and return that list's head. If
13504 PSPACE is NULL, hoist out all locations of B. */
13505
13506static struct bp_location *
13507hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13508{
13509 struct bp_location head;
13510 struct bp_location *i = b->loc;
13511 struct bp_location **i_link = &b->loc;
13512 struct bp_location *hoisted = &head;
13513
13514 if (pspace == NULL)
13515 {
13516 i = b->loc;
13517 b->loc = NULL;
13518 return i;
13519 }
13520
13521 head.next = NULL;
13522
13523 while (i != NULL)
13524 {
13525 if (i->pspace == pspace)
13526 {
13527 *i_link = i->next;
13528 i->next = NULL;
13529 hoisted->next = i;
13530 hoisted = i;
13531 }
13532 else
13533 i_link = &i->next;
13534 i = *i_link;
13535 }
13536
13537 return head.next;
13538}
13539
13540/* Create new breakpoint locations for B (a hardware or software
13541 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
13542 zero, then B is a ranged breakpoint. Only recreates locations for
13543 FILTER_PSPACE. Locations of other program spaces are left
13544 untouched. */
f1310107 13545
0e30163f 13546void
0d381245 13547update_breakpoint_locations (struct breakpoint *b,
c2f4122d 13548 struct program_space *filter_pspace,
6c5b2ebe
PA
13549 gdb::array_view<const symtab_and_line> sals,
13550 gdb::array_view<const symtab_and_line> sals_end)
fe3f5fa8 13551{
c2f4122d 13552 struct bp_location *existing_locations;
0d381245 13553
6c5b2ebe 13554 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
f8eba3c6
TT
13555 {
13556 /* Ranged breakpoints have only one start location and one end
13557 location. */
13558 b->enable_state = bp_disabled;
f8eba3c6
TT
13559 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13560 "multiple locations found\n"),
13561 b->number);
13562 return;
13563 }
f1310107 13564
4a64f543
MS
13565 /* If there's no new locations, and all existing locations are
13566 pending, don't do anything. This optimizes the common case where
13567 all locations are in the same shared library, that was unloaded.
13568 We'd like to retain the location, so that when the library is
13569 loaded again, we don't loose the enabled/disabled status of the
13570 individual locations. */
6c5b2ebe 13571 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
fe3f5fa8
VP
13572 return;
13573
c2f4122d 13574 existing_locations = hoist_existing_locations (b, filter_pspace);
fe3f5fa8 13575
6c5b2ebe 13576 for (const auto &sal : sals)
fe3f5fa8 13577 {
f8eba3c6
TT
13578 struct bp_location *new_loc;
13579
6c5b2ebe 13580 switch_to_program_space_and_thread (sal.pspace);
f8eba3c6 13581
6c5b2ebe 13582 new_loc = add_location_to_breakpoint (b, &sal);
fe3f5fa8 13583
0d381245
VP
13584 /* Reparse conditions, they might contain references to the
13585 old symtab. */
13586 if (b->cond_string != NULL)
13587 {
bbc13ae3 13588 const char *s;
fe3f5fa8 13589
0d381245 13590 s = b->cond_string;
492d29ea 13591 TRY
0d381245 13592 {
6c5b2ebe
PA
13593 new_loc->cond = parse_exp_1 (&s, sal.pc,
13594 block_for_pc (sal.pc),
0d381245
VP
13595 0);
13596 }
492d29ea 13597 CATCH (e, RETURN_MASK_ERROR)
0d381245 13598 {
3e43a32a
MS
13599 warning (_("failed to reevaluate condition "
13600 "for breakpoint %d: %s"),
0d381245
VP
13601 b->number, e.message);
13602 new_loc->enabled = 0;
13603 }
492d29ea 13604 END_CATCH
0d381245 13605 }
fe3f5fa8 13606
6c5b2ebe 13607 if (!sals_end.empty ())
f1310107 13608 {
6c5b2ebe 13609 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
f1310107 13610
6c5b2ebe 13611 new_loc->length = end - sals[0].pc + 1;
f1310107 13612 }
0d381245 13613 }
fe3f5fa8 13614
4a64f543
MS
13615 /* If possible, carry over 'disable' status from existing
13616 breakpoints. */
0d381245
VP
13617 {
13618 struct bp_location *e = existing_locations;
776592bf
DE
13619 /* If there are multiple breakpoints with the same function name,
13620 e.g. for inline functions, comparing function names won't work.
13621 Instead compare pc addresses; this is just a heuristic as things
13622 may have moved, but in practice it gives the correct answer
13623 often enough until a better solution is found. */
13624 int have_ambiguous_names = ambiguous_names_p (b->loc);
13625
0d381245
VP
13626 for (; e; e = e->next)
13627 {
13628 if (!e->enabled && e->function_name)
13629 {
13630 struct bp_location *l = b->loc;
776592bf
DE
13631 if (have_ambiguous_names)
13632 {
13633 for (; l; l = l->next)
f1310107 13634 if (breakpoint_locations_match (e, l))
776592bf
DE
13635 {
13636 l->enabled = 0;
13637 break;
13638 }
13639 }
13640 else
13641 {
13642 for (; l; l = l->next)
13643 if (l->function_name
13644 && strcmp (e->function_name, l->function_name) == 0)
13645 {
13646 l->enabled = 0;
13647 break;
13648 }
13649 }
0d381245
VP
13650 }
13651 }
13652 }
fe3f5fa8 13653
8d3788bd 13654 if (!locations_are_equal (existing_locations, b->loc))
76727919 13655 gdb::observers::breakpoint_modified.notify (b);
fe3f5fa8
VP
13656}
13657
f00aae0f 13658/* Find the SaL locations corresponding to the given LOCATION.
ef23e705
TJB
13659 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
13660
6c5b2ebe 13661static std::vector<symtab_and_line>
f00aae0f 13662location_to_sals (struct breakpoint *b, struct event_location *location,
c2f4122d 13663 struct program_space *search_pspace, int *found)
ef23e705 13664{
492d29ea 13665 struct gdb_exception exception = exception_none;
ef23e705 13666
983af33b 13667 gdb_assert (b->ops != NULL);
ef23e705 13668
6c5b2ebe
PA
13669 std::vector<symtab_and_line> sals;
13670
492d29ea 13671 TRY
ef23e705 13672 {
6c5b2ebe 13673 sals = b->ops->decode_location (b, location, search_pspace);
ef23e705 13674 }
492d29ea 13675 CATCH (e, RETURN_MASK_ERROR)
ef23e705
TJB
13676 {
13677 int not_found_and_ok = 0;
492d29ea
PA
13678
13679 exception = e;
13680
ef23e705
TJB
13681 /* For pending breakpoints, it's expected that parsing will
13682 fail until the right shared library is loaded. User has
13683 already told to create pending breakpoints and don't need
13684 extra messages. If breakpoint is in bp_shlib_disabled
13685 state, then user already saw the message about that
13686 breakpoint being disabled, and don't want to see more
13687 errors. */
58438ac1 13688 if (e.error == NOT_FOUND_ERROR
c2f4122d
PA
13689 && (b->condition_not_parsed
13690 || (b->loc != NULL
13691 && search_pspace != NULL
13692 && b->loc->pspace != search_pspace)
ef23e705 13693 || (b->loc && b->loc->shlib_disabled)
f8eba3c6 13694 || (b->loc && b->loc->pspace->executing_startup)
ef23e705
TJB
13695 || b->enable_state == bp_disabled))
13696 not_found_and_ok = 1;
13697
13698 if (!not_found_and_ok)
13699 {
13700 /* We surely don't want to warn about the same breakpoint
13701 10 times. One solution, implemented here, is disable
13702 the breakpoint on error. Another solution would be to
13703 have separate 'warning emitted' flag. Since this
13704 happens only when a binary has changed, I don't know
13705 which approach is better. */
13706 b->enable_state = bp_disabled;
13707 throw_exception (e);
13708 }
13709 }
492d29ea 13710 END_CATCH
ef23e705 13711
492d29ea 13712 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
ef23e705 13713 {
6c5b2ebe
PA
13714 for (auto &sal : sals)
13715 resolve_sal_pc (&sal);
f00aae0f 13716 if (b->condition_not_parsed && b->extra_string != NULL)
ef23e705 13717 {
ed1d1739
KS
13718 char *cond_string, *extra_string;
13719 int thread, task;
ef23e705 13720
6c5b2ebe 13721 find_condition_and_thread (b->extra_string, sals[0].pc,
e7e0cddf
SS
13722 &cond_string, &thread, &task,
13723 &extra_string);
f00aae0f 13724 gdb_assert (b->cond_string == NULL);
ef23e705
TJB
13725 if (cond_string)
13726 b->cond_string = cond_string;
13727 b->thread = thread;
13728 b->task = task;
e7e0cddf 13729 if (extra_string)
f00aae0f
KS
13730 {
13731 xfree (b->extra_string);
13732 b->extra_string = extra_string;
13733 }
ef23e705
TJB
13734 b->condition_not_parsed = 0;
13735 }
13736
983af33b 13737 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
6c5b2ebe 13738 sals[0] = update_static_tracepoint (b, sals[0]);
ef23e705 13739
58438ac1
TT
13740 *found = 1;
13741 }
13742 else
13743 *found = 0;
ef23e705
TJB
13744
13745 return sals;
13746}
13747
348d480f
PA
13748/* The default re_set method, for typical hardware or software
13749 breakpoints. Reevaluate the breakpoint and recreate its
13750 locations. */
13751
13752static void
28010a5d 13753breakpoint_re_set_default (struct breakpoint *b)
ef23e705 13754{
c2f4122d 13755 struct program_space *filter_pspace = current_program_space;
6c5b2ebe 13756 std::vector<symtab_and_line> expanded, expanded_end;
ef23e705 13757
6c5b2ebe
PA
13758 int found;
13759 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13760 filter_pspace, &found);
ef23e705 13761 if (found)
6c5b2ebe 13762 expanded = std::move (sals);
ef23e705 13763
f00aae0f 13764 if (b->location_range_end != NULL)
f1310107 13765 {
6c5b2ebe
PA
13766 std::vector<symtab_and_line> sals_end
13767 = location_to_sals (b, b->location_range_end.get (),
13768 filter_pspace, &found);
f1310107 13769 if (found)
6c5b2ebe 13770 expanded_end = std::move (sals_end);
f1310107
TJB
13771 }
13772
c2f4122d 13773 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
28010a5d
PA
13774}
13775
983af33b
SDJ
13776/* Default method for creating SALs from an address string. It basically
13777 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
13778
13779static void
f00aae0f
KS
13780create_sals_from_location_default (const struct event_location *location,
13781 struct linespec_result *canonical,
13782 enum bptype type_wanted)
983af33b 13783{
f00aae0f 13784 parse_breakpoint_sals (location, canonical);
983af33b
SDJ
13785}
13786
13787/* Call create_breakpoints_sal for the given arguments. This is the default
13788 function for the `create_breakpoints_sal' method of
13789 breakpoint_ops. */
13790
13791static void
13792create_breakpoints_sal_default (struct gdbarch *gdbarch,
13793 struct linespec_result *canonical,
e1e01040
PA
13794 gdb::unique_xmalloc_ptr<char> cond_string,
13795 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13796 enum bptype type_wanted,
13797 enum bpdisp disposition,
13798 int thread,
13799 int task, int ignore_count,
13800 const struct breakpoint_ops *ops,
13801 int from_tty, int enabled,
44f238bb 13802 int internal, unsigned flags)
983af33b 13803{
e1e01040
PA
13804 create_breakpoints_sal (gdbarch, canonical,
13805 std::move (cond_string),
13806 std::move (extra_string),
983af33b
SDJ
13807 type_wanted, disposition,
13808 thread, task, ignore_count, ops, from_tty,
44f238bb 13809 enabled, internal, flags);
983af33b
SDJ
13810}
13811
13812/* Decode the line represented by S by calling decode_line_full. This is the
5f700d83 13813 default function for the `decode_location' method of breakpoint_ops. */
983af33b 13814
6c5b2ebe 13815static std::vector<symtab_and_line>
f00aae0f
KS
13816decode_location_default (struct breakpoint *b,
13817 const struct event_location *location,
6c5b2ebe 13818 struct program_space *search_pspace)
983af33b
SDJ
13819{
13820 struct linespec_result canonical;
13821
c2f4122d 13822 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
983af33b
SDJ
13823 (struct symtab *) NULL, 0,
13824 &canonical, multiple_symbols_all,
13825 b->filter);
13826
13827 /* We should get 0 or 1 resulting SALs. */
6c5b2ebe 13828 gdb_assert (canonical.lsals.size () < 2);
983af33b 13829
6c5b2ebe 13830 if (!canonical.lsals.empty ())
983af33b 13831 {
6c5b2ebe
PA
13832 const linespec_sals &lsal = canonical.lsals[0];
13833 return std::move (lsal.sals);
983af33b 13834 }
6c5b2ebe 13835 return {};
983af33b
SDJ
13836}
13837
bf469271 13838/* Reset a breakpoint. */
c906108c 13839
bf469271
PA
13840static void
13841breakpoint_re_set_one (breakpoint *b)
c906108c 13842{
fdf44873
TT
13843 input_radix = b->input_radix;
13844 set_language (b->language);
c906108c 13845
348d480f 13846 b->ops->re_set (b);
c906108c
SS
13847}
13848
c2f4122d
PA
13849/* Re-set breakpoint locations for the current program space.
13850 Locations bound to other program spaces are left untouched. */
13851
c906108c 13852void
69de3c6a 13853breakpoint_re_set (void)
c906108c 13854{
35df4500 13855 struct breakpoint *b, *b_tmp;
2a7f3dff 13856
c5aa993b 13857 {
fdf44873
TT
13858 scoped_restore_current_language save_language;
13859 scoped_restore save_input_radix = make_scoped_restore (&input_radix);
5ed8105e 13860 scoped_restore_current_pspace_and_thread restore_pspace_thread;
e62c965a 13861
8e817061
JB
13862 /* breakpoint_re_set_one sets the current_language to the language
13863 of the breakpoint it is resetting (see prepare_re_set_context)
13864 before re-evaluating the breakpoint's location. This change can
13865 unfortunately get undone by accident if the language_mode is set
13866 to auto, and we either switch frames, or more likely in this context,
13867 we select the current frame.
13868
13869 We prevent this by temporarily turning the language_mode to
13870 language_mode_manual. We restore it once all breakpoints
13871 have been reset. */
13872 scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13873 language_mode = language_mode_manual;
13874
5ed8105e
PA
13875 /* Note: we must not try to insert locations until after all
13876 breakpoints have been re-set. Otherwise, e.g., when re-setting
13877 breakpoint 1, we'd insert the locations of breakpoint 2, which
13878 hadn't been re-set yet, and thus may have stale locations. */
4efc6507 13879
5ed8105e
PA
13880 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13881 {
bf469271
PA
13882 TRY
13883 {
13884 breakpoint_re_set_one (b);
13885 }
13886 CATCH (ex, RETURN_MASK_ALL)
13887 {
13888 exception_fprintf (gdb_stderr, ex,
13889 "Error in re-setting breakpoint %d: ",
13890 b->number);
13891 }
13892 END_CATCH
5ed8105e 13893 }
5ed8105e
PA
13894
13895 jit_breakpoint_re_set ();
13896 }
6c95b8df 13897
af02033e
PP
13898 create_overlay_event_breakpoint ();
13899 create_longjmp_master_breakpoint ();
13900 create_std_terminate_master_breakpoint ();
186c406b 13901 create_exception_master_breakpoint ();
2a7f3dff
PA
13902
13903 /* Now we can insert. */
13904 update_global_location_list (UGLL_MAY_INSERT);
c906108c
SS
13905}
13906\f
c906108c
SS
13907/* Reset the thread number of this breakpoint:
13908
13909 - If the breakpoint is for all threads, leave it as-is.
4a64f543 13910 - Else, reset it to the current thread for inferior_ptid. */
c906108c 13911void
fba45db2 13912breakpoint_re_set_thread (struct breakpoint *b)
c906108c
SS
13913{
13914 if (b->thread != -1)
13915 {
00431a78 13916 b->thread = inferior_thread ()->global_num;
6c95b8df
PA
13917
13918 /* We're being called after following a fork. The new fork is
13919 selected as current, and unless this was a vfork will have a
13920 different program space from the original thread. Reset that
13921 as well. */
13922 b->loc->pspace = current_program_space;
c906108c
SS
13923 }
13924}
13925
03ac34d5
MS
13926/* Set ignore-count of breakpoint number BPTNUM to COUNT.
13927 If from_tty is nonzero, it prints a message to that effect,
13928 which ends with a period (no newline). */
13929
c906108c 13930void
fba45db2 13931set_ignore_count (int bptnum, int count, int from_tty)
c906108c 13932{
52f0bd74 13933 struct breakpoint *b;
c906108c
SS
13934
13935 if (count < 0)
13936 count = 0;
13937
13938 ALL_BREAKPOINTS (b)
13939 if (b->number == bptnum)
c5aa993b 13940 {
d77f58be
SS
13941 if (is_tracepoint (b))
13942 {
13943 if (from_tty && count != 0)
13944 printf_filtered (_("Ignore count ignored for tracepoint %d."),
13945 bptnum);
13946 return;
13947 }
13948
c5aa993b 13949 b->ignore_count = count;
221ea385
KS
13950 if (from_tty)
13951 {
13952 if (count == 0)
3e43a32a
MS
13953 printf_filtered (_("Will stop next time "
13954 "breakpoint %d is reached."),
221ea385
KS
13955 bptnum);
13956 else if (count == 1)
a3f17187 13957 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
221ea385
KS
13958 bptnum);
13959 else
3e43a32a
MS
13960 printf_filtered (_("Will ignore next %d "
13961 "crossings of breakpoint %d."),
221ea385
KS
13962 count, bptnum);
13963 }
76727919 13964 gdb::observers::breakpoint_modified.notify (b);
c5aa993b
JM
13965 return;
13966 }
c906108c 13967
8a3fe4f8 13968 error (_("No breakpoint number %d."), bptnum);
c906108c
SS
13969}
13970
c906108c
SS
13971/* Command to set ignore-count of breakpoint N to COUNT. */
13972
13973static void
0b39b52e 13974ignore_command (const char *args, int from_tty)
c906108c 13975{
0b39b52e 13976 const char *p = args;
52f0bd74 13977 int num;
c906108c
SS
13978
13979 if (p == 0)
e2e0b3e5 13980 error_no_arg (_("a breakpoint number"));
c5aa993b 13981
c906108c 13982 num = get_number (&p);
5c44784c 13983 if (num == 0)
8a3fe4f8 13984 error (_("bad breakpoint number: '%s'"), args);
c906108c 13985 if (*p == 0)
8a3fe4f8 13986 error (_("Second argument (specified ignore-count) is missing."));
c906108c
SS
13987
13988 set_ignore_count (num,
13989 longest_to_int (value_as_long (parse_and_eval (p))),
13990 from_tty);
221ea385
KS
13991 if (from_tty)
13992 printf_filtered ("\n");
c906108c
SS
13993}
13994\f
d0fe4701
XR
13995
13996/* Call FUNCTION on each of the breakpoints with numbers in the range
13997 defined by BP_NUM_RANGE (an inclusive range). */
c906108c
SS
13998
13999static void
d0fe4701
XR
14000map_breakpoint_number_range (std::pair<int, int> bp_num_range,
14001 gdb::function_view<void (breakpoint *)> function)
c906108c 14002{
d0fe4701
XR
14003 if (bp_num_range.first == 0)
14004 {
14005 warning (_("bad breakpoint number at or near '%d'"),
14006 bp_num_range.first);
14007 }
14008 else
c906108c 14009 {
d0fe4701 14010 struct breakpoint *b, *tmp;
197f0a60 14011
d0fe4701 14012 for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
5c44784c 14013 {
d0fe4701
XR
14014 bool match = false;
14015
5c44784c 14016 ALL_BREAKPOINTS_SAFE (b, tmp)
d0fe4701 14017 if (b->number == i)
5c44784c 14018 {
bfd28288 14019 match = true;
48649e1b 14020 function (b);
11cf8741 14021 break;
5c44784c 14022 }
bfd28288 14023 if (!match)
d0fe4701 14024 printf_unfiltered (_("No breakpoint number %d.\n"), i);
c5aa993b 14025 }
c906108c
SS
14026 }
14027}
14028
d0fe4701
XR
14029/* Call FUNCTION on each of the breakpoints whose numbers are given in
14030 ARGS. */
14031
14032static void
14033map_breakpoint_numbers (const char *args,
14034 gdb::function_view<void (breakpoint *)> function)
14035{
14036 if (args == NULL || *args == '\0')
14037 error_no_arg (_("one or more breakpoint numbers"));
14038
14039 number_or_range_parser parser (args);
14040
14041 while (!parser.finished ())
14042 {
14043 int num = parser.get_number ();
14044 map_breakpoint_number_range (std::make_pair (num, num), function);
14045 }
14046}
14047
14048/* Return the breakpoint location structure corresponding to the
14049 BP_NUM and LOC_NUM values. */
14050
0d381245 14051static struct bp_location *
d0fe4701 14052find_location_by_number (int bp_num, int loc_num)
0d381245 14053{
0d381245 14054 struct breakpoint *b;
0d381245
VP
14055
14056 ALL_BREAKPOINTS (b)
14057 if (b->number == bp_num)
14058 {
14059 break;
14060 }
14061
14062 if (!b || b->number != bp_num)
d0fe4701 14063 error (_("Bad breakpoint number '%d'"), bp_num);
0d381245 14064
0d381245 14065 if (loc_num == 0)
d0fe4701 14066 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245 14067
d0fe4701
XR
14068 int n = 0;
14069 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
14070 if (++n == loc_num)
14071 return loc;
14072
14073 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245
VP
14074}
14075
95e95a6d
PA
14076/* Modes of operation for extract_bp_num. */
14077enum class extract_bp_kind
14078{
14079 /* Extracting a breakpoint number. */
14080 bp,
14081
14082 /* Extracting a location number. */
14083 loc,
14084};
14085
14086/* Extract a breakpoint or location number (as determined by KIND)
14087 from the string starting at START. TRAILER is a character which
14088 can be found after the number. If you don't want a trailer, use
14089 '\0'. If END_OUT is not NULL, it is set to point after the parsed
14090 string. This always returns a positive integer. */
14091
14092static int
14093extract_bp_num (extract_bp_kind kind, const char *start,
14094 int trailer, const char **end_out = NULL)
14095{
14096 const char *end = start;
14097 int num = get_number_trailer (&end, trailer);
14098 if (num < 0)
14099 error (kind == extract_bp_kind::bp
14100 ? _("Negative breakpoint number '%.*s'")
14101 : _("Negative breakpoint location number '%.*s'"),
14102 int (end - start), start);
14103 if (num == 0)
14104 error (kind == extract_bp_kind::bp
14105 ? _("Bad breakpoint number '%.*s'")
14106 : _("Bad breakpoint location number '%.*s'"),
14107 int (end - start), start);
14108
14109 if (end_out != NULL)
14110 *end_out = end;
14111 return num;
14112}
14113
14114/* Extract a breakpoint or location range (as determined by KIND) in
14115 the form NUM1-NUM2 stored at &ARG[arg_offset]. Returns a std::pair
14116 representing the (inclusive) range. The returned pair's elements
14117 are always positive integers. */
14118
14119static std::pair<int, int>
14120extract_bp_or_bp_range (extract_bp_kind kind,
14121 const std::string &arg,
14122 std::string::size_type arg_offset)
14123{
14124 std::pair<int, int> range;
14125 const char *bp_loc = &arg[arg_offset];
14126 std::string::size_type dash = arg.find ('-', arg_offset);
14127 if (dash != std::string::npos)
14128 {
14129 /* bp_loc is a range (x-z). */
14130 if (arg.length () == dash + 1)
14131 error (kind == extract_bp_kind::bp
14132 ? _("Bad breakpoint number at or near: '%s'")
14133 : _("Bad breakpoint location number at or near: '%s'"),
14134 bp_loc);
14135
14136 const char *end;
14137 const char *start_first = bp_loc;
14138 const char *start_second = &arg[dash + 1];
14139 range.first = extract_bp_num (kind, start_first, '-');
14140 range.second = extract_bp_num (kind, start_second, '\0', &end);
14141
14142 if (range.first > range.second)
14143 error (kind == extract_bp_kind::bp
14144 ? _("Inverted breakpoint range at '%.*s'")
14145 : _("Inverted breakpoint location range at '%.*s'"),
14146 int (end - start_first), start_first);
14147 }
14148 else
14149 {
14150 /* bp_loc is a single value. */
14151 range.first = extract_bp_num (kind, bp_loc, '\0');
14152 range.second = range.first;
14153 }
14154 return range;
14155}
14156
d0fe4701
XR
14157/* Extract the breakpoint/location range specified by ARG. Returns
14158 the breakpoint range in BP_NUM_RANGE, and the location range in
14159 BP_LOC_RANGE.
14160
14161 ARG may be in any of the following forms:
14162
14163 x where 'x' is a breakpoint number.
14164 x-y where 'x' and 'y' specify a breakpoint numbers range.
14165 x.y where 'x' is a breakpoint number and 'y' a location number.
14166 x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14167 location number range.
14168*/
14169
cc638e86 14170static void
d0fe4701
XR
14171extract_bp_number_and_location (const std::string &arg,
14172 std::pair<int, int> &bp_num_range,
14173 std::pair<int, int> &bp_loc_range)
14174{
14175 std::string::size_type dot = arg.find ('.');
14176
14177 if (dot != std::string::npos)
14178 {
14179 /* Handle 'x.y' and 'x.y-z' cases. */
14180
14181 if (arg.length () == dot + 1 || dot == 0)
95e95a6d 14182 error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
d0fe4701 14183
95e95a6d
PA
14184 bp_num_range.first
14185 = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14186 bp_num_range.second = bp_num_range.first;
d0fe4701 14187
95e95a6d
PA
14188 bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14189 arg, dot + 1);
d0fe4701
XR
14190 }
14191 else
14192 {
14193 /* Handle x and x-y cases. */
d0fe4701 14194
95e95a6d 14195 bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
d0fe4701
XR
14196 bp_loc_range.first = 0;
14197 bp_loc_range.second = 0;
14198 }
d0fe4701
XR
14199}
14200
14201/* Enable or disable a breakpoint location BP_NUM.LOC_NUM. ENABLE
14202 specifies whether to enable or disable. */
14203
14204static void
14205enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14206{
14207 struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14208 if (loc != NULL)
14209 {
14210 if (loc->enabled != enable)
14211 {
14212 loc->enabled = enable;
14213 mark_breakpoint_location_modified (loc);
14214 }
14215 if (target_supports_enable_disable_tracepoint ()
14216 && current_trace_status ()->running && loc->owner
14217 && is_tracepoint (loc->owner))
14218 target_disable_tracepoint (loc);
14219 }
14220 update_global_location_list (UGLL_DONT_INSERT);
d7154a8d
JV
14221
14222 gdb::observers::breakpoint_modified.notify (loc->owner);
d0fe4701
XR
14223}
14224
14225/* Enable or disable a range of breakpoint locations. BP_NUM is the
14226 number of the breakpoint, and BP_LOC_RANGE specifies the
14227 (inclusive) range of location numbers of that breakpoint to
14228 enable/disable. ENABLE specifies whether to enable or disable the
14229 location. */
14230
14231static void
14232enable_disable_breakpoint_location_range (int bp_num,
14233 std::pair<int, int> &bp_loc_range,
14234 bool enable)
14235{
14236 for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14237 enable_disable_bp_num_loc (bp_num, i, enable);
14238}
0d381245 14239
1900040c
MS
14240/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14241 If from_tty is nonzero, it prints a message to that effect,
14242 which ends with a period (no newline). */
14243
c906108c 14244void
fba45db2 14245disable_breakpoint (struct breakpoint *bpt)
c906108c
SS
14246{
14247 /* Never disable a watchpoint scope breakpoint; we want to
14248 hit them when we leave scope so we can delete both the
14249 watchpoint and its scope breakpoint at that time. */
14250 if (bpt->type == bp_watchpoint_scope)
14251 return;
14252
b5de0fa7 14253 bpt->enable_state = bp_disabled;
c906108c 14254
b775012e
LM
14255 /* Mark breakpoint locations modified. */
14256 mark_breakpoint_modified (bpt);
14257
d248b706
KY
14258 if (target_supports_enable_disable_tracepoint ()
14259 && current_trace_status ()->running && is_tracepoint (bpt))
14260 {
14261 struct bp_location *location;
14262
14263 for (location = bpt->loc; location; location = location->next)
14264 target_disable_tracepoint (location);
14265 }
14266
44702360 14267 update_global_location_list (UGLL_DONT_INSERT);
c906108c 14268
76727919 14269 gdb::observers::breakpoint_modified.notify (bpt);
c906108c
SS
14270}
14271
d0fe4701
XR
14272/* Enable or disable the breakpoint(s) or breakpoint location(s)
14273 specified in ARGS. ARGS may be in any of the formats handled by
14274 extract_bp_number_and_location. ENABLE specifies whether to enable
14275 or disable the breakpoints/locations. */
14276
c906108c 14277static void
d0fe4701 14278enable_disable_command (const char *args, int from_tty, bool enable)
c906108c 14279{
c906108c 14280 if (args == 0)
46c6471b
PA
14281 {
14282 struct breakpoint *bpt;
14283
14284 ALL_BREAKPOINTS (bpt)
14285 if (user_breakpoint_p (bpt))
d0fe4701
XR
14286 {
14287 if (enable)
14288 enable_breakpoint (bpt);
14289 else
14290 disable_breakpoint (bpt);
14291 }
46c6471b 14292 }
9eaabc75 14293 else
0d381245 14294 {
cb791d59 14295 std::string num = extract_arg (&args);
9eaabc75 14296
cb791d59 14297 while (!num.empty ())
d248b706 14298 {
d0fe4701 14299 std::pair<int, int> bp_num_range, bp_loc_range;
9eaabc75 14300
cc638e86
PA
14301 extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14302
14303 if (bp_loc_range.first == bp_loc_range.second
14304 && bp_loc_range.first == 0)
d0fe4701 14305 {
cc638e86
PA
14306 /* Handle breakpoint ids with formats 'x' or 'x-z'. */
14307 map_breakpoint_number_range (bp_num_range,
14308 enable
14309 ? enable_breakpoint
14310 : disable_breakpoint);
14311 }
14312 else
14313 {
14314 /* Handle breakpoint ids with formats 'x.y' or
14315 'x.y-z'. */
14316 enable_disable_breakpoint_location_range
14317 (bp_num_range.first, bp_loc_range, enable);
b775012e 14318 }
9eaabc75 14319 num = extract_arg (&args);
d248b706 14320 }
0d381245 14321 }
c906108c
SS
14322}
14323
d0fe4701
XR
14324/* The disable command disables the specified breakpoints/locations
14325 (or all defined breakpoints) so they're no longer effective in
14326 stopping the inferior. ARGS may be in any of the forms defined in
14327 extract_bp_number_and_location. */
14328
14329static void
14330disable_command (const char *args, int from_tty)
14331{
14332 enable_disable_command (args, from_tty, false);
14333}
14334
c906108c 14335static void
816338b5
SS
14336enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14337 int count)
c906108c 14338{
afe38095 14339 int target_resources_ok;
c906108c
SS
14340
14341 if (bpt->type == bp_hardware_breakpoint)
14342 {
14343 int i;
c5aa993b 14344 i = hw_breakpoint_used_count ();
53a5351d 14345 target_resources_ok =
d92524f1 14346 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
53a5351d 14347 i + 1, 0);
c906108c 14348 if (target_resources_ok == 0)
8a3fe4f8 14349 error (_("No hardware breakpoint support in the target."));
c906108c 14350 else if (target_resources_ok < 0)
8a3fe4f8 14351 error (_("Hardware breakpoints used exceeds limit."));
c906108c
SS
14352 }
14353
cc60f2e3 14354 if (is_watchpoint (bpt))
c906108c 14355 {
d07205c2 14356 /* Initialize it just to avoid a GCC false warning. */
f486487f 14357 enum enable_state orig_enable_state = bp_disabled;
dde02812 14358
492d29ea 14359 TRY
c906108c 14360 {
3a5c3e22
PA
14361 struct watchpoint *w = (struct watchpoint *) bpt;
14362
1e718ff1
TJB
14363 orig_enable_state = bpt->enable_state;
14364 bpt->enable_state = bp_enabled;
3a5c3e22 14365 update_watchpoint (w, 1 /* reparse */);
c906108c 14366 }
492d29ea 14367 CATCH (e, RETURN_MASK_ALL)
c5aa993b 14368 {
1e718ff1 14369 bpt->enable_state = orig_enable_state;
dde02812
ES
14370 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14371 bpt->number);
14372 return;
c5aa993b 14373 }
492d29ea 14374 END_CATCH
c906108c 14375 }
0101ce28 14376
b775012e
LM
14377 bpt->enable_state = bp_enabled;
14378
14379 /* Mark breakpoint locations modified. */
14380 mark_breakpoint_modified (bpt);
14381
d248b706
KY
14382 if (target_supports_enable_disable_tracepoint ()
14383 && current_trace_status ()->running && is_tracepoint (bpt))
14384 {
14385 struct bp_location *location;
14386
14387 for (location = bpt->loc; location; location = location->next)
14388 target_enable_tracepoint (location);
14389 }
14390
b4c291bb 14391 bpt->disposition = disposition;
816338b5 14392 bpt->enable_count = count;
44702360 14393 update_global_location_list (UGLL_MAY_INSERT);
9c97429f 14394
76727919 14395 gdb::observers::breakpoint_modified.notify (bpt);
c906108c
SS
14396}
14397
fe3f5fa8 14398
c906108c 14399void
fba45db2 14400enable_breakpoint (struct breakpoint *bpt)
c906108c 14401{
816338b5 14402 enable_breakpoint_disp (bpt, bpt->disposition, 0);
51be5b68
PA
14403}
14404
d0fe4701
XR
14405/* The enable command enables the specified breakpoints/locations (or
14406 all defined breakpoints) so they once again become (or continue to
14407 be) effective in stopping the inferior. ARGS may be in any of the
14408 forms defined in extract_bp_number_and_location. */
c906108c 14409
c906108c 14410static void
981a3fb3 14411enable_command (const char *args, int from_tty)
c906108c 14412{
d0fe4701 14413 enable_disable_command (args, from_tty, true);
c906108c
SS
14414}
14415
c906108c 14416static void
4495129a 14417enable_once_command (const char *args, int from_tty)
c906108c 14418{
48649e1b
TT
14419 map_breakpoint_numbers
14420 (args, [&] (breakpoint *b)
14421 {
14422 iterate_over_related_breakpoints
14423 (b, [&] (breakpoint *bpt)
14424 {
14425 enable_breakpoint_disp (bpt, disp_disable, 1);
14426 });
14427 });
816338b5
SS
14428}
14429
14430static void
4495129a 14431enable_count_command (const char *args, int from_tty)
816338b5 14432{
b9d61307
SM
14433 int count;
14434
14435 if (args == NULL)
14436 error_no_arg (_("hit count"));
14437
14438 count = get_number (&args);
816338b5 14439
48649e1b
TT
14440 map_breakpoint_numbers
14441 (args, [&] (breakpoint *b)
14442 {
14443 iterate_over_related_breakpoints
14444 (b, [&] (breakpoint *bpt)
14445 {
14446 enable_breakpoint_disp (bpt, disp_disable, count);
14447 });
14448 });
c906108c
SS
14449}
14450
c906108c 14451static void
4495129a 14452enable_delete_command (const char *args, int from_tty)
c906108c 14453{
48649e1b
TT
14454 map_breakpoint_numbers
14455 (args, [&] (breakpoint *b)
14456 {
14457 iterate_over_related_breakpoints
14458 (b, [&] (breakpoint *bpt)
14459 {
14460 enable_breakpoint_disp (bpt, disp_del, 1);
14461 });
14462 });
c906108c
SS
14463}
14464\f
fa8d40ab 14465static void
981a3fb3 14466set_breakpoint_cmd (const char *args, int from_tty)
fa8d40ab
JJ
14467{
14468}
14469
14470static void
981a3fb3 14471show_breakpoint_cmd (const char *args, int from_tty)
fa8d40ab
JJ
14472{
14473}
14474
1f3b5d1b
PP
14475/* Invalidate last known value of any hardware watchpoint if
14476 the memory which that value represents has been written to by
14477 GDB itself. */
14478
14479static void
8de0566d
YQ
14480invalidate_bp_value_on_memory_change (struct inferior *inferior,
14481 CORE_ADDR addr, ssize_t len,
1f3b5d1b
PP
14482 const bfd_byte *data)
14483{
14484 struct breakpoint *bp;
14485
14486 ALL_BREAKPOINTS (bp)
14487 if (bp->enable_state == bp_enabled
3a5c3e22 14488 && bp->type == bp_hardware_watchpoint)
1f3b5d1b 14489 {
3a5c3e22 14490 struct watchpoint *wp = (struct watchpoint *) bp;
1f3b5d1b 14491
850645cf 14492 if (wp->val_valid && wp->val != nullptr)
3a5c3e22
PA
14493 {
14494 struct bp_location *loc;
14495
14496 for (loc = bp->loc; loc != NULL; loc = loc->next)
14497 if (loc->loc_type == bp_loc_hardware_watchpoint
14498 && loc->address + loc->length > addr
14499 && addr + len > loc->address)
14500 {
3a5c3e22
PA
14501 wp->val = NULL;
14502 wp->val_valid = 0;
14503 }
14504 }
1f3b5d1b
PP
14505 }
14506}
14507
8181d85f
DJ
14508/* Create and insert a breakpoint for software single step. */
14509
14510void
6c95b8df 14511insert_single_step_breakpoint (struct gdbarch *gdbarch,
accd0bcd 14512 const address_space *aspace,
4a64f543 14513 CORE_ADDR next_pc)
8181d85f 14514{
7c16b83e
PA
14515 struct thread_info *tp = inferior_thread ();
14516 struct symtab_and_line sal;
14517 CORE_ADDR pc = next_pc;
8181d85f 14518
34b7e8a6
PA
14519 if (tp->control.single_step_breakpoints == NULL)
14520 {
14521 tp->control.single_step_breakpoints
5d5658a1 14522 = new_single_step_breakpoint (tp->global_num, gdbarch);
34b7e8a6 14523 }
8181d85f 14524
7c16b83e
PA
14525 sal = find_pc_line (pc, 0);
14526 sal.pc = pc;
14527 sal.section = find_pc_overlay (pc);
14528 sal.explicit_pc = 1;
34b7e8a6 14529 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
8181d85f 14530
7c16b83e 14531 update_global_location_list (UGLL_INSERT);
8181d85f
DJ
14532}
14533
93f9a11f
YQ
14534/* Insert single step breakpoints according to the current state. */
14535
14536int
14537insert_single_step_breakpoints (struct gdbarch *gdbarch)
14538{
f5ea389a 14539 struct regcache *regcache = get_current_regcache ();
a0ff9e1a 14540 std::vector<CORE_ADDR> next_pcs;
93f9a11f 14541
f5ea389a 14542 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
93f9a11f 14543
a0ff9e1a 14544 if (!next_pcs.empty ())
93f9a11f 14545 {
f5ea389a 14546 struct frame_info *frame = get_current_frame ();
8b86c959 14547 const address_space *aspace = get_frame_address_space (frame);
93f9a11f 14548
a0ff9e1a 14549 for (CORE_ADDR pc : next_pcs)
93f9a11f
YQ
14550 insert_single_step_breakpoint (gdbarch, aspace, pc);
14551
93f9a11f
YQ
14552 return 1;
14553 }
14554 else
14555 return 0;
14556}
14557
34b7e8a6 14558/* See breakpoint.h. */
f02253f1
HZ
14559
14560int
7c16b83e 14561breakpoint_has_location_inserted_here (struct breakpoint *bp,
accd0bcd 14562 const address_space *aspace,
7c16b83e 14563 CORE_ADDR pc)
1aafd4da 14564{
7c16b83e 14565 struct bp_location *loc;
1aafd4da 14566
7c16b83e
PA
14567 for (loc = bp->loc; loc != NULL; loc = loc->next)
14568 if (loc->inserted
14569 && breakpoint_location_address_match (loc, aspace, pc))
14570 return 1;
1aafd4da 14571
7c16b83e 14572 return 0;
ef370185
JB
14573}
14574
14575/* Check whether a software single-step breakpoint is inserted at
14576 PC. */
14577
14578int
accd0bcd 14579single_step_breakpoint_inserted_here_p (const address_space *aspace,
ef370185
JB
14580 CORE_ADDR pc)
14581{
34b7e8a6
PA
14582 struct breakpoint *bpt;
14583
14584 ALL_BREAKPOINTS (bpt)
14585 {
14586 if (bpt->type == bp_single_step
14587 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14588 return 1;
14589 }
14590 return 0;
1aafd4da
UW
14591}
14592
1042e4c0
SS
14593/* Tracepoint-specific operations. */
14594
14595/* Set tracepoint count to NUM. */
14596static void
14597set_tracepoint_count (int num)
14598{
14599 tracepoint_count = num;
4fa62494 14600 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
1042e4c0
SS
14601}
14602
70221824 14603static void
0b39b52e 14604trace_command (const char *arg, int from_tty)
1042e4c0 14605{
55aa24fb 14606 struct breakpoint_ops *ops;
55aa24fb 14607
ffc2605c
TT
14608 event_location_up location = string_to_event_location (&arg,
14609 current_language);
5b56227b 14610 if (location != NULL
ffc2605c 14611 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
14612 ops = &tracepoint_probe_breakpoint_ops;
14613 else
14614 ops = &tracepoint_breakpoint_ops;
14615
558a9d82 14616 create_breakpoint (get_current_arch (),
ffc2605c 14617 location.get (),
f00aae0f 14618 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14619 0 /* tempflag */,
14620 bp_tracepoint /* type_wanted */,
14621 0 /* Ignore count */,
14622 pending_break_support,
14623 ops,
14624 from_tty,
14625 1 /* enabled */,
14626 0 /* internal */, 0);
1042e4c0
SS
14627}
14628
70221824 14629static void
0b39b52e 14630ftrace_command (const char *arg, int from_tty)
7a697b8d 14631{
ffc2605c
TT
14632 event_location_up location = string_to_event_location (&arg,
14633 current_language);
558a9d82 14634 create_breakpoint (get_current_arch (),
ffc2605c 14635 location.get (),
f00aae0f 14636 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14637 0 /* tempflag */,
14638 bp_fast_tracepoint /* type_wanted */,
14639 0 /* Ignore count */,
14640 pending_break_support,
14641 &tracepoint_breakpoint_ops,
14642 from_tty,
14643 1 /* enabled */,
14644 0 /* internal */, 0);
0fb4aa4b
PA
14645}
14646
14647/* strace command implementation. Creates a static tracepoint. */
14648
70221824 14649static void
0b39b52e 14650strace_command (const char *arg, int from_tty)
0fb4aa4b 14651{
983af33b 14652 struct breakpoint_ops *ops;
ffc2605c 14653 event_location_up location;
983af33b
SDJ
14654
14655 /* Decide if we are dealing with a static tracepoint marker (`-m'),
14656 or with a normal static tracepoint. */
61012eef 14657 if (arg && startswith (arg, "-m") && isspace (arg[2]))
f00aae0f
KS
14658 {
14659 ops = &strace_marker_breakpoint_ops;
a20714ff 14660 location = new_linespec_location (&arg, symbol_name_match_type::FULL);
f00aae0f 14661 }
983af33b 14662 else
f00aae0f
KS
14663 {
14664 ops = &tracepoint_breakpoint_ops;
14665 location = string_to_event_location (&arg, current_language);
14666 }
983af33b 14667
558a9d82 14668 create_breakpoint (get_current_arch (),
ffc2605c 14669 location.get (),
f00aae0f 14670 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14671 0 /* tempflag */,
14672 bp_static_tracepoint /* type_wanted */,
14673 0 /* Ignore count */,
14674 pending_break_support,
14675 ops,
14676 from_tty,
14677 1 /* enabled */,
14678 0 /* internal */, 0);
7a697b8d
SS
14679}
14680
409873ef
SS
14681/* Set up a fake reader function that gets command lines from a linked
14682 list that was acquired during tracepoint uploading. */
14683
14684static struct uploaded_tp *this_utp;
3149d8c1 14685static int next_cmd;
409873ef
SS
14686
14687static char *
14688read_uploaded_action (void)
14689{
a18ba4e4 14690 char *rslt = nullptr;
409873ef 14691
a18ba4e4
SM
14692 if (next_cmd < this_utp->cmd_strings.size ())
14693 {
14694 rslt = this_utp->cmd_strings[next_cmd];
14695 next_cmd++;
14696 }
409873ef
SS
14697
14698 return rslt;
14699}
14700
00bf0b85
SS
14701/* Given information about a tracepoint as recorded on a target (which
14702 can be either a live system or a trace file), attempt to create an
14703 equivalent GDB tracepoint. This is not a reliable process, since
14704 the target does not necessarily have all the information used when
14705 the tracepoint was originally defined. */
14706
d9b3f62e 14707struct tracepoint *
00bf0b85 14708create_tracepoint_from_upload (struct uploaded_tp *utp)
d5551862 14709{
f2fc3015
TT
14710 const char *addr_str;
14711 char small_buf[100];
d9b3f62e 14712 struct tracepoint *tp;
fd9b8c24 14713
409873ef
SS
14714 if (utp->at_string)
14715 addr_str = utp->at_string;
14716 else
14717 {
14718 /* In the absence of a source location, fall back to raw
14719 address. Since there is no way to confirm that the address
14720 means the same thing as when the trace was started, warn the
14721 user. */
3e43a32a
MS
14722 warning (_("Uploaded tracepoint %d has no "
14723 "source location, using raw address"),
409873ef 14724 utp->number);
8c042590 14725 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
409873ef
SS
14726 addr_str = small_buf;
14727 }
14728
14729 /* There's not much we can do with a sequence of bytecodes. */
14730 if (utp->cond && !utp->cond_string)
3e43a32a
MS
14731 warning (_("Uploaded tracepoint %d condition "
14732 "has no source form, ignoring it"),
409873ef 14733 utp->number);
d5551862 14734
ffc2605c
TT
14735 event_location_up location = string_to_event_location (&addr_str,
14736 current_language);
8cdf0e15 14737 if (!create_breakpoint (get_current_arch (),
ffc2605c 14738 location.get (),
f00aae0f 14739 utp->cond_string, -1, addr_str,
e7e0cddf 14740 0 /* parse cond/thread */,
8cdf0e15 14741 0 /* tempflag */,
0fb4aa4b 14742 utp->type /* type_wanted */,
8cdf0e15
VP
14743 0 /* Ignore count */,
14744 pending_break_support,
348d480f 14745 &tracepoint_breakpoint_ops,
8cdf0e15 14746 0 /* from_tty */,
84f4c1fe 14747 utp->enabled /* enabled */,
44f238bb
PA
14748 0 /* internal */,
14749 CREATE_BREAKPOINT_FLAGS_INSERTED))
ffc2605c 14750 return NULL;
fd9b8c24 14751
409873ef 14752 /* Get the tracepoint we just created. */
fd9b8c24
PA
14753 tp = get_tracepoint (tracepoint_count);
14754 gdb_assert (tp != NULL);
d5551862 14755
00bf0b85
SS
14756 if (utp->pass > 0)
14757 {
8c042590 14758 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
c1fc2657 14759 tp->number);
00bf0b85 14760
409873ef 14761 trace_pass_command (small_buf, 0);
00bf0b85
SS
14762 }
14763
409873ef
SS
14764 /* If we have uploaded versions of the original commands, set up a
14765 special-purpose "reader" function and call the usual command line
14766 reader, then pass the result to the breakpoint command-setting
14767 function. */
a18ba4e4 14768 if (!utp->cmd_strings.empty ())
00bf0b85 14769 {
12973681 14770 counted_command_line cmd_list;
00bf0b85 14771
409873ef 14772 this_utp = utp;
3149d8c1 14773 next_cmd = 0;
d5551862 14774
60b3cef2 14775 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
409873ef 14776
c1fc2657 14777 breakpoint_set_commands (tp, std::move (cmd_list));
00bf0b85 14778 }
a18ba4e4
SM
14779 else if (!utp->actions.empty ()
14780 || !utp->step_actions.empty ())
3e43a32a
MS
14781 warning (_("Uploaded tracepoint %d actions "
14782 "have no source form, ignoring them"),
409873ef 14783 utp->number);
00bf0b85 14784
f196051f 14785 /* Copy any status information that might be available. */
c1fc2657 14786 tp->hit_count = utp->hit_count;
f196051f
SS
14787 tp->traceframe_usage = utp->traceframe_usage;
14788
00bf0b85 14789 return tp;
d9b3f62e 14790}
00bf0b85 14791
1042e4c0
SS
14792/* Print information on tracepoint number TPNUM_EXP, or all if
14793 omitted. */
14794
14795static void
1d12d88f 14796info_tracepoints_command (const char *args, int from_tty)
1042e4c0 14797{
79a45e25 14798 struct ui_out *uiout = current_uiout;
e5a67952 14799 int num_printed;
1042e4c0 14800
e5a67952 14801 num_printed = breakpoint_1 (args, 0, is_tracepoint);
d77f58be
SS
14802
14803 if (num_printed == 0)
1042e4c0 14804 {
e5a67952 14805 if (args == NULL || *args == '\0')
112e8700 14806 uiout->message ("No tracepoints.\n");
d77f58be 14807 else
112e8700 14808 uiout->message ("No tracepoint matching '%s'.\n", args);
1042e4c0 14809 }
ad443146
SS
14810
14811 default_collect_info ();
1042e4c0
SS
14812}
14813
4a64f543 14814/* The 'enable trace' command enables tracepoints.
1042e4c0
SS
14815 Not supported by all targets. */
14816static void
5fed81ff 14817enable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14818{
14819 enable_command (args, from_tty);
14820}
14821
4a64f543 14822/* The 'disable trace' command disables tracepoints.
1042e4c0
SS
14823 Not supported by all targets. */
14824static void
5fed81ff 14825disable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14826{
14827 disable_command (args, from_tty);
14828}
14829
4a64f543 14830/* Remove a tracepoint (or all if no argument). */
1042e4c0 14831static void
4495129a 14832delete_trace_command (const char *arg, int from_tty)
1042e4c0 14833{
35df4500 14834 struct breakpoint *b, *b_tmp;
1042e4c0
SS
14835
14836 dont_repeat ();
14837
14838 if (arg == 0)
14839 {
14840 int breaks_to_delete = 0;
14841
14842 /* Delete all breakpoints if no argument.
14843 Do not delete internal or call-dummy breakpoints, these
4a64f543
MS
14844 have to be deleted with an explicit breakpoint number
14845 argument. */
1042e4c0 14846 ALL_TRACEPOINTS (b)
46c6471b 14847 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0
SS
14848 {
14849 breaks_to_delete = 1;
14850 break;
14851 }
1042e4c0
SS
14852
14853 /* Ask user only if there are some breakpoints to delete. */
14854 if (!from_tty
14855 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14856 {
35df4500 14857 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 14858 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0 14859 delete_breakpoint (b);
1042e4c0
SS
14860 }
14861 }
14862 else
48649e1b 14863 map_breakpoint_numbers
b926417a 14864 (arg, [&] (breakpoint *br)
48649e1b 14865 {
b926417a 14866 iterate_over_related_breakpoints (br, delete_breakpoint);
48649e1b 14867 });
1042e4c0
SS
14868}
14869
197f0a60
TT
14870/* Helper function for trace_pass_command. */
14871
14872static void
d9b3f62e 14873trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
197f0a60 14874{
d9b3f62e 14875 tp->pass_count = count;
76727919 14876 gdb::observers::breakpoint_modified.notify (tp);
197f0a60
TT
14877 if (from_tty)
14878 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
c1fc2657 14879 tp->number, count);
197f0a60
TT
14880}
14881
1042e4c0
SS
14882/* Set passcount for tracepoint.
14883
14884 First command argument is passcount, second is tracepoint number.
14885 If tracepoint number omitted, apply to most recently defined.
14886 Also accepts special argument "all". */
14887
14888static void
0b39b52e 14889trace_pass_command (const char *args, int from_tty)
1042e4c0 14890{
d9b3f62e 14891 struct tracepoint *t1;
0b39b52e 14892 ULONGEST count;
1042e4c0
SS
14893
14894 if (args == 0 || *args == 0)
3e43a32a
MS
14895 error (_("passcount command requires an "
14896 "argument (count + optional TP num)"));
1042e4c0 14897
0b39b52e 14898 count = strtoulst (args, &args, 10); /* Count comes first, then TP num. */
1042e4c0 14899
529480d0 14900 args = skip_spaces (args);
1042e4c0
SS
14901 if (*args && strncasecmp (args, "all", 3) == 0)
14902 {
d9b3f62e
PA
14903 struct breakpoint *b;
14904
1042e4c0 14905 args += 3; /* Skip special argument "all". */
1042e4c0
SS
14906 if (*args)
14907 error (_("Junk at end of arguments."));
1042e4c0 14908
d9b3f62e 14909 ALL_TRACEPOINTS (b)
197f0a60 14910 {
d9b3f62e 14911 t1 = (struct tracepoint *) b;
197f0a60
TT
14912 trace_pass_set_count (t1, count, from_tty);
14913 }
14914 }
14915 else if (*args == '\0')
1042e4c0 14916 {
5fa1d40e 14917 t1 = get_tracepoint_by_number (&args, NULL);
1042e4c0 14918 if (t1)
197f0a60
TT
14919 trace_pass_set_count (t1, count, from_tty);
14920 }
14921 else
14922 {
bfd28288
PA
14923 number_or_range_parser parser (args);
14924 while (!parser.finished ())
1042e4c0 14925 {
bfd28288 14926 t1 = get_tracepoint_by_number (&args, &parser);
197f0a60
TT
14927 if (t1)
14928 trace_pass_set_count (t1, count, from_tty);
1042e4c0
SS
14929 }
14930 }
1042e4c0
SS
14931}
14932
d9b3f62e 14933struct tracepoint *
1042e4c0
SS
14934get_tracepoint (int num)
14935{
14936 struct breakpoint *t;
14937
14938 ALL_TRACEPOINTS (t)
14939 if (t->number == num)
d9b3f62e 14940 return (struct tracepoint *) t;
1042e4c0
SS
14941
14942 return NULL;
14943}
14944
d5551862
SS
14945/* Find the tracepoint with the given target-side number (which may be
14946 different from the tracepoint number after disconnecting and
14947 reconnecting). */
14948
d9b3f62e 14949struct tracepoint *
d5551862
SS
14950get_tracepoint_by_number_on_target (int num)
14951{
d9b3f62e 14952 struct breakpoint *b;
d5551862 14953
d9b3f62e
PA
14954 ALL_TRACEPOINTS (b)
14955 {
14956 struct tracepoint *t = (struct tracepoint *) b;
14957
14958 if (t->number_on_target == num)
14959 return t;
14960 }
d5551862
SS
14961
14962 return NULL;
14963}
14964
1042e4c0 14965/* Utility: parse a tracepoint number and look it up in the list.
197f0a60 14966 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
5fa1d40e
YQ
14967 If the argument is missing, the most recent tracepoint
14968 (tracepoint_count) is returned. */
14969
d9b3f62e 14970struct tracepoint *
0b39b52e 14971get_tracepoint_by_number (const char **arg,
bfd28288 14972 number_or_range_parser *parser)
1042e4c0 14973{
1042e4c0
SS
14974 struct breakpoint *t;
14975 int tpnum;
0b39b52e 14976 const char *instring = arg == NULL ? NULL : *arg;
1042e4c0 14977
bfd28288 14978 if (parser != NULL)
197f0a60 14979 {
bfd28288
PA
14980 gdb_assert (!parser->finished ());
14981 tpnum = parser->get_number ();
197f0a60
TT
14982 }
14983 else if (arg == NULL || *arg == NULL || ! **arg)
5fa1d40e 14984 tpnum = tracepoint_count;
1042e4c0 14985 else
197f0a60 14986 tpnum = get_number (arg);
1042e4c0
SS
14987
14988 if (tpnum <= 0)
14989 {
14990 if (instring && *instring)
14991 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
14992 instring);
14993 else
5fa1d40e 14994 printf_filtered (_("No previous tracepoint\n"));
1042e4c0
SS
14995 return NULL;
14996 }
14997
14998 ALL_TRACEPOINTS (t)
14999 if (t->number == tpnum)
15000 {
d9b3f62e 15001 return (struct tracepoint *) t;
1042e4c0
SS
15002 }
15003
1042e4c0
SS
15004 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15005 return NULL;
15006}
15007
d9b3f62e
PA
15008void
15009print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15010{
15011 if (b->thread != -1)
15012 fprintf_unfiltered (fp, " thread %d", b->thread);
15013
15014 if (b->task != 0)
15015 fprintf_unfiltered (fp, " task %d", b->task);
15016
15017 fprintf_unfiltered (fp, "\n");
15018}
15019
6149aea9
PA
15020/* Save information on user settable breakpoints (watchpoints, etc) to
15021 a new script file named FILENAME. If FILTER is non-NULL, call it
15022 on each breakpoint and only include the ones for which it returns
15023 non-zero. */
15024
1042e4c0 15025static void
4495129a 15026save_breakpoints (const char *filename, int from_tty,
6149aea9 15027 int (*filter) (const struct breakpoint *))
1042e4c0
SS
15028{
15029 struct breakpoint *tp;
6149aea9 15030 int any = 0;
6149aea9 15031 int extra_trace_bits = 0;
1042e4c0 15032
6149aea9
PA
15033 if (filename == 0 || *filename == 0)
15034 error (_("Argument required (file name in which to save)"));
1042e4c0
SS
15035
15036 /* See if we have anything to save. */
6149aea9 15037 ALL_BREAKPOINTS (tp)
1042e4c0 15038 {
6149aea9 15039 /* Skip internal and momentary breakpoints. */
09d682a4 15040 if (!user_breakpoint_p (tp))
6149aea9
PA
15041 continue;
15042
15043 /* If we have a filter, only save the breakpoints it accepts. */
15044 if (filter && !filter (tp))
15045 continue;
15046
15047 any = 1;
15048
15049 if (is_tracepoint (tp))
15050 {
15051 extra_trace_bits = 1;
15052
15053 /* We can stop searching. */
15054 break;
15055 }
1042e4c0 15056 }
6149aea9
PA
15057
15058 if (!any)
1042e4c0 15059 {
6149aea9 15060 warning (_("Nothing to save."));
1042e4c0
SS
15061 return;
15062 }
15063
ee0c3293 15064 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
d7e74731
PA
15065
15066 stdio_file fp;
15067
ee0c3293 15068 if (!fp.open (expanded_filename.get (), "w"))
6149aea9 15069 error (_("Unable to open file '%s' for saving (%s)"),
ee0c3293 15070 expanded_filename.get (), safe_strerror (errno));
8bf6485c 15071
6149aea9 15072 if (extra_trace_bits)
d7e74731 15073 save_trace_state_variables (&fp);
8bf6485c 15074
6149aea9 15075 ALL_BREAKPOINTS (tp)
1042e4c0 15076 {
6149aea9 15077 /* Skip internal and momentary breakpoints. */
09d682a4 15078 if (!user_breakpoint_p (tp))
6149aea9 15079 continue;
8bf6485c 15080
6149aea9
PA
15081 /* If we have a filter, only save the breakpoints it accepts. */
15082 if (filter && !filter (tp))
15083 continue;
15084
d7e74731 15085 tp->ops->print_recreate (tp, &fp);
1042e4c0 15086
6149aea9
PA
15087 /* Note, we can't rely on tp->number for anything, as we can't
15088 assume the recreated breakpoint numbers will match. Use $bpnum
15089 instead. */
15090
15091 if (tp->cond_string)
d7e74731 15092 fp.printf (" condition $bpnum %s\n", tp->cond_string);
6149aea9
PA
15093
15094 if (tp->ignore_count)
d7e74731 15095 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
6149aea9 15096
2d9442cc 15097 if (tp->type != bp_dprintf && tp->commands)
1042e4c0 15098 {
d7e74731 15099 fp.puts (" commands\n");
a7bdde9e 15100
d7e74731 15101 current_uiout->redirect (&fp);
492d29ea 15102 TRY
1042e4c0 15103 {
d1b0a7bf 15104 print_command_lines (current_uiout, tp->commands.get (), 2);
a7bdde9e 15105 }
492d29ea
PA
15106 CATCH (ex, RETURN_MASK_ALL)
15107 {
112e8700 15108 current_uiout->redirect (NULL);
492d29ea
PA
15109 throw_exception (ex);
15110 }
15111 END_CATCH
1042e4c0 15112
112e8700 15113 current_uiout->redirect (NULL);
d7e74731 15114 fp.puts (" end\n");
1042e4c0 15115 }
6149aea9
PA
15116
15117 if (tp->enable_state == bp_disabled)
d7e74731 15118 fp.puts ("disable $bpnum\n");
6149aea9
PA
15119
15120 /* If this is a multi-location breakpoint, check if the locations
15121 should be individually disabled. Watchpoint locations are
15122 special, and not user visible. */
15123 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15124 {
15125 struct bp_location *loc;
15126 int n = 1;
15127
15128 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15129 if (!loc->enabled)
d7e74731 15130 fp.printf ("disable $bpnum.%d\n", n);
6149aea9 15131 }
1042e4c0 15132 }
8bf6485c 15133
6149aea9 15134 if (extra_trace_bits && *default_collect)
d7e74731 15135 fp.printf ("set default-collect %s\n", default_collect);
8bf6485c 15136
1042e4c0 15137 if (from_tty)
ee0c3293 15138 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
6149aea9
PA
15139}
15140
15141/* The `save breakpoints' command. */
15142
15143static void
4495129a 15144save_breakpoints_command (const char *args, int from_tty)
6149aea9
PA
15145{
15146 save_breakpoints (args, from_tty, NULL);
15147}
15148
15149/* The `save tracepoints' command. */
15150
15151static void
4495129a 15152save_tracepoints_command (const char *args, int from_tty)
6149aea9
PA
15153{
15154 save_breakpoints (args, from_tty, is_tracepoint);
1042e4c0
SS
15155}
15156
15157/* Create a vector of all tracepoints. */
15158
f51e0e20 15159std::vector<breakpoint *>
eeae04df 15160all_tracepoints (void)
1042e4c0 15161{
f51e0e20 15162 std::vector<breakpoint *> tp_vec;
1042e4c0
SS
15163 struct breakpoint *tp;
15164
15165 ALL_TRACEPOINTS (tp)
15166 {
f51e0e20 15167 tp_vec.push_back (tp);
1042e4c0
SS
15168 }
15169
15170 return tp_vec;
15171}
15172
c906108c 15173\f
629500fa
KS
15174/* This help string is used to consolidate all the help string for specifying
15175 locations used by several commands. */
15176
15177#define LOCATION_HELP_STRING \
15178"Linespecs are colon-separated lists of location parameters, such as\n\
15179source filename, function name, label name, and line number.\n\
15180Example: To specify the start of a label named \"the_top\" in the\n\
15181function \"fact\" in the file \"factorial.c\", use\n\
15182\"factorial.c:fact:the_top\".\n\
15183\n\
15184Address locations begin with \"*\" and specify an exact address in the\n\
15185program. Example: To specify the fourth byte past the start function\n\
15186\"main\", use \"*main + 4\".\n\
15187\n\
15188Explicit locations are similar to linespecs but use an option/argument\n\
15189syntax to specify location parameters.\n\
15190Example: To specify the start of the label named \"the_top\" in the\n\
15191function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
a20714ff
PA
15192-function fact -label the_top\".\n\
15193\n\
15194By default, a specified function is matched against the program's\n\
15195functions in all scopes. For C++, this means in all namespaces and\n\
15196classes. For Ada, this means in all packages. E.g., in C++,\n\
15197\"func()\" matches \"A::func()\", \"A::B::func()\", etc. The\n\
15198\"-qualified\" flag overrides this behavior, making GDB interpret the\n\
15199specified name as a complete fully-qualified name instead.\n"
629500fa 15200
4a64f543
MS
15201/* This help string is used for the break, hbreak, tbreak and thbreak
15202 commands. It is defined as a macro to prevent duplication.
15203 COMMAND should be a string constant containing the name of the
15204 command. */
629500fa 15205
31e2b00f 15206#define BREAK_ARGS_HELP(command) \
fb7b5af4
SDJ
15207command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15208PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15209probe point. Accepted values are `-probe' (for a generic, automatically\n\
d4777acb
JM
15210guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15211`-probe-dtrace' (for a DTrace probe).\n\
629500fa
KS
15212LOCATION may be a linespec, address, or explicit location as described\n\
15213below.\n\
15214\n\
dc10affe
PA
15215With no LOCATION, uses current execution address of the selected\n\
15216stack frame. This is useful for breaking on return to a stack frame.\n\
31e2b00f
AS
15217\n\
15218THREADNUM is the number from \"info threads\".\n\
15219CONDITION is a boolean expression.\n\
629500fa 15220\n" LOCATION_HELP_STRING "\n\
d41c0fc8
PA
15221Multiple breakpoints at one place are permitted, and useful if their\n\
15222conditions are different.\n\
31e2b00f
AS
15223\n\
15224Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15225
44feb3ce
TT
15226/* List of subcommands for "catch". */
15227static struct cmd_list_element *catch_cmdlist;
15228
15229/* List of subcommands for "tcatch". */
15230static struct cmd_list_element *tcatch_cmdlist;
15231
9ac4176b 15232void
a121b7c1 15233add_catch_command (const char *name, const char *docstring,
eb4c3f4a 15234 cmd_const_sfunc_ftype *sfunc,
625e8578 15235 completer_ftype *completer,
44feb3ce
TT
15236 void *user_data_catch,
15237 void *user_data_tcatch)
15238{
15239 struct cmd_list_element *command;
15240
0450cc4c 15241 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce
TT
15242 &catch_cmdlist);
15243 set_cmd_sfunc (command, sfunc);
15244 set_cmd_context (command, user_data_catch);
a96d9b2e 15245 set_cmd_completer (command, completer);
44feb3ce 15246
0450cc4c 15247 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce
TT
15248 &tcatch_cmdlist);
15249 set_cmd_sfunc (command, sfunc);
15250 set_cmd_context (command, user_data_tcatch);
a96d9b2e 15251 set_cmd_completer (command, completer);
44feb3ce
TT
15252}
15253
6149aea9 15254static void
981a3fb3 15255save_command (const char *arg, int from_tty)
6149aea9 15256{
3e43a32a
MS
15257 printf_unfiltered (_("\"save\" must be followed by "
15258 "the name of a save subcommand.\n"));
635c7e8a 15259 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
6149aea9
PA
15260}
15261
84f4c1fe
PM
15262struct breakpoint *
15263iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15264 void *data)
15265{
35df4500 15266 struct breakpoint *b, *b_tmp;
84f4c1fe 15267
35df4500 15268 ALL_BREAKPOINTS_SAFE (b, b_tmp)
84f4c1fe
PM
15269 {
15270 if ((*callback) (b, data))
15271 return b;
15272 }
15273
15274 return NULL;
15275}
15276
0574c78f
GB
15277/* Zero if any of the breakpoint's locations could be a location where
15278 functions have been inlined, nonzero otherwise. */
15279
15280static int
15281is_non_inline_function (struct breakpoint *b)
15282{
15283 /* The shared library event breakpoint is set on the address of a
15284 non-inline function. */
15285 if (b->type == bp_shlib_event)
15286 return 1;
15287
15288 return 0;
15289}
15290
15291/* Nonzero if the specified PC cannot be a location where functions
15292 have been inlined. */
15293
15294int
accd0bcd 15295pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
09ac7c10 15296 const struct target_waitstatus *ws)
0574c78f
GB
15297{
15298 struct breakpoint *b;
15299 struct bp_location *bl;
15300
15301 ALL_BREAKPOINTS (b)
15302 {
15303 if (!is_non_inline_function (b))
15304 continue;
15305
15306 for (bl = b->loc; bl != NULL; bl = bl->next)
15307 {
15308 if (!bl->shlib_disabled
09ac7c10 15309 && bpstat_check_location (bl, aspace, pc, ws))
0574c78f
GB
15310 return 1;
15311 }
15312 }
15313
15314 return 0;
15315}
15316
2f202fde
JK
15317/* Remove any references to OBJFILE which is going to be freed. */
15318
15319void
15320breakpoint_free_objfile (struct objfile *objfile)
15321{
15322 struct bp_location **locp, *loc;
15323
15324 ALL_BP_LOCATIONS (loc, locp)
eb822aa6 15325 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
2f202fde
JK
15326 loc->symtab = NULL;
15327}
15328
2060206e
PA
15329void
15330initialize_breakpoint_ops (void)
15331{
15332 static int initialized = 0;
15333
15334 struct breakpoint_ops *ops;
15335
15336 if (initialized)
15337 return;
15338 initialized = 1;
15339
15340 /* The breakpoint_ops structure to be inherit by all kinds of
15341 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15342 internal and momentary breakpoints, etc.). */
15343 ops = &bkpt_base_breakpoint_ops;
15344 *ops = base_breakpoint_ops;
15345 ops->re_set = bkpt_re_set;
15346 ops->insert_location = bkpt_insert_location;
15347 ops->remove_location = bkpt_remove_location;
15348 ops->breakpoint_hit = bkpt_breakpoint_hit;
5f700d83 15349 ops->create_sals_from_location = bkpt_create_sals_from_location;
983af33b 15350 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
5f700d83 15351 ops->decode_location = bkpt_decode_location;
2060206e
PA
15352
15353 /* The breakpoint_ops structure to be used in regular breakpoints. */
15354 ops = &bkpt_breakpoint_ops;
15355 *ops = bkpt_base_breakpoint_ops;
15356 ops->re_set = bkpt_re_set;
15357 ops->resources_needed = bkpt_resources_needed;
15358 ops->print_it = bkpt_print_it;
15359 ops->print_mention = bkpt_print_mention;
15360 ops->print_recreate = bkpt_print_recreate;
15361
15362 /* Ranged breakpoints. */
15363 ops = &ranged_breakpoint_ops;
15364 *ops = bkpt_breakpoint_ops;
15365 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15366 ops->resources_needed = resources_needed_ranged_breakpoint;
15367 ops->print_it = print_it_ranged_breakpoint;
15368 ops->print_one = print_one_ranged_breakpoint;
15369 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15370 ops->print_mention = print_mention_ranged_breakpoint;
15371 ops->print_recreate = print_recreate_ranged_breakpoint;
15372
15373 /* Internal breakpoints. */
15374 ops = &internal_breakpoint_ops;
15375 *ops = bkpt_base_breakpoint_ops;
15376 ops->re_set = internal_bkpt_re_set;
15377 ops->check_status = internal_bkpt_check_status;
15378 ops->print_it = internal_bkpt_print_it;
15379 ops->print_mention = internal_bkpt_print_mention;
15380
15381 /* Momentary breakpoints. */
15382 ops = &momentary_breakpoint_ops;
15383 *ops = bkpt_base_breakpoint_ops;
15384 ops->re_set = momentary_bkpt_re_set;
15385 ops->check_status = momentary_bkpt_check_status;
15386 ops->print_it = momentary_bkpt_print_it;
15387 ops->print_mention = momentary_bkpt_print_mention;
15388
55aa24fb
SDJ
15389 /* Probe breakpoints. */
15390 ops = &bkpt_probe_breakpoint_ops;
15391 *ops = bkpt_breakpoint_ops;
15392 ops->insert_location = bkpt_probe_insert_location;
15393 ops->remove_location = bkpt_probe_remove_location;
5f700d83
KS
15394 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15395 ops->decode_location = bkpt_probe_decode_location;
55aa24fb 15396
2060206e
PA
15397 /* Watchpoints. */
15398 ops = &watchpoint_breakpoint_ops;
15399 *ops = base_breakpoint_ops;
15400 ops->re_set = re_set_watchpoint;
15401 ops->insert_location = insert_watchpoint;
15402 ops->remove_location = remove_watchpoint;
15403 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15404 ops->check_status = check_status_watchpoint;
15405 ops->resources_needed = resources_needed_watchpoint;
15406 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15407 ops->print_it = print_it_watchpoint;
15408 ops->print_mention = print_mention_watchpoint;
15409 ops->print_recreate = print_recreate_watchpoint;
427cd150 15410 ops->explains_signal = explains_signal_watchpoint;
2060206e
PA
15411
15412 /* Masked watchpoints. */
15413 ops = &masked_watchpoint_breakpoint_ops;
15414 *ops = watchpoint_breakpoint_ops;
15415 ops->insert_location = insert_masked_watchpoint;
15416 ops->remove_location = remove_masked_watchpoint;
15417 ops->resources_needed = resources_needed_masked_watchpoint;
15418 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15419 ops->print_it = print_it_masked_watchpoint;
15420 ops->print_one_detail = print_one_detail_masked_watchpoint;
15421 ops->print_mention = print_mention_masked_watchpoint;
15422 ops->print_recreate = print_recreate_masked_watchpoint;
15423
15424 /* Tracepoints. */
15425 ops = &tracepoint_breakpoint_ops;
15426 *ops = base_breakpoint_ops;
15427 ops->re_set = tracepoint_re_set;
15428 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15429 ops->print_one_detail = tracepoint_print_one_detail;
15430 ops->print_mention = tracepoint_print_mention;
15431 ops->print_recreate = tracepoint_print_recreate;
5f700d83 15432 ops->create_sals_from_location = tracepoint_create_sals_from_location;
983af33b 15433 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
5f700d83 15434 ops->decode_location = tracepoint_decode_location;
983af33b 15435
55aa24fb
SDJ
15436 /* Probe tracepoints. */
15437 ops = &tracepoint_probe_breakpoint_ops;
15438 *ops = tracepoint_breakpoint_ops;
5f700d83
KS
15439 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15440 ops->decode_location = tracepoint_probe_decode_location;
55aa24fb 15441
983af33b
SDJ
15442 /* Static tracepoints with marker (`-m'). */
15443 ops = &strace_marker_breakpoint_ops;
15444 *ops = tracepoint_breakpoint_ops;
5f700d83 15445 ops->create_sals_from_location = strace_marker_create_sals_from_location;
983af33b 15446 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
5f700d83 15447 ops->decode_location = strace_marker_decode_location;
2060206e
PA
15448
15449 /* Fork catchpoints. */
15450 ops = &catch_fork_breakpoint_ops;
15451 *ops = base_breakpoint_ops;
15452 ops->insert_location = insert_catch_fork;
15453 ops->remove_location = remove_catch_fork;
15454 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15455 ops->print_it = print_it_catch_fork;
15456 ops->print_one = print_one_catch_fork;
15457 ops->print_mention = print_mention_catch_fork;
15458 ops->print_recreate = print_recreate_catch_fork;
15459
15460 /* Vfork catchpoints. */
15461 ops = &catch_vfork_breakpoint_ops;
15462 *ops = base_breakpoint_ops;
15463 ops->insert_location = insert_catch_vfork;
15464 ops->remove_location = remove_catch_vfork;
15465 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15466 ops->print_it = print_it_catch_vfork;
15467 ops->print_one = print_one_catch_vfork;
15468 ops->print_mention = print_mention_catch_vfork;
15469 ops->print_recreate = print_recreate_catch_vfork;
15470
15471 /* Exec catchpoints. */
15472 ops = &catch_exec_breakpoint_ops;
15473 *ops = base_breakpoint_ops;
2060206e
PA
15474 ops->insert_location = insert_catch_exec;
15475 ops->remove_location = remove_catch_exec;
15476 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15477 ops->print_it = print_it_catch_exec;
15478 ops->print_one = print_one_catch_exec;
15479 ops->print_mention = print_mention_catch_exec;
15480 ops->print_recreate = print_recreate_catch_exec;
15481
edcc5120
TT
15482 /* Solib-related catchpoints. */
15483 ops = &catch_solib_breakpoint_ops;
15484 *ops = base_breakpoint_ops;
edcc5120
TT
15485 ops->insert_location = insert_catch_solib;
15486 ops->remove_location = remove_catch_solib;
15487 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15488 ops->check_status = check_status_catch_solib;
15489 ops->print_it = print_it_catch_solib;
15490 ops->print_one = print_one_catch_solib;
15491 ops->print_mention = print_mention_catch_solib;
15492 ops->print_recreate = print_recreate_catch_solib;
e7e0cddf
SS
15493
15494 ops = &dprintf_breakpoint_ops;
15495 *ops = bkpt_base_breakpoint_ops;
5c2b4418 15496 ops->re_set = dprintf_re_set;
e7e0cddf
SS
15497 ops->resources_needed = bkpt_resources_needed;
15498 ops->print_it = bkpt_print_it;
15499 ops->print_mention = bkpt_print_mention;
2d9442cc 15500 ops->print_recreate = dprintf_print_recreate;
9d6e6e84 15501 ops->after_condition_true = dprintf_after_condition_true;
cd1608cc 15502 ops->breakpoint_hit = dprintf_breakpoint_hit;
2060206e
PA
15503}
15504
8bfd80db
YQ
15505/* Chain containing all defined "enable breakpoint" subcommands. */
15506
15507static struct cmd_list_element *enablebreaklist = NULL;
15508
8588b356
SM
15509/* See breakpoint.h. */
15510
15511cmd_list_element *commands_cmd_element = nullptr;
15512
c906108c 15513void
fba45db2 15514_initialize_breakpoint (void)
c906108c
SS
15515{
15516 struct cmd_list_element *c;
15517
2060206e
PA
15518 initialize_breakpoint_ops ();
15519
76727919
TT
15520 gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15521 gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15522 gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
84acb35a 15523
55aa24fb 15524 breakpoint_objfile_key
43dce439 15525 = register_objfile_data_with_cleanup (NULL, free_breakpoint_objfile_data);
17450429 15526
c906108c
SS
15527 breakpoint_chain = 0;
15528 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15529 before a breakpoint is set. */
15530 breakpoint_count = 0;
15531
1042e4c0
SS
15532 tracepoint_count = 0;
15533
1bedd215
AC
15534 add_com ("ignore", class_breakpoint, ignore_command, _("\
15535Set ignore-count of breakpoint number N to COUNT.\n\
15536Usage is `ignore N COUNT'."));
c906108c 15537
8588b356
SM
15538 commands_cmd_element = add_com ("commands", class_breakpoint,
15539 commands_command, _("\
18da0c51
MG
15540Set commands to be executed when the given breakpoints are hit.\n\
15541Give a space-separated breakpoint list as argument after \"commands\".\n\
15542A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15543(e.g. `5-7').\n\
c906108c
SS
15544With no argument, the targeted breakpoint is the last one set.\n\
15545The commands themselves follow starting on the next line.\n\
15546Type a line containing \"end\" to indicate the end of them.\n\
15547Give \"silent\" as the first line to make the breakpoint silent;\n\
1bedd215 15548then no output is printed when it is hit, except what the commands print."));
c906108c 15549
d55637df 15550 c = add_com ("condition", class_breakpoint, condition_command, _("\
1bedd215 15551Specify breakpoint number N to break only if COND is true.\n\
c906108c 15552Usage is `condition N COND', where N is an integer and COND is an\n\
1bedd215 15553expression to be evaluated whenever breakpoint N is reached."));
d55637df 15554 set_cmd_completer (c, condition_completer);
c906108c 15555
1bedd215 15556 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
31e2b00f 15557Set a temporary breakpoint.\n\
c906108c
SS
15558Like \"break\" except the breakpoint is only temporary,\n\
15559so it will be deleted when hit. Equivalent to \"break\" followed\n\
31e2b00f
AS
15560by using \"enable delete\" on the breakpoint number.\n\
15561\n"
15562BREAK_ARGS_HELP ("tbreak")));
5ba2abeb 15563 set_cmd_completer (c, location_completer);
c94fdfd0 15564
1bedd215 15565 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
a3be7890 15566Set a hardware assisted breakpoint.\n\
c906108c 15567Like \"break\" except the breakpoint requires hardware support,\n\
31e2b00f
AS
15568some target hardware may not have this support.\n\
15569\n"
15570BREAK_ARGS_HELP ("hbreak")));
5ba2abeb 15571 set_cmd_completer (c, location_completer);
c906108c 15572
1bedd215 15573 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
31e2b00f 15574Set a temporary hardware assisted breakpoint.\n\
c906108c 15575Like \"hbreak\" except the breakpoint is only temporary,\n\
31e2b00f
AS
15576so it will be deleted when hit.\n\
15577\n"
15578BREAK_ARGS_HELP ("thbreak")));
5ba2abeb 15579 set_cmd_completer (c, location_completer);
c906108c 15580
1bedd215
AC
15581 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15582Enable some breakpoints.\n\
c906108c
SS
15583Give breakpoint numbers (separated by spaces) as arguments.\n\
15584With no subcommand, breakpoints are enabled until you command otherwise.\n\
15585This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 15586With a subcommand you can enable temporarily."),
c906108c 15587 &enablelist, "enable ", 1, &cmdlist);
c906108c
SS
15588
15589 add_com_alias ("en", "enable", class_breakpoint, 1);
15590
84951ab5 15591 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
1bedd215 15592Enable some breakpoints.\n\
c906108c
SS
15593Give breakpoint numbers (separated by spaces) as arguments.\n\
15594This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 15595May be abbreviated to simply \"enable\".\n"),
c5aa993b 15596 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
c906108c 15597
1a966eab
AC
15598 add_cmd ("once", no_class, enable_once_command, _("\
15599Enable breakpoints for one hit. Give breakpoint numbers.\n\
15600If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
c906108c
SS
15601 &enablebreaklist);
15602
1a966eab
AC
15603 add_cmd ("delete", no_class, enable_delete_command, _("\
15604Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15605If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15606 &enablebreaklist);
15607
816338b5
SS
15608 add_cmd ("count", no_class, enable_count_command, _("\
15609Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15610If a breakpoint is hit while enabled in this fashion,\n\
15611the count is decremented; when it reaches zero, the breakpoint is disabled."),
15612 &enablebreaklist);
15613
1a966eab
AC
15614 add_cmd ("delete", no_class, enable_delete_command, _("\
15615Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15616If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15617 &enablelist);
15618
1a966eab
AC
15619 add_cmd ("once", no_class, enable_once_command, _("\
15620Enable breakpoints for one hit. Give breakpoint numbers.\n\
15621If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
816338b5
SS
15622 &enablelist);
15623
15624 add_cmd ("count", no_class, enable_count_command, _("\
15625Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15626If a breakpoint is hit while enabled in this fashion,\n\
15627the count is decremented; when it reaches zero, the breakpoint is disabled."),
c906108c
SS
15628 &enablelist);
15629
1bedd215
AC
15630 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15631Disable some breakpoints.\n\
c906108c
SS
15632Arguments are breakpoint numbers with spaces in between.\n\
15633To disable all breakpoints, give no argument.\n\
64b9b334 15634A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
c906108c
SS
15635 &disablelist, "disable ", 1, &cmdlist);
15636 add_com_alias ("dis", "disable", class_breakpoint, 1);
15637 add_com_alias ("disa", "disable", class_breakpoint, 1);
c906108c 15638
1a966eab
AC
15639 add_cmd ("breakpoints", class_alias, disable_command, _("\
15640Disable some breakpoints.\n\
c906108c
SS
15641Arguments are breakpoint numbers with spaces in between.\n\
15642To disable all breakpoints, give no argument.\n\
64b9b334 15643A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
1a966eab 15644This command may be abbreviated \"disable\"."),
c906108c
SS
15645 &disablelist);
15646
1bedd215
AC
15647 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15648Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
15649Arguments are breakpoint numbers with spaces in between.\n\
15650To delete all breakpoints, give no argument.\n\
15651\n\
15652Also a prefix command for deletion of other GDB objects.\n\
1bedd215 15653The \"unset\" command is also an alias for \"delete\"."),
c906108c
SS
15654 &deletelist, "delete ", 1, &cmdlist);
15655 add_com_alias ("d", "delete", class_breakpoint, 1);
7f198e01 15656 add_com_alias ("del", "delete", class_breakpoint, 1);
c906108c 15657
1a966eab
AC
15658 add_cmd ("breakpoints", class_alias, delete_command, _("\
15659Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
15660Arguments are breakpoint numbers with spaces in between.\n\
15661To delete all breakpoints, give no argument.\n\
1a966eab 15662This command may be abbreviated \"delete\"."),
c906108c
SS
15663 &deletelist);
15664
1bedd215 15665 add_com ("clear", class_breakpoint, clear_command, _("\
629500fa
KS
15666Clear breakpoint at specified location.\n\
15667Argument may be a linespec, explicit, or address location as described below.\n\
1bedd215
AC
15668\n\
15669With no argument, clears all breakpoints in the line that the selected frame\n\
629500fa
KS
15670is executing in.\n"
15671"\n" LOCATION_HELP_STRING "\n\
1bedd215 15672See also the \"delete\" command which clears breakpoints by number."));
a6cc4789 15673 add_com_alias ("cl", "clear", class_breakpoint, 1);
c906108c 15674
1bedd215 15675 c = add_com ("break", class_breakpoint, break_command, _("\
629500fa 15676Set breakpoint at specified location.\n"
31e2b00f 15677BREAK_ARGS_HELP ("break")));
5ba2abeb 15678 set_cmd_completer (c, location_completer);
c94fdfd0 15679
c906108c
SS
15680 add_com_alias ("b", "break", class_run, 1);
15681 add_com_alias ("br", "break", class_run, 1);
15682 add_com_alias ("bre", "break", class_run, 1);
15683 add_com_alias ("brea", "break", class_run, 1);
15684
c906108c
SS
15685 if (dbx_commands)
15686 {
1bedd215
AC
15687 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15688Break in function/address or break at a line in the current file."),
c5aa993b
JM
15689 &stoplist, "stop ", 1, &cmdlist);
15690 add_cmd ("in", class_breakpoint, stopin_command,
1a966eab 15691 _("Break in function or address."), &stoplist);
c5aa993b 15692 add_cmd ("at", class_breakpoint, stopat_command,
1a966eab 15693 _("Break at a line in the current file."), &stoplist);
11db9430 15694 add_com ("status", class_info, info_breakpoints_command, _("\
1bedd215 15695Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
15696The \"Type\" column indicates one of:\n\
15697\tbreakpoint - normal breakpoint\n\
15698\twatchpoint - watchpoint\n\
15699The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15700the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15701breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
15702address and file/line number respectively.\n\
15703\n\
15704Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15705are set to the address of the last breakpoint listed unless the command\n\
15706is prefixed with \"server \".\n\n\
c906108c 15707Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 15708breakpoint set."));
c906108c
SS
15709 }
15710
11db9430 15711 add_info ("breakpoints", info_breakpoints_command, _("\
e5a67952 15712Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
c906108c
SS
15713The \"Type\" column indicates one of:\n\
15714\tbreakpoint - normal breakpoint\n\
15715\twatchpoint - watchpoint\n\
15716The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15717the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15718breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
15719address and file/line number respectively.\n\
15720\n\
15721Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15722are set to the address of the last breakpoint listed unless the command\n\
15723is prefixed with \"server \".\n\n\
c906108c 15724Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 15725breakpoint set."));
c906108c 15726
6b04bdb7
MS
15727 add_info_alias ("b", "breakpoints", 1);
15728
1a966eab
AC
15729 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15730Status of all breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
15731The \"Type\" column indicates one of:\n\
15732\tbreakpoint - normal breakpoint\n\
15733\twatchpoint - watchpoint\n\
15734\tlongjmp - internal breakpoint used to step through longjmp()\n\
15735\tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15736\tuntil - internal breakpoint used by the \"until\" command\n\
1a966eab
AC
15737\tfinish - internal breakpoint used by the \"finish\" command\n\
15738The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
c906108c
SS
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\
1a966eab
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\
1a966eab 15747breakpoint set."),
c906108c
SS
15748 &maintenanceinfolist);
15749
44feb3ce
TT
15750 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15751Set catchpoints to catch events."),
15752 &catch_cmdlist, "catch ",
15753 0/*allow-unknown*/, &cmdlist);
15754
15755 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15756Set temporary catchpoints to catch events."),
15757 &tcatch_cmdlist, "tcatch ",
15758 0/*allow-unknown*/, &cmdlist);
15759
44feb3ce
TT
15760 add_catch_command ("fork", _("Catch calls to fork."),
15761 catch_fork_command_1,
a96d9b2e 15762 NULL,
44feb3ce
TT
15763 (void *) (uintptr_t) catch_fork_permanent,
15764 (void *) (uintptr_t) catch_fork_temporary);
15765 add_catch_command ("vfork", _("Catch calls to vfork."),
15766 catch_fork_command_1,
a96d9b2e 15767 NULL,
44feb3ce
TT
15768 (void *) (uintptr_t) catch_vfork_permanent,
15769 (void *) (uintptr_t) catch_vfork_temporary);
15770 add_catch_command ("exec", _("Catch calls to exec."),
15771 catch_exec_command_1,
a96d9b2e
SDJ
15772 NULL,
15773 CATCH_PERMANENT,
15774 CATCH_TEMPORARY);
edcc5120
TT
15775 add_catch_command ("load", _("Catch loads of shared libraries.\n\
15776Usage: catch load [REGEX]\n\
15777If REGEX is given, only stop for libraries matching the regular expression."),
15778 catch_load_command_1,
15779 NULL,
15780 CATCH_PERMANENT,
15781 CATCH_TEMPORARY);
15782 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15783Usage: catch unload [REGEX]\n\
15784If REGEX is given, only stop for libraries matching the regular expression."),
15785 catch_unload_command_1,
15786 NULL,
15787 CATCH_PERMANENT,
15788 CATCH_TEMPORARY);
c5aa993b 15789
1bedd215
AC
15790 c = add_com ("watch", class_breakpoint, watch_command, _("\
15791Set a watchpoint for an expression.\n\
06a64a0b 15792Usage: watch [-l|-location] EXPRESSION\n\
c906108c 15793A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15794an expression changes.\n\
15795If -l or -location is given, this evaluates EXPRESSION and watches\n\
15796the memory to which it refers."));
65d12d83 15797 set_cmd_completer (c, expression_completer);
c906108c 15798
1bedd215
AC
15799 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15800Set a read watchpoint for an expression.\n\
06a64a0b 15801Usage: rwatch [-l|-location] EXPRESSION\n\
c906108c 15802A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15803an expression is read.\n\
15804If -l or -location is given, this evaluates EXPRESSION and watches\n\
15805the memory to which it refers."));
65d12d83 15806 set_cmd_completer (c, expression_completer);
c906108c 15807
1bedd215
AC
15808 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15809Set a watchpoint for an expression.\n\
06a64a0b 15810Usage: awatch [-l|-location] EXPRESSION\n\
c906108c 15811A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15812an expression is either read or written.\n\
15813If -l or -location is given, this evaluates EXPRESSION and watches\n\
15814the memory to which it refers."));
65d12d83 15815 set_cmd_completer (c, expression_completer);
c906108c 15816
11db9430 15817 add_info ("watchpoints", info_watchpoints_command, _("\
e5a67952 15818Status of specified watchpoints (all watchpoints if no argument)."));
c906108c 15819
920d2a44
AC
15820 /* XXX: cagney/2005-02-23: This should be a boolean, and should
15821 respond to changes - contrary to the description. */
85c07804
AC
15822 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15823 &can_use_hw_watchpoints, _("\
15824Set debugger's willingness to use watchpoint hardware."), _("\
15825Show debugger's willingness to use watchpoint hardware."), _("\
c906108c
SS
15826If zero, gdb will not use hardware for new watchpoints, even if\n\
15827such is available. (However, any hardware watchpoints that were\n\
15828created before setting this to nonzero, will continue to use watchpoint\n\
85c07804
AC
15829hardware.)"),
15830 NULL,
920d2a44 15831 show_can_use_hw_watchpoints,
85c07804 15832 &setlist, &showlist);
c906108c
SS
15833
15834 can_use_hw_watchpoints = 1;
fa8d40ab 15835
1042e4c0
SS
15836 /* Tracepoint manipulation commands. */
15837
15838 c = add_com ("trace", class_breakpoint, trace_command, _("\
629500fa 15839Set a tracepoint at specified location.\n\
1042e4c0
SS
15840\n"
15841BREAK_ARGS_HELP ("trace") "\n\
15842Do \"help tracepoints\" for info on other tracepoint commands."));
15843 set_cmd_completer (c, location_completer);
15844
15845 add_com_alias ("tp", "trace", class_alias, 0);
15846 add_com_alias ("tr", "trace", class_alias, 1);
15847 add_com_alias ("tra", "trace", class_alias, 1);
15848 add_com_alias ("trac", "trace", class_alias, 1);
15849
7a697b8d 15850 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
629500fa 15851Set a fast tracepoint at specified location.\n\
7a697b8d
SS
15852\n"
15853BREAK_ARGS_HELP ("ftrace") "\n\
15854Do \"help tracepoints\" for info on other tracepoint commands."));
15855 set_cmd_completer (c, location_completer);
15856
0fb4aa4b 15857 c = add_com ("strace", class_breakpoint, strace_command, _("\
629500fa 15858Set a static tracepoint at location or marker.\n\
0fb4aa4b
PA
15859\n\
15860strace [LOCATION] [if CONDITION]\n\
629500fa
KS
15861LOCATION may be a linespec, explicit, or address location (described below) \n\
15862or -m MARKER_ID.\n\n\
15863If a marker id is specified, probe the marker with that name. With\n\
15864no LOCATION, uses current execution address of the selected stack frame.\n\
0fb4aa4b
PA
15865Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15866This collects arbitrary user data passed in the probe point call to the\n\
15867tracing library. You can inspect it when analyzing the trace buffer,\n\
15868by printing the $_sdata variable like any other convenience variable.\n\
15869\n\
15870CONDITION is a boolean expression.\n\
629500fa 15871\n" LOCATION_HELP_STRING "\n\
d41c0fc8
PA
15872Multiple tracepoints at one place are permitted, and useful if their\n\
15873conditions are different.\n\
0fb4aa4b
PA
15874\n\
15875Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15876Do \"help tracepoints\" for info on other tracepoint commands."));
15877 set_cmd_completer (c, location_completer);
15878
11db9430 15879 add_info ("tracepoints", info_tracepoints_command, _("\
e5a67952 15880Status of specified tracepoints (all tracepoints if no argument).\n\
1042e4c0
SS
15881Convenience variable \"$tpnum\" contains the number of the\n\
15882last tracepoint set."));
15883
15884 add_info_alias ("tp", "tracepoints", 1);
15885
15886 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15887Delete specified tracepoints.\n\
15888Arguments are tracepoint numbers, separated by spaces.\n\
15889No argument means delete all tracepoints."),
15890 &deletelist);
7e20dfcd 15891 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
1042e4c0
SS
15892
15893 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15894Disable specified tracepoints.\n\
15895Arguments are tracepoint numbers, separated by spaces.\n\
15896No argument means disable all tracepoints."),
15897 &disablelist);
15898 deprecate_cmd (c, "disable");
15899
15900 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15901Enable specified tracepoints.\n\
15902Arguments are tracepoint numbers, separated by spaces.\n\
15903No argument means enable all tracepoints."),
15904 &enablelist);
15905 deprecate_cmd (c, "enable");
15906
15907 add_com ("passcount", class_trace, trace_pass_command, _("\
15908Set the passcount for a tracepoint.\n\
15909The trace will end when the tracepoint has been passed 'count' times.\n\
15910Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15911if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15912
6149aea9
PA
15913 add_prefix_cmd ("save", class_breakpoint, save_command,
15914 _("Save breakpoint definitions as a script."),
15915 &save_cmdlist, "save ",
15916 0/*allow-unknown*/, &cmdlist);
15917
15918 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15919Save current breakpoint definitions as a script.\n\
cce7e648 15920This includes all types of breakpoints (breakpoints, watchpoints,\n\
6149aea9
PA
15921catchpoints, tracepoints). Use the 'source' command in another debug\n\
15922session to restore them."),
15923 &save_cmdlist);
15924 set_cmd_completer (c, filename_completer);
15925
15926 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
1042e4c0 15927Save current tracepoint definitions as a script.\n\
6149aea9
PA
15928Use the 'source' command in another debug session to restore them."),
15929 &save_cmdlist);
1042e4c0
SS
15930 set_cmd_completer (c, filename_completer);
15931
6149aea9
PA
15932 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15933 deprecate_cmd (c, "save tracepoints");
15934
1bedd215 15935 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
fa8d40ab
JJ
15936Breakpoint specific settings\n\
15937Configure various breakpoint-specific variables such as\n\
1bedd215 15938pending breakpoint behavior"),
fa8d40ab
JJ
15939 &breakpoint_set_cmdlist, "set breakpoint ",
15940 0/*allow-unknown*/, &setlist);
1bedd215 15941 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
fa8d40ab
JJ
15942Breakpoint specific settings\n\
15943Configure various breakpoint-specific variables such as\n\
1bedd215 15944pending breakpoint behavior"),
fa8d40ab
JJ
15945 &breakpoint_show_cmdlist, "show breakpoint ",
15946 0/*allow-unknown*/, &showlist);
15947
7915a72c
AC
15948 add_setshow_auto_boolean_cmd ("pending", no_class,
15949 &pending_break_support, _("\
15950Set debugger's behavior regarding pending breakpoints."), _("\
15951Show debugger's behavior regarding pending breakpoints."), _("\
6e1d7d6c
AC
15952If on, an unrecognized breakpoint location will cause gdb to create a\n\
15953pending breakpoint. If off, an unrecognized breakpoint location results in\n\
15954an error. If auto, an unrecognized breakpoint location results in a\n\
7915a72c 15955user-query to see if a pending breakpoint should be created."),
2c5b56ce 15956 NULL,
920d2a44 15957 show_pending_break_support,
6e1d7d6c
AC
15958 &breakpoint_set_cmdlist,
15959 &breakpoint_show_cmdlist);
fa8d40ab
JJ
15960
15961 pending_break_support = AUTO_BOOLEAN_AUTO;
765dc015
VP
15962
15963 add_setshow_boolean_cmd ("auto-hw", no_class,
15964 &automatic_hardware_breakpoints, _("\
15965Set automatic usage of hardware breakpoints."), _("\
15966Show automatic usage of hardware breakpoints."), _("\
15967If set, the debugger will automatically use hardware breakpoints for\n\
15968breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
15969a warning will be emitted for such breakpoints."),
15970 NULL,
15971 show_automatic_hardware_breakpoints,
15972 &breakpoint_set_cmdlist,
15973 &breakpoint_show_cmdlist);
74960c60 15974
a25a5a45
PA
15975 add_setshow_boolean_cmd ("always-inserted", class_support,
15976 &always_inserted_mode, _("\
74960c60
VP
15977Set mode for inserting breakpoints."), _("\
15978Show mode for inserting breakpoints."), _("\
a25a5a45
PA
15979When this mode is on, breakpoints are inserted immediately as soon as\n\
15980they're created, kept inserted even when execution stops, and removed\n\
15981only when the user deletes them. When this mode is off (the default),\n\
15982breakpoints are inserted only when execution continues, and removed\n\
15983when execution stops."),
72d0e2c5
YQ
15984 NULL,
15985 &show_always_inserted_mode,
15986 &breakpoint_set_cmdlist,
15987 &breakpoint_show_cmdlist);
f1310107 15988
b775012e
LM
15989 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15990 condition_evaluation_enums,
15991 &condition_evaluation_mode_1, _("\
15992Set mode of breakpoint condition evaluation."), _("\
15993Show mode of breakpoint condition evaluation."), _("\
d1cda5d9 15994When this is set to \"host\", breakpoint conditions will be\n\
b775012e
LM
15995evaluated on the host's side by GDB. When it is set to \"target\",\n\
15996breakpoint conditions will be downloaded to the target (if the target\n\
15997supports such feature) and conditions will be evaluated on the target's side.\n\
15998If this is set to \"auto\" (default), this will be automatically set to\n\
15999\"target\" if it supports condition evaluation, otherwise it will\n\
16000be set to \"gdb\""),
16001 &set_condition_evaluation_mode,
16002 &show_condition_evaluation_mode,
16003 &breakpoint_set_cmdlist,
16004 &breakpoint_show_cmdlist);
16005
f1310107
TJB
16006 add_com ("break-range", class_breakpoint, break_range_command, _("\
16007Set a breakpoint for an address range.\n\
16008break-range START-LOCATION, END-LOCATION\n\
16009where START-LOCATION and END-LOCATION can be one of the following:\n\
16010 LINENUM, for that line in the current file,\n\
16011 FILE:LINENUM, for that line in that file,\n\
16012 +OFFSET, for that number of lines after the current line\n\
16013 or the start of the range\n\
16014 FUNCTION, for the first line in that function,\n\
16015 FILE:FUNCTION, to distinguish among like-named static functions.\n\
16016 *ADDRESS, for the instruction at that address.\n\
16017\n\
16018The breakpoint will stop execution of the inferior whenever it executes\n\
16019an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16020range (including START-LOCATION and END-LOCATION)."));
16021
e7e0cddf 16022 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
629500fa 16023Set a dynamic printf at specified location.\n\
e7e0cddf 16024dprintf location,format string,arg1,arg2,...\n\
629500fa
KS
16025location may be a linespec, explicit, or address location.\n"
16026"\n" LOCATION_HELP_STRING));
e7e0cddf
SS
16027 set_cmd_completer (c, location_completer);
16028
16029 add_setshow_enum_cmd ("dprintf-style", class_support,
16030 dprintf_style_enums, &dprintf_style, _("\
16031Set the style of usage for dynamic printf."), _("\
16032Show the style of usage for dynamic printf."), _("\
16033This setting chooses how GDB will do a dynamic printf.\n\
16034If the value is \"gdb\", then the printing is done by GDB to its own\n\
16035console, as with the \"printf\" command.\n\
16036If the value is \"call\", the print is done by calling a function in your\n\
16037program; by default printf(), but you can choose a different function or\n\
16038output stream by setting dprintf-function and dprintf-channel."),
16039 update_dprintf_commands, NULL,
16040 &setlist, &showlist);
16041
16042 dprintf_function = xstrdup ("printf");
16043 add_setshow_string_cmd ("dprintf-function", class_support,
16044 &dprintf_function, _("\
16045Set the function to use for dynamic printf"), _("\
16046Show the function to use for dynamic printf"), NULL,
16047 update_dprintf_commands, NULL,
16048 &setlist, &showlist);
16049
16050 dprintf_channel = xstrdup ("");
16051 add_setshow_string_cmd ("dprintf-channel", class_support,
16052 &dprintf_channel, _("\
16053Set the channel to use for dynamic printf"), _("\
16054Show the channel to use for dynamic printf"), NULL,
16055 update_dprintf_commands, NULL,
16056 &setlist, &showlist);
16057
d3ce09f5
SS
16058 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16059 &disconnected_dprintf, _("\
16060Set whether dprintf continues after GDB disconnects."), _("\
16061Show whether dprintf continues after GDB disconnects."), _("\
16062Use this to let dprintf commands continue to hit and produce output\n\
16063even if GDB disconnects or detaches from the target."),
16064 NULL,
16065 NULL,
16066 &setlist, &showlist);
16067
16068 add_com ("agent-printf", class_vars, agent_printf_command, _("\
16069agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16070(target agent only) This is useful for formatted output in user-defined commands."));
16071
765dc015 16072 automatic_hardware_breakpoints = 1;
f3b1572e 16073
76727919
TT
16074 gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
16075 gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
c906108c 16076}
This page took 3.424046 seconds and 4 git commands to generate.