Overload catch_command_errors
[deliverable/binutils-gdb.git] / gdb / breakpoint.c
... / ...
CommitLineData
1/* Everything about breakpoints, for GDB.
2
3 Copyright (C) 1986-2017 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
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
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
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.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20#include "defs.h"
21#include "arch-utils.h"
22#include <ctype.h>
23#include "hashtab.h"
24#include "symtab.h"
25#include "frame.h"
26#include "breakpoint.h"
27#include "tracepoint.h"
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"
35#include "infrun.h"
36#include "gdbthread.h"
37#include "target.h"
38#include "language.h"
39#include "gdb-demangle.h"
40#include "filenames.h"
41#include "annotate.h"
42#include "symfile.h"
43#include "objfiles.h"
44#include "source.h"
45#include "linespec.h"
46#include "completer.h"
47#include "gdb.h"
48#include "ui-out.h"
49#include "cli/cli-script.h"
50#include "block.h"
51#include "solib.h"
52#include "solist.h"
53#include "observer.h"
54#include "memattr.h"
55#include "ada-lang.h"
56#include "top.h"
57#include "valprint.h"
58#include "jit.h"
59#include "parser-defs.h"
60#include "gdb_regex.h"
61#include "probe.h"
62#include "cli/cli-utils.h"
63#include "continuations.h"
64#include "stack.h"
65#include "skip.h"
66#include "ax-gdb.h"
67#include "dummy-frame.h"
68#include "interps.h"
69#include "format.h"
70#include "thread-fsm.h"
71#include "tid-parse.h"
72
73/* readline include files */
74#include "readline/readline.h"
75#include "readline/history.h"
76
77/* readline defines this. */
78#undef savestring
79
80#include "mi/mi-common.h"
81#include "extension.h"
82#include <algorithm>
83#include "progspace-and-thread.h"
84#include "common/array-view.h"
85#include "common/gdb_optional.h"
86
87/* Enums for exception-handling support. */
88enum exception_event_kind
89{
90 EX_EVENT_THROW,
91 EX_EVENT_RETHROW,
92 EX_EVENT_CATCH
93};
94
95/* Prototypes for local functions. */
96
97static void enable_delete_command (char *, int);
98
99static void enable_once_command (char *, int);
100
101static void enable_count_command (char *, int);
102
103static void disable_command (char *, int);
104
105static void enable_command (char *, int);
106
107static void map_breakpoint_numbers (const char *,
108 void (*) (struct breakpoint *,
109 void *),
110 void *);
111
112static void ignore_command (char *, int);
113
114static int breakpoint_re_set_one (void *);
115
116static void breakpoint_re_set_default (struct breakpoint *);
117
118static void
119 create_sals_from_location_default (const struct event_location *location,
120 struct linespec_result *canonical,
121 enum bptype type_wanted);
122
123static void create_breakpoints_sal_default (struct gdbarch *,
124 struct linespec_result *,
125 gdb::unique_xmalloc_ptr<char>,
126 gdb::unique_xmalloc_ptr<char>,
127 enum bptype,
128 enum bpdisp, int, int,
129 int,
130 const struct breakpoint_ops *,
131 int, int, int, unsigned);
132
133static std::vector<symtab_and_line> decode_location_default
134 (struct breakpoint *b, const struct event_location *location,
135 struct program_space *search_pspace);
136
137static void clear_command (char *, int);
138
139static void catch_command (char *, int);
140
141static int can_use_hardware_watchpoint (struct value *);
142
143static void break_command_1 (char *, int, int);
144
145static void mention (struct breakpoint *);
146
147static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
148 enum bptype,
149 const struct breakpoint_ops *);
150static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
151 const struct symtab_and_line *);
152
153/* This function is used in gdbtk sources and thus can not be made
154 static. */
155struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
156 struct symtab_and_line,
157 enum bptype,
158 const struct breakpoint_ops *);
159
160static struct breakpoint *
161 momentary_breakpoint_from_master (struct breakpoint *orig,
162 enum bptype type,
163 const struct breakpoint_ops *ops,
164 int loc_enabled);
165
166static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
167
168static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
169 CORE_ADDR bpaddr,
170 enum bptype bptype);
171
172static void describe_other_breakpoints (struct gdbarch *,
173 struct program_space *, CORE_ADDR,
174 struct obj_section *, int);
175
176static int watchpoint_locations_match (struct bp_location *loc1,
177 struct bp_location *loc2);
178
179static int breakpoint_location_address_match (struct bp_location *bl,
180 struct address_space *aspace,
181 CORE_ADDR addr);
182
183static int breakpoint_location_address_range_overlap (struct bp_location *,
184 struct address_space *,
185 CORE_ADDR, int);
186
187static void info_breakpoints_command (char *, int);
188
189static void info_watchpoints_command (char *, int);
190
191static int breakpoint_1 (char *, int,
192 int (*) (const struct breakpoint *));
193
194static int breakpoint_cond_eval (void *);
195
196static void cleanup_executing_breakpoints (void *);
197
198static void commands_command (char *, int);
199
200static void condition_command (char *, int);
201
202static int remove_breakpoint (struct bp_location *);
203static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
204
205static enum print_stop_action print_bp_stop_message (bpstat bs);
206
207static int watchpoint_check (void *);
208
209static void maintenance_info_breakpoints (char *, int);
210
211static int hw_breakpoint_used_count (void);
212
213static int hw_watchpoint_use_count (struct breakpoint *);
214
215static int hw_watchpoint_used_count_others (struct breakpoint *except,
216 enum bptype type,
217 int *other_type_used);
218
219static void hbreak_command (char *, int);
220
221static void thbreak_command (char *, int);
222
223static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
224 int count);
225
226static void stop_command (char *arg, int from_tty);
227
228static void stopin_command (char *arg, int from_tty);
229
230static void stopat_command (char *arg, int from_tty);
231
232static void tcatch_command (char *arg, int from_tty);
233
234static void free_bp_location (struct bp_location *loc);
235static void incref_bp_location (struct bp_location *loc);
236static void decref_bp_location (struct bp_location **loc);
237
238static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
239
240/* update_global_location_list's modes of operation wrt to whether to
241 insert locations now. */
242enum ugll_insert_mode
243{
244 /* Don't insert any breakpoint locations into the inferior, only
245 remove already-inserted locations that no longer should be
246 inserted. Functions that delete a breakpoint or breakpoints
247 should specify this mode, so that deleting a breakpoint doesn't
248 have the side effect of inserting the locations of other
249 breakpoints that are marked not-inserted, but should_be_inserted
250 returns true on them.
251
252 This behavior is useful is situations close to tear-down -- e.g.,
253 after an exec, while the target still has execution, but
254 breakpoint shadows of the previous executable image should *NOT*
255 be restored to the new image; or before detaching, where the
256 target still has execution and wants to delete breakpoints from
257 GDB's lists, and all breakpoints had already been removed from
258 the inferior. */
259 UGLL_DONT_INSERT,
260
261 /* May insert breakpoints iff breakpoints_should_be_inserted_now
262 claims breakpoints should be inserted now. */
263 UGLL_MAY_INSERT,
264
265 /* Insert locations now, irrespective of
266 breakpoints_should_be_inserted_now. E.g., say all threads are
267 stopped right now, and the user did "continue". We need to
268 insert breakpoints _before_ resuming the target, but
269 UGLL_MAY_INSERT wouldn't insert them, because
270 breakpoints_should_be_inserted_now returns false at that point,
271 as no thread is running yet. */
272 UGLL_INSERT
273};
274
275static void update_global_location_list (enum ugll_insert_mode);
276
277static void update_global_location_list_nothrow (enum ugll_insert_mode);
278
279static int is_hardware_watchpoint (const struct breakpoint *bpt);
280
281static void insert_breakpoint_locations (void);
282
283static void info_tracepoints_command (char *, int);
284
285static void delete_trace_command (char *, int);
286
287static void enable_trace_command (char *, int);
288
289static void disable_trace_command (char *, int);
290
291static void trace_pass_command (char *, int);
292
293static void set_tracepoint_count (int num);
294
295static int is_masked_watchpoint (const struct breakpoint *b);
296
297static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
298
299/* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
300 otherwise. */
301
302static int strace_marker_p (struct breakpoint *b);
303
304/* The breakpoint_ops structure to be inherited by all breakpoint_ops
305 that are implemented on top of software or hardware breakpoints
306 (user breakpoints, internal and momentary breakpoints, etc.). */
307static struct breakpoint_ops bkpt_base_breakpoint_ops;
308
309/* Internal breakpoints class type. */
310static struct breakpoint_ops internal_breakpoint_ops;
311
312/* Momentary breakpoints class type. */
313static struct breakpoint_ops momentary_breakpoint_ops;
314
315/* The breakpoint_ops structure to be used in regular user created
316 breakpoints. */
317struct breakpoint_ops bkpt_breakpoint_ops;
318
319/* Breakpoints set on probes. */
320static struct breakpoint_ops bkpt_probe_breakpoint_ops;
321
322/* Dynamic printf class type. */
323struct breakpoint_ops dprintf_breakpoint_ops;
324
325/* The style in which to perform a dynamic printf. This is a user
326 option because different output options have different tradeoffs;
327 if GDB does the printing, there is better error handling if there
328 is a problem with any of the arguments, but using an inferior
329 function lets you have special-purpose printers and sending of
330 output to the same place as compiled-in print functions. */
331
332static const char dprintf_style_gdb[] = "gdb";
333static const char dprintf_style_call[] = "call";
334static const char dprintf_style_agent[] = "agent";
335static const char *const dprintf_style_enums[] = {
336 dprintf_style_gdb,
337 dprintf_style_call,
338 dprintf_style_agent,
339 NULL
340};
341static const char *dprintf_style = dprintf_style_gdb;
342
343/* The function to use for dynamic printf if the preferred style is to
344 call into the inferior. The value is simply a string that is
345 copied into the command, so it can be anything that GDB can
346 evaluate to a callable address, not necessarily a function name. */
347
348static char *dprintf_function;
349
350/* The channel to use for dynamic printf if the preferred style is to
351 call into the inferior; if a nonempty string, it will be passed to
352 the call as the first argument, with the format string as the
353 second. As with the dprintf function, this can be anything that
354 GDB knows how to evaluate, so in addition to common choices like
355 "stderr", this could be an app-specific expression like
356 "mystreams[curlogger]". */
357
358static char *dprintf_channel;
359
360/* True if dprintf commands should continue to operate even if GDB
361 has disconnected. */
362static int disconnected_dprintf = 1;
363
364/* A reference-counted struct command_line. This lets multiple
365 breakpoints share a single command list. */
366struct counted_command_line
367{
368 /* The reference count. */
369 int refc;
370
371 /* The command list. */
372 struct command_line *commands;
373};
374
375struct command_line *
376breakpoint_commands (struct breakpoint *b)
377{
378 return b->commands ? b->commands->commands : NULL;
379}
380
381/* Flag indicating that a command has proceeded the inferior past the
382 current breakpoint. */
383
384static int breakpoint_proceeded;
385
386const char *
387bpdisp_text (enum bpdisp disp)
388{
389 /* NOTE: the following values are a part of MI protocol and
390 represent values of 'disp' field returned when inferior stops at
391 a breakpoint. */
392 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
393
394 return bpdisps[(int) disp];
395}
396
397/* Prototypes for exported functions. */
398/* If FALSE, gdb will not use hardware support for watchpoints, even
399 if such is available. */
400static int can_use_hw_watchpoints;
401
402static void
403show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
404 struct cmd_list_element *c,
405 const char *value)
406{
407 fprintf_filtered (file,
408 _("Debugger's willingness to use "
409 "watchpoint hardware is %s.\n"),
410 value);
411}
412
413/* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
414 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
415 for unrecognized breakpoint locations.
416 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
417static enum auto_boolean pending_break_support;
418static void
419show_pending_break_support (struct ui_file *file, int from_tty,
420 struct cmd_list_element *c,
421 const char *value)
422{
423 fprintf_filtered (file,
424 _("Debugger's behavior regarding "
425 "pending breakpoints is %s.\n"),
426 value);
427}
428
429/* If 1, gdb will automatically use hardware breakpoints for breakpoints
430 set with "break" but falling in read-only memory.
431 If 0, gdb will warn about such breakpoints, but won't automatically
432 use hardware breakpoints. */
433static int automatic_hardware_breakpoints;
434static void
435show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
436 struct cmd_list_element *c,
437 const char *value)
438{
439 fprintf_filtered (file,
440 _("Automatic usage of hardware breakpoints is %s.\n"),
441 value);
442}
443
444/* If on, GDB keeps breakpoints inserted even if the inferior is
445 stopped, and immediately inserts any new breakpoints as soon as
446 they're created. If off (default), GDB keeps breakpoints off of
447 the target as long as possible. That is, it delays inserting
448 breakpoints until the next resume, and removes them again when the
449 target fully stops. This is a bit safer in case GDB crashes while
450 processing user input. */
451static int always_inserted_mode = 0;
452
453static void
454show_always_inserted_mode (struct ui_file *file, int from_tty,
455 struct cmd_list_element *c, const char *value)
456{
457 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
458 value);
459}
460
461/* See breakpoint.h. */
462
463int
464breakpoints_should_be_inserted_now (void)
465{
466 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
467 {
468 /* If breakpoints are global, they should be inserted even if no
469 thread under gdb's control is running, or even if there are
470 no threads under GDB's control yet. */
471 return 1;
472 }
473 else if (target_has_execution)
474 {
475 struct thread_info *tp;
476
477 if (always_inserted_mode)
478 {
479 /* The user wants breakpoints inserted even if all threads
480 are stopped. */
481 return 1;
482 }
483
484 if (threads_are_executing ())
485 return 1;
486
487 /* Don't remove breakpoints yet if, even though all threads are
488 stopped, we still have events to process. */
489 ALL_NON_EXITED_THREADS (tp)
490 if (tp->resumed
491 && tp->suspend.waitstatus_pending_p)
492 return 1;
493 }
494 return 0;
495}
496
497static const char condition_evaluation_both[] = "host or target";
498
499/* Modes for breakpoint condition evaluation. */
500static const char condition_evaluation_auto[] = "auto";
501static const char condition_evaluation_host[] = "host";
502static const char condition_evaluation_target[] = "target";
503static const char *const condition_evaluation_enums[] = {
504 condition_evaluation_auto,
505 condition_evaluation_host,
506 condition_evaluation_target,
507 NULL
508};
509
510/* Global that holds the current mode for breakpoint condition evaluation. */
511static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
512
513/* Global that we use to display information to the user (gets its value from
514 condition_evaluation_mode_1. */
515static const char *condition_evaluation_mode = condition_evaluation_auto;
516
517/* Translate a condition evaluation mode MODE into either "host"
518 or "target". This is used mostly to translate from "auto" to the
519 real setting that is being used. It returns the translated
520 evaluation mode. */
521
522static const char *
523translate_condition_evaluation_mode (const char *mode)
524{
525 if (mode == condition_evaluation_auto)
526 {
527 if (target_supports_evaluation_of_breakpoint_conditions ())
528 return condition_evaluation_target;
529 else
530 return condition_evaluation_host;
531 }
532 else
533 return mode;
534}
535
536/* Discovers what condition_evaluation_auto translates to. */
537
538static const char *
539breakpoint_condition_evaluation_mode (void)
540{
541 return translate_condition_evaluation_mode (condition_evaluation_mode);
542}
543
544/* Return true if GDB should evaluate breakpoint conditions or false
545 otherwise. */
546
547static int
548gdb_evaluates_breakpoint_condition_p (void)
549{
550 const char *mode = breakpoint_condition_evaluation_mode ();
551
552 return (mode == condition_evaluation_host);
553}
554
555/* Are we executing breakpoint commands? */
556static int executing_breakpoint_commands;
557
558/* Are overlay event breakpoints enabled? */
559static int overlay_events_enabled;
560
561/* See description in breakpoint.h. */
562int target_exact_watchpoints = 0;
563
564/* Walk the following statement or block through all breakpoints.
565 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
566 current breakpoint. */
567
568#define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
569
570#define ALL_BREAKPOINTS_SAFE(B,TMP) \
571 for (B = breakpoint_chain; \
572 B ? (TMP=B->next, 1): 0; \
573 B = TMP)
574
575/* Similar iterator for the low-level breakpoints. SAFE variant is
576 not provided so update_global_location_list must not be called
577 while executing the block of ALL_BP_LOCATIONS. */
578
579#define ALL_BP_LOCATIONS(B,BP_TMP) \
580 for (BP_TMP = bp_locations; \
581 BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
582 BP_TMP++)
583
584/* Iterates through locations with address ADDRESS for the currently selected
585 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
586 to where the loop should start from.
587 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
588 appropriate location to start with. */
589
590#define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
591 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
592 BP_LOCP_TMP = BP_LOCP_START; \
593 BP_LOCP_START \
594 && (BP_LOCP_TMP < bp_locations + bp_locations_count \
595 && (*BP_LOCP_TMP)->address == ADDRESS); \
596 BP_LOCP_TMP++)
597
598/* Iterator for tracepoints only. */
599
600#define ALL_TRACEPOINTS(B) \
601 for (B = breakpoint_chain; B; B = B->next) \
602 if (is_tracepoint (B))
603
604/* Chains of all breakpoints defined. */
605
606struct breakpoint *breakpoint_chain;
607
608/* Array is sorted by bp_locations_compare - primarily by the ADDRESS. */
609
610static struct bp_location **bp_locations;
611
612/* Number of elements of BP_LOCATIONS. */
613
614static unsigned bp_locations_count;
615
616/* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
617 ADDRESS for the current elements of BP_LOCATIONS which get a valid
618 result from bp_location_has_shadow. You can use it for roughly
619 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
620 an address you need to read. */
621
622static CORE_ADDR bp_locations_placed_address_before_address_max;
623
624/* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
625 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
626 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
627 You can use it for roughly limiting the subrange of BP_LOCATIONS to
628 scan for shadow bytes for an address you need to read. */
629
630static CORE_ADDR bp_locations_shadow_len_after_address_max;
631
632/* The locations that no longer correspond to any breakpoint, unlinked
633 from the bp_locations array, but for which a hit may still be
634 reported by a target. */
635VEC(bp_location_p) *moribund_locations = NULL;
636
637/* Number of last breakpoint made. */
638
639static int breakpoint_count;
640
641/* The value of `breakpoint_count' before the last command that
642 created breakpoints. If the last (break-like) command created more
643 than one breakpoint, then the difference between BREAKPOINT_COUNT
644 and PREV_BREAKPOINT_COUNT is more than one. */
645static int prev_breakpoint_count;
646
647/* Number of last tracepoint made. */
648
649static int tracepoint_count;
650
651static struct cmd_list_element *breakpoint_set_cmdlist;
652static struct cmd_list_element *breakpoint_show_cmdlist;
653struct cmd_list_element *save_cmdlist;
654
655/* See declaration at breakpoint.h. */
656
657struct breakpoint *
658breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
659 void *user_data)
660{
661 struct breakpoint *b = NULL;
662
663 ALL_BREAKPOINTS (b)
664 {
665 if (func (b, user_data) != 0)
666 break;
667 }
668
669 return b;
670}
671
672/* Return whether a breakpoint is an active enabled breakpoint. */
673static int
674breakpoint_enabled (struct breakpoint *b)
675{
676 return (b->enable_state == bp_enabled);
677}
678
679/* Set breakpoint count to NUM. */
680
681static void
682set_breakpoint_count (int num)
683{
684 prev_breakpoint_count = breakpoint_count;
685 breakpoint_count = num;
686 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
687}
688
689/* Used by `start_rbreak_breakpoints' below, to record the current
690 breakpoint count before "rbreak" creates any breakpoint. */
691static int rbreak_start_breakpoint_count;
692
693/* Called at the start an "rbreak" command to record the first
694 breakpoint made. */
695
696void
697start_rbreak_breakpoints (void)
698{
699 rbreak_start_breakpoint_count = breakpoint_count;
700}
701
702/* Called at the end of an "rbreak" command to record the last
703 breakpoint made. */
704
705void
706end_rbreak_breakpoints (void)
707{
708 prev_breakpoint_count = rbreak_start_breakpoint_count;
709}
710
711/* Used in run_command to zero the hit count when a new run starts. */
712
713void
714clear_breakpoint_hit_counts (void)
715{
716 struct breakpoint *b;
717
718 ALL_BREAKPOINTS (b)
719 b->hit_count = 0;
720}
721
722/* Allocate a new counted_command_line with reference count of 1.
723 The new structure owns COMMANDS. */
724
725static struct counted_command_line *
726alloc_counted_command_line (struct command_line *commands)
727{
728 struct counted_command_line *result = XNEW (struct counted_command_line);
729
730 result->refc = 1;
731 result->commands = commands;
732
733 return result;
734}
735
736/* Increment reference count. This does nothing if CMD is NULL. */
737
738static void
739incref_counted_command_line (struct counted_command_line *cmd)
740{
741 if (cmd)
742 ++cmd->refc;
743}
744
745/* Decrement reference count. If the reference count reaches 0,
746 destroy the counted_command_line. Sets *CMDP to NULL. This does
747 nothing if *CMDP is NULL. */
748
749static void
750decref_counted_command_line (struct counted_command_line **cmdp)
751{
752 if (*cmdp)
753 {
754 if (--(*cmdp)->refc == 0)
755 {
756 free_command_lines (&(*cmdp)->commands);
757 xfree (*cmdp);
758 }
759 *cmdp = NULL;
760 }
761}
762
763/* A cleanup function that calls decref_counted_command_line. */
764
765static void
766do_cleanup_counted_command_line (void *arg)
767{
768 decref_counted_command_line ((struct counted_command_line **) arg);
769}
770
771/* Create a cleanup that calls decref_counted_command_line on the
772 argument. */
773
774static struct cleanup *
775make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
776{
777 return make_cleanup (do_cleanup_counted_command_line, cmdp);
778}
779
780\f
781/* Return the breakpoint with the specified number, or NULL
782 if the number does not refer to an existing breakpoint. */
783
784struct breakpoint *
785get_breakpoint (int num)
786{
787 struct breakpoint *b;
788
789 ALL_BREAKPOINTS (b)
790 if (b->number == num)
791 return b;
792
793 return NULL;
794}
795
796\f
797
798/* Mark locations as "conditions have changed" in case the target supports
799 evaluating conditions on its side. */
800
801static void
802mark_breakpoint_modified (struct breakpoint *b)
803{
804 struct bp_location *loc;
805
806 /* This is only meaningful if the target is
807 evaluating conditions and if the user has
808 opted for condition evaluation on the target's
809 side. */
810 if (gdb_evaluates_breakpoint_condition_p ()
811 || !target_supports_evaluation_of_breakpoint_conditions ())
812 return;
813
814 if (!is_breakpoint (b))
815 return;
816
817 for (loc = b->loc; loc; loc = loc->next)
818 loc->condition_changed = condition_modified;
819}
820
821/* Mark location as "conditions have changed" in case the target supports
822 evaluating conditions on its side. */
823
824static void
825mark_breakpoint_location_modified (struct bp_location *loc)
826{
827 /* This is only meaningful if the target is
828 evaluating conditions and if the user has
829 opted for condition evaluation on the target's
830 side. */
831 if (gdb_evaluates_breakpoint_condition_p ()
832 || !target_supports_evaluation_of_breakpoint_conditions ())
833
834 return;
835
836 if (!is_breakpoint (loc->owner))
837 return;
838
839 loc->condition_changed = condition_modified;
840}
841
842/* Sets the condition-evaluation mode using the static global
843 condition_evaluation_mode. */
844
845static void
846set_condition_evaluation_mode (char *args, int from_tty,
847 struct cmd_list_element *c)
848{
849 const char *old_mode, *new_mode;
850
851 if ((condition_evaluation_mode_1 == condition_evaluation_target)
852 && !target_supports_evaluation_of_breakpoint_conditions ())
853 {
854 condition_evaluation_mode_1 = condition_evaluation_mode;
855 warning (_("Target does not support breakpoint condition evaluation.\n"
856 "Using host evaluation mode instead."));
857 return;
858 }
859
860 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
861 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
862
863 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
864 settings was "auto". */
865 condition_evaluation_mode = condition_evaluation_mode_1;
866
867 /* Only update the mode if the user picked a different one. */
868 if (new_mode != old_mode)
869 {
870 struct bp_location *loc, **loc_tmp;
871 /* If the user switched to a different evaluation mode, we
872 need to synch the changes with the target as follows:
873
874 "host" -> "target": Send all (valid) conditions to the target.
875 "target" -> "host": Remove all the conditions from the target.
876 */
877
878 if (new_mode == condition_evaluation_target)
879 {
880 /* Mark everything modified and synch conditions with the
881 target. */
882 ALL_BP_LOCATIONS (loc, loc_tmp)
883 mark_breakpoint_location_modified (loc);
884 }
885 else
886 {
887 /* Manually mark non-duplicate locations to synch conditions
888 with the target. We do this to remove all the conditions the
889 target knows about. */
890 ALL_BP_LOCATIONS (loc, loc_tmp)
891 if (is_breakpoint (loc->owner) && loc->inserted)
892 loc->needs_update = 1;
893 }
894
895 /* Do the update. */
896 update_global_location_list (UGLL_MAY_INSERT);
897 }
898
899 return;
900}
901
902/* Shows the current mode of breakpoint condition evaluation. Explicitly shows
903 what "auto" is translating to. */
904
905static void
906show_condition_evaluation_mode (struct ui_file *file, int from_tty,
907 struct cmd_list_element *c, const char *value)
908{
909 if (condition_evaluation_mode == condition_evaluation_auto)
910 fprintf_filtered (file,
911 _("Breakpoint condition evaluation "
912 "mode is %s (currently %s).\n"),
913 value,
914 breakpoint_condition_evaluation_mode ());
915 else
916 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
917 value);
918}
919
920/* A comparison function for bp_location AP and BP that is used by
921 bsearch. This comparison function only cares about addresses, unlike
922 the more general bp_locations_compare function. */
923
924static int
925bp_locations_compare_addrs (const void *ap, const void *bp)
926{
927 const struct bp_location *a = *(const struct bp_location **) ap;
928 const struct bp_location *b = *(const struct bp_location **) bp;
929
930 if (a->address == b->address)
931 return 0;
932 else
933 return ((a->address > b->address) - (a->address < b->address));
934}
935
936/* Helper function to skip all bp_locations with addresses
937 less than ADDRESS. It returns the first bp_location that
938 is greater than or equal to ADDRESS. If none is found, just
939 return NULL. */
940
941static struct bp_location **
942get_first_locp_gte_addr (CORE_ADDR address)
943{
944 struct bp_location dummy_loc;
945 struct bp_location *dummy_locp = &dummy_loc;
946 struct bp_location **locp_found = NULL;
947
948 /* Initialize the dummy location's address field. */
949 dummy_loc.address = address;
950
951 /* Find a close match to the first location at ADDRESS. */
952 locp_found = ((struct bp_location **)
953 bsearch (&dummy_locp, bp_locations, bp_locations_count,
954 sizeof (struct bp_location **),
955 bp_locations_compare_addrs));
956
957 /* Nothing was found, nothing left to do. */
958 if (locp_found == NULL)
959 return NULL;
960
961 /* We may have found a location that is at ADDRESS but is not the first in the
962 location's list. Go backwards (if possible) and locate the first one. */
963 while ((locp_found - 1) >= bp_locations
964 && (*(locp_found - 1))->address == address)
965 locp_found--;
966
967 return locp_found;
968}
969
970void
971set_breakpoint_condition (struct breakpoint *b, const char *exp,
972 int from_tty)
973{
974 xfree (b->cond_string);
975 b->cond_string = NULL;
976
977 if (is_watchpoint (b))
978 {
979 struct watchpoint *w = (struct watchpoint *) b;
980
981 w->cond_exp.reset ();
982 }
983 else
984 {
985 struct bp_location *loc;
986
987 for (loc = b->loc; loc; loc = loc->next)
988 {
989 loc->cond.reset ();
990
991 /* No need to free the condition agent expression
992 bytecode (if we have one). We will handle this
993 when we go through update_global_location_list. */
994 }
995 }
996
997 if (*exp == 0)
998 {
999 if (from_tty)
1000 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
1001 }
1002 else
1003 {
1004 const char *arg = exp;
1005
1006 /* I don't know if it matters whether this is the string the user
1007 typed in or the decompiled expression. */
1008 b->cond_string = xstrdup (arg);
1009 b->condition_not_parsed = 0;
1010
1011 if (is_watchpoint (b))
1012 {
1013 struct watchpoint *w = (struct watchpoint *) b;
1014
1015 innermost_block = NULL;
1016 arg = exp;
1017 w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
1018 if (*arg)
1019 error (_("Junk at end of expression"));
1020 w->cond_exp_valid_block = innermost_block;
1021 }
1022 else
1023 {
1024 struct bp_location *loc;
1025
1026 for (loc = b->loc; loc; loc = loc->next)
1027 {
1028 arg = exp;
1029 loc->cond =
1030 parse_exp_1 (&arg, loc->address,
1031 block_for_pc (loc->address), 0);
1032 if (*arg)
1033 error (_("Junk at end of expression"));
1034 }
1035 }
1036 }
1037 mark_breakpoint_modified (b);
1038
1039 observer_notify_breakpoint_modified (b);
1040}
1041
1042/* Completion for the "condition" command. */
1043
1044static void
1045condition_completer (struct cmd_list_element *cmd,
1046 completion_tracker &tracker,
1047 const char *text, const char *word)
1048{
1049 const char *space;
1050
1051 text = skip_spaces (text);
1052 space = skip_to_space (text);
1053 if (*space == '\0')
1054 {
1055 int len;
1056 struct breakpoint *b;
1057 VEC (char_ptr) *result = NULL;
1058
1059 if (text[0] == '$')
1060 {
1061 /* We don't support completion of history indices. */
1062 if (!isdigit (text[1]))
1063 complete_internalvar (tracker, &text[1]);
1064 return;
1065 }
1066
1067 /* We're completing the breakpoint number. */
1068 len = strlen (text);
1069
1070 ALL_BREAKPOINTS (b)
1071 {
1072 char number[50];
1073
1074 xsnprintf (number, sizeof (number), "%d", b->number);
1075
1076 if (strncmp (number, text, len) == 0)
1077 {
1078 gdb::unique_xmalloc_ptr<char> copy (xstrdup (number));
1079 tracker.add_completion (std::move (copy));
1080 }
1081 }
1082
1083 return;
1084 }
1085
1086 /* We're completing the expression part. */
1087 text = skip_spaces (space);
1088 expression_completer (cmd, tracker, text, word);
1089}
1090
1091/* condition N EXP -- set break condition of breakpoint N to EXP. */
1092
1093static void
1094condition_command (char *arg, int from_tty)
1095{
1096 struct breakpoint *b;
1097 char *p;
1098 int bnum;
1099
1100 if (arg == 0)
1101 error_no_arg (_("breakpoint number"));
1102
1103 p = arg;
1104 bnum = get_number (&p);
1105 if (bnum == 0)
1106 error (_("Bad breakpoint argument: '%s'"), arg);
1107
1108 ALL_BREAKPOINTS (b)
1109 if (b->number == bnum)
1110 {
1111 /* Check if this breakpoint has a "stop" method implemented in an
1112 extension language. This method and conditions entered into GDB
1113 from the CLI are mutually exclusive. */
1114 const struct extension_language_defn *extlang
1115 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1116
1117 if (extlang != NULL)
1118 {
1119 error (_("Only one stop condition allowed. There is currently"
1120 " a %s stop condition defined for this breakpoint."),
1121 ext_lang_capitalized_name (extlang));
1122 }
1123 set_breakpoint_condition (b, p, from_tty);
1124
1125 if (is_breakpoint (b))
1126 update_global_location_list (UGLL_MAY_INSERT);
1127
1128 return;
1129 }
1130
1131 error (_("No breakpoint number %d."), bnum);
1132}
1133
1134/* Check that COMMAND do not contain commands that are suitable
1135 only for tracepoints and not suitable for ordinary breakpoints.
1136 Throw if any such commands is found. */
1137
1138static void
1139check_no_tracepoint_commands (struct command_line *commands)
1140{
1141 struct command_line *c;
1142
1143 for (c = commands; c; c = c->next)
1144 {
1145 int i;
1146
1147 if (c->control_type == while_stepping_control)
1148 error (_("The 'while-stepping' command can "
1149 "only be used for tracepoints"));
1150
1151 for (i = 0; i < c->body_count; ++i)
1152 check_no_tracepoint_commands ((c->body_list)[i]);
1153
1154 /* Not that command parsing removes leading whitespace and comment
1155 lines and also empty lines. So, we only need to check for
1156 command directly. */
1157 if (strstr (c->line, "collect ") == c->line)
1158 error (_("The 'collect' command can only be used for tracepoints"));
1159
1160 if (strstr (c->line, "teval ") == c->line)
1161 error (_("The 'teval' command can only be used for tracepoints"));
1162 }
1163}
1164
1165struct longjmp_breakpoint : public breakpoint
1166{
1167 ~longjmp_breakpoint () override;
1168};
1169
1170/* Encapsulate tests for different types of tracepoints. */
1171
1172static bool
1173is_tracepoint_type (bptype type)
1174{
1175 return (type == bp_tracepoint
1176 || type == bp_fast_tracepoint
1177 || type == bp_static_tracepoint);
1178}
1179
1180static bool
1181is_longjmp_type (bptype type)
1182{
1183 return type == bp_longjmp || type == bp_exception;
1184}
1185
1186int
1187is_tracepoint (const struct breakpoint *b)
1188{
1189 return is_tracepoint_type (b->type);
1190}
1191
1192/* Factory function to create an appropriate instance of breakpoint given
1193 TYPE. */
1194
1195static std::unique_ptr<breakpoint>
1196new_breakpoint_from_type (bptype type)
1197{
1198 breakpoint *b;
1199
1200 if (is_tracepoint_type (type))
1201 b = new tracepoint ();
1202 else if (is_longjmp_type (type))
1203 b = new longjmp_breakpoint ();
1204 else
1205 b = new breakpoint ();
1206
1207 return std::unique_ptr<breakpoint> (b);
1208}
1209
1210/* A helper function that validates that COMMANDS are valid for a
1211 breakpoint. This function will throw an exception if a problem is
1212 found. */
1213
1214static void
1215validate_commands_for_breakpoint (struct breakpoint *b,
1216 struct command_line *commands)
1217{
1218 if (is_tracepoint (b))
1219 {
1220 struct tracepoint *t = (struct tracepoint *) b;
1221 struct command_line *c;
1222 struct command_line *while_stepping = 0;
1223
1224 /* Reset the while-stepping step count. The previous commands
1225 might have included a while-stepping action, while the new
1226 ones might not. */
1227 t->step_count = 0;
1228
1229 /* We need to verify that each top-level element of commands is
1230 valid for tracepoints, that there's at most one
1231 while-stepping element, and that the while-stepping's body
1232 has valid tracing commands excluding nested while-stepping.
1233 We also need to validate the tracepoint action line in the
1234 context of the tracepoint --- validate_actionline actually
1235 has side effects, like setting the tracepoint's
1236 while-stepping STEP_COUNT, in addition to checking if the
1237 collect/teval actions parse and make sense in the
1238 tracepoint's context. */
1239 for (c = commands; c; c = c->next)
1240 {
1241 if (c->control_type == while_stepping_control)
1242 {
1243 if (b->type == bp_fast_tracepoint)
1244 error (_("The 'while-stepping' command "
1245 "cannot be used for fast tracepoint"));
1246 else if (b->type == bp_static_tracepoint)
1247 error (_("The 'while-stepping' command "
1248 "cannot be used for static tracepoint"));
1249
1250 if (while_stepping)
1251 error (_("The 'while-stepping' command "
1252 "can be used only once"));
1253 else
1254 while_stepping = c;
1255 }
1256
1257 validate_actionline (c->line, b);
1258 }
1259 if (while_stepping)
1260 {
1261 struct command_line *c2;
1262
1263 gdb_assert (while_stepping->body_count == 1);
1264 c2 = while_stepping->body_list[0];
1265 for (; c2; c2 = c2->next)
1266 {
1267 if (c2->control_type == while_stepping_control)
1268 error (_("The 'while-stepping' command cannot be nested"));
1269 }
1270 }
1271 }
1272 else
1273 {
1274 check_no_tracepoint_commands (commands);
1275 }
1276}
1277
1278/* Return a vector of all the static tracepoints set at ADDR. The
1279 caller is responsible for releasing the vector. */
1280
1281VEC(breakpoint_p) *
1282static_tracepoints_here (CORE_ADDR addr)
1283{
1284 struct breakpoint *b;
1285 VEC(breakpoint_p) *found = 0;
1286 struct bp_location *loc;
1287
1288 ALL_BREAKPOINTS (b)
1289 if (b->type == bp_static_tracepoint)
1290 {
1291 for (loc = b->loc; loc; loc = loc->next)
1292 if (loc->address == addr)
1293 VEC_safe_push(breakpoint_p, found, b);
1294 }
1295
1296 return found;
1297}
1298
1299/* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
1300 validate that only allowed commands are included. */
1301
1302void
1303breakpoint_set_commands (struct breakpoint *b,
1304 command_line_up &&commands)
1305{
1306 validate_commands_for_breakpoint (b, commands.get ());
1307
1308 decref_counted_command_line (&b->commands);
1309 b->commands = alloc_counted_command_line (commands.release ());
1310 observer_notify_breakpoint_modified (b);
1311}
1312
1313/* Set the internal `silent' flag on the breakpoint. Note that this
1314 is not the same as the "silent" that may appear in the breakpoint's
1315 commands. */
1316
1317void
1318breakpoint_set_silent (struct breakpoint *b, int silent)
1319{
1320 int old_silent = b->silent;
1321
1322 b->silent = silent;
1323 if (old_silent != silent)
1324 observer_notify_breakpoint_modified (b);
1325}
1326
1327/* Set the thread for this breakpoint. If THREAD is -1, make the
1328 breakpoint work for any thread. */
1329
1330void
1331breakpoint_set_thread (struct breakpoint *b, int thread)
1332{
1333 int old_thread = b->thread;
1334
1335 b->thread = thread;
1336 if (old_thread != thread)
1337 observer_notify_breakpoint_modified (b);
1338}
1339
1340/* Set the task for this breakpoint. If TASK is 0, make the
1341 breakpoint work for any task. */
1342
1343void
1344breakpoint_set_task (struct breakpoint *b, int task)
1345{
1346 int old_task = b->task;
1347
1348 b->task = task;
1349 if (old_task != task)
1350 observer_notify_breakpoint_modified (b);
1351}
1352
1353void
1354check_tracepoint_command (char *line, void *closure)
1355{
1356 struct breakpoint *b = (struct breakpoint *) closure;
1357
1358 validate_actionline (line, b);
1359}
1360
1361/* A structure used to pass information through
1362 map_breakpoint_numbers. */
1363
1364struct commands_info
1365{
1366 /* True if the command was typed at a tty. */
1367 int from_tty;
1368
1369 /* The breakpoint range spec. */
1370 const char *arg;
1371
1372 /* Non-NULL if the body of the commands are being read from this
1373 already-parsed command. */
1374 struct command_line *control;
1375
1376 /* The command lines read from the user, or NULL if they have not
1377 yet been read. */
1378 struct counted_command_line *cmd;
1379};
1380
1381/* A callback for map_breakpoint_numbers that sets the commands for
1382 commands_command. */
1383
1384static void
1385do_map_commands_command (struct breakpoint *b, void *data)
1386{
1387 struct commands_info *info = (struct commands_info *) data;
1388
1389 if (info->cmd == NULL)
1390 {
1391 command_line_up l;
1392
1393 if (info->control != NULL)
1394 l = copy_command_lines (info->control->body_list[0]);
1395 else
1396 {
1397 struct cleanup *old_chain;
1398 char *str;
1399
1400 str = xstrprintf (_("Type commands for breakpoint(s) "
1401 "%s, one per line."),
1402 info->arg);
1403
1404 old_chain = make_cleanup (xfree, str);
1405
1406 l = read_command_lines (str,
1407 info->from_tty, 1,
1408 (is_tracepoint (b)
1409 ? check_tracepoint_command : 0),
1410 b);
1411
1412 do_cleanups (old_chain);
1413 }
1414
1415 info->cmd = alloc_counted_command_line (l.release ());
1416 }
1417
1418 /* If a breakpoint was on the list more than once, we don't need to
1419 do anything. */
1420 if (b->commands != info->cmd)
1421 {
1422 validate_commands_for_breakpoint (b, info->cmd->commands);
1423 incref_counted_command_line (info->cmd);
1424 decref_counted_command_line (&b->commands);
1425 b->commands = info->cmd;
1426 observer_notify_breakpoint_modified (b);
1427 }
1428}
1429
1430static void
1431commands_command_1 (const char *arg, int from_tty,
1432 struct command_line *control)
1433{
1434 struct cleanup *cleanups;
1435 struct commands_info info;
1436
1437 info.from_tty = from_tty;
1438 info.control = control;
1439 info.cmd = NULL;
1440 /* If we read command lines from the user, then `info' will hold an
1441 extra reference to the commands that we must clean up. */
1442 cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1443
1444 std::string new_arg;
1445
1446 if (arg == NULL || !*arg)
1447 {
1448 if (breakpoint_count - prev_breakpoint_count > 1)
1449 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1450 breakpoint_count);
1451 else if (breakpoint_count > 0)
1452 new_arg = string_printf ("%d", breakpoint_count);
1453 }
1454 else
1455 new_arg = arg;
1456
1457 info.arg = new_arg.c_str ();
1458
1459 map_breakpoint_numbers (info.arg, do_map_commands_command, &info);
1460
1461 if (info.cmd == NULL)
1462 error (_("No breakpoints specified."));
1463
1464 do_cleanups (cleanups);
1465}
1466
1467static void
1468commands_command (char *arg, int from_tty)
1469{
1470 commands_command_1 (arg, from_tty, NULL);
1471}
1472
1473/* Like commands_command, but instead of reading the commands from
1474 input stream, takes them from an already parsed command structure.
1475
1476 This is used by cli-script.c to DTRT with breakpoint commands
1477 that are part of if and while bodies. */
1478enum command_control_type
1479commands_from_control_command (const char *arg, struct command_line *cmd)
1480{
1481 commands_command_1 (arg, 0, cmd);
1482 return simple_control;
1483}
1484
1485/* Return non-zero if BL->TARGET_INFO contains valid information. */
1486
1487static int
1488bp_location_has_shadow (struct bp_location *bl)
1489{
1490 if (bl->loc_type != bp_loc_software_breakpoint)
1491 return 0;
1492 if (!bl->inserted)
1493 return 0;
1494 if (bl->target_info.shadow_len == 0)
1495 /* BL isn't valid, or doesn't shadow memory. */
1496 return 0;
1497 return 1;
1498}
1499
1500/* Update BUF, which is LEN bytes read from the target address
1501 MEMADDR, by replacing a memory breakpoint with its shadowed
1502 contents.
1503
1504 If READBUF is not NULL, this buffer must not overlap with the of
1505 the breakpoint location's shadow_contents buffer. Otherwise, a
1506 failed assertion internal error will be raised. */
1507
1508static void
1509one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1510 const gdb_byte *writebuf_org,
1511 ULONGEST memaddr, LONGEST len,
1512 struct bp_target_info *target_info,
1513 struct gdbarch *gdbarch)
1514{
1515 /* Now do full processing of the found relevant range of elements. */
1516 CORE_ADDR bp_addr = 0;
1517 int bp_size = 0;
1518 int bptoffset = 0;
1519
1520 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1521 current_program_space->aspace, 0))
1522 {
1523 /* The breakpoint is inserted in a different address space. */
1524 return;
1525 }
1526
1527 /* Addresses and length of the part of the breakpoint that
1528 we need to copy. */
1529 bp_addr = target_info->placed_address;
1530 bp_size = target_info->shadow_len;
1531
1532 if (bp_addr + bp_size <= memaddr)
1533 {
1534 /* The breakpoint is entirely before the chunk of memory we are
1535 reading. */
1536 return;
1537 }
1538
1539 if (bp_addr >= memaddr + len)
1540 {
1541 /* The breakpoint is entirely after the chunk of memory we are
1542 reading. */
1543 return;
1544 }
1545
1546 /* Offset within shadow_contents. */
1547 if (bp_addr < memaddr)
1548 {
1549 /* Only copy the second part of the breakpoint. */
1550 bp_size -= memaddr - bp_addr;
1551 bptoffset = memaddr - bp_addr;
1552 bp_addr = memaddr;
1553 }
1554
1555 if (bp_addr + bp_size > memaddr + len)
1556 {
1557 /* Only copy the first part of the breakpoint. */
1558 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1559 }
1560
1561 if (readbuf != NULL)
1562 {
1563 /* Verify that the readbuf buffer does not overlap with the
1564 shadow_contents buffer. */
1565 gdb_assert (target_info->shadow_contents >= readbuf + len
1566 || readbuf >= (target_info->shadow_contents
1567 + target_info->shadow_len));
1568
1569 /* Update the read buffer with this inserted breakpoint's
1570 shadow. */
1571 memcpy (readbuf + bp_addr - memaddr,
1572 target_info->shadow_contents + bptoffset, bp_size);
1573 }
1574 else
1575 {
1576 const unsigned char *bp;
1577 CORE_ADDR addr = target_info->reqstd_address;
1578 int placed_size;
1579
1580 /* Update the shadow with what we want to write to memory. */
1581 memcpy (target_info->shadow_contents + bptoffset,
1582 writebuf_org + bp_addr - memaddr, bp_size);
1583
1584 /* Determine appropriate breakpoint contents and size for this
1585 address. */
1586 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1587
1588 /* Update the final write buffer with this inserted
1589 breakpoint's INSN. */
1590 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1591 }
1592}
1593
1594/* Update BUF, which is LEN bytes read from the target address MEMADDR,
1595 by replacing any memory breakpoints with their shadowed contents.
1596
1597 If READBUF is not NULL, this buffer must not overlap with any of
1598 the breakpoint location's shadow_contents buffers. Otherwise,
1599 a failed assertion internal error will be raised.
1600
1601 The range of shadowed area by each bp_location is:
1602 bl->address - bp_locations_placed_address_before_address_max
1603 up to bl->address + bp_locations_shadow_len_after_address_max
1604 The range we were requested to resolve shadows for is:
1605 memaddr ... memaddr + len
1606 Thus the safe cutoff boundaries for performance optimization are
1607 memaddr + len <= (bl->address
1608 - bp_locations_placed_address_before_address_max)
1609 and:
1610 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
1611
1612void
1613breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1614 const gdb_byte *writebuf_org,
1615 ULONGEST memaddr, LONGEST len)
1616{
1617 /* Left boundary, right boundary and median element of our binary
1618 search. */
1619 unsigned bc_l, bc_r, bc;
1620
1621 /* Find BC_L which is a leftmost element which may affect BUF
1622 content. It is safe to report lower value but a failure to
1623 report higher one. */
1624
1625 bc_l = 0;
1626 bc_r = bp_locations_count;
1627 while (bc_l + 1 < bc_r)
1628 {
1629 struct bp_location *bl;
1630
1631 bc = (bc_l + bc_r) / 2;
1632 bl = bp_locations[bc];
1633
1634 /* Check first BL->ADDRESS will not overflow due to the added
1635 constant. Then advance the left boundary only if we are sure
1636 the BC element can in no way affect the BUF content (MEMADDR
1637 to MEMADDR + LEN range).
1638
1639 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1640 offset so that we cannot miss a breakpoint with its shadow
1641 range tail still reaching MEMADDR. */
1642
1643 if ((bl->address + bp_locations_shadow_len_after_address_max
1644 >= bl->address)
1645 && (bl->address + bp_locations_shadow_len_after_address_max
1646 <= memaddr))
1647 bc_l = bc;
1648 else
1649 bc_r = bc;
1650 }
1651
1652 /* Due to the binary search above, we need to make sure we pick the
1653 first location that's at BC_L's address. E.g., if there are
1654 multiple locations at the same address, BC_L may end up pointing
1655 at a duplicate location, and miss the "master"/"inserted"
1656 location. Say, given locations L1, L2 and L3 at addresses A and
1657 B:
1658
1659 L1@A, L2@A, L3@B, ...
1660
1661 BC_L could end up pointing at location L2, while the "master"
1662 location could be L1. Since the `loc->inserted' flag is only set
1663 on "master" locations, we'd forget to restore the shadow of L1
1664 and L2. */
1665 while (bc_l > 0
1666 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1667 bc_l--;
1668
1669 /* Now do full processing of the found relevant range of elements. */
1670
1671 for (bc = bc_l; bc < bp_locations_count; bc++)
1672 {
1673 struct bp_location *bl = bp_locations[bc];
1674
1675 /* bp_location array has BL->OWNER always non-NULL. */
1676 if (bl->owner->type == bp_none)
1677 warning (_("reading through apparently deleted breakpoint #%d?"),
1678 bl->owner->number);
1679
1680 /* Performance optimization: any further element can no longer affect BUF
1681 content. */
1682
1683 if (bl->address >= bp_locations_placed_address_before_address_max
1684 && memaddr + len <= (bl->address
1685 - bp_locations_placed_address_before_address_max))
1686 break;
1687
1688 if (!bp_location_has_shadow (bl))
1689 continue;
1690
1691 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1692 memaddr, len, &bl->target_info, bl->gdbarch);
1693 }
1694}
1695
1696\f
1697
1698/* Return true if BPT is either a software breakpoint or a hardware
1699 breakpoint. */
1700
1701int
1702is_breakpoint (const struct breakpoint *bpt)
1703{
1704 return (bpt->type == bp_breakpoint
1705 || bpt->type == bp_hardware_breakpoint
1706 || bpt->type == bp_dprintf);
1707}
1708
1709/* Return true if BPT is of any hardware watchpoint kind. */
1710
1711static int
1712is_hardware_watchpoint (const struct breakpoint *bpt)
1713{
1714 return (bpt->type == bp_hardware_watchpoint
1715 || bpt->type == bp_read_watchpoint
1716 || bpt->type == bp_access_watchpoint);
1717}
1718
1719/* Return true if BPT is of any watchpoint kind, hardware or
1720 software. */
1721
1722int
1723is_watchpoint (const struct breakpoint *bpt)
1724{
1725 return (is_hardware_watchpoint (bpt)
1726 || bpt->type == bp_watchpoint);
1727}
1728
1729/* Returns true if the current thread and its running state are safe
1730 to evaluate or update watchpoint B. Watchpoints on local
1731 expressions need to be evaluated in the context of the thread that
1732 was current when the watchpoint was created, and, that thread needs
1733 to be stopped to be able to select the correct frame context.
1734 Watchpoints on global expressions can be evaluated on any thread,
1735 and in any state. It is presently left to the target allowing
1736 memory accesses when threads are running. */
1737
1738static int
1739watchpoint_in_thread_scope (struct watchpoint *b)
1740{
1741 return (b->pspace == current_program_space
1742 && (ptid_equal (b->watchpoint_thread, null_ptid)
1743 || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1744 && !is_executing (inferior_ptid))));
1745}
1746
1747/* Set watchpoint B to disp_del_at_next_stop, even including its possible
1748 associated bp_watchpoint_scope breakpoint. */
1749
1750static void
1751watchpoint_del_at_next_stop (struct watchpoint *w)
1752{
1753 if (w->related_breakpoint != w)
1754 {
1755 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1756 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1757 w->related_breakpoint->disposition = disp_del_at_next_stop;
1758 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1759 w->related_breakpoint = w;
1760 }
1761 w->disposition = disp_del_at_next_stop;
1762}
1763
1764/* Extract a bitfield value from value VAL using the bit parameters contained in
1765 watchpoint W. */
1766
1767static struct value *
1768extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1769{
1770 struct value *bit_val;
1771
1772 if (val == NULL)
1773 return NULL;
1774
1775 bit_val = allocate_value (value_type (val));
1776
1777 unpack_value_bitfield (bit_val,
1778 w->val_bitpos,
1779 w->val_bitsize,
1780 value_contents_for_printing (val),
1781 value_offset (val),
1782 val);
1783
1784 return bit_val;
1785}
1786
1787/* Allocate a dummy location and add it to B, which must be a software
1788 watchpoint. This is required because even if a software watchpoint
1789 is not watching any memory, bpstat_stop_status requires a location
1790 to be able to report stops. */
1791
1792static void
1793software_watchpoint_add_no_memory_location (struct breakpoint *b,
1794 struct program_space *pspace)
1795{
1796 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1797
1798 b->loc = allocate_bp_location (b);
1799 b->loc->pspace = pspace;
1800 b->loc->address = -1;
1801 b->loc->length = -1;
1802}
1803
1804/* Returns true if B is a software watchpoint that is not watching any
1805 memory (e.g., "watch $pc"). */
1806
1807static int
1808is_no_memory_software_watchpoint (struct breakpoint *b)
1809{
1810 return (b->type == bp_watchpoint
1811 && b->loc != NULL
1812 && b->loc->next == NULL
1813 && b->loc->address == -1
1814 && b->loc->length == -1);
1815}
1816
1817/* Assuming that B is a watchpoint:
1818 - Reparse watchpoint expression, if REPARSE is non-zero
1819 - Evaluate expression and store the result in B->val
1820 - Evaluate the condition if there is one, and store the result
1821 in b->loc->cond.
1822 - Update the list of values that must be watched in B->loc.
1823
1824 If the watchpoint disposition is disp_del_at_next_stop, then do
1825 nothing. If this is local watchpoint that is out of scope, delete
1826 it.
1827
1828 Even with `set breakpoint always-inserted on' the watchpoints are
1829 removed + inserted on each stop here. Normal breakpoints must
1830 never be removed because they might be missed by a running thread
1831 when debugging in non-stop mode. On the other hand, hardware
1832 watchpoints (is_hardware_watchpoint; processed here) are specific
1833 to each LWP since they are stored in each LWP's hardware debug
1834 registers. Therefore, such LWP must be stopped first in order to
1835 be able to modify its hardware watchpoints.
1836
1837 Hardware watchpoints must be reset exactly once after being
1838 presented to the user. It cannot be done sooner, because it would
1839 reset the data used to present the watchpoint hit to the user. And
1840 it must not be done later because it could display the same single
1841 watchpoint hit during multiple GDB stops. Note that the latter is
1842 relevant only to the hardware watchpoint types bp_read_watchpoint
1843 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1844 not user-visible - its hit is suppressed if the memory content has
1845 not changed.
1846
1847 The following constraints influence the location where we can reset
1848 hardware watchpoints:
1849
1850 * target_stopped_by_watchpoint and target_stopped_data_address are
1851 called several times when GDB stops.
1852
1853 [linux]
1854 * Multiple hardware watchpoints can be hit at the same time,
1855 causing GDB to stop. GDB only presents one hardware watchpoint
1856 hit at a time as the reason for stopping, and all the other hits
1857 are presented later, one after the other, each time the user
1858 requests the execution to be resumed. Execution is not resumed
1859 for the threads still having pending hit event stored in
1860 LWP_INFO->STATUS. While the watchpoint is already removed from
1861 the inferior on the first stop the thread hit event is kept being
1862 reported from its cached value by linux_nat_stopped_data_address
1863 until the real thread resume happens after the watchpoint gets
1864 presented and thus its LWP_INFO->STATUS gets reset.
1865
1866 Therefore the hardware watchpoint hit can get safely reset on the
1867 watchpoint removal from inferior. */
1868
1869static void
1870update_watchpoint (struct watchpoint *b, int reparse)
1871{
1872 int within_current_scope;
1873 struct frame_id saved_frame_id;
1874 int frame_saved;
1875
1876 /* If this is a local watchpoint, we only want to check if the
1877 watchpoint frame is in scope if the current thread is the thread
1878 that was used to create the watchpoint. */
1879 if (!watchpoint_in_thread_scope (b))
1880 return;
1881
1882 if (b->disposition == disp_del_at_next_stop)
1883 return;
1884
1885 frame_saved = 0;
1886
1887 /* Determine if the watchpoint is within scope. */
1888 if (b->exp_valid_block == NULL)
1889 within_current_scope = 1;
1890 else
1891 {
1892 struct frame_info *fi = get_current_frame ();
1893 struct gdbarch *frame_arch = get_frame_arch (fi);
1894 CORE_ADDR frame_pc = get_frame_pc (fi);
1895
1896 /* If we're at a point where the stack has been destroyed
1897 (e.g. in a function epilogue), unwinding may not work
1898 properly. Do not attempt to recreate locations at this
1899 point. See similar comments in watchpoint_check. */
1900 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1901 return;
1902
1903 /* Save the current frame's ID so we can restore it after
1904 evaluating the watchpoint expression on its own frame. */
1905 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1906 took a frame parameter, so that we didn't have to change the
1907 selected frame. */
1908 frame_saved = 1;
1909 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1910
1911 fi = frame_find_by_id (b->watchpoint_frame);
1912 within_current_scope = (fi != NULL);
1913 if (within_current_scope)
1914 select_frame (fi);
1915 }
1916
1917 /* We don't free locations. They are stored in the bp_location array
1918 and update_global_location_list will eventually delete them and
1919 remove breakpoints if needed. */
1920 b->loc = NULL;
1921
1922 if (within_current_scope && reparse)
1923 {
1924 const char *s;
1925
1926 b->exp.reset ();
1927 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1928 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1929 /* If the meaning of expression itself changed, the old value is
1930 no longer relevant. We don't want to report a watchpoint hit
1931 to the user when the old value and the new value may actually
1932 be completely different objects. */
1933 value_free (b->val);
1934 b->val = NULL;
1935 b->val_valid = 0;
1936
1937 /* Note that unlike with breakpoints, the watchpoint's condition
1938 expression is stored in the breakpoint object, not in the
1939 locations (re)created below. */
1940 if (b->cond_string != NULL)
1941 {
1942 b->cond_exp.reset ();
1943
1944 s = b->cond_string;
1945 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1946 }
1947 }
1948
1949 /* If we failed to parse the expression, for example because
1950 it refers to a global variable in a not-yet-loaded shared library,
1951 don't try to insert watchpoint. We don't automatically delete
1952 such watchpoint, though, since failure to parse expression
1953 is different from out-of-scope watchpoint. */
1954 if (!target_has_execution)
1955 {
1956 /* Without execution, memory can't change. No use to try and
1957 set watchpoint locations. The watchpoint will be reset when
1958 the target gains execution, through breakpoint_re_set. */
1959 if (!can_use_hw_watchpoints)
1960 {
1961 if (b->ops->works_in_software_mode (b))
1962 b->type = bp_watchpoint;
1963 else
1964 error (_("Can't set read/access watchpoint when "
1965 "hardware watchpoints are disabled."));
1966 }
1967 }
1968 else if (within_current_scope && b->exp)
1969 {
1970 int pc = 0;
1971 struct value *val_chain, *v, *result, *next;
1972 struct program_space *frame_pspace;
1973
1974 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1975
1976 /* Avoid setting b->val if it's already set. The meaning of
1977 b->val is 'the last value' user saw, and we should update
1978 it only if we reported that last value to user. As it
1979 happens, the code that reports it updates b->val directly.
1980 We don't keep track of the memory value for masked
1981 watchpoints. */
1982 if (!b->val_valid && !is_masked_watchpoint (b))
1983 {
1984 if (b->val_bitsize != 0)
1985 {
1986 v = extract_bitfield_from_watchpoint_value (b, v);
1987 if (v != NULL)
1988 release_value (v);
1989 }
1990 b->val = v;
1991 b->val_valid = 1;
1992 }
1993
1994 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1995
1996 /* Look at each value on the value chain. */
1997 for (v = val_chain; v; v = value_next (v))
1998 {
1999 /* If it's a memory location, and GDB actually needed
2000 its contents to evaluate the expression, then we
2001 must watch it. If the first value returned is
2002 still lazy, that means an error occurred reading it;
2003 watch it anyway in case it becomes readable. */
2004 if (VALUE_LVAL (v) == lval_memory
2005 && (v == val_chain || ! value_lazy (v)))
2006 {
2007 struct type *vtype = check_typedef (value_type (v));
2008
2009 /* We only watch structs and arrays if user asked
2010 for it explicitly, never if they just happen to
2011 appear in the middle of some value chain. */
2012 if (v == result
2013 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
2014 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
2015 {
2016 CORE_ADDR addr;
2017 enum target_hw_bp_type type;
2018 struct bp_location *loc, **tmp;
2019 int bitpos = 0, bitsize = 0;
2020
2021 if (value_bitsize (v) != 0)
2022 {
2023 /* Extract the bit parameters out from the bitfield
2024 sub-expression. */
2025 bitpos = value_bitpos (v);
2026 bitsize = value_bitsize (v);
2027 }
2028 else if (v == result && b->val_bitsize != 0)
2029 {
2030 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
2031 lvalue whose bit parameters are saved in the fields
2032 VAL_BITPOS and VAL_BITSIZE. */
2033 bitpos = b->val_bitpos;
2034 bitsize = b->val_bitsize;
2035 }
2036
2037 addr = value_address (v);
2038 if (bitsize != 0)
2039 {
2040 /* Skip the bytes that don't contain the bitfield. */
2041 addr += bitpos / 8;
2042 }
2043
2044 type = hw_write;
2045 if (b->type == bp_read_watchpoint)
2046 type = hw_read;
2047 else if (b->type == bp_access_watchpoint)
2048 type = hw_access;
2049
2050 loc = allocate_bp_location (b);
2051 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
2052 ;
2053 *tmp = loc;
2054 loc->gdbarch = get_type_arch (value_type (v));
2055
2056 loc->pspace = frame_pspace;
2057 loc->address = addr;
2058
2059 if (bitsize != 0)
2060 {
2061 /* Just cover the bytes that make up the bitfield. */
2062 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2063 }
2064 else
2065 loc->length = TYPE_LENGTH (value_type (v));
2066
2067 loc->watchpoint_type = type;
2068 }
2069 }
2070 }
2071
2072 /* Change the type of breakpoint between hardware assisted or
2073 an ordinary watchpoint depending on the hardware support
2074 and free hardware slots. REPARSE is set when the inferior
2075 is started. */
2076 if (reparse)
2077 {
2078 int reg_cnt;
2079 enum bp_loc_type loc_type;
2080 struct bp_location *bl;
2081
2082 reg_cnt = can_use_hardware_watchpoint (val_chain);
2083
2084 if (reg_cnt)
2085 {
2086 int i, target_resources_ok, other_type_used;
2087 enum bptype type;
2088
2089 /* Use an exact watchpoint when there's only one memory region to be
2090 watched, and only one debug register is needed to watch it. */
2091 b->exact = target_exact_watchpoints && reg_cnt == 1;
2092
2093 /* We need to determine how many resources are already
2094 used for all other hardware watchpoints plus this one
2095 to see if we still have enough resources to also fit
2096 this watchpoint in as well. */
2097
2098 /* If this is a software watchpoint, we try to turn it
2099 to a hardware one -- count resources as if B was of
2100 hardware watchpoint type. */
2101 type = b->type;
2102 if (type == bp_watchpoint)
2103 type = bp_hardware_watchpoint;
2104
2105 /* This watchpoint may or may not have been placed on
2106 the list yet at this point (it won't be in the list
2107 if we're trying to create it for the first time,
2108 through watch_command), so always account for it
2109 manually. */
2110
2111 /* Count resources used by all watchpoints except B. */
2112 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
2113
2114 /* Add in the resources needed for B. */
2115 i += hw_watchpoint_use_count (b);
2116
2117 target_resources_ok
2118 = target_can_use_hardware_watchpoint (type, i, other_type_used);
2119 if (target_resources_ok <= 0)
2120 {
2121 int sw_mode = b->ops->works_in_software_mode (b);
2122
2123 if (target_resources_ok == 0 && !sw_mode)
2124 error (_("Target does not support this type of "
2125 "hardware watchpoint."));
2126 else if (target_resources_ok < 0 && !sw_mode)
2127 error (_("There are not enough available hardware "
2128 "resources for this watchpoint."));
2129
2130 /* Downgrade to software watchpoint. */
2131 b->type = bp_watchpoint;
2132 }
2133 else
2134 {
2135 /* If this was a software watchpoint, we've just
2136 found we have enough resources to turn it to a
2137 hardware watchpoint. Otherwise, this is a
2138 nop. */
2139 b->type = type;
2140 }
2141 }
2142 else if (!b->ops->works_in_software_mode (b))
2143 {
2144 if (!can_use_hw_watchpoints)
2145 error (_("Can't set read/access watchpoint when "
2146 "hardware watchpoints are disabled."));
2147 else
2148 error (_("Expression cannot be implemented with "
2149 "read/access watchpoint."));
2150 }
2151 else
2152 b->type = bp_watchpoint;
2153
2154 loc_type = (b->type == bp_watchpoint? bp_loc_other
2155 : bp_loc_hardware_watchpoint);
2156 for (bl = b->loc; bl; bl = bl->next)
2157 bl->loc_type = loc_type;
2158 }
2159
2160 for (v = val_chain; v; v = next)
2161 {
2162 next = value_next (v);
2163 if (v != b->val)
2164 value_free (v);
2165 }
2166
2167 /* If a software watchpoint is not watching any memory, then the
2168 above left it without any location set up. But,
2169 bpstat_stop_status requires a location to be able to report
2170 stops, so make sure there's at least a dummy one. */
2171 if (b->type == bp_watchpoint && b->loc == NULL)
2172 software_watchpoint_add_no_memory_location (b, frame_pspace);
2173 }
2174 else if (!within_current_scope)
2175 {
2176 printf_filtered (_("\
2177Watchpoint %d deleted because the program has left the block\n\
2178in which its expression is valid.\n"),
2179 b->number);
2180 watchpoint_del_at_next_stop (b);
2181 }
2182
2183 /* Restore the selected frame. */
2184 if (frame_saved)
2185 select_frame (frame_find_by_id (saved_frame_id));
2186}
2187
2188
2189/* Returns 1 iff breakpoint location should be
2190 inserted in the inferior. We don't differentiate the type of BL's owner
2191 (breakpoint vs. tracepoint), although insert_location in tracepoint's
2192 breakpoint_ops is not defined, because in insert_bp_location,
2193 tracepoint's insert_location will not be called. */
2194static int
2195should_be_inserted (struct bp_location *bl)
2196{
2197 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2198 return 0;
2199
2200 if (bl->owner->disposition == disp_del_at_next_stop)
2201 return 0;
2202
2203 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2204 return 0;
2205
2206 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2207 return 0;
2208
2209 /* This is set for example, when we're attached to the parent of a
2210 vfork, and have detached from the child. The child is running
2211 free, and we expect it to do an exec or exit, at which point the
2212 OS makes the parent schedulable again (and the target reports
2213 that the vfork is done). Until the child is done with the shared
2214 memory region, do not insert breakpoints in the parent, otherwise
2215 the child could still trip on the parent's breakpoints. Since
2216 the parent is blocked anyway, it won't miss any breakpoint. */
2217 if (bl->pspace->breakpoints_not_allowed)
2218 return 0;
2219
2220 /* Don't insert a breakpoint if we're trying to step past its
2221 location, except if the breakpoint is a single-step breakpoint,
2222 and the breakpoint's thread is the thread which is stepping past
2223 a breakpoint. */
2224 if ((bl->loc_type == bp_loc_software_breakpoint
2225 || bl->loc_type == bp_loc_hardware_breakpoint)
2226 && stepping_past_instruction_at (bl->pspace->aspace,
2227 bl->address)
2228 /* The single-step breakpoint may be inserted at the location
2229 we're trying to step if the instruction branches to itself.
2230 However, the instruction won't be executed at all and it may
2231 break the semantics of the instruction, for example, the
2232 instruction is a conditional branch or updates some flags.
2233 We can't fix it unless GDB is able to emulate the instruction
2234 or switch to displaced stepping. */
2235 && !(bl->owner->type == bp_single_step
2236 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2237 {
2238 if (debug_infrun)
2239 {
2240 fprintf_unfiltered (gdb_stdlog,
2241 "infrun: skipping breakpoint: "
2242 "stepping past insn at: %s\n",
2243 paddress (bl->gdbarch, bl->address));
2244 }
2245 return 0;
2246 }
2247
2248 /* Don't insert watchpoints if we're trying to step past the
2249 instruction that triggered one. */
2250 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2251 && stepping_past_nonsteppable_watchpoint ())
2252 {
2253 if (debug_infrun)
2254 {
2255 fprintf_unfiltered (gdb_stdlog,
2256 "infrun: stepping past non-steppable watchpoint. "
2257 "skipping watchpoint at %s:%d\n",
2258 paddress (bl->gdbarch, bl->address),
2259 bl->length);
2260 }
2261 return 0;
2262 }
2263
2264 return 1;
2265}
2266
2267/* Same as should_be_inserted but does the check assuming
2268 that the location is not duplicated. */
2269
2270static int
2271unduplicated_should_be_inserted (struct bp_location *bl)
2272{
2273 int result;
2274 const int save_duplicate = bl->duplicate;
2275
2276 bl->duplicate = 0;
2277 result = should_be_inserted (bl);
2278 bl->duplicate = save_duplicate;
2279 return result;
2280}
2281
2282/* Parses a conditional described by an expression COND into an
2283 agent expression bytecode suitable for evaluation
2284 by the bytecode interpreter. Return NULL if there was
2285 any error during parsing. */
2286
2287static agent_expr_up
2288parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2289{
2290 if (cond == NULL)
2291 return NULL;
2292
2293 agent_expr_up aexpr;
2294
2295 /* We don't want to stop processing, so catch any errors
2296 that may show up. */
2297 TRY
2298 {
2299 aexpr = gen_eval_for_expr (scope, cond);
2300 }
2301
2302 CATCH (ex, RETURN_MASK_ERROR)
2303 {
2304 /* If we got here, it means the condition could not be parsed to a valid
2305 bytecode expression and thus can't be evaluated on the target's side.
2306 It's no use iterating through the conditions. */
2307 }
2308 END_CATCH
2309
2310 /* We have a valid agent expression. */
2311 return aexpr;
2312}
2313
2314/* Based on location BL, create a list of breakpoint conditions to be
2315 passed on to the target. If we have duplicated locations with different
2316 conditions, we will add such conditions to the list. The idea is that the
2317 target will evaluate the list of conditions and will only notify GDB when
2318 one of them is true. */
2319
2320static void
2321build_target_condition_list (struct bp_location *bl)
2322{
2323 struct bp_location **locp = NULL, **loc2p;
2324 int null_condition_or_parse_error = 0;
2325 int modified = bl->needs_update;
2326 struct bp_location *loc;
2327
2328 /* Release conditions left over from a previous insert. */
2329 bl->target_info.conditions.clear ();
2330
2331 /* This is only meaningful if the target is
2332 evaluating conditions and if the user has
2333 opted for condition evaluation on the target's
2334 side. */
2335 if (gdb_evaluates_breakpoint_condition_p ()
2336 || !target_supports_evaluation_of_breakpoint_conditions ())
2337 return;
2338
2339 /* Do a first pass to check for locations with no assigned
2340 conditions or conditions that fail to parse to a valid agent expression
2341 bytecode. If any of these happen, then it's no use to send conditions
2342 to the target since this location will always trigger and generate a
2343 response back to GDB. */
2344 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2345 {
2346 loc = (*loc2p);
2347 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2348 {
2349 if (modified)
2350 {
2351 /* Re-parse the conditions since something changed. In that
2352 case we already freed the condition bytecodes (see
2353 force_breakpoint_reinsertion). We just
2354 need to parse the condition to bytecodes again. */
2355 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2356 loc->cond.get ());
2357 }
2358
2359 /* If we have a NULL bytecode expression, it means something
2360 went wrong or we have a null condition expression. */
2361 if (!loc->cond_bytecode)
2362 {
2363 null_condition_or_parse_error = 1;
2364 break;
2365 }
2366 }
2367 }
2368
2369 /* If any of these happened, it means we will have to evaluate the conditions
2370 for the location's address on gdb's side. It is no use keeping bytecodes
2371 for all the other duplicate locations, thus we free all of them here.
2372
2373 This is so we have a finer control over which locations' conditions are
2374 being evaluated by GDB or the remote stub. */
2375 if (null_condition_or_parse_error)
2376 {
2377 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2378 {
2379 loc = (*loc2p);
2380 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2381 {
2382 /* Only go as far as the first NULL bytecode is
2383 located. */
2384 if (!loc->cond_bytecode)
2385 return;
2386
2387 loc->cond_bytecode.reset ();
2388 }
2389 }
2390 }
2391
2392 /* No NULL conditions or failed bytecode generation. Build a condition list
2393 for this location's address. */
2394 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2395 {
2396 loc = (*loc2p);
2397 if (loc->cond
2398 && is_breakpoint (loc->owner)
2399 && loc->pspace->num == bl->pspace->num
2400 && loc->owner->enable_state == bp_enabled
2401 && loc->enabled)
2402 {
2403 /* Add the condition to the vector. This will be used later
2404 to send the conditions to the target. */
2405 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2406 }
2407 }
2408
2409 return;
2410}
2411
2412/* Parses a command described by string CMD into an agent expression
2413 bytecode suitable for evaluation by the bytecode interpreter.
2414 Return NULL if there was any error during parsing. */
2415
2416static agent_expr_up
2417parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2418{
2419 struct cleanup *old_cleanups = 0;
2420 struct expression **argvec;
2421 const char *cmdrest;
2422 const char *format_start, *format_end;
2423 struct format_piece *fpieces;
2424 int nargs;
2425 struct gdbarch *gdbarch = get_current_arch ();
2426
2427 if (cmd == NULL)
2428 return NULL;
2429
2430 cmdrest = cmd;
2431
2432 if (*cmdrest == ',')
2433 ++cmdrest;
2434 cmdrest = skip_spaces (cmdrest);
2435
2436 if (*cmdrest++ != '"')
2437 error (_("No format string following the location"));
2438
2439 format_start = cmdrest;
2440
2441 fpieces = parse_format_string (&cmdrest);
2442
2443 old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2444
2445 format_end = cmdrest;
2446
2447 if (*cmdrest++ != '"')
2448 error (_("Bad format string, non-terminated '\"'."));
2449
2450 cmdrest = skip_spaces (cmdrest);
2451
2452 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2453 error (_("Invalid argument syntax"));
2454
2455 if (*cmdrest == ',')
2456 cmdrest++;
2457 cmdrest = skip_spaces (cmdrest);
2458
2459 /* For each argument, make an expression. */
2460
2461 argvec = (struct expression **) alloca (strlen (cmd)
2462 * sizeof (struct expression *));
2463
2464 nargs = 0;
2465 while (*cmdrest != '\0')
2466 {
2467 const char *cmd1;
2468
2469 cmd1 = cmdrest;
2470 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2471 argvec[nargs++] = expr.release ();
2472 cmdrest = cmd1;
2473 if (*cmdrest == ',')
2474 ++cmdrest;
2475 }
2476
2477 agent_expr_up aexpr;
2478
2479 /* We don't want to stop processing, so catch any errors
2480 that may show up. */
2481 TRY
2482 {
2483 aexpr = gen_printf (scope, gdbarch, 0, 0,
2484 format_start, format_end - format_start,
2485 fpieces, nargs, argvec);
2486 }
2487 CATCH (ex, RETURN_MASK_ERROR)
2488 {
2489 /* If we got here, it means the command could not be parsed to a valid
2490 bytecode expression and thus can't be evaluated on the target's side.
2491 It's no use iterating through the other commands. */
2492 }
2493 END_CATCH
2494
2495 do_cleanups (old_cleanups);
2496
2497 /* We have a valid agent expression, return it. */
2498 return aexpr;
2499}
2500
2501/* Based on location BL, create a list of breakpoint commands to be
2502 passed on to the target. If we have duplicated locations with
2503 different commands, we will add any such to the list. */
2504
2505static void
2506build_target_command_list (struct bp_location *bl)
2507{
2508 struct bp_location **locp = NULL, **loc2p;
2509 int null_command_or_parse_error = 0;
2510 int modified = bl->needs_update;
2511 struct bp_location *loc;
2512
2513 /* Clear commands left over from a previous insert. */
2514 bl->target_info.tcommands.clear ();
2515
2516 if (!target_can_run_breakpoint_commands ())
2517 return;
2518
2519 /* For now, limit to agent-style dprintf breakpoints. */
2520 if (dprintf_style != dprintf_style_agent)
2521 return;
2522
2523 /* For now, if we have any duplicate location that isn't a dprintf,
2524 don't install the target-side commands, as that would make the
2525 breakpoint not be reported to the core, and we'd lose
2526 control. */
2527 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2528 {
2529 loc = (*loc2p);
2530 if (is_breakpoint (loc->owner)
2531 && loc->pspace->num == bl->pspace->num
2532 && loc->owner->type != bp_dprintf)
2533 return;
2534 }
2535
2536 /* Do a first pass to check for locations with no assigned
2537 conditions or conditions that fail to parse to a valid agent expression
2538 bytecode. If any of these happen, then it's no use to send conditions
2539 to the target since this location will always trigger and generate a
2540 response back to GDB. */
2541 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2542 {
2543 loc = (*loc2p);
2544 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2545 {
2546 if (modified)
2547 {
2548 /* Re-parse the commands since something changed. In that
2549 case we already freed the command bytecodes (see
2550 force_breakpoint_reinsertion). We just
2551 need to parse the command to bytecodes again. */
2552 loc->cmd_bytecode
2553 = parse_cmd_to_aexpr (bl->address,
2554 loc->owner->extra_string);
2555 }
2556
2557 /* If we have a NULL bytecode expression, it means something
2558 went wrong or we have a null command expression. */
2559 if (!loc->cmd_bytecode)
2560 {
2561 null_command_or_parse_error = 1;
2562 break;
2563 }
2564 }
2565 }
2566
2567 /* If anything failed, then we're not doing target-side commands,
2568 and so clean up. */
2569 if (null_command_or_parse_error)
2570 {
2571 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2572 {
2573 loc = (*loc2p);
2574 if (is_breakpoint (loc->owner)
2575 && loc->pspace->num == bl->pspace->num)
2576 {
2577 /* Only go as far as the first NULL bytecode is
2578 located. */
2579 if (loc->cmd_bytecode == NULL)
2580 return;
2581
2582 loc->cmd_bytecode.reset ();
2583 }
2584 }
2585 }
2586
2587 /* No NULL commands or failed bytecode generation. Build a command list
2588 for this location's address. */
2589 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2590 {
2591 loc = (*loc2p);
2592 if (loc->owner->extra_string
2593 && is_breakpoint (loc->owner)
2594 && loc->pspace->num == bl->pspace->num
2595 && loc->owner->enable_state == bp_enabled
2596 && loc->enabled)
2597 {
2598 /* Add the command to the vector. This will be used later
2599 to send the commands to the target. */
2600 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2601 }
2602 }
2603
2604 bl->target_info.persist = 0;
2605 /* Maybe flag this location as persistent. */
2606 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2607 bl->target_info.persist = 1;
2608}
2609
2610/* Return the kind of breakpoint on address *ADDR. Get the kind
2611 of breakpoint according to ADDR except single-step breakpoint.
2612 Get the kind of single-step breakpoint according to the current
2613 registers state. */
2614
2615static int
2616breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2617{
2618 if (bl->owner->type == bp_single_step)
2619 {
2620 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2621 struct regcache *regcache;
2622
2623 regcache = get_thread_regcache (thr->ptid);
2624
2625 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2626 regcache, addr);
2627 }
2628 else
2629 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2630}
2631
2632/* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2633 location. Any error messages are printed to TMP_ERROR_STREAM; and
2634 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2635 Returns 0 for success, 1 if the bp_location type is not supported or
2636 -1 for failure.
2637
2638 NOTE drow/2003-09-09: This routine could be broken down to an
2639 object-style method for each breakpoint or catchpoint type. */
2640static int
2641insert_bp_location (struct bp_location *bl,
2642 struct ui_file *tmp_error_stream,
2643 int *disabled_breaks,
2644 int *hw_breakpoint_error,
2645 int *hw_bp_error_explained_already)
2646{
2647 enum errors bp_err = GDB_NO_ERROR;
2648 const char *bp_err_message = NULL;
2649
2650 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2651 return 0;
2652
2653 /* Note we don't initialize bl->target_info, as that wipes out
2654 the breakpoint location's shadow_contents if the breakpoint
2655 is still inserted at that location. This in turn breaks
2656 target_read_memory which depends on these buffers when
2657 a memory read is requested at the breakpoint location:
2658 Once the target_info has been wiped, we fail to see that
2659 we have a breakpoint inserted at that address and thus
2660 read the breakpoint instead of returning the data saved in
2661 the breakpoint location's shadow contents. */
2662 bl->target_info.reqstd_address = bl->address;
2663 bl->target_info.placed_address_space = bl->pspace->aspace;
2664 bl->target_info.length = bl->length;
2665
2666 /* When working with target-side conditions, we must pass all the conditions
2667 for the same breakpoint address down to the target since GDB will not
2668 insert those locations. With a list of breakpoint conditions, the target
2669 can decide when to stop and notify GDB. */
2670
2671 if (is_breakpoint (bl->owner))
2672 {
2673 build_target_condition_list (bl);
2674 build_target_command_list (bl);
2675 /* Reset the modification marker. */
2676 bl->needs_update = 0;
2677 }
2678
2679 if (bl->loc_type == bp_loc_software_breakpoint
2680 || bl->loc_type == bp_loc_hardware_breakpoint)
2681 {
2682 if (bl->owner->type != bp_hardware_breakpoint)
2683 {
2684 /* If the explicitly specified breakpoint type
2685 is not hardware breakpoint, check the memory map to see
2686 if the breakpoint address is in read only memory or not.
2687
2688 Two important cases are:
2689 - location type is not hardware breakpoint, memory
2690 is readonly. We change the type of the location to
2691 hardware breakpoint.
2692 - location type is hardware breakpoint, memory is
2693 read-write. This means we've previously made the
2694 location hardware one, but then the memory map changed,
2695 so we undo.
2696
2697 When breakpoints are removed, remove_breakpoints will use
2698 location types we've just set here, the only possible
2699 problem is that memory map has changed during running
2700 program, but it's not going to work anyway with current
2701 gdb. */
2702 struct mem_region *mr
2703 = lookup_mem_region (bl->target_info.reqstd_address);
2704
2705 if (mr)
2706 {
2707 if (automatic_hardware_breakpoints)
2708 {
2709 enum bp_loc_type new_type;
2710
2711 if (mr->attrib.mode != MEM_RW)
2712 new_type = bp_loc_hardware_breakpoint;
2713 else
2714 new_type = bp_loc_software_breakpoint;
2715
2716 if (new_type != bl->loc_type)
2717 {
2718 static int said = 0;
2719
2720 bl->loc_type = new_type;
2721 if (!said)
2722 {
2723 fprintf_filtered (gdb_stdout,
2724 _("Note: automatically using "
2725 "hardware breakpoints for "
2726 "read-only addresses.\n"));
2727 said = 1;
2728 }
2729 }
2730 }
2731 else if (bl->loc_type == bp_loc_software_breakpoint
2732 && mr->attrib.mode != MEM_RW)
2733 {
2734 fprintf_unfiltered (tmp_error_stream,
2735 _("Cannot insert breakpoint %d.\n"
2736 "Cannot set software breakpoint "
2737 "at read-only address %s\n"),
2738 bl->owner->number,
2739 paddress (bl->gdbarch, bl->address));
2740 return 1;
2741 }
2742 }
2743 }
2744
2745 /* First check to see if we have to handle an overlay. */
2746 if (overlay_debugging == ovly_off
2747 || bl->section == NULL
2748 || !(section_is_overlay (bl->section)))
2749 {
2750 /* No overlay handling: just set the breakpoint. */
2751 TRY
2752 {
2753 int val;
2754
2755 val = bl->owner->ops->insert_location (bl);
2756 if (val)
2757 bp_err = GENERIC_ERROR;
2758 }
2759 CATCH (e, RETURN_MASK_ALL)
2760 {
2761 bp_err = e.error;
2762 bp_err_message = e.message;
2763 }
2764 END_CATCH
2765 }
2766 else
2767 {
2768 /* This breakpoint is in an overlay section.
2769 Shall we set a breakpoint at the LMA? */
2770 if (!overlay_events_enabled)
2771 {
2772 /* Yes -- overlay event support is not active,
2773 so we must try to set a breakpoint at the LMA.
2774 This will not work for a hardware breakpoint. */
2775 if (bl->loc_type == bp_loc_hardware_breakpoint)
2776 warning (_("hardware breakpoint %d not supported in overlay!"),
2777 bl->owner->number);
2778 else
2779 {
2780 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2781 bl->section);
2782 /* Set a software (trap) breakpoint at the LMA. */
2783 bl->overlay_target_info = bl->target_info;
2784 bl->overlay_target_info.reqstd_address = addr;
2785
2786 /* No overlay handling: just set the breakpoint. */
2787 TRY
2788 {
2789 int val;
2790
2791 bl->overlay_target_info.kind
2792 = breakpoint_kind (bl, &addr);
2793 bl->overlay_target_info.placed_address = addr;
2794 val = target_insert_breakpoint (bl->gdbarch,
2795 &bl->overlay_target_info);
2796 if (val)
2797 bp_err = GENERIC_ERROR;
2798 }
2799 CATCH (e, RETURN_MASK_ALL)
2800 {
2801 bp_err = e.error;
2802 bp_err_message = e.message;
2803 }
2804 END_CATCH
2805
2806 if (bp_err != GDB_NO_ERROR)
2807 fprintf_unfiltered (tmp_error_stream,
2808 "Overlay breakpoint %d "
2809 "failed: in ROM?\n",
2810 bl->owner->number);
2811 }
2812 }
2813 /* Shall we set a breakpoint at the VMA? */
2814 if (section_is_mapped (bl->section))
2815 {
2816 /* Yes. This overlay section is mapped into memory. */
2817 TRY
2818 {
2819 int val;
2820
2821 val = bl->owner->ops->insert_location (bl);
2822 if (val)
2823 bp_err = GENERIC_ERROR;
2824 }
2825 CATCH (e, RETURN_MASK_ALL)
2826 {
2827 bp_err = e.error;
2828 bp_err_message = e.message;
2829 }
2830 END_CATCH
2831 }
2832 else
2833 {
2834 /* No. This breakpoint will not be inserted.
2835 No error, but do not mark the bp as 'inserted'. */
2836 return 0;
2837 }
2838 }
2839
2840 if (bp_err != GDB_NO_ERROR)
2841 {
2842 /* Can't set the breakpoint. */
2843
2844 /* In some cases, we might not be able to insert a
2845 breakpoint in a shared library that has already been
2846 removed, but we have not yet processed the shlib unload
2847 event. Unfortunately, some targets that implement
2848 breakpoint insertion themselves can't tell why the
2849 breakpoint insertion failed (e.g., the remote target
2850 doesn't define error codes), so we must treat generic
2851 errors as memory errors. */
2852 if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
2853 && bl->loc_type == bp_loc_software_breakpoint
2854 && (solib_name_from_address (bl->pspace, bl->address)
2855 || shared_objfile_contains_address_p (bl->pspace,
2856 bl->address)))
2857 {
2858 /* See also: disable_breakpoints_in_shlibs. */
2859 bl->shlib_disabled = 1;
2860 observer_notify_breakpoint_modified (bl->owner);
2861 if (!*disabled_breaks)
2862 {
2863 fprintf_unfiltered (tmp_error_stream,
2864 "Cannot insert breakpoint %d.\n",
2865 bl->owner->number);
2866 fprintf_unfiltered (tmp_error_stream,
2867 "Temporarily disabling shared "
2868 "library breakpoints:\n");
2869 }
2870 *disabled_breaks = 1;
2871 fprintf_unfiltered (tmp_error_stream,
2872 "breakpoint #%d\n", bl->owner->number);
2873 return 0;
2874 }
2875 else
2876 {
2877 if (bl->loc_type == bp_loc_hardware_breakpoint)
2878 {
2879 *hw_breakpoint_error = 1;
2880 *hw_bp_error_explained_already = bp_err_message != NULL;
2881 fprintf_unfiltered (tmp_error_stream,
2882 "Cannot insert hardware breakpoint %d%s",
2883 bl->owner->number, bp_err_message ? ":" : ".\n");
2884 if (bp_err_message != NULL)
2885 fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
2886 }
2887 else
2888 {
2889 if (bp_err_message == NULL)
2890 {
2891 std::string message
2892 = memory_error_message (TARGET_XFER_E_IO,
2893 bl->gdbarch, bl->address);
2894
2895 fprintf_unfiltered (tmp_error_stream,
2896 "Cannot insert breakpoint %d.\n"
2897 "%s\n",
2898 bl->owner->number, message.c_str ());
2899 }
2900 else
2901 {
2902 fprintf_unfiltered (tmp_error_stream,
2903 "Cannot insert breakpoint %d: %s\n",
2904 bl->owner->number,
2905 bp_err_message);
2906 }
2907 }
2908 return 1;
2909
2910 }
2911 }
2912 else
2913 bl->inserted = 1;
2914
2915 return 0;
2916 }
2917
2918 else if (bl->loc_type == bp_loc_hardware_watchpoint
2919 /* NOTE drow/2003-09-08: This state only exists for removing
2920 watchpoints. It's not clear that it's necessary... */
2921 && bl->owner->disposition != disp_del_at_next_stop)
2922 {
2923 int val;
2924
2925 gdb_assert (bl->owner->ops != NULL
2926 && bl->owner->ops->insert_location != NULL);
2927
2928 val = bl->owner->ops->insert_location (bl);
2929
2930 /* If trying to set a read-watchpoint, and it turns out it's not
2931 supported, try emulating one with an access watchpoint. */
2932 if (val == 1 && bl->watchpoint_type == hw_read)
2933 {
2934 struct bp_location *loc, **loc_temp;
2935
2936 /* But don't try to insert it, if there's already another
2937 hw_access location that would be considered a duplicate
2938 of this one. */
2939 ALL_BP_LOCATIONS (loc, loc_temp)
2940 if (loc != bl
2941 && loc->watchpoint_type == hw_access
2942 && watchpoint_locations_match (bl, loc))
2943 {
2944 bl->duplicate = 1;
2945 bl->inserted = 1;
2946 bl->target_info = loc->target_info;
2947 bl->watchpoint_type = hw_access;
2948 val = 0;
2949 break;
2950 }
2951
2952 if (val == 1)
2953 {
2954 bl->watchpoint_type = hw_access;
2955 val = bl->owner->ops->insert_location (bl);
2956
2957 if (val)
2958 /* Back to the original value. */
2959 bl->watchpoint_type = hw_read;
2960 }
2961 }
2962
2963 bl->inserted = (val == 0);
2964 }
2965
2966 else if (bl->owner->type == bp_catchpoint)
2967 {
2968 int val;
2969
2970 gdb_assert (bl->owner->ops != NULL
2971 && bl->owner->ops->insert_location != NULL);
2972
2973 val = bl->owner->ops->insert_location (bl);
2974 if (val)
2975 {
2976 bl->owner->enable_state = bp_disabled;
2977
2978 if (val == 1)
2979 warning (_("\
2980Error inserting catchpoint %d: Your system does not support this type\n\
2981of catchpoint."), bl->owner->number);
2982 else
2983 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2984 }
2985
2986 bl->inserted = (val == 0);
2987
2988 /* We've already printed an error message if there was a problem
2989 inserting this catchpoint, and we've disabled the catchpoint,
2990 so just return success. */
2991 return 0;
2992 }
2993
2994 return 0;
2995}
2996
2997/* This function is called when program space PSPACE is about to be
2998 deleted. It takes care of updating breakpoints to not reference
2999 PSPACE anymore. */
3000
3001void
3002breakpoint_program_space_exit (struct program_space *pspace)
3003{
3004 struct breakpoint *b, *b_temp;
3005 struct bp_location *loc, **loc_temp;
3006
3007 /* Remove any breakpoint that was set through this program space. */
3008 ALL_BREAKPOINTS_SAFE (b, b_temp)
3009 {
3010 if (b->pspace == pspace)
3011 delete_breakpoint (b);
3012 }
3013
3014 /* Breakpoints set through other program spaces could have locations
3015 bound to PSPACE as well. Remove those. */
3016 ALL_BP_LOCATIONS (loc, loc_temp)
3017 {
3018 struct bp_location *tmp;
3019
3020 if (loc->pspace == pspace)
3021 {
3022 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
3023 if (loc->owner->loc == loc)
3024 loc->owner->loc = loc->next;
3025 else
3026 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
3027 if (tmp->next == loc)
3028 {
3029 tmp->next = loc->next;
3030 break;
3031 }
3032 }
3033 }
3034
3035 /* Now update the global location list to permanently delete the
3036 removed locations above. */
3037 update_global_location_list (UGLL_DONT_INSERT);
3038}
3039
3040/* Make sure all breakpoints are inserted in inferior.
3041 Throws exception on any error.
3042 A breakpoint that is already inserted won't be inserted
3043 again, so calling this function twice is safe. */
3044void
3045insert_breakpoints (void)
3046{
3047 struct breakpoint *bpt;
3048
3049 ALL_BREAKPOINTS (bpt)
3050 if (is_hardware_watchpoint (bpt))
3051 {
3052 struct watchpoint *w = (struct watchpoint *) bpt;
3053
3054 update_watchpoint (w, 0 /* don't reparse. */);
3055 }
3056
3057 /* Updating watchpoints creates new locations, so update the global
3058 location list. Explicitly tell ugll to insert locations and
3059 ignore breakpoints_always_inserted_mode. */
3060 update_global_location_list (UGLL_INSERT);
3061}
3062
3063/* Invoke CALLBACK for each of bp_location. */
3064
3065void
3066iterate_over_bp_locations (walk_bp_location_callback callback)
3067{
3068 struct bp_location *loc, **loc_tmp;
3069
3070 ALL_BP_LOCATIONS (loc, loc_tmp)
3071 {
3072 callback (loc, NULL);
3073 }
3074}
3075
3076/* This is used when we need to synch breakpoint conditions between GDB and the
3077 target. It is the case with deleting and disabling of breakpoints when using
3078 always-inserted mode. */
3079
3080static void
3081update_inserted_breakpoint_locations (void)
3082{
3083 struct bp_location *bl, **blp_tmp;
3084 int error_flag = 0;
3085 int val = 0;
3086 int disabled_breaks = 0;
3087 int hw_breakpoint_error = 0;
3088 int hw_bp_details_reported = 0;
3089
3090 string_file tmp_error_stream;
3091
3092 /* Explicitly mark the warning -- this will only be printed if
3093 there was an error. */
3094 tmp_error_stream.puts ("Warning:\n");
3095
3096 scoped_restore_current_pspace_and_thread restore_pspace_thread;
3097
3098 ALL_BP_LOCATIONS (bl, blp_tmp)
3099 {
3100 /* We only want to update software breakpoints and hardware
3101 breakpoints. */
3102 if (!is_breakpoint (bl->owner))
3103 continue;
3104
3105 /* We only want to update locations that are already inserted
3106 and need updating. This is to avoid unwanted insertion during
3107 deletion of breakpoints. */
3108 if (!bl->inserted || (bl->inserted && !bl->needs_update))
3109 continue;
3110
3111 switch_to_program_space_and_thread (bl->pspace);
3112
3113 /* For targets that support global breakpoints, there's no need
3114 to select an inferior to insert breakpoint to. In fact, even
3115 if we aren't attached to any process yet, we should still
3116 insert breakpoints. */
3117 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3118 && ptid_equal (inferior_ptid, null_ptid))
3119 continue;
3120
3121 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3122 &hw_breakpoint_error, &hw_bp_details_reported);
3123 if (val)
3124 error_flag = val;
3125 }
3126
3127 if (error_flag)
3128 {
3129 target_terminal_ours_for_output ();
3130 error_stream (tmp_error_stream);
3131 }
3132}
3133
3134/* Used when starting or continuing the program. */
3135
3136static void
3137insert_breakpoint_locations (void)
3138{
3139 struct breakpoint *bpt;
3140 struct bp_location *bl, **blp_tmp;
3141 int error_flag = 0;
3142 int val = 0;
3143 int disabled_breaks = 0;
3144 int hw_breakpoint_error = 0;
3145 int hw_bp_error_explained_already = 0;
3146
3147 string_file tmp_error_stream;
3148
3149 /* Explicitly mark the warning -- this will only be printed if
3150 there was an error. */
3151 tmp_error_stream.puts ("Warning:\n");
3152
3153 scoped_restore_current_pspace_and_thread restore_pspace_thread;
3154
3155 ALL_BP_LOCATIONS (bl, blp_tmp)
3156 {
3157 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
3158 continue;
3159
3160 /* There is no point inserting thread-specific breakpoints if
3161 the thread no longer exists. ALL_BP_LOCATIONS bp_location
3162 has BL->OWNER always non-NULL. */
3163 if (bl->owner->thread != -1
3164 && !valid_global_thread_id (bl->owner->thread))
3165 continue;
3166
3167 switch_to_program_space_and_thread (bl->pspace);
3168
3169 /* For targets that support global breakpoints, there's no need
3170 to select an inferior to insert breakpoint to. In fact, even
3171 if we aren't attached to any process yet, we should still
3172 insert breakpoints. */
3173 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3174 && ptid_equal (inferior_ptid, null_ptid))
3175 continue;
3176
3177 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3178 &hw_breakpoint_error, &hw_bp_error_explained_already);
3179 if (val)
3180 error_flag = val;
3181 }
3182
3183 /* If we failed to insert all locations of a watchpoint, remove
3184 them, as half-inserted watchpoint is of limited use. */
3185 ALL_BREAKPOINTS (bpt)
3186 {
3187 int some_failed = 0;
3188 struct bp_location *loc;
3189
3190 if (!is_hardware_watchpoint (bpt))
3191 continue;
3192
3193 if (!breakpoint_enabled (bpt))
3194 continue;
3195
3196 if (bpt->disposition == disp_del_at_next_stop)
3197 continue;
3198
3199 for (loc = bpt->loc; loc; loc = loc->next)
3200 if (!loc->inserted && should_be_inserted (loc))
3201 {
3202 some_failed = 1;
3203 break;
3204 }
3205 if (some_failed)
3206 {
3207 for (loc = bpt->loc; loc; loc = loc->next)
3208 if (loc->inserted)
3209 remove_breakpoint (loc);
3210
3211 hw_breakpoint_error = 1;
3212 tmp_error_stream.printf ("Could not insert "
3213 "hardware watchpoint %d.\n",
3214 bpt->number);
3215 error_flag = -1;
3216 }
3217 }
3218
3219 if (error_flag)
3220 {
3221 /* If a hardware breakpoint or watchpoint was inserted, add a
3222 message about possibly exhausted resources. */
3223 if (hw_breakpoint_error && !hw_bp_error_explained_already)
3224 {
3225 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3226You may have requested too many hardware breakpoints/watchpoints.\n");
3227 }
3228 target_terminal_ours_for_output ();
3229 error_stream (tmp_error_stream);
3230 }
3231}
3232
3233/* Used when the program stops.
3234 Returns zero if successful, or non-zero if there was a problem
3235 removing a breakpoint location. */
3236
3237int
3238remove_breakpoints (void)
3239{
3240 struct bp_location *bl, **blp_tmp;
3241 int val = 0;
3242
3243 ALL_BP_LOCATIONS (bl, blp_tmp)
3244 {
3245 if (bl->inserted && !is_tracepoint (bl->owner))
3246 val |= remove_breakpoint (bl);
3247 }
3248 return val;
3249}
3250
3251/* When a thread exits, remove breakpoints that are related to
3252 that thread. */
3253
3254static void
3255remove_threaded_breakpoints (struct thread_info *tp, int silent)
3256{
3257 struct breakpoint *b, *b_tmp;
3258
3259 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3260 {
3261 if (b->thread == tp->global_num && user_breakpoint_p (b))
3262 {
3263 b->disposition = disp_del_at_next_stop;
3264
3265 printf_filtered (_("\
3266Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3267 b->number, print_thread_id (tp));
3268
3269 /* Hide it from the user. */
3270 b->number = 0;
3271 }
3272 }
3273}
3274
3275/* Remove breakpoints of process PID. */
3276
3277int
3278remove_breakpoints_pid (int pid)
3279{
3280 struct bp_location *bl, **blp_tmp;
3281 int val;
3282 struct inferior *inf = find_inferior_pid (pid);
3283
3284 ALL_BP_LOCATIONS (bl, blp_tmp)
3285 {
3286 if (bl->pspace != inf->pspace)
3287 continue;
3288
3289 if (bl->inserted && !bl->target_info.persist)
3290 {
3291 val = remove_breakpoint (bl);
3292 if (val != 0)
3293 return val;
3294 }
3295 }
3296 return 0;
3297}
3298
3299int
3300reattach_breakpoints (int pid)
3301{
3302 struct bp_location *bl, **blp_tmp;
3303 int val;
3304 int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3305 struct inferior *inf;
3306 struct thread_info *tp;
3307
3308 tp = any_live_thread_of_process (pid);
3309 if (tp == NULL)
3310 return 1;
3311
3312 inf = find_inferior_pid (pid);
3313
3314 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3315 inferior_ptid = tp->ptid;
3316
3317 string_file tmp_error_stream;
3318
3319 ALL_BP_LOCATIONS (bl, blp_tmp)
3320 {
3321 if (bl->pspace != inf->pspace)
3322 continue;
3323
3324 if (bl->inserted)
3325 {
3326 bl->inserted = 0;
3327 val = insert_bp_location (bl, &tmp_error_stream, &dummy1, &dummy2, &dummy3);
3328 if (val != 0)
3329 return val;
3330 }
3331 }
3332 return 0;
3333}
3334
3335static int internal_breakpoint_number = -1;
3336
3337/* Set the breakpoint number of B, depending on the value of INTERNAL.
3338 If INTERNAL is non-zero, the breakpoint number will be populated
3339 from internal_breakpoint_number and that variable decremented.
3340 Otherwise the breakpoint number will be populated from
3341 breakpoint_count and that value incremented. Internal breakpoints
3342 do not set the internal var bpnum. */
3343static void
3344set_breakpoint_number (int internal, struct breakpoint *b)
3345{
3346 if (internal)
3347 b->number = internal_breakpoint_number--;
3348 else
3349 {
3350 set_breakpoint_count (breakpoint_count + 1);
3351 b->number = breakpoint_count;
3352 }
3353}
3354
3355static struct breakpoint *
3356create_internal_breakpoint (struct gdbarch *gdbarch,
3357 CORE_ADDR address, enum bptype type,
3358 const struct breakpoint_ops *ops)
3359{
3360 symtab_and_line sal;
3361 sal.pc = address;
3362 sal.section = find_pc_overlay (sal.pc);
3363 sal.pspace = current_program_space;
3364
3365 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3366 b->number = internal_breakpoint_number--;
3367 b->disposition = disp_donttouch;
3368
3369 return b;
3370}
3371
3372static const char *const longjmp_names[] =
3373 {
3374 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3375 };
3376#define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3377
3378/* Per-objfile data private to breakpoint.c. */
3379struct breakpoint_objfile_data
3380{
3381 /* Minimal symbol for "_ovly_debug_event" (if any). */
3382 struct bound_minimal_symbol overlay_msym;
3383
3384 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
3385 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3386
3387 /* True if we have looked for longjmp probes. */
3388 int longjmp_searched;
3389
3390 /* SystemTap probe points for longjmp (if any). */
3391 VEC (probe_p) *longjmp_probes;
3392
3393 /* Minimal symbol for "std::terminate()" (if any). */
3394 struct bound_minimal_symbol terminate_msym;
3395
3396 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
3397 struct bound_minimal_symbol exception_msym;
3398
3399 /* True if we have looked for exception probes. */
3400 int exception_searched;
3401
3402 /* SystemTap probe points for unwinding (if any). */
3403 VEC (probe_p) *exception_probes;
3404};
3405
3406static const struct objfile_data *breakpoint_objfile_key;
3407
3408/* Minimal symbol not found sentinel. */
3409static struct minimal_symbol msym_not_found;
3410
3411/* Returns TRUE if MSYM point to the "not found" sentinel. */
3412
3413static int
3414msym_not_found_p (const struct minimal_symbol *msym)
3415{
3416 return msym == &msym_not_found;
3417}
3418
3419/* Return per-objfile data needed by breakpoint.c.
3420 Allocate the data if necessary. */
3421
3422static struct breakpoint_objfile_data *
3423get_breakpoint_objfile_data (struct objfile *objfile)
3424{
3425 struct breakpoint_objfile_data *bp_objfile_data;
3426
3427 bp_objfile_data = ((struct breakpoint_objfile_data *)
3428 objfile_data (objfile, breakpoint_objfile_key));
3429 if (bp_objfile_data == NULL)
3430 {
3431 bp_objfile_data =
3432 XOBNEW (&objfile->objfile_obstack, struct breakpoint_objfile_data);
3433
3434 memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3435 set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3436 }
3437 return bp_objfile_data;
3438}
3439
3440static void
3441free_breakpoint_probes (struct objfile *obj, void *data)
3442{
3443 struct breakpoint_objfile_data *bp_objfile_data
3444 = (struct breakpoint_objfile_data *) data;
3445
3446 VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3447 VEC_free (probe_p, bp_objfile_data->exception_probes);
3448}
3449
3450static void
3451create_overlay_event_breakpoint (void)
3452{
3453 struct objfile *objfile;
3454 const char *const func_name = "_ovly_debug_event";
3455
3456 ALL_OBJFILES (objfile)
3457 {
3458 struct breakpoint *b;
3459 struct breakpoint_objfile_data *bp_objfile_data;
3460 CORE_ADDR addr;
3461 struct explicit_location explicit_loc;
3462
3463 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3464
3465 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3466 continue;
3467
3468 if (bp_objfile_data->overlay_msym.minsym == NULL)
3469 {
3470 struct bound_minimal_symbol m;
3471
3472 m = lookup_minimal_symbol_text (func_name, objfile);
3473 if (m.minsym == NULL)
3474 {
3475 /* Avoid future lookups in this objfile. */
3476 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3477 continue;
3478 }
3479 bp_objfile_data->overlay_msym = m;
3480 }
3481
3482 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3483 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3484 bp_overlay_event,
3485 &internal_breakpoint_ops);
3486 initialize_explicit_location (&explicit_loc);
3487 explicit_loc.function_name = ASTRDUP (func_name);
3488 b->location = new_explicit_location (&explicit_loc);
3489
3490 if (overlay_debugging == ovly_auto)
3491 {
3492 b->enable_state = bp_enabled;
3493 overlay_events_enabled = 1;
3494 }
3495 else
3496 {
3497 b->enable_state = bp_disabled;
3498 overlay_events_enabled = 0;
3499 }
3500 }
3501}
3502
3503static void
3504create_longjmp_master_breakpoint (void)
3505{
3506 struct program_space *pspace;
3507
3508 scoped_restore_current_program_space restore_pspace;
3509
3510 ALL_PSPACES (pspace)
3511 {
3512 struct objfile *objfile;
3513
3514 set_current_program_space (pspace);
3515
3516 ALL_OBJFILES (objfile)
3517 {
3518 int i;
3519 struct gdbarch *gdbarch;
3520 struct breakpoint_objfile_data *bp_objfile_data;
3521
3522 gdbarch = get_objfile_arch (objfile);
3523
3524 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3525
3526 if (!bp_objfile_data->longjmp_searched)
3527 {
3528 VEC (probe_p) *ret;
3529
3530 ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3531 if (ret != NULL)
3532 {
3533 /* We are only interested in checking one element. */
3534 struct probe *p = VEC_index (probe_p, ret, 0);
3535
3536 if (!can_evaluate_probe_arguments (p))
3537 {
3538 /* We cannot use the probe interface here, because it does
3539 not know how to evaluate arguments. */
3540 VEC_free (probe_p, ret);
3541 ret = NULL;
3542 }
3543 }
3544 bp_objfile_data->longjmp_probes = ret;
3545 bp_objfile_data->longjmp_searched = 1;
3546 }
3547
3548 if (bp_objfile_data->longjmp_probes != NULL)
3549 {
3550 int i;
3551 struct probe *probe;
3552 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3553
3554 for (i = 0;
3555 VEC_iterate (probe_p,
3556 bp_objfile_data->longjmp_probes,
3557 i, probe);
3558 ++i)
3559 {
3560 struct breakpoint *b;
3561
3562 b = create_internal_breakpoint (gdbarch,
3563 get_probe_address (probe,
3564 objfile),
3565 bp_longjmp_master,
3566 &internal_breakpoint_ops);
3567 b->location = new_probe_location ("-probe-stap libc:longjmp");
3568 b->enable_state = bp_disabled;
3569 }
3570
3571 continue;
3572 }
3573
3574 if (!gdbarch_get_longjmp_target_p (gdbarch))
3575 continue;
3576
3577 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3578 {
3579 struct breakpoint *b;
3580 const char *func_name;
3581 CORE_ADDR addr;
3582 struct explicit_location explicit_loc;
3583
3584 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3585 continue;
3586
3587 func_name = longjmp_names[i];
3588 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3589 {
3590 struct bound_minimal_symbol m;
3591
3592 m = lookup_minimal_symbol_text (func_name, objfile);
3593 if (m.minsym == NULL)
3594 {
3595 /* Prevent future lookups in this objfile. */
3596 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3597 continue;
3598 }
3599 bp_objfile_data->longjmp_msym[i] = m;
3600 }
3601
3602 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3603 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3604 &internal_breakpoint_ops);
3605 initialize_explicit_location (&explicit_loc);
3606 explicit_loc.function_name = ASTRDUP (func_name);
3607 b->location = new_explicit_location (&explicit_loc);
3608 b->enable_state = bp_disabled;
3609 }
3610 }
3611 }
3612}
3613
3614/* Create a master std::terminate breakpoint. */
3615static void
3616create_std_terminate_master_breakpoint (void)
3617{
3618 struct program_space *pspace;
3619 const char *const func_name = "std::terminate()";
3620
3621 scoped_restore_current_program_space restore_pspace;
3622
3623 ALL_PSPACES (pspace)
3624 {
3625 struct objfile *objfile;
3626 CORE_ADDR addr;
3627
3628 set_current_program_space (pspace);
3629
3630 ALL_OBJFILES (objfile)
3631 {
3632 struct breakpoint *b;
3633 struct breakpoint_objfile_data *bp_objfile_data;
3634 struct explicit_location explicit_loc;
3635
3636 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3637
3638 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3639 continue;
3640
3641 if (bp_objfile_data->terminate_msym.minsym == NULL)
3642 {
3643 struct bound_minimal_symbol m;
3644
3645 m = lookup_minimal_symbol (func_name, NULL, objfile);
3646 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3647 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3648 {
3649 /* Prevent future lookups in this objfile. */
3650 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3651 continue;
3652 }
3653 bp_objfile_data->terminate_msym = m;
3654 }
3655
3656 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3657 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3658 bp_std_terminate_master,
3659 &internal_breakpoint_ops);
3660 initialize_explicit_location (&explicit_loc);
3661 explicit_loc.function_name = ASTRDUP (func_name);
3662 b->location = new_explicit_location (&explicit_loc);
3663 b->enable_state = bp_disabled;
3664 }
3665 }
3666}
3667
3668/* Install a master breakpoint on the unwinder's debug hook. */
3669
3670static void
3671create_exception_master_breakpoint (void)
3672{
3673 struct objfile *objfile;
3674 const char *const func_name = "_Unwind_DebugHook";
3675
3676 ALL_OBJFILES (objfile)
3677 {
3678 struct breakpoint *b;
3679 struct gdbarch *gdbarch;
3680 struct breakpoint_objfile_data *bp_objfile_data;
3681 CORE_ADDR addr;
3682 struct explicit_location explicit_loc;
3683
3684 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3685
3686 /* We prefer the SystemTap probe point if it exists. */
3687 if (!bp_objfile_data->exception_searched)
3688 {
3689 VEC (probe_p) *ret;
3690
3691 ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3692
3693 if (ret != NULL)
3694 {
3695 /* We are only interested in checking one element. */
3696 struct probe *p = VEC_index (probe_p, ret, 0);
3697
3698 if (!can_evaluate_probe_arguments (p))
3699 {
3700 /* We cannot use the probe interface here, because it does
3701 not know how to evaluate arguments. */
3702 VEC_free (probe_p, ret);
3703 ret = NULL;
3704 }
3705 }
3706 bp_objfile_data->exception_probes = ret;
3707 bp_objfile_data->exception_searched = 1;
3708 }
3709
3710 if (bp_objfile_data->exception_probes != NULL)
3711 {
3712 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3713 int i;
3714 struct probe *probe;
3715
3716 for (i = 0;
3717 VEC_iterate (probe_p,
3718 bp_objfile_data->exception_probes,
3719 i, probe);
3720 ++i)
3721 {
3722 struct breakpoint *b;
3723
3724 b = create_internal_breakpoint (gdbarch,
3725 get_probe_address (probe,
3726 objfile),
3727 bp_exception_master,
3728 &internal_breakpoint_ops);
3729 b->location = new_probe_location ("-probe-stap libgcc:unwind");
3730 b->enable_state = bp_disabled;
3731 }
3732
3733 continue;
3734 }
3735
3736 /* Otherwise, try the hook function. */
3737
3738 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3739 continue;
3740
3741 gdbarch = get_objfile_arch (objfile);
3742
3743 if (bp_objfile_data->exception_msym.minsym == NULL)
3744 {
3745 struct bound_minimal_symbol debug_hook;
3746
3747 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3748 if (debug_hook.minsym == NULL)
3749 {
3750 bp_objfile_data->exception_msym.minsym = &msym_not_found;
3751 continue;
3752 }
3753
3754 bp_objfile_data->exception_msym = debug_hook;
3755 }
3756
3757 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3758 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3759 &current_target);
3760 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3761 &internal_breakpoint_ops);
3762 initialize_explicit_location (&explicit_loc);
3763 explicit_loc.function_name = ASTRDUP (func_name);
3764 b->location = new_explicit_location (&explicit_loc);
3765 b->enable_state = bp_disabled;
3766 }
3767}
3768
3769/* Does B have a location spec? */
3770
3771static int
3772breakpoint_event_location_empty_p (const struct breakpoint *b)
3773{
3774 return b->location != NULL && event_location_empty_p (b->location.get ());
3775}
3776
3777void
3778update_breakpoints_after_exec (void)
3779{
3780 struct breakpoint *b, *b_tmp;
3781 struct bp_location *bploc, **bplocp_tmp;
3782
3783 /* We're about to delete breakpoints from GDB's lists. If the
3784 INSERTED flag is true, GDB will try to lift the breakpoints by
3785 writing the breakpoints' "shadow contents" back into memory. The
3786 "shadow contents" are NOT valid after an exec, so GDB should not
3787 do that. Instead, the target is responsible from marking
3788 breakpoints out as soon as it detects an exec. We don't do that
3789 here instead, because there may be other attempts to delete
3790 breakpoints after detecting an exec and before reaching here. */
3791 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3792 if (bploc->pspace == current_program_space)
3793 gdb_assert (!bploc->inserted);
3794
3795 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3796 {
3797 if (b->pspace != current_program_space)
3798 continue;
3799
3800 /* Solib breakpoints must be explicitly reset after an exec(). */
3801 if (b->type == bp_shlib_event)
3802 {
3803 delete_breakpoint (b);
3804 continue;
3805 }
3806
3807 /* JIT breakpoints must be explicitly reset after an exec(). */
3808 if (b->type == bp_jit_event)
3809 {
3810 delete_breakpoint (b);
3811 continue;
3812 }
3813
3814 /* Thread event breakpoints must be set anew after an exec(),
3815 as must overlay event and longjmp master breakpoints. */
3816 if (b->type == bp_thread_event || b->type == bp_overlay_event
3817 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3818 || b->type == bp_exception_master)
3819 {
3820 delete_breakpoint (b);
3821 continue;
3822 }
3823
3824 /* Step-resume breakpoints are meaningless after an exec(). */
3825 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3826 {
3827 delete_breakpoint (b);
3828 continue;
3829 }
3830
3831 /* Just like single-step breakpoints. */
3832 if (b->type == bp_single_step)
3833 {
3834 delete_breakpoint (b);
3835 continue;
3836 }
3837
3838 /* Longjmp and longjmp-resume breakpoints are also meaningless
3839 after an exec. */
3840 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3841 || b->type == bp_longjmp_call_dummy
3842 || b->type == bp_exception || b->type == bp_exception_resume)
3843 {
3844 delete_breakpoint (b);
3845 continue;
3846 }
3847
3848 if (b->type == bp_catchpoint)
3849 {
3850 /* For now, none of the bp_catchpoint breakpoints need to
3851 do anything at this point. In the future, if some of
3852 the catchpoints need to something, we will need to add
3853 a new method, and call this method from here. */
3854 continue;
3855 }
3856
3857 /* bp_finish is a special case. The only way we ought to be able
3858 to see one of these when an exec() has happened, is if the user
3859 caught a vfork, and then said "finish". Ordinarily a finish just
3860 carries them to the call-site of the current callee, by setting
3861 a temporary bp there and resuming. But in this case, the finish
3862 will carry them entirely through the vfork & exec.
3863
3864 We don't want to allow a bp_finish to remain inserted now. But
3865 we can't safely delete it, 'cause finish_command has a handle to
3866 the bp on a bpstat, and will later want to delete it. There's a
3867 chance (and I've seen it happen) that if we delete the bp_finish
3868 here, that its storage will get reused by the time finish_command
3869 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3870 We really must allow finish_command to delete a bp_finish.
3871
3872 In the absence of a general solution for the "how do we know
3873 it's safe to delete something others may have handles to?"
3874 problem, what we'll do here is just uninsert the bp_finish, and
3875 let finish_command delete it.
3876
3877 (We know the bp_finish is "doomed" in the sense that it's
3878 momentary, and will be deleted as soon as finish_command sees
3879 the inferior stopped. So it doesn't matter that the bp's
3880 address is probably bogus in the new a.out, unlike e.g., the
3881 solib breakpoints.) */
3882
3883 if (b->type == bp_finish)
3884 {
3885 continue;
3886 }
3887
3888 /* Without a symbolic address, we have little hope of the
3889 pre-exec() address meaning the same thing in the post-exec()
3890 a.out. */
3891 if (breakpoint_event_location_empty_p (b))
3892 {
3893 delete_breakpoint (b);
3894 continue;
3895 }
3896 }
3897}
3898
3899int
3900detach_breakpoints (ptid_t ptid)
3901{
3902 struct bp_location *bl, **blp_tmp;
3903 int val = 0;
3904 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3905 struct inferior *inf = current_inferior ();
3906
3907 if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3908 error (_("Cannot detach breakpoints of inferior_ptid"));
3909
3910 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
3911 inferior_ptid = ptid;
3912 ALL_BP_LOCATIONS (bl, blp_tmp)
3913 {
3914 if (bl->pspace != inf->pspace)
3915 continue;
3916
3917 /* This function must physically remove breakpoints locations
3918 from the specified ptid, without modifying the breakpoint
3919 package's state. Locations of type bp_loc_other are only
3920 maintained at GDB side. So, there is no need to remove
3921 these bp_loc_other locations. Moreover, removing these
3922 would modify the breakpoint package's state. */
3923 if (bl->loc_type == bp_loc_other)
3924 continue;
3925
3926 if (bl->inserted)
3927 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3928 }
3929
3930 return val;
3931}
3932
3933/* Remove the breakpoint location BL from the current address space.
3934 Note that this is used to detach breakpoints from a child fork.
3935 When we get here, the child isn't in the inferior list, and neither
3936 do we have objects to represent its address space --- we should
3937 *not* look at bl->pspace->aspace here. */
3938
3939static int
3940remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3941{
3942 int val;
3943
3944 /* BL is never in moribund_locations by our callers. */
3945 gdb_assert (bl->owner != NULL);
3946
3947 /* The type of none suggests that owner is actually deleted.
3948 This should not ever happen. */
3949 gdb_assert (bl->owner->type != bp_none);
3950
3951 if (bl->loc_type == bp_loc_software_breakpoint
3952 || bl->loc_type == bp_loc_hardware_breakpoint)
3953 {
3954 /* "Normal" instruction breakpoint: either the standard
3955 trap-instruction bp (bp_breakpoint), or a
3956 bp_hardware_breakpoint. */
3957
3958 /* First check to see if we have to handle an overlay. */
3959 if (overlay_debugging == ovly_off
3960 || bl->section == NULL
3961 || !(section_is_overlay (bl->section)))
3962 {
3963 /* No overlay handling: just remove the breakpoint. */
3964
3965 /* If we're trying to uninsert a memory breakpoint that we
3966 know is set in a dynamic object that is marked
3967 shlib_disabled, then either the dynamic object was
3968 removed with "remove-symbol-file" or with
3969 "nosharedlibrary". In the former case, we don't know
3970 whether another dynamic object might have loaded over the
3971 breakpoint's address -- the user might well let us know
3972 about it next with add-symbol-file (the whole point of
3973 add-symbol-file is letting the user manually maintain a
3974 list of dynamically loaded objects). If we have the
3975 breakpoint's shadow memory, that is, this is a software
3976 breakpoint managed by GDB, check whether the breakpoint
3977 is still inserted in memory, to avoid overwriting wrong
3978 code with stale saved shadow contents. Note that HW
3979 breakpoints don't have shadow memory, as they're
3980 implemented using a mechanism that is not dependent on
3981 being able to modify the target's memory, and as such
3982 they should always be removed. */
3983 if (bl->shlib_disabled
3984 && bl->target_info.shadow_len != 0
3985 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3986 val = 0;
3987 else
3988 val = bl->owner->ops->remove_location (bl, reason);
3989 }
3990 else
3991 {
3992 /* This breakpoint is in an overlay section.
3993 Did we set a breakpoint at the LMA? */
3994 if (!overlay_events_enabled)
3995 {
3996 /* Yes -- overlay event support is not active, so we
3997 should have set a breakpoint at the LMA. Remove it.
3998 */
3999 /* Ignore any failures: if the LMA is in ROM, we will
4000 have already warned when we failed to insert it. */
4001 if (bl->loc_type == bp_loc_hardware_breakpoint)
4002 target_remove_hw_breakpoint (bl->gdbarch,
4003 &bl->overlay_target_info);
4004 else
4005 target_remove_breakpoint (bl->gdbarch,
4006 &bl->overlay_target_info,
4007 reason);
4008 }
4009 /* Did we set a breakpoint at the VMA?
4010 If so, we will have marked the breakpoint 'inserted'. */
4011 if (bl->inserted)
4012 {
4013 /* Yes -- remove it. Previously we did not bother to
4014 remove the breakpoint if the section had been
4015 unmapped, but let's not rely on that being safe. We
4016 don't know what the overlay manager might do. */
4017
4018 /* However, we should remove *software* breakpoints only
4019 if the section is still mapped, or else we overwrite
4020 wrong code with the saved shadow contents. */
4021 if (bl->loc_type == bp_loc_hardware_breakpoint
4022 || section_is_mapped (bl->section))
4023 val = bl->owner->ops->remove_location (bl, reason);
4024 else
4025 val = 0;
4026 }
4027 else
4028 {
4029 /* No -- not inserted, so no need to remove. No error. */
4030 val = 0;
4031 }
4032 }
4033
4034 /* In some cases, we might not be able to remove a breakpoint in
4035 a shared library that has already been removed, but we have
4036 not yet processed the shlib unload event. Similarly for an
4037 unloaded add-symbol-file object - the user might not yet have
4038 had the chance to remove-symbol-file it. shlib_disabled will
4039 be set if the library/object has already been removed, but
4040 the breakpoint hasn't been uninserted yet, e.g., after
4041 "nosharedlibrary" or "remove-symbol-file" with breakpoints
4042 always-inserted mode. */
4043 if (val
4044 && (bl->loc_type == bp_loc_software_breakpoint
4045 && (bl->shlib_disabled
4046 || solib_name_from_address (bl->pspace, bl->address)
4047 || shared_objfile_contains_address_p (bl->pspace,
4048 bl->address))))
4049 val = 0;
4050
4051 if (val)
4052 return val;
4053 bl->inserted = (reason == DETACH_BREAKPOINT);
4054 }
4055 else if (bl->loc_type == bp_loc_hardware_watchpoint)
4056 {
4057 gdb_assert (bl->owner->ops != NULL
4058 && bl->owner->ops->remove_location != NULL);
4059
4060 bl->inserted = (reason == DETACH_BREAKPOINT);
4061 bl->owner->ops->remove_location (bl, reason);
4062
4063 /* Failure to remove any of the hardware watchpoints comes here. */
4064 if (reason == REMOVE_BREAKPOINT && bl->inserted)
4065 warning (_("Could not remove hardware watchpoint %d."),
4066 bl->owner->number);
4067 }
4068 else if (bl->owner->type == bp_catchpoint
4069 && breakpoint_enabled (bl->owner)
4070 && !bl->duplicate)
4071 {
4072 gdb_assert (bl->owner->ops != NULL
4073 && bl->owner->ops->remove_location != NULL);
4074
4075 val = bl->owner->ops->remove_location (bl, reason);
4076 if (val)
4077 return val;
4078
4079 bl->inserted = (reason == DETACH_BREAKPOINT);
4080 }
4081
4082 return 0;
4083}
4084
4085static int
4086remove_breakpoint (struct bp_location *bl)
4087{
4088 /* BL is never in moribund_locations by our callers. */
4089 gdb_assert (bl->owner != NULL);
4090
4091 /* The type of none suggests that owner is actually deleted.
4092 This should not ever happen. */
4093 gdb_assert (bl->owner->type != bp_none);
4094
4095 scoped_restore_current_pspace_and_thread restore_pspace_thread;
4096
4097 switch_to_program_space_and_thread (bl->pspace);
4098
4099 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
4100}
4101
4102/* Clear the "inserted" flag in all breakpoints. */
4103
4104void
4105mark_breakpoints_out (void)
4106{
4107 struct bp_location *bl, **blp_tmp;
4108
4109 ALL_BP_LOCATIONS (bl, blp_tmp)
4110 if (bl->pspace == current_program_space)
4111 bl->inserted = 0;
4112}
4113
4114/* Clear the "inserted" flag in all breakpoints and delete any
4115 breakpoints which should go away between runs of the program.
4116
4117 Plus other such housekeeping that has to be done for breakpoints
4118 between runs.
4119
4120 Note: this function gets called at the end of a run (by
4121 generic_mourn_inferior) and when a run begins (by
4122 init_wait_for_inferior). */
4123
4124
4125
4126void
4127breakpoint_init_inferior (enum inf_context context)
4128{
4129 struct breakpoint *b, *b_tmp;
4130 struct bp_location *bl;
4131 int ix;
4132 struct program_space *pspace = current_program_space;
4133
4134 /* If breakpoint locations are shared across processes, then there's
4135 nothing to do. */
4136 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
4137 return;
4138
4139 mark_breakpoints_out ();
4140
4141 ALL_BREAKPOINTS_SAFE (b, b_tmp)
4142 {
4143 if (b->loc && b->loc->pspace != pspace)
4144 continue;
4145
4146 switch (b->type)
4147 {
4148 case bp_call_dummy:
4149 case bp_longjmp_call_dummy:
4150
4151 /* If the call dummy breakpoint is at the entry point it will
4152 cause problems when the inferior is rerun, so we better get
4153 rid of it. */
4154
4155 case bp_watchpoint_scope:
4156
4157 /* Also get rid of scope breakpoints. */
4158
4159 case bp_shlib_event:
4160
4161 /* Also remove solib event breakpoints. Their addresses may
4162 have changed since the last time we ran the program.
4163 Actually we may now be debugging against different target;
4164 and so the solib backend that installed this breakpoint may
4165 not be used in by the target. E.g.,
4166
4167 (gdb) file prog-linux
4168 (gdb) run # native linux target
4169 ...
4170 (gdb) kill
4171 (gdb) file prog-win.exe
4172 (gdb) tar rem :9999 # remote Windows gdbserver.
4173 */
4174
4175 case bp_step_resume:
4176
4177 /* Also remove step-resume breakpoints. */
4178
4179 case bp_single_step:
4180
4181 /* Also remove single-step breakpoints. */
4182
4183 delete_breakpoint (b);
4184 break;
4185
4186 case bp_watchpoint:
4187 case bp_hardware_watchpoint:
4188 case bp_read_watchpoint:
4189 case bp_access_watchpoint:
4190 {
4191 struct watchpoint *w = (struct watchpoint *) b;
4192
4193 /* Likewise for watchpoints on local expressions. */
4194 if (w->exp_valid_block != NULL)
4195 delete_breakpoint (b);
4196 else
4197 {
4198 /* Get rid of existing locations, which are no longer
4199 valid. New ones will be created in
4200 update_watchpoint, when the inferior is restarted.
4201 The next update_global_location_list call will
4202 garbage collect them. */
4203 b->loc = NULL;
4204
4205 if (context == inf_starting)
4206 {
4207 /* Reset val field to force reread of starting value in
4208 insert_breakpoints. */
4209 if (w->val)
4210 value_free (w->val);
4211 w->val = NULL;
4212 w->val_valid = 0;
4213 }
4214 }
4215 }
4216 break;
4217 default:
4218 break;
4219 }
4220 }
4221
4222 /* Get rid of the moribund locations. */
4223 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4224 decref_bp_location (&bl);
4225 VEC_free (bp_location_p, moribund_locations);
4226}
4227
4228/* These functions concern about actual breakpoints inserted in the
4229 target --- to e.g. check if we need to do decr_pc adjustment or if
4230 we need to hop over the bkpt --- so we check for address space
4231 match, not program space. */
4232
4233/* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4234 exists at PC. It returns ordinary_breakpoint_here if it's an
4235 ordinary breakpoint, or permanent_breakpoint_here if it's a
4236 permanent breakpoint.
4237 - When continuing from a location with an ordinary breakpoint, we
4238 actually single step once before calling insert_breakpoints.
4239 - When continuing from a location with a permanent breakpoint, we
4240 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4241 the target, to advance the PC past the breakpoint. */
4242
4243enum breakpoint_here
4244breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4245{
4246 struct bp_location *bl, **blp_tmp;
4247 int any_breakpoint_here = 0;
4248
4249 ALL_BP_LOCATIONS (bl, blp_tmp)
4250 {
4251 if (bl->loc_type != bp_loc_software_breakpoint
4252 && bl->loc_type != bp_loc_hardware_breakpoint)
4253 continue;
4254
4255 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
4256 if ((breakpoint_enabled (bl->owner)
4257 || bl->permanent)
4258 && breakpoint_location_address_match (bl, aspace, pc))
4259 {
4260 if (overlay_debugging
4261 && section_is_overlay (bl->section)
4262 && !section_is_mapped (bl->section))
4263 continue; /* unmapped overlay -- can't be a match */
4264 else if (bl->permanent)
4265 return permanent_breakpoint_here;
4266 else
4267 any_breakpoint_here = 1;
4268 }
4269 }
4270
4271 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
4272}
4273
4274/* See breakpoint.h. */
4275
4276int
4277breakpoint_in_range_p (struct address_space *aspace,
4278 CORE_ADDR addr, ULONGEST len)
4279{
4280 struct bp_location *bl, **blp_tmp;
4281
4282 ALL_BP_LOCATIONS (bl, blp_tmp)
4283 {
4284 if (bl->loc_type != bp_loc_software_breakpoint
4285 && bl->loc_type != bp_loc_hardware_breakpoint)
4286 continue;
4287
4288 if ((breakpoint_enabled (bl->owner)
4289 || bl->permanent)
4290 && breakpoint_location_address_range_overlap (bl, aspace,
4291 addr, len))
4292 {
4293 if (overlay_debugging
4294 && section_is_overlay (bl->section)
4295 && !section_is_mapped (bl->section))
4296 {
4297 /* Unmapped overlay -- can't be a match. */
4298 continue;
4299 }
4300
4301 return 1;
4302 }
4303 }
4304
4305 return 0;
4306}
4307
4308/* Return true if there's a moribund breakpoint at PC. */
4309
4310int
4311moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4312{
4313 struct bp_location *loc;
4314 int ix;
4315
4316 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4317 if (breakpoint_location_address_match (loc, aspace, pc))
4318 return 1;
4319
4320 return 0;
4321}
4322
4323/* Returns non-zero iff BL is inserted at PC, in address space
4324 ASPACE. */
4325
4326static int
4327bp_location_inserted_here_p (struct bp_location *bl,
4328 struct address_space *aspace, CORE_ADDR pc)
4329{
4330 if (bl->inserted
4331 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4332 aspace, pc))
4333 {
4334 if (overlay_debugging
4335 && section_is_overlay (bl->section)
4336 && !section_is_mapped (bl->section))
4337 return 0; /* unmapped overlay -- can't be a match */
4338 else
4339 return 1;
4340 }
4341 return 0;
4342}
4343
4344/* Returns non-zero iff there's a breakpoint inserted at PC. */
4345
4346int
4347breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4348{
4349 struct bp_location **blp, **blp_tmp = NULL;
4350
4351 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4352 {
4353 struct bp_location *bl = *blp;
4354
4355 if (bl->loc_type != bp_loc_software_breakpoint
4356 && bl->loc_type != bp_loc_hardware_breakpoint)
4357 continue;
4358
4359 if (bp_location_inserted_here_p (bl, aspace, pc))
4360 return 1;
4361 }
4362 return 0;
4363}
4364
4365/* This function returns non-zero iff there is a software breakpoint
4366 inserted at PC. */
4367
4368int
4369software_breakpoint_inserted_here_p (struct address_space *aspace,
4370 CORE_ADDR pc)
4371{
4372 struct bp_location **blp, **blp_tmp = NULL;
4373
4374 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4375 {
4376 struct bp_location *bl = *blp;
4377
4378 if (bl->loc_type != bp_loc_software_breakpoint)
4379 continue;
4380
4381 if (bp_location_inserted_here_p (bl, aspace, pc))
4382 return 1;
4383 }
4384
4385 return 0;
4386}
4387
4388/* See breakpoint.h. */
4389
4390int
4391hardware_breakpoint_inserted_here_p (struct address_space *aspace,
4392 CORE_ADDR pc)
4393{
4394 struct bp_location **blp, **blp_tmp = NULL;
4395
4396 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4397 {
4398 struct bp_location *bl = *blp;
4399
4400 if (bl->loc_type != bp_loc_hardware_breakpoint)
4401 continue;
4402
4403 if (bp_location_inserted_here_p (bl, aspace, pc))
4404 return 1;
4405 }
4406
4407 return 0;
4408}
4409
4410int
4411hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4412 CORE_ADDR addr, ULONGEST len)
4413{
4414 struct breakpoint *bpt;
4415
4416 ALL_BREAKPOINTS (bpt)
4417 {
4418 struct bp_location *loc;
4419
4420 if (bpt->type != bp_hardware_watchpoint
4421 && bpt->type != bp_access_watchpoint)
4422 continue;
4423
4424 if (!breakpoint_enabled (bpt))
4425 continue;
4426
4427 for (loc = bpt->loc; loc; loc = loc->next)
4428 if (loc->pspace->aspace == aspace && loc->inserted)
4429 {
4430 CORE_ADDR l, h;
4431
4432 /* Check for intersection. */
4433 l = std::max<CORE_ADDR> (loc->address, addr);
4434 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4435 if (l < h)
4436 return 1;
4437 }
4438 }
4439 return 0;
4440}
4441\f
4442
4443/* bpstat stuff. External routines' interfaces are documented
4444 in breakpoint.h. */
4445
4446int
4447is_catchpoint (struct breakpoint *ep)
4448{
4449 return (ep->type == bp_catchpoint);
4450}
4451
4452/* Frees any storage that is part of a bpstat. Does not walk the
4453 'next' chain. */
4454
4455static void
4456bpstat_free (bpstat bs)
4457{
4458 if (bs->old_val != NULL)
4459 value_free (bs->old_val);
4460 decref_counted_command_line (&bs->commands);
4461 decref_bp_location (&bs->bp_location_at);
4462 xfree (bs);
4463}
4464
4465/* Clear a bpstat so that it says we are not at any breakpoint.
4466 Also free any storage that is part of a bpstat. */
4467
4468void
4469bpstat_clear (bpstat *bsp)
4470{
4471 bpstat p;
4472 bpstat q;
4473
4474 if (bsp == 0)
4475 return;
4476 p = *bsp;
4477 while (p != NULL)
4478 {
4479 q = p->next;
4480 bpstat_free (p);
4481 p = q;
4482 }
4483 *bsp = NULL;
4484}
4485
4486/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4487 is part of the bpstat is copied as well. */
4488
4489bpstat
4490bpstat_copy (bpstat bs)
4491{
4492 bpstat p = NULL;
4493 bpstat tmp;
4494 bpstat retval = NULL;
4495
4496 if (bs == NULL)
4497 return bs;
4498
4499 for (; bs != NULL; bs = bs->next)
4500 {
4501 tmp = (bpstat) xmalloc (sizeof (*tmp));
4502 memcpy (tmp, bs, sizeof (*tmp));
4503 incref_counted_command_line (tmp->commands);
4504 incref_bp_location (tmp->bp_location_at);
4505 if (bs->old_val != NULL)
4506 {
4507 tmp->old_val = value_copy (bs->old_val);
4508 release_value (tmp->old_val);
4509 }
4510
4511 if (p == NULL)
4512 /* This is the first thing in the chain. */
4513 retval = tmp;
4514 else
4515 p->next = tmp;
4516 p = tmp;
4517 }
4518 p->next = NULL;
4519 return retval;
4520}
4521
4522/* Find the bpstat associated with this breakpoint. */
4523
4524bpstat
4525bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4526{
4527 if (bsp == NULL)
4528 return NULL;
4529
4530 for (; bsp != NULL; bsp = bsp->next)
4531 {
4532 if (bsp->breakpoint_at == breakpoint)
4533 return bsp;
4534 }
4535 return NULL;
4536}
4537
4538/* See breakpoint.h. */
4539
4540int
4541bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4542{
4543 for (; bsp != NULL; bsp = bsp->next)
4544 {
4545 if (bsp->breakpoint_at == NULL)
4546 {
4547 /* A moribund location can never explain a signal other than
4548 GDB_SIGNAL_TRAP. */
4549 if (sig == GDB_SIGNAL_TRAP)
4550 return 1;
4551 }
4552 else
4553 {
4554 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4555 sig))
4556 return 1;
4557 }
4558 }
4559
4560 return 0;
4561}
4562
4563/* Put in *NUM the breakpoint number of the first breakpoint we are
4564 stopped at. *BSP upon return is a bpstat which points to the
4565 remaining breakpoints stopped at (but which is not guaranteed to be
4566 good for anything but further calls to bpstat_num).
4567
4568 Return 0 if passed a bpstat which does not indicate any breakpoints.
4569 Return -1 if stopped at a breakpoint that has been deleted since
4570 we set it.
4571 Return 1 otherwise. */
4572
4573int
4574bpstat_num (bpstat *bsp, int *num)
4575{
4576 struct breakpoint *b;
4577
4578 if ((*bsp) == NULL)
4579 return 0; /* No more breakpoint values */
4580
4581 /* We assume we'll never have several bpstats that correspond to a
4582 single breakpoint -- otherwise, this function might return the
4583 same number more than once and this will look ugly. */
4584 b = (*bsp)->breakpoint_at;
4585 *bsp = (*bsp)->next;
4586 if (b == NULL)
4587 return -1; /* breakpoint that's been deleted since */
4588
4589 *num = b->number; /* We have its number */
4590 return 1;
4591}
4592
4593/* See breakpoint.h. */
4594
4595void
4596bpstat_clear_actions (void)
4597{
4598 struct thread_info *tp;
4599 bpstat bs;
4600
4601 if (ptid_equal (inferior_ptid, null_ptid))
4602 return;
4603
4604 tp = find_thread_ptid (inferior_ptid);
4605 if (tp == NULL)
4606 return;
4607
4608 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4609 {
4610 decref_counted_command_line (&bs->commands);
4611
4612 if (bs->old_val != NULL)
4613 {
4614 value_free (bs->old_val);
4615 bs->old_val = NULL;
4616 }
4617 }
4618}
4619
4620/* Called when a command is about to proceed the inferior. */
4621
4622static void
4623breakpoint_about_to_proceed (void)
4624{
4625 if (!ptid_equal (inferior_ptid, null_ptid))
4626 {
4627 struct thread_info *tp = inferior_thread ();
4628
4629 /* Allow inferior function calls in breakpoint commands to not
4630 interrupt the command list. When the call finishes
4631 successfully, the inferior will be standing at the same
4632 breakpoint as if nothing happened. */
4633 if (tp->control.in_infcall)
4634 return;
4635 }
4636
4637 breakpoint_proceeded = 1;
4638}
4639
4640/* Stub for cleaning up our state if we error-out of a breakpoint
4641 command. */
4642static void
4643cleanup_executing_breakpoints (void *ignore)
4644{
4645 executing_breakpoint_commands = 0;
4646}
4647
4648/* Return non-zero iff CMD as the first line of a command sequence is `silent'
4649 or its equivalent. */
4650
4651static int
4652command_line_is_silent (struct command_line *cmd)
4653{
4654 return cmd && (strcmp ("silent", cmd->line) == 0);
4655}
4656
4657/* Execute all the commands associated with all the breakpoints at
4658 this location. Any of these commands could cause the process to
4659 proceed beyond this point, etc. We look out for such changes by
4660 checking the global "breakpoint_proceeded" after each command.
4661
4662 Returns true if a breakpoint command resumed the inferior. In that
4663 case, it is the caller's responsibility to recall it again with the
4664 bpstat of the current thread. */
4665
4666static int
4667bpstat_do_actions_1 (bpstat *bsp)
4668{
4669 bpstat bs;
4670 struct cleanup *old_chain;
4671 int again = 0;
4672
4673 /* Avoid endless recursion if a `source' command is contained
4674 in bs->commands. */
4675 if (executing_breakpoint_commands)
4676 return 0;
4677
4678 executing_breakpoint_commands = 1;
4679 old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4680
4681 scoped_restore preventer = prevent_dont_repeat ();
4682
4683 /* This pointer will iterate over the list of bpstat's. */
4684 bs = *bsp;
4685
4686 breakpoint_proceeded = 0;
4687 for (; bs != NULL; bs = bs->next)
4688 {
4689 struct counted_command_line *ccmd;
4690 struct command_line *cmd;
4691 struct cleanup *this_cmd_tree_chain;
4692
4693 /* Take ownership of the BSP's command tree, if it has one.
4694
4695 The command tree could legitimately contain commands like
4696 'step' and 'next', which call clear_proceed_status, which
4697 frees stop_bpstat's command tree. To make sure this doesn't
4698 free the tree we're executing out from under us, we need to
4699 take ownership of the tree ourselves. Since a given bpstat's
4700 commands are only executed once, we don't need to copy it; we
4701 can clear the pointer in the bpstat, and make sure we free
4702 the tree when we're done. */
4703 ccmd = bs->commands;
4704 bs->commands = NULL;
4705 this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4706 cmd = ccmd ? ccmd->commands : NULL;
4707 if (command_line_is_silent (cmd))
4708 {
4709 /* The action has been already done by bpstat_stop_status. */
4710 cmd = cmd->next;
4711 }
4712
4713 while (cmd != NULL)
4714 {
4715 execute_control_command (cmd);
4716
4717 if (breakpoint_proceeded)
4718 break;
4719 else
4720 cmd = cmd->next;
4721 }
4722
4723 /* We can free this command tree now. */
4724 do_cleanups (this_cmd_tree_chain);
4725
4726 if (breakpoint_proceeded)
4727 {
4728 if (current_ui->async)
4729 /* If we are in async mode, then the target might be still
4730 running, not stopped at any breakpoint, so nothing for
4731 us to do here -- just return to the event loop. */
4732 ;
4733 else
4734 /* In sync mode, when execute_control_command returns
4735 we're already standing on the next breakpoint.
4736 Breakpoint commands for that stop were not run, since
4737 execute_command does not run breakpoint commands --
4738 only command_line_handler does, but that one is not
4739 involved in execution of breakpoint commands. So, we
4740 can now execute breakpoint commands. It should be
4741 noted that making execute_command do bpstat actions is
4742 not an option -- in this case we'll have recursive
4743 invocation of bpstat for each breakpoint with a
4744 command, and can easily blow up GDB stack. Instead, we
4745 return true, which will trigger the caller to recall us
4746 with the new stop_bpstat. */
4747 again = 1;
4748 break;
4749 }
4750 }
4751 do_cleanups (old_chain);
4752 return again;
4753}
4754
4755void
4756bpstat_do_actions (void)
4757{
4758 struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4759
4760 /* Do any commands attached to breakpoint we are stopped at. */
4761 while (!ptid_equal (inferior_ptid, null_ptid)
4762 && target_has_execution
4763 && !is_exited (inferior_ptid)
4764 && !is_executing (inferior_ptid))
4765 /* Since in sync mode, bpstat_do_actions may resume the inferior,
4766 and only return when it is stopped at the next breakpoint, we
4767 keep doing breakpoint actions until it returns false to
4768 indicate the inferior was not resumed. */
4769 if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4770 break;
4771
4772 discard_cleanups (cleanup_if_error);
4773}
4774
4775/* Print out the (old or new) value associated with a watchpoint. */
4776
4777static void
4778watchpoint_value_print (struct value *val, struct ui_file *stream)
4779{
4780 if (val == NULL)
4781 fprintf_unfiltered (stream, _("<unreadable>"));
4782 else
4783 {
4784 struct value_print_options opts;
4785 get_user_print_options (&opts);
4786 value_print (val, stream, &opts);
4787 }
4788}
4789
4790/* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4791 debugging multiple threads. */
4792
4793void
4794maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4795{
4796 if (uiout->is_mi_like_p ())
4797 return;
4798
4799 uiout->text ("\n");
4800
4801 if (show_thread_that_caused_stop ())
4802 {
4803 const char *name;
4804 struct thread_info *thr = inferior_thread ();
4805
4806 uiout->text ("Thread ");
4807 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4808
4809 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4810 if (name != NULL)
4811 {
4812 uiout->text (" \"");
4813 uiout->field_fmt ("name", "%s", name);
4814 uiout->text ("\"");
4815 }
4816
4817 uiout->text (" hit ");
4818 }
4819}
4820
4821/* Generic routine for printing messages indicating why we
4822 stopped. The behavior of this function depends on the value
4823 'print_it' in the bpstat structure. Under some circumstances we
4824 may decide not to print anything here and delegate the task to
4825 normal_stop(). */
4826
4827static enum print_stop_action
4828print_bp_stop_message (bpstat bs)
4829{
4830 switch (bs->print_it)
4831 {
4832 case print_it_noop:
4833 /* Nothing should be printed for this bpstat entry. */
4834 return PRINT_UNKNOWN;
4835 break;
4836
4837 case print_it_done:
4838 /* We still want to print the frame, but we already printed the
4839 relevant messages. */
4840 return PRINT_SRC_AND_LOC;
4841 break;
4842
4843 case print_it_normal:
4844 {
4845 struct breakpoint *b = bs->breakpoint_at;
4846
4847 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4848 which has since been deleted. */
4849 if (b == NULL)
4850 return PRINT_UNKNOWN;
4851
4852 /* Normal case. Call the breakpoint's print_it method. */
4853 return b->ops->print_it (bs);
4854 }
4855 break;
4856
4857 default:
4858 internal_error (__FILE__, __LINE__,
4859 _("print_bp_stop_message: unrecognized enum value"));
4860 break;
4861 }
4862}
4863
4864/* A helper function that prints a shared library stopped event. */
4865
4866static void
4867print_solib_event (int is_catchpoint)
4868{
4869 int any_deleted
4870 = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4871 int any_added
4872 = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4873
4874 if (!is_catchpoint)
4875 {
4876 if (any_added || any_deleted)
4877 current_uiout->text (_("Stopped due to shared library event:\n"));
4878 else
4879 current_uiout->text (_("Stopped due to shared library event (no "
4880 "libraries added or removed)\n"));
4881 }
4882
4883 if (current_uiout->is_mi_like_p ())
4884 current_uiout->field_string ("reason",
4885 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4886
4887 if (any_deleted)
4888 {
4889 char *name;
4890 int ix;
4891
4892 current_uiout->text (_(" Inferior unloaded "));
4893 ui_out_emit_list list_emitter (current_uiout, "removed");
4894 for (ix = 0;
4895 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4896 ix, name);
4897 ++ix)
4898 {
4899 if (ix > 0)
4900 current_uiout->text (" ");
4901 current_uiout->field_string ("library", name);
4902 current_uiout->text ("\n");
4903 }
4904 }
4905
4906 if (any_added)
4907 {
4908 struct so_list *iter;
4909 int ix;
4910
4911 current_uiout->text (_(" Inferior loaded "));
4912 ui_out_emit_list list_emitter (current_uiout, "added");
4913 for (ix = 0;
4914 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4915 ix, iter);
4916 ++ix)
4917 {
4918 if (ix > 0)
4919 current_uiout->text (" ");
4920 current_uiout->field_string ("library", iter->so_name);
4921 current_uiout->text ("\n");
4922 }
4923 }
4924}
4925
4926/* Print a message indicating what happened. This is called from
4927 normal_stop(). The input to this routine is the head of the bpstat
4928 list - a list of the eventpoints that caused this stop. KIND is
4929 the target_waitkind for the stopping event. This
4930 routine calls the generic print routine for printing a message
4931 about reasons for stopping. This will print (for example) the
4932 "Breakpoint n," part of the output. The return value of this
4933 routine is one of:
4934
4935 PRINT_UNKNOWN: Means we printed nothing.
4936 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4937 code to print the location. An example is
4938 "Breakpoint 1, " which should be followed by
4939 the location.
4940 PRINT_SRC_ONLY: Means we printed something, but there is no need
4941 to also print the location part of the message.
4942 An example is the catch/throw messages, which
4943 don't require a location appended to the end.
4944 PRINT_NOTHING: We have done some printing and we don't need any
4945 further info to be printed. */
4946
4947enum print_stop_action
4948bpstat_print (bpstat bs, int kind)
4949{
4950 enum print_stop_action val;
4951
4952 /* Maybe another breakpoint in the chain caused us to stop.
4953 (Currently all watchpoints go on the bpstat whether hit or not.
4954 That probably could (should) be changed, provided care is taken
4955 with respect to bpstat_explains_signal). */
4956 for (; bs; bs = bs->next)
4957 {
4958 val = print_bp_stop_message (bs);
4959 if (val == PRINT_SRC_ONLY
4960 || val == PRINT_SRC_AND_LOC
4961 || val == PRINT_NOTHING)
4962 return val;
4963 }
4964
4965 /* If we had hit a shared library event breakpoint,
4966 print_bp_stop_message would print out this message. If we hit an
4967 OS-level shared library event, do the same thing. */
4968 if (kind == TARGET_WAITKIND_LOADED)
4969 {
4970 print_solib_event (0);
4971 return PRINT_NOTHING;
4972 }
4973
4974 /* We reached the end of the chain, or we got a null BS to start
4975 with and nothing was printed. */
4976 return PRINT_UNKNOWN;
4977}
4978
4979/* Evaluate the expression EXP and return 1 if value is zero.
4980 This returns the inverse of the condition because it is called
4981 from catch_errors which returns 0 if an exception happened, and if an
4982 exception happens we want execution to stop.
4983 The argument is a "struct expression *" that has been cast to a
4984 "void *" to make it pass through catch_errors. */
4985
4986static int
4987breakpoint_cond_eval (void *exp)
4988{
4989 struct value *mark = value_mark ();
4990 int i = !value_true (evaluate_expression ((struct expression *) exp));
4991
4992 value_free_to_mark (mark);
4993 return i;
4994}
4995
4996/* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
4997
4998static bpstat
4999bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
5000{
5001 bpstat bs;
5002
5003 bs = (bpstat) xmalloc (sizeof (*bs));
5004 bs->next = NULL;
5005 **bs_link_pointer = bs;
5006 *bs_link_pointer = &bs->next;
5007 bs->breakpoint_at = bl->owner;
5008 bs->bp_location_at = bl;
5009 incref_bp_location (bl);
5010 /* If the condition is false, etc., don't do the commands. */
5011 bs->commands = NULL;
5012 bs->old_val = NULL;
5013 bs->print_it = print_it_normal;
5014 return bs;
5015}
5016\f
5017/* The target has stopped with waitstatus WS. Check if any hardware
5018 watchpoints have triggered, according to the target. */
5019
5020int
5021watchpoints_triggered (struct target_waitstatus *ws)
5022{
5023 int stopped_by_watchpoint = target_stopped_by_watchpoint ();
5024 CORE_ADDR addr;
5025 struct breakpoint *b;
5026
5027 if (!stopped_by_watchpoint)
5028 {
5029 /* We were not stopped by a watchpoint. Mark all watchpoints
5030 as not triggered. */
5031 ALL_BREAKPOINTS (b)
5032 if (is_hardware_watchpoint (b))
5033 {
5034 struct watchpoint *w = (struct watchpoint *) b;
5035
5036 w->watchpoint_triggered = watch_triggered_no;
5037 }
5038
5039 return 0;
5040 }
5041
5042 if (!target_stopped_data_address (&current_target, &addr))
5043 {
5044 /* We were stopped by a watchpoint, but we don't know where.
5045 Mark all watchpoints as unknown. */
5046 ALL_BREAKPOINTS (b)
5047 if (is_hardware_watchpoint (b))
5048 {
5049 struct watchpoint *w = (struct watchpoint *) b;
5050
5051 w->watchpoint_triggered = watch_triggered_unknown;
5052 }
5053
5054 return 1;
5055 }
5056
5057 /* The target could report the data address. Mark watchpoints
5058 affected by this data address as triggered, and all others as not
5059 triggered. */
5060
5061 ALL_BREAKPOINTS (b)
5062 if (is_hardware_watchpoint (b))
5063 {
5064 struct watchpoint *w = (struct watchpoint *) b;
5065 struct bp_location *loc;
5066
5067 w->watchpoint_triggered = watch_triggered_no;
5068 for (loc = b->loc; loc; loc = loc->next)
5069 {
5070 if (is_masked_watchpoint (b))
5071 {
5072 CORE_ADDR newaddr = addr & w->hw_wp_mask;
5073 CORE_ADDR start = loc->address & w->hw_wp_mask;
5074
5075 if (newaddr == start)
5076 {
5077 w->watchpoint_triggered = watch_triggered_yes;
5078 break;
5079 }
5080 }
5081 /* Exact match not required. Within range is sufficient. */
5082 else if (target_watchpoint_addr_within_range (&current_target,
5083 addr, loc->address,
5084 loc->length))
5085 {
5086 w->watchpoint_triggered = watch_triggered_yes;
5087 break;
5088 }
5089 }
5090 }
5091
5092 return 1;
5093}
5094
5095/* Possible return values for watchpoint_check (this can't be an enum
5096 because of check_errors). */
5097/* The watchpoint has been deleted. */
5098#define WP_DELETED 1
5099/* The value has changed. */
5100#define WP_VALUE_CHANGED 2
5101/* The value has not changed. */
5102#define WP_VALUE_NOT_CHANGED 3
5103/* Ignore this watchpoint, no matter if the value changed or not. */
5104#define WP_IGNORE 4
5105
5106#define BP_TEMPFLAG 1
5107#define BP_HARDWAREFLAG 2
5108
5109/* Evaluate watchpoint condition expression and check if its value
5110 changed.
5111
5112 P should be a pointer to struct bpstat, but is defined as a void *
5113 in order for this function to be usable with catch_errors. */
5114
5115static int
5116watchpoint_check (void *p)
5117{
5118 bpstat bs = (bpstat) p;
5119 struct watchpoint *b;
5120 struct frame_info *fr;
5121 int within_current_scope;
5122
5123 /* BS is built from an existing struct breakpoint. */
5124 gdb_assert (bs->breakpoint_at != NULL);
5125 b = (struct watchpoint *) bs->breakpoint_at;
5126
5127 /* If this is a local watchpoint, we only want to check if the
5128 watchpoint frame is in scope if the current thread is the thread
5129 that was used to create the watchpoint. */
5130 if (!watchpoint_in_thread_scope (b))
5131 return WP_IGNORE;
5132
5133 if (b->exp_valid_block == NULL)
5134 within_current_scope = 1;
5135 else
5136 {
5137 struct frame_info *frame = get_current_frame ();
5138 struct gdbarch *frame_arch = get_frame_arch (frame);
5139 CORE_ADDR frame_pc = get_frame_pc (frame);
5140
5141 /* stack_frame_destroyed_p() returns a non-zero value if we're
5142 still in the function but the stack frame has already been
5143 invalidated. Since we can't rely on the values of local
5144 variables after the stack has been destroyed, we are treating
5145 the watchpoint in that state as `not changed' without further
5146 checking. Don't mark watchpoints as changed if the current
5147 frame is in an epilogue - even if they are in some other
5148 frame, our view of the stack is likely to be wrong and
5149 frame_find_by_id could error out. */
5150 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
5151 return WP_IGNORE;
5152
5153 fr = frame_find_by_id (b->watchpoint_frame);
5154 within_current_scope = (fr != NULL);
5155
5156 /* If we've gotten confused in the unwinder, we might have
5157 returned a frame that can't describe this variable. */
5158 if (within_current_scope)
5159 {
5160 struct symbol *function;
5161
5162 function = get_frame_function (fr);
5163 if (function == NULL
5164 || !contained_in (b->exp_valid_block,
5165 SYMBOL_BLOCK_VALUE (function)))
5166 within_current_scope = 0;
5167 }
5168
5169 if (within_current_scope)
5170 /* If we end up stopping, the current frame will get selected
5171 in normal_stop. So this call to select_frame won't affect
5172 the user. */
5173 select_frame (fr);
5174 }
5175
5176 if (within_current_scope)
5177 {
5178 /* We use value_{,free_to_}mark because it could be a *long*
5179 time before we return to the command level and call
5180 free_all_values. We can't call free_all_values because we
5181 might be in the middle of evaluating a function call. */
5182
5183 int pc = 0;
5184 struct value *mark;
5185 struct value *new_val;
5186
5187 if (is_masked_watchpoint (b))
5188 /* Since we don't know the exact trigger address (from
5189 stopped_data_address), just tell the user we've triggered
5190 a mask watchpoint. */
5191 return WP_VALUE_CHANGED;
5192
5193 mark = value_mark ();
5194 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
5195
5196 if (b->val_bitsize != 0)
5197 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5198
5199 /* We use value_equal_contents instead of value_equal because
5200 the latter coerces an array to a pointer, thus comparing just
5201 the address of the array instead of its contents. This is
5202 not what we want. */
5203 if ((b->val != NULL) != (new_val != NULL)
5204 || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5205 {
5206 if (new_val != NULL)
5207 {
5208 release_value (new_val);
5209 value_free_to_mark (mark);
5210 }
5211 bs->old_val = b->val;
5212 b->val = new_val;
5213 b->val_valid = 1;
5214 return WP_VALUE_CHANGED;
5215 }
5216 else
5217 {
5218 /* Nothing changed. */
5219 value_free_to_mark (mark);
5220 return WP_VALUE_NOT_CHANGED;
5221 }
5222 }
5223 else
5224 {
5225 /* This seems like the only logical thing to do because
5226 if we temporarily ignored the watchpoint, then when
5227 we reenter the block in which it is valid it contains
5228 garbage (in the case of a function, it may have two
5229 garbage values, one before and one after the prologue).
5230 So we can't even detect the first assignment to it and
5231 watch after that (since the garbage may or may not equal
5232 the first value assigned). */
5233 /* We print all the stop information in
5234 breakpoint_ops->print_it, but in this case, by the time we
5235 call breakpoint_ops->print_it this bp will be deleted
5236 already. So we have no choice but print the information
5237 here. */
5238
5239 SWITCH_THRU_ALL_UIS ()
5240 {
5241 struct ui_out *uiout = current_uiout;
5242
5243 if (uiout->is_mi_like_p ())
5244 uiout->field_string
5245 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5246 uiout->text ("\nWatchpoint ");
5247 uiout->field_int ("wpnum", b->number);
5248 uiout->text (" deleted because the program has left the block in\n"
5249 "which its expression is valid.\n");
5250 }
5251
5252 /* Make sure the watchpoint's commands aren't executed. */
5253 decref_counted_command_line (&b->commands);
5254 watchpoint_del_at_next_stop (b);
5255
5256 return WP_DELETED;
5257 }
5258}
5259
5260/* Return true if it looks like target has stopped due to hitting
5261 breakpoint location BL. This function does not check if we should
5262 stop, only if BL explains the stop. */
5263
5264static int
5265bpstat_check_location (const struct bp_location *bl,
5266 struct address_space *aspace, CORE_ADDR bp_addr,
5267 const struct target_waitstatus *ws)
5268{
5269 struct breakpoint *b = bl->owner;
5270
5271 /* BL is from an existing breakpoint. */
5272 gdb_assert (b != NULL);
5273
5274 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5275}
5276
5277/* Determine if the watched values have actually changed, and we
5278 should stop. If not, set BS->stop to 0. */
5279
5280static void
5281bpstat_check_watchpoint (bpstat bs)
5282{
5283 const struct bp_location *bl;
5284 struct watchpoint *b;
5285
5286 /* BS is built for existing struct breakpoint. */
5287 bl = bs->bp_location_at;
5288 gdb_assert (bl != NULL);
5289 b = (struct watchpoint *) bs->breakpoint_at;
5290 gdb_assert (b != NULL);
5291
5292 {
5293 int must_check_value = 0;
5294
5295 if (b->type == bp_watchpoint)
5296 /* For a software watchpoint, we must always check the
5297 watched value. */
5298 must_check_value = 1;
5299 else if (b->watchpoint_triggered == watch_triggered_yes)
5300 /* We have a hardware watchpoint (read, write, or access)
5301 and the target earlier reported an address watched by
5302 this watchpoint. */
5303 must_check_value = 1;
5304 else if (b->watchpoint_triggered == watch_triggered_unknown
5305 && b->type == bp_hardware_watchpoint)
5306 /* We were stopped by a hardware watchpoint, but the target could
5307 not report the data address. We must check the watchpoint's
5308 value. Access and read watchpoints are out of luck; without
5309 a data address, we can't figure it out. */
5310 must_check_value = 1;
5311
5312 if (must_check_value)
5313 {
5314 char *message
5315 = xstrprintf ("Error evaluating expression for watchpoint %d\n",
5316 b->number);
5317 struct cleanup *cleanups = make_cleanup (xfree, message);
5318 int e = catch_errors (watchpoint_check, bs, message,
5319 RETURN_MASK_ALL);
5320 do_cleanups (cleanups);
5321 switch (e)
5322 {
5323 case WP_DELETED:
5324 /* We've already printed what needs to be printed. */
5325 bs->print_it = print_it_done;
5326 /* Stop. */
5327 break;
5328 case WP_IGNORE:
5329 bs->print_it = print_it_noop;
5330 bs->stop = 0;
5331 break;
5332 case WP_VALUE_CHANGED:
5333 if (b->type == bp_read_watchpoint)
5334 {
5335 /* There are two cases to consider here:
5336
5337 1. We're watching the triggered memory for reads.
5338 In that case, trust the target, and always report
5339 the watchpoint hit to the user. Even though
5340 reads don't cause value changes, the value may
5341 have changed since the last time it was read, and
5342 since we're not trapping writes, we will not see
5343 those, and as such we should ignore our notion of
5344 old value.
5345
5346 2. We're watching the triggered memory for both
5347 reads and writes. There are two ways this may
5348 happen:
5349
5350 2.1. This is a target that can't break on data
5351 reads only, but can break on accesses (reads or
5352 writes), such as e.g., x86. We detect this case
5353 at the time we try to insert read watchpoints.
5354
5355 2.2. Otherwise, the target supports read
5356 watchpoints, but, the user set an access or write
5357 watchpoint watching the same memory as this read
5358 watchpoint.
5359
5360 If we're watching memory writes as well as reads,
5361 ignore watchpoint hits when we find that the
5362 value hasn't changed, as reads don't cause
5363 changes. This still gives false positives when
5364 the program writes the same value to memory as
5365 what there was already in memory (we will confuse
5366 it for a read), but it's much better than
5367 nothing. */
5368
5369 int other_write_watchpoint = 0;
5370
5371 if (bl->watchpoint_type == hw_read)
5372 {
5373 struct breakpoint *other_b;
5374
5375 ALL_BREAKPOINTS (other_b)
5376 if (other_b->type == bp_hardware_watchpoint
5377 || other_b->type == bp_access_watchpoint)
5378 {
5379 struct watchpoint *other_w =
5380 (struct watchpoint *) other_b;
5381
5382 if (other_w->watchpoint_triggered
5383 == watch_triggered_yes)
5384 {
5385 other_write_watchpoint = 1;
5386 break;
5387 }
5388 }
5389 }
5390
5391 if (other_write_watchpoint
5392 || bl->watchpoint_type == hw_access)
5393 {
5394 /* We're watching the same memory for writes,
5395 and the value changed since the last time we
5396 updated it, so this trap must be for a write.
5397 Ignore it. */
5398 bs->print_it = print_it_noop;
5399 bs->stop = 0;
5400 }
5401 }
5402 break;
5403 case WP_VALUE_NOT_CHANGED:
5404 if (b->type == bp_hardware_watchpoint
5405 || b->type == bp_watchpoint)
5406 {
5407 /* Don't stop: write watchpoints shouldn't fire if
5408 the value hasn't changed. */
5409 bs->print_it = print_it_noop;
5410 bs->stop = 0;
5411 }
5412 /* Stop. */
5413 break;
5414 default:
5415 /* Can't happen. */
5416 case 0:
5417 /* Error from catch_errors. */
5418 {
5419 SWITCH_THRU_ALL_UIS ()
5420 {
5421 printf_filtered (_("Watchpoint %d deleted.\n"),
5422 b->number);
5423 }
5424 watchpoint_del_at_next_stop (b);
5425 /* We've already printed what needs to be printed. */
5426 bs->print_it = print_it_done;
5427 }
5428 break;
5429 }
5430 }
5431 else /* must_check_value == 0 */
5432 {
5433 /* This is a case where some watchpoint(s) triggered, but
5434 not at the address of this watchpoint, or else no
5435 watchpoint triggered after all. So don't print
5436 anything for this watchpoint. */
5437 bs->print_it = print_it_noop;
5438 bs->stop = 0;
5439 }
5440 }
5441}
5442
5443/* For breakpoints that are currently marked as telling gdb to stop,
5444 check conditions (condition proper, frame, thread and ignore count)
5445 of breakpoint referred to by BS. If we should not stop for this
5446 breakpoint, set BS->stop to 0. */
5447
5448static void
5449bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5450{
5451 const struct bp_location *bl;
5452 struct breakpoint *b;
5453 int value_is_zero = 0;
5454 struct expression *cond;
5455
5456 gdb_assert (bs->stop);
5457
5458 /* BS is built for existing struct breakpoint. */
5459 bl = bs->bp_location_at;
5460 gdb_assert (bl != NULL);
5461 b = bs->breakpoint_at;
5462 gdb_assert (b != NULL);
5463
5464 /* Even if the target evaluated the condition on its end and notified GDB, we
5465 need to do so again since GDB does not know if we stopped due to a
5466 breakpoint or a single step breakpoint. */
5467
5468 if (frame_id_p (b->frame_id)
5469 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5470 {
5471 bs->stop = 0;
5472 return;
5473 }
5474
5475 /* If this is a thread/task-specific breakpoint, don't waste cpu
5476 evaluating the condition if this isn't the specified
5477 thread/task. */
5478 if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
5479 || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5480
5481 {
5482 bs->stop = 0;
5483 return;
5484 }
5485
5486 /* Evaluate extension language breakpoints that have a "stop" method
5487 implemented. */
5488 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5489
5490 if (is_watchpoint (b))
5491 {
5492 struct watchpoint *w = (struct watchpoint *) b;
5493
5494 cond = w->cond_exp.get ();
5495 }
5496 else
5497 cond = bl->cond.get ();
5498
5499 if (cond && b->disposition != disp_del_at_next_stop)
5500 {
5501 int within_current_scope = 1;
5502 struct watchpoint * w;
5503
5504 /* We use value_mark and value_free_to_mark because it could
5505 be a long time before we return to the command level and
5506 call free_all_values. We can't call free_all_values
5507 because we might be in the middle of evaluating a
5508 function call. */
5509 struct value *mark = value_mark ();
5510
5511 if (is_watchpoint (b))
5512 w = (struct watchpoint *) b;
5513 else
5514 w = NULL;
5515
5516 /* Need to select the frame, with all that implies so that
5517 the conditions will have the right context. Because we
5518 use the frame, we will not see an inlined function's
5519 variables when we arrive at a breakpoint at the start
5520 of the inlined function; the current frame will be the
5521 call site. */
5522 if (w == NULL || w->cond_exp_valid_block == NULL)
5523 select_frame (get_current_frame ());
5524 else
5525 {
5526 struct frame_info *frame;
5527
5528 /* For local watchpoint expressions, which particular
5529 instance of a local is being watched matters, so we
5530 keep track of the frame to evaluate the expression
5531 in. To evaluate the condition however, it doesn't
5532 really matter which instantiation of the function
5533 where the condition makes sense triggers the
5534 watchpoint. This allows an expression like "watch
5535 global if q > 10" set in `func', catch writes to
5536 global on all threads that call `func', or catch
5537 writes on all recursive calls of `func' by a single
5538 thread. We simply always evaluate the condition in
5539 the innermost frame that's executing where it makes
5540 sense to evaluate the condition. It seems
5541 intuitive. */
5542 frame = block_innermost_frame (w->cond_exp_valid_block);
5543 if (frame != NULL)
5544 select_frame (frame);
5545 else
5546 within_current_scope = 0;
5547 }
5548 if (within_current_scope)
5549 value_is_zero
5550 = catch_errors (breakpoint_cond_eval, cond,
5551 "Error in testing breakpoint condition:\n",
5552 RETURN_MASK_ALL);
5553 else
5554 {
5555 warning (_("Watchpoint condition cannot be tested "
5556 "in the current scope"));
5557 /* If we failed to set the right context for this
5558 watchpoint, unconditionally report it. */
5559 value_is_zero = 0;
5560 }
5561 /* FIXME-someday, should give breakpoint #. */
5562 value_free_to_mark (mark);
5563 }
5564
5565 if (cond && value_is_zero)
5566 {
5567 bs->stop = 0;
5568 }
5569 else if (b->ignore_count > 0)
5570 {
5571 b->ignore_count--;
5572 bs->stop = 0;
5573 /* Increase the hit count even though we don't stop. */
5574 ++(b->hit_count);
5575 observer_notify_breakpoint_modified (b);
5576 }
5577}
5578
5579/* Returns true if we need to track moribund locations of LOC's type
5580 on the current target. */
5581
5582static int
5583need_moribund_for_location_type (struct bp_location *loc)
5584{
5585 return ((loc->loc_type == bp_loc_software_breakpoint
5586 && !target_supports_stopped_by_sw_breakpoint ())
5587 || (loc->loc_type == bp_loc_hardware_breakpoint
5588 && !target_supports_stopped_by_hw_breakpoint ()));
5589}
5590
5591
5592/* Get a bpstat associated with having just stopped at address
5593 BP_ADDR in thread PTID.
5594
5595 Determine whether we stopped at a breakpoint, etc, or whether we
5596 don't understand this stop. Result is a chain of bpstat's such
5597 that:
5598
5599 if we don't understand the stop, the result is a null pointer.
5600
5601 if we understand why we stopped, the result is not null.
5602
5603 Each element of the chain refers to a particular breakpoint or
5604 watchpoint at which we have stopped. (We may have stopped for
5605 several reasons concurrently.)
5606
5607 Each element of the chain has valid next, breakpoint_at,
5608 commands, FIXME??? fields. */
5609
5610bpstat
5611bpstat_stop_status (struct address_space *aspace,
5612 CORE_ADDR bp_addr, ptid_t ptid,
5613 const struct target_waitstatus *ws)
5614{
5615 struct breakpoint *b = NULL;
5616 struct bp_location *bl;
5617 struct bp_location *loc;
5618 /* First item of allocated bpstat's. */
5619 bpstat bs_head = NULL, *bs_link = &bs_head;
5620 /* Pointer to the last thing in the chain currently. */
5621 bpstat bs;
5622 int ix;
5623 int need_remove_insert;
5624 int removed_any;
5625
5626 /* First, build the bpstat chain with locations that explain a
5627 target stop, while being careful to not set the target running,
5628 as that may invalidate locations (in particular watchpoint
5629 locations are recreated). Resuming will happen here with
5630 breakpoint conditions or watchpoint expressions that include
5631 inferior function calls. */
5632
5633 ALL_BREAKPOINTS (b)
5634 {
5635 if (!breakpoint_enabled (b))
5636 continue;
5637
5638 for (bl = b->loc; bl != NULL; bl = bl->next)
5639 {
5640 /* For hardware watchpoints, we look only at the first
5641 location. The watchpoint_check function will work on the
5642 entire expression, not the individual locations. For
5643 read watchpoints, the watchpoints_triggered function has
5644 checked all locations already. */
5645 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5646 break;
5647
5648 if (!bl->enabled || bl->shlib_disabled)
5649 continue;
5650
5651 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5652 continue;
5653
5654 /* Come here if it's a watchpoint, or if the break address
5655 matches. */
5656
5657 bs = bpstat_alloc (bl, &bs_link); /* Alloc a bpstat to
5658 explain stop. */
5659
5660 /* Assume we stop. Should we find a watchpoint that is not
5661 actually triggered, or if the condition of the breakpoint
5662 evaluates as false, we'll reset 'stop' to 0. */
5663 bs->stop = 1;
5664 bs->print = 1;
5665
5666 /* If this is a scope breakpoint, mark the associated
5667 watchpoint as triggered so that we will handle the
5668 out-of-scope event. We'll get to the watchpoint next
5669 iteration. */
5670 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5671 {
5672 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5673
5674 w->watchpoint_triggered = watch_triggered_yes;
5675 }
5676 }
5677 }
5678
5679 /* Check if a moribund breakpoint explains the stop. */
5680 if (!target_supports_stopped_by_sw_breakpoint ()
5681 || !target_supports_stopped_by_hw_breakpoint ())
5682 {
5683 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5684 {
5685 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5686 && need_moribund_for_location_type (loc))
5687 {
5688 bs = bpstat_alloc (loc, &bs_link);
5689 /* For hits of moribund locations, we should just proceed. */
5690 bs->stop = 0;
5691 bs->print = 0;
5692 bs->print_it = print_it_noop;
5693 }
5694 }
5695 }
5696
5697 /* A bit of special processing for shlib breakpoints. We need to
5698 process solib loading here, so that the lists of loaded and
5699 unloaded libraries are correct before we handle "catch load" and
5700 "catch unload". */
5701 for (bs = bs_head; bs != NULL; bs = bs->next)
5702 {
5703 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5704 {
5705 handle_solib_event ();
5706 break;
5707 }
5708 }
5709
5710 /* Now go through the locations that caused the target to stop, and
5711 check whether we're interested in reporting this stop to higher
5712 layers, or whether we should resume the target transparently. */
5713
5714 removed_any = 0;
5715
5716 for (bs = bs_head; bs != NULL; bs = bs->next)
5717 {
5718 if (!bs->stop)
5719 continue;
5720
5721 b = bs->breakpoint_at;
5722 b->ops->check_status (bs);
5723 if (bs->stop)
5724 {
5725 bpstat_check_breakpoint_conditions (bs, ptid);
5726
5727 if (bs->stop)
5728 {
5729 ++(b->hit_count);
5730 observer_notify_breakpoint_modified (b);
5731
5732 /* We will stop here. */
5733 if (b->disposition == disp_disable)
5734 {
5735 --(b->enable_count);
5736 if (b->enable_count <= 0)
5737 b->enable_state = bp_disabled;
5738 removed_any = 1;
5739 }
5740 if (b->silent)
5741 bs->print = 0;
5742 bs->commands = b->commands;
5743 incref_counted_command_line (bs->commands);
5744 if (command_line_is_silent (bs->commands
5745 ? bs->commands->commands : NULL))
5746 bs->print = 0;
5747
5748 b->ops->after_condition_true (bs);
5749 }
5750
5751 }
5752
5753 /* Print nothing for this entry if we don't stop or don't
5754 print. */
5755 if (!bs->stop || !bs->print)
5756 bs->print_it = print_it_noop;
5757 }
5758
5759 /* If we aren't stopping, the value of some hardware watchpoint may
5760 not have changed, but the intermediate memory locations we are
5761 watching may have. Don't bother if we're stopping; this will get
5762 done later. */
5763 need_remove_insert = 0;
5764 if (! bpstat_causes_stop (bs_head))
5765 for (bs = bs_head; bs != NULL; bs = bs->next)
5766 if (!bs->stop
5767 && bs->breakpoint_at
5768 && is_hardware_watchpoint (bs->breakpoint_at))
5769 {
5770 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5771
5772 update_watchpoint (w, 0 /* don't reparse. */);
5773 need_remove_insert = 1;
5774 }
5775
5776 if (need_remove_insert)
5777 update_global_location_list (UGLL_MAY_INSERT);
5778 else if (removed_any)
5779 update_global_location_list (UGLL_DONT_INSERT);
5780
5781 return bs_head;
5782}
5783
5784static void
5785handle_jit_event (void)
5786{
5787 struct frame_info *frame;
5788 struct gdbarch *gdbarch;
5789
5790 if (debug_infrun)
5791 fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5792
5793 /* Switch terminal for any messages produced by
5794 breakpoint_re_set. */
5795 target_terminal_ours_for_output ();
5796
5797 frame = get_current_frame ();
5798 gdbarch = get_frame_arch (frame);
5799
5800 jit_event_handler (gdbarch);
5801
5802 target_terminal_inferior ();
5803}
5804
5805/* Prepare WHAT final decision for infrun. */
5806
5807/* Decide what infrun needs to do with this bpstat. */
5808
5809struct bpstat_what
5810bpstat_what (bpstat bs_head)
5811{
5812 struct bpstat_what retval;
5813 bpstat bs;
5814
5815 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5816 retval.call_dummy = STOP_NONE;
5817 retval.is_longjmp = 0;
5818
5819 for (bs = bs_head; bs != NULL; bs = bs->next)
5820 {
5821 /* Extract this BS's action. After processing each BS, we check
5822 if its action overrides all we've seem so far. */
5823 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5824 enum bptype bptype;
5825
5826 if (bs->breakpoint_at == NULL)
5827 {
5828 /* I suspect this can happen if it was a momentary
5829 breakpoint which has since been deleted. */
5830 bptype = bp_none;
5831 }
5832 else
5833 bptype = bs->breakpoint_at->type;
5834
5835 switch (bptype)
5836 {
5837 case bp_none:
5838 break;
5839 case bp_breakpoint:
5840 case bp_hardware_breakpoint:
5841 case bp_single_step:
5842 case bp_until:
5843 case bp_finish:
5844 case bp_shlib_event:
5845 if (bs->stop)
5846 {
5847 if (bs->print)
5848 this_action = BPSTAT_WHAT_STOP_NOISY;
5849 else
5850 this_action = BPSTAT_WHAT_STOP_SILENT;
5851 }
5852 else
5853 this_action = BPSTAT_WHAT_SINGLE;
5854 break;
5855 case bp_watchpoint:
5856 case bp_hardware_watchpoint:
5857 case bp_read_watchpoint:
5858 case bp_access_watchpoint:
5859 if (bs->stop)
5860 {
5861 if (bs->print)
5862 this_action = BPSTAT_WHAT_STOP_NOISY;
5863 else
5864 this_action = BPSTAT_WHAT_STOP_SILENT;
5865 }
5866 else
5867 {
5868 /* There was a watchpoint, but we're not stopping.
5869 This requires no further action. */
5870 }
5871 break;
5872 case bp_longjmp:
5873 case bp_longjmp_call_dummy:
5874 case bp_exception:
5875 if (bs->stop)
5876 {
5877 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5878 retval.is_longjmp = bptype != bp_exception;
5879 }
5880 else
5881 this_action = BPSTAT_WHAT_SINGLE;
5882 break;
5883 case bp_longjmp_resume:
5884 case bp_exception_resume:
5885 if (bs->stop)
5886 {
5887 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5888 retval.is_longjmp = bptype == bp_longjmp_resume;
5889 }
5890 else
5891 this_action = BPSTAT_WHAT_SINGLE;
5892 break;
5893 case bp_step_resume:
5894 if (bs->stop)
5895 this_action = BPSTAT_WHAT_STEP_RESUME;
5896 else
5897 {
5898 /* It is for the wrong frame. */
5899 this_action = BPSTAT_WHAT_SINGLE;
5900 }
5901 break;
5902 case bp_hp_step_resume:
5903 if (bs->stop)
5904 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5905 else
5906 {
5907 /* It is for the wrong frame. */
5908 this_action = BPSTAT_WHAT_SINGLE;
5909 }
5910 break;
5911 case bp_watchpoint_scope:
5912 case bp_thread_event:
5913 case bp_overlay_event:
5914 case bp_longjmp_master:
5915 case bp_std_terminate_master:
5916 case bp_exception_master:
5917 this_action = BPSTAT_WHAT_SINGLE;
5918 break;
5919 case bp_catchpoint:
5920 if (bs->stop)
5921 {
5922 if (bs->print)
5923 this_action = BPSTAT_WHAT_STOP_NOISY;
5924 else
5925 this_action = BPSTAT_WHAT_STOP_SILENT;
5926 }
5927 else
5928 {
5929 /* There was a catchpoint, but we're not stopping.
5930 This requires no further action. */
5931 }
5932 break;
5933 case bp_jit_event:
5934 this_action = BPSTAT_WHAT_SINGLE;
5935 break;
5936 case bp_call_dummy:
5937 /* Make sure the action is stop (silent or noisy),
5938 so infrun.c pops the dummy frame. */
5939 retval.call_dummy = STOP_STACK_DUMMY;
5940 this_action = BPSTAT_WHAT_STOP_SILENT;
5941 break;
5942 case bp_std_terminate:
5943 /* Make sure the action is stop (silent or noisy),
5944 so infrun.c pops the dummy frame. */
5945 retval.call_dummy = STOP_STD_TERMINATE;
5946 this_action = BPSTAT_WHAT_STOP_SILENT;
5947 break;
5948 case bp_tracepoint:
5949 case bp_fast_tracepoint:
5950 case bp_static_tracepoint:
5951 /* Tracepoint hits should not be reported back to GDB, and
5952 if one got through somehow, it should have been filtered
5953 out already. */
5954 internal_error (__FILE__, __LINE__,
5955 _("bpstat_what: tracepoint encountered"));
5956 break;
5957 case bp_gnu_ifunc_resolver:
5958 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5959 this_action = BPSTAT_WHAT_SINGLE;
5960 break;
5961 case bp_gnu_ifunc_resolver_return:
5962 /* The breakpoint will be removed, execution will restart from the
5963 PC of the former breakpoint. */
5964 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5965 break;
5966
5967 case bp_dprintf:
5968 if (bs->stop)
5969 this_action = BPSTAT_WHAT_STOP_SILENT;
5970 else
5971 this_action = BPSTAT_WHAT_SINGLE;
5972 break;
5973
5974 default:
5975 internal_error (__FILE__, __LINE__,
5976 _("bpstat_what: unhandled bptype %d"), (int) bptype);
5977 }
5978
5979 retval.main_action = std::max (retval.main_action, this_action);
5980 }
5981
5982 return retval;
5983}
5984
5985void
5986bpstat_run_callbacks (bpstat bs_head)
5987{
5988 bpstat bs;
5989
5990 for (bs = bs_head; bs != NULL; bs = bs->next)
5991 {
5992 struct breakpoint *b = bs->breakpoint_at;
5993
5994 if (b == NULL)
5995 continue;
5996 switch (b->type)
5997 {
5998 case bp_jit_event:
5999 handle_jit_event ();
6000 break;
6001 case bp_gnu_ifunc_resolver:
6002 gnu_ifunc_resolver_stop (b);
6003 break;
6004 case bp_gnu_ifunc_resolver_return:
6005 gnu_ifunc_resolver_return_stop (b);
6006 break;
6007 }
6008 }
6009}
6010
6011/* Nonzero if we should step constantly (e.g. watchpoints on machines
6012 without hardware support). This isn't related to a specific bpstat,
6013 just to things like whether watchpoints are set. */
6014
6015int
6016bpstat_should_step (void)
6017{
6018 struct breakpoint *b;
6019
6020 ALL_BREAKPOINTS (b)
6021 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
6022 return 1;
6023 return 0;
6024}
6025
6026int
6027bpstat_causes_stop (bpstat bs)
6028{
6029 for (; bs != NULL; bs = bs->next)
6030 if (bs->stop)
6031 return 1;
6032
6033 return 0;
6034}
6035
6036\f
6037
6038/* Compute a string of spaces suitable to indent the next line
6039 so it starts at the position corresponding to the table column
6040 named COL_NAME in the currently active table of UIOUT. */
6041
6042static char *
6043wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
6044{
6045 static char wrap_indent[80];
6046 int i, total_width, width, align;
6047 const char *text;
6048
6049 total_width = 0;
6050 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
6051 {
6052 if (strcmp (text, col_name) == 0)
6053 {
6054 gdb_assert (total_width < sizeof wrap_indent);
6055 memset (wrap_indent, ' ', total_width);
6056 wrap_indent[total_width] = 0;
6057
6058 return wrap_indent;
6059 }
6060
6061 total_width += width + 1;
6062 }
6063
6064 return NULL;
6065}
6066
6067/* Determine if the locations of this breakpoint will have their conditions
6068 evaluated by the target, host or a mix of both. Returns the following:
6069
6070 "host": Host evals condition.
6071 "host or target": Host or Target evals condition.
6072 "target": Target evals condition.
6073*/
6074
6075static const char *
6076bp_condition_evaluator (struct breakpoint *b)
6077{
6078 struct bp_location *bl;
6079 char host_evals = 0;
6080 char target_evals = 0;
6081
6082 if (!b)
6083 return NULL;
6084
6085 if (!is_breakpoint (b))
6086 return NULL;
6087
6088 if (gdb_evaluates_breakpoint_condition_p ()
6089 || !target_supports_evaluation_of_breakpoint_conditions ())
6090 return condition_evaluation_host;
6091
6092 for (bl = b->loc; bl; bl = bl->next)
6093 {
6094 if (bl->cond_bytecode)
6095 target_evals++;
6096 else
6097 host_evals++;
6098 }
6099
6100 if (host_evals && target_evals)
6101 return condition_evaluation_both;
6102 else if (target_evals)
6103 return condition_evaluation_target;
6104 else
6105 return condition_evaluation_host;
6106}
6107
6108/* Determine the breakpoint location's condition evaluator. This is
6109 similar to bp_condition_evaluator, but for locations. */
6110
6111static const char *
6112bp_location_condition_evaluator (struct bp_location *bl)
6113{
6114 if (bl && !is_breakpoint (bl->owner))
6115 return NULL;
6116
6117 if (gdb_evaluates_breakpoint_condition_p ()
6118 || !target_supports_evaluation_of_breakpoint_conditions ())
6119 return condition_evaluation_host;
6120
6121 if (bl && bl->cond_bytecode)
6122 return condition_evaluation_target;
6123 else
6124 return condition_evaluation_host;
6125}
6126
6127/* Print the LOC location out of the list of B->LOC locations. */
6128
6129static void
6130print_breakpoint_location (struct breakpoint *b,
6131 struct bp_location *loc)
6132{
6133 struct ui_out *uiout = current_uiout;
6134
6135 scoped_restore_current_program_space restore_pspace;
6136
6137 if (loc != NULL && loc->shlib_disabled)
6138 loc = NULL;
6139
6140 if (loc != NULL)
6141 set_current_program_space (loc->pspace);
6142
6143 if (b->display_canonical)
6144 uiout->field_string ("what", event_location_to_string (b->location.get ()));
6145 else if (loc && loc->symtab)
6146 {
6147 struct symbol *sym
6148 = find_pc_sect_function (loc->address, loc->section);
6149 if (sym)
6150 {
6151 uiout->text ("in ");
6152 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
6153 uiout->text (" ");
6154 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
6155 uiout->text ("at ");
6156 }
6157 uiout->field_string ("file",
6158 symtab_to_filename_for_display (loc->symtab));
6159 uiout->text (":");
6160
6161 if (uiout->is_mi_like_p ())
6162 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
6163
6164 uiout->field_int ("line", loc->line_number);
6165 }
6166 else if (loc)
6167 {
6168 string_file stb;
6169
6170 print_address_symbolic (loc->gdbarch, loc->address, &stb,
6171 demangle, "");
6172 uiout->field_stream ("at", stb);
6173 }
6174 else
6175 {
6176 uiout->field_string ("pending",
6177 event_location_to_string (b->location.get ()));
6178 /* If extra_string is available, it could be holding a condition
6179 or dprintf arguments. In either case, make sure it is printed,
6180 too, but only for non-MI streams. */
6181 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
6182 {
6183 if (b->type == bp_dprintf)
6184 uiout->text (",");
6185 else
6186 uiout->text (" ");
6187 uiout->text (b->extra_string);
6188 }
6189 }
6190
6191 if (loc && is_breakpoint (b)
6192 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6193 && bp_condition_evaluator (b) == condition_evaluation_both)
6194 {
6195 uiout->text (" (");
6196 uiout->field_string ("evaluated-by",
6197 bp_location_condition_evaluator (loc));
6198 uiout->text (")");
6199 }
6200}
6201
6202static const char *
6203bptype_string (enum bptype type)
6204{
6205 struct ep_type_description
6206 {
6207 enum bptype type;
6208 const char *description;
6209 };
6210 static struct ep_type_description bptypes[] =
6211 {
6212 {bp_none, "?deleted?"},
6213 {bp_breakpoint, "breakpoint"},
6214 {bp_hardware_breakpoint, "hw breakpoint"},
6215 {bp_single_step, "sw single-step"},
6216 {bp_until, "until"},
6217 {bp_finish, "finish"},
6218 {bp_watchpoint, "watchpoint"},
6219 {bp_hardware_watchpoint, "hw watchpoint"},
6220 {bp_read_watchpoint, "read watchpoint"},
6221 {bp_access_watchpoint, "acc watchpoint"},
6222 {bp_longjmp, "longjmp"},
6223 {bp_longjmp_resume, "longjmp resume"},
6224 {bp_longjmp_call_dummy, "longjmp for call dummy"},
6225 {bp_exception, "exception"},
6226 {bp_exception_resume, "exception resume"},
6227 {bp_step_resume, "step resume"},
6228 {bp_hp_step_resume, "high-priority step resume"},
6229 {bp_watchpoint_scope, "watchpoint scope"},
6230 {bp_call_dummy, "call dummy"},
6231 {bp_std_terminate, "std::terminate"},
6232 {bp_shlib_event, "shlib events"},
6233 {bp_thread_event, "thread events"},
6234 {bp_overlay_event, "overlay events"},
6235 {bp_longjmp_master, "longjmp master"},
6236 {bp_std_terminate_master, "std::terminate master"},
6237 {bp_exception_master, "exception master"},
6238 {bp_catchpoint, "catchpoint"},
6239 {bp_tracepoint, "tracepoint"},
6240 {bp_fast_tracepoint, "fast tracepoint"},
6241 {bp_static_tracepoint, "static tracepoint"},
6242 {bp_dprintf, "dprintf"},
6243 {bp_jit_event, "jit events"},
6244 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6245 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6246 };
6247
6248 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6249 || ((int) type != bptypes[(int) type].type))
6250 internal_error (__FILE__, __LINE__,
6251 _("bptypes table does not describe type #%d."),
6252 (int) type);
6253
6254 return bptypes[(int) type].description;
6255}
6256
6257/* For MI, output a field named 'thread-groups' with a list as the value.
6258 For CLI, prefix the list with the string 'inf'. */
6259
6260static void
6261output_thread_groups (struct ui_out *uiout,
6262 const char *field_name,
6263 VEC(int) *inf_num,
6264 int mi_only)
6265{
6266 int is_mi = uiout->is_mi_like_p ();
6267 int inf;
6268 int i;
6269
6270 /* For backward compatibility, don't display inferiors in CLI unless
6271 there are several. Always display them for MI. */
6272 if (!is_mi && mi_only)
6273 return;
6274
6275 ui_out_emit_list list_emitter (uiout, field_name);
6276
6277 for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6278 {
6279 if (is_mi)
6280 {
6281 char mi_group[10];
6282
6283 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6284 uiout->field_string (NULL, mi_group);
6285 }
6286 else
6287 {
6288 if (i == 0)
6289 uiout->text (" inf ");
6290 else
6291 uiout->text (", ");
6292
6293 uiout->text (plongest (inf));
6294 }
6295 }
6296}
6297
6298/* Print B to gdb_stdout. */
6299
6300static void
6301print_one_breakpoint_location (struct breakpoint *b,
6302 struct bp_location *loc,
6303 int loc_number,
6304 struct bp_location **last_loc,
6305 int allflag)
6306{
6307 struct command_line *l;
6308 static char bpenables[] = "nynny";
6309
6310 struct ui_out *uiout = current_uiout;
6311 int header_of_multiple = 0;
6312 int part_of_multiple = (loc != NULL);
6313 struct value_print_options opts;
6314
6315 get_user_print_options (&opts);
6316
6317 gdb_assert (!loc || loc_number != 0);
6318 /* See comment in print_one_breakpoint concerning treatment of
6319 breakpoints with single disabled location. */
6320 if (loc == NULL
6321 && (b->loc != NULL
6322 && (b->loc->next != NULL || !b->loc->enabled)))
6323 header_of_multiple = 1;
6324 if (loc == NULL)
6325 loc = b->loc;
6326
6327 annotate_record ();
6328
6329 /* 1 */
6330 annotate_field (0);
6331 if (part_of_multiple)
6332 {
6333 char *formatted;
6334 formatted = xstrprintf ("%d.%d", b->number, loc_number);
6335 uiout->field_string ("number", formatted);
6336 xfree (formatted);
6337 }
6338 else
6339 {
6340 uiout->field_int ("number", b->number);
6341 }
6342
6343 /* 2 */
6344 annotate_field (1);
6345 if (part_of_multiple)
6346 uiout->field_skip ("type");
6347 else
6348 uiout->field_string ("type", bptype_string (b->type));
6349
6350 /* 3 */
6351 annotate_field (2);
6352 if (part_of_multiple)
6353 uiout->field_skip ("disp");
6354 else
6355 uiout->field_string ("disp", bpdisp_text (b->disposition));
6356
6357
6358 /* 4 */
6359 annotate_field (3);
6360 if (part_of_multiple)
6361 uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6362 else
6363 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6364 uiout->spaces (2);
6365
6366
6367 /* 5 and 6 */
6368 if (b->ops != NULL && b->ops->print_one != NULL)
6369 {
6370 /* Although the print_one can possibly print all locations,
6371 calling it here is not likely to get any nice result. So,
6372 make sure there's just one location. */
6373 gdb_assert (b->loc == NULL || b->loc->next == NULL);
6374 b->ops->print_one (b, last_loc);
6375 }
6376 else
6377 switch (b->type)
6378 {
6379 case bp_none:
6380 internal_error (__FILE__, __LINE__,
6381 _("print_one_breakpoint: bp_none encountered\n"));
6382 break;
6383
6384 case bp_watchpoint:
6385 case bp_hardware_watchpoint:
6386 case bp_read_watchpoint:
6387 case bp_access_watchpoint:
6388 {
6389 struct watchpoint *w = (struct watchpoint *) b;
6390
6391 /* Field 4, the address, is omitted (which makes the columns
6392 not line up too nicely with the headers, but the effect
6393 is relatively readable). */
6394 if (opts.addressprint)
6395 uiout->field_skip ("addr");
6396 annotate_field (5);
6397 uiout->field_string ("what", w->exp_string);
6398 }
6399 break;
6400
6401 case bp_breakpoint:
6402 case bp_hardware_breakpoint:
6403 case bp_single_step:
6404 case bp_until:
6405 case bp_finish:
6406 case bp_longjmp:
6407 case bp_longjmp_resume:
6408 case bp_longjmp_call_dummy:
6409 case bp_exception:
6410 case bp_exception_resume:
6411 case bp_step_resume:
6412 case bp_hp_step_resume:
6413 case bp_watchpoint_scope:
6414 case bp_call_dummy:
6415 case bp_std_terminate:
6416 case bp_shlib_event:
6417 case bp_thread_event:
6418 case bp_overlay_event:
6419 case bp_longjmp_master:
6420 case bp_std_terminate_master:
6421 case bp_exception_master:
6422 case bp_tracepoint:
6423 case bp_fast_tracepoint:
6424 case bp_static_tracepoint:
6425 case bp_dprintf:
6426 case bp_jit_event:
6427 case bp_gnu_ifunc_resolver:
6428 case bp_gnu_ifunc_resolver_return:
6429 if (opts.addressprint)
6430 {
6431 annotate_field (4);
6432 if (header_of_multiple)
6433 uiout->field_string ("addr", "<MULTIPLE>");
6434 else if (b->loc == NULL || loc->shlib_disabled)
6435 uiout->field_string ("addr", "<PENDING>");
6436 else
6437 uiout->field_core_addr ("addr",
6438 loc->gdbarch, loc->address);
6439 }
6440 annotate_field (5);
6441 if (!header_of_multiple)
6442 print_breakpoint_location (b, loc);
6443 if (b->loc)
6444 *last_loc = b->loc;
6445 break;
6446 }
6447
6448
6449 if (loc != NULL && !header_of_multiple)
6450 {
6451 struct inferior *inf;
6452 VEC(int) *inf_num = NULL;
6453 int mi_only = 1;
6454
6455 ALL_INFERIORS (inf)
6456 {
6457 if (inf->pspace == loc->pspace)
6458 VEC_safe_push (int, inf_num, inf->num);
6459 }
6460
6461 /* For backward compatibility, don't display inferiors in CLI unless
6462 there are several. Always display for MI. */
6463 if (allflag
6464 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6465 && (number_of_program_spaces () > 1
6466 || number_of_inferiors () > 1)
6467 /* LOC is for existing B, it cannot be in
6468 moribund_locations and thus having NULL OWNER. */
6469 && loc->owner->type != bp_catchpoint))
6470 mi_only = 0;
6471 output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6472 VEC_free (int, inf_num);
6473 }
6474
6475 if (!part_of_multiple)
6476 {
6477 if (b->thread != -1)
6478 {
6479 /* FIXME: This seems to be redundant and lost here; see the
6480 "stop only in" line a little further down. */
6481 uiout->text (" thread ");
6482 uiout->field_int ("thread", b->thread);
6483 }
6484 else if (b->task != 0)
6485 {
6486 uiout->text (" task ");
6487 uiout->field_int ("task", b->task);
6488 }
6489 }
6490
6491 uiout->text ("\n");
6492
6493 if (!part_of_multiple)
6494 b->ops->print_one_detail (b, uiout);
6495
6496 if (part_of_multiple && frame_id_p (b->frame_id))
6497 {
6498 annotate_field (6);
6499 uiout->text ("\tstop only in stack frame at ");
6500 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6501 the frame ID. */
6502 uiout->field_core_addr ("frame",
6503 b->gdbarch, b->frame_id.stack_addr);
6504 uiout->text ("\n");
6505 }
6506
6507 if (!part_of_multiple && b->cond_string)
6508 {
6509 annotate_field (7);
6510 if (is_tracepoint (b))
6511 uiout->text ("\ttrace only if ");
6512 else
6513 uiout->text ("\tstop only if ");
6514 uiout->field_string ("cond", b->cond_string);
6515
6516 /* Print whether the target is doing the breakpoint's condition
6517 evaluation. If GDB is doing the evaluation, don't print anything. */
6518 if (is_breakpoint (b)
6519 && breakpoint_condition_evaluation_mode ()
6520 == condition_evaluation_target)
6521 {
6522 uiout->text (" (");
6523 uiout->field_string ("evaluated-by",
6524 bp_condition_evaluator (b));
6525 uiout->text (" evals)");
6526 }
6527 uiout->text ("\n");
6528 }
6529
6530 if (!part_of_multiple && b->thread != -1)
6531 {
6532 /* FIXME should make an annotation for this. */
6533 uiout->text ("\tstop only in thread ");
6534 if (uiout->is_mi_like_p ())
6535 uiout->field_int ("thread", b->thread);
6536 else
6537 {
6538 struct thread_info *thr = find_thread_global_id (b->thread);
6539
6540 uiout->field_string ("thread", print_thread_id (thr));
6541 }
6542 uiout->text ("\n");
6543 }
6544
6545 if (!part_of_multiple)
6546 {
6547 if (b->hit_count)
6548 {
6549 /* FIXME should make an annotation for this. */
6550 if (is_catchpoint (b))
6551 uiout->text ("\tcatchpoint");
6552 else if (is_tracepoint (b))
6553 uiout->text ("\ttracepoint");
6554 else
6555 uiout->text ("\tbreakpoint");
6556 uiout->text (" already hit ");
6557 uiout->field_int ("times", b->hit_count);
6558 if (b->hit_count == 1)
6559 uiout->text (" time\n");
6560 else
6561 uiout->text (" times\n");
6562 }
6563 else
6564 {
6565 /* Output the count also if it is zero, but only if this is mi. */
6566 if (uiout->is_mi_like_p ())
6567 uiout->field_int ("times", b->hit_count);
6568 }
6569 }
6570
6571 if (!part_of_multiple && b->ignore_count)
6572 {
6573 annotate_field (8);
6574 uiout->text ("\tignore next ");
6575 uiout->field_int ("ignore", b->ignore_count);
6576 uiout->text (" hits\n");
6577 }
6578
6579 /* Note that an enable count of 1 corresponds to "enable once"
6580 behavior, which is reported by the combination of enablement and
6581 disposition, so we don't need to mention it here. */
6582 if (!part_of_multiple && b->enable_count > 1)
6583 {
6584 annotate_field (8);
6585 uiout->text ("\tdisable after ");
6586 /* Tweak the wording to clarify that ignore and enable counts
6587 are distinct, and have additive effect. */
6588 if (b->ignore_count)
6589 uiout->text ("additional ");
6590 else
6591 uiout->text ("next ");
6592 uiout->field_int ("enable", b->enable_count);
6593 uiout->text (" hits\n");
6594 }
6595
6596 if (!part_of_multiple && is_tracepoint (b))
6597 {
6598 struct tracepoint *tp = (struct tracepoint *) b;
6599
6600 if (tp->traceframe_usage)
6601 {
6602 uiout->text ("\ttrace buffer usage ");
6603 uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6604 uiout->text (" bytes\n");
6605 }
6606 }
6607
6608 l = b->commands ? b->commands->commands : NULL;
6609 if (!part_of_multiple && l)
6610 {
6611 annotate_field (9);
6612 ui_out_emit_tuple tuple_emitter (uiout, "script");
6613 print_command_lines (uiout, l, 4);
6614 }
6615
6616 if (is_tracepoint (b))
6617 {
6618 struct tracepoint *t = (struct tracepoint *) b;
6619
6620 if (!part_of_multiple && t->pass_count)
6621 {
6622 annotate_field (10);
6623 uiout->text ("\tpass count ");
6624 uiout->field_int ("pass", t->pass_count);
6625 uiout->text (" \n");
6626 }
6627
6628 /* Don't display it when tracepoint or tracepoint location is
6629 pending. */
6630 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6631 {
6632 annotate_field (11);
6633
6634 if (uiout->is_mi_like_p ())
6635 uiout->field_string ("installed",
6636 loc->inserted ? "y" : "n");
6637 else
6638 {
6639 if (loc->inserted)
6640 uiout->text ("\t");
6641 else
6642 uiout->text ("\tnot ");
6643 uiout->text ("installed on target\n");
6644 }
6645 }
6646 }
6647
6648 if (uiout->is_mi_like_p () && !part_of_multiple)
6649 {
6650 if (is_watchpoint (b))
6651 {
6652 struct watchpoint *w = (struct watchpoint *) b;
6653
6654 uiout->field_string ("original-location", w->exp_string);
6655 }
6656 else if (b->location != NULL
6657 && event_location_to_string (b->location.get ()) != NULL)
6658 uiout->field_string ("original-location",
6659 event_location_to_string (b->location.get ()));
6660 }
6661}
6662
6663static void
6664print_one_breakpoint (struct breakpoint *b,
6665 struct bp_location **last_loc,
6666 int allflag)
6667{
6668 struct ui_out *uiout = current_uiout;
6669
6670 {
6671 ui_out_emit_tuple tuple_emitter (uiout, "bkpt");
6672
6673 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6674 }
6675
6676 /* If this breakpoint has custom print function,
6677 it's already printed. Otherwise, print individual
6678 locations, if any. */
6679 if (b->ops == NULL || b->ops->print_one == NULL)
6680 {
6681 /* If breakpoint has a single location that is disabled, we
6682 print it as if it had several locations, since otherwise it's
6683 hard to represent "breakpoint enabled, location disabled"
6684 situation.
6685
6686 Note that while hardware watchpoints have several locations
6687 internally, that's not a property exposed to user. */
6688 if (b->loc
6689 && !is_hardware_watchpoint (b)
6690 && (b->loc->next || !b->loc->enabled))
6691 {
6692 struct bp_location *loc;
6693 int n = 1;
6694
6695 for (loc = b->loc; loc; loc = loc->next, ++n)
6696 {
6697 ui_out_emit_tuple tuple_emitter (uiout, NULL);
6698 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6699 }
6700 }
6701 }
6702}
6703
6704static int
6705breakpoint_address_bits (struct breakpoint *b)
6706{
6707 int print_address_bits = 0;
6708 struct bp_location *loc;
6709
6710 /* Software watchpoints that aren't watching memory don't have an
6711 address to print. */
6712 if (is_no_memory_software_watchpoint (b))
6713 return 0;
6714
6715 for (loc = b->loc; loc; loc = loc->next)
6716 {
6717 int addr_bit;
6718
6719 addr_bit = gdbarch_addr_bit (loc->gdbarch);
6720 if (addr_bit > print_address_bits)
6721 print_address_bits = addr_bit;
6722 }
6723
6724 return print_address_bits;
6725}
6726
6727struct captured_breakpoint_query_args
6728 {
6729 int bnum;
6730 };
6731
6732static int
6733do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6734{
6735 struct captured_breakpoint_query_args *args
6736 = (struct captured_breakpoint_query_args *) data;
6737 struct breakpoint *b;
6738 struct bp_location *dummy_loc = NULL;
6739
6740 ALL_BREAKPOINTS (b)
6741 {
6742 if (args->bnum == b->number)
6743 {
6744 print_one_breakpoint (b, &dummy_loc, 0);
6745 return GDB_RC_OK;
6746 }
6747 }
6748 return GDB_RC_NONE;
6749}
6750
6751enum gdb_rc
6752gdb_breakpoint_query (struct ui_out *uiout, int bnum,
6753 char **error_message)
6754{
6755 struct captured_breakpoint_query_args args;
6756
6757 args.bnum = bnum;
6758 /* For the moment we don't trust print_one_breakpoint() to not throw
6759 an error. */
6760 if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6761 error_message, RETURN_MASK_ALL) < 0)
6762 return GDB_RC_FAIL;
6763 else
6764 return GDB_RC_OK;
6765}
6766
6767/* Return true if this breakpoint was set by the user, false if it is
6768 internal or momentary. */
6769
6770int
6771user_breakpoint_p (struct breakpoint *b)
6772{
6773 return b->number > 0;
6774}
6775
6776/* See breakpoint.h. */
6777
6778int
6779pending_breakpoint_p (struct breakpoint *b)
6780{
6781 return b->loc == NULL;
6782}
6783
6784/* Print information on user settable breakpoint (watchpoint, etc)
6785 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6786 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6787 FILTER is non-NULL, call it on each breakpoint and only include the
6788 ones for which it returns non-zero. Return the total number of
6789 breakpoints listed. */
6790
6791static int
6792breakpoint_1 (char *args, int allflag,
6793 int (*filter) (const struct breakpoint *))
6794{
6795 struct breakpoint *b;
6796 struct bp_location *last_loc = NULL;
6797 int nr_printable_breakpoints;
6798 struct value_print_options opts;
6799 int print_address_bits = 0;
6800 int print_type_col_width = 14;
6801 struct ui_out *uiout = current_uiout;
6802
6803 get_user_print_options (&opts);
6804
6805 /* Compute the number of rows in the table, as well as the size
6806 required for address fields. */
6807 nr_printable_breakpoints = 0;
6808 ALL_BREAKPOINTS (b)
6809 {
6810 /* If we have a filter, only list the breakpoints it accepts. */
6811 if (filter && !filter (b))
6812 continue;
6813
6814 /* If we have an "args" string, it is a list of breakpoints to
6815 accept. Skip the others. */
6816 if (args != NULL && *args != '\0')
6817 {
6818 if (allflag && parse_and_eval_long (args) != b->number)
6819 continue;
6820 if (!allflag && !number_is_in_list (args, b->number))
6821 continue;
6822 }
6823
6824 if (allflag || user_breakpoint_p (b))
6825 {
6826 int addr_bit, type_len;
6827
6828 addr_bit = breakpoint_address_bits (b);
6829 if (addr_bit > print_address_bits)
6830 print_address_bits = addr_bit;
6831
6832 type_len = strlen (bptype_string (b->type));
6833 if (type_len > print_type_col_width)
6834 print_type_col_width = type_len;
6835
6836 nr_printable_breakpoints++;
6837 }
6838 }
6839
6840 {
6841 ui_out_emit_table table_emitter (uiout,
6842 opts.addressprint ? 6 : 5,
6843 nr_printable_breakpoints,
6844 "BreakpointTable");
6845
6846 if (nr_printable_breakpoints > 0)
6847 annotate_breakpoints_headers ();
6848 if (nr_printable_breakpoints > 0)
6849 annotate_field (0);
6850 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6851 if (nr_printable_breakpoints > 0)
6852 annotate_field (1);
6853 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6854 if (nr_printable_breakpoints > 0)
6855 annotate_field (2);
6856 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6857 if (nr_printable_breakpoints > 0)
6858 annotate_field (3);
6859 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6860 if (opts.addressprint)
6861 {
6862 if (nr_printable_breakpoints > 0)
6863 annotate_field (4);
6864 if (print_address_bits <= 32)
6865 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6866 else
6867 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6868 }
6869 if (nr_printable_breakpoints > 0)
6870 annotate_field (5);
6871 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6872 uiout->table_body ();
6873 if (nr_printable_breakpoints > 0)
6874 annotate_breakpoints_table ();
6875
6876 ALL_BREAKPOINTS (b)
6877 {
6878 QUIT;
6879 /* If we have a filter, only list the breakpoints it accepts. */
6880 if (filter && !filter (b))
6881 continue;
6882
6883 /* If we have an "args" string, it is a list of breakpoints to
6884 accept. Skip the others. */
6885
6886 if (args != NULL && *args != '\0')
6887 {
6888 if (allflag) /* maintenance info breakpoint */
6889 {
6890 if (parse_and_eval_long (args) != b->number)
6891 continue;
6892 }
6893 else /* all others */
6894 {
6895 if (!number_is_in_list (args, b->number))
6896 continue;
6897 }
6898 }
6899 /* We only print out user settable breakpoints unless the
6900 allflag is set. */
6901 if (allflag || user_breakpoint_p (b))
6902 print_one_breakpoint (b, &last_loc, allflag);
6903 }
6904 }
6905
6906 if (nr_printable_breakpoints == 0)
6907 {
6908 /* If there's a filter, let the caller decide how to report
6909 empty list. */
6910 if (!filter)
6911 {
6912 if (args == NULL || *args == '\0')
6913 uiout->message ("No breakpoints or watchpoints.\n");
6914 else
6915 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6916 args);
6917 }
6918 }
6919 else
6920 {
6921 if (last_loc && !server_command)
6922 set_next_address (last_loc->gdbarch, last_loc->address);
6923 }
6924
6925 /* FIXME? Should this be moved up so that it is only called when
6926 there have been breakpoints? */
6927 annotate_breakpoints_table_end ();
6928
6929 return nr_printable_breakpoints;
6930}
6931
6932/* Display the value of default-collect in a way that is generally
6933 compatible with the breakpoint list. */
6934
6935static void
6936default_collect_info (void)
6937{
6938 struct ui_out *uiout = current_uiout;
6939
6940 /* If it has no value (which is frequently the case), say nothing; a
6941 message like "No default-collect." gets in user's face when it's
6942 not wanted. */
6943 if (!*default_collect)
6944 return;
6945
6946 /* The following phrase lines up nicely with per-tracepoint collect
6947 actions. */
6948 uiout->text ("default collect ");
6949 uiout->field_string ("default-collect", default_collect);
6950 uiout->text (" \n");
6951}
6952
6953static void
6954info_breakpoints_command (char *args, int from_tty)
6955{
6956 breakpoint_1 (args, 0, NULL);
6957
6958 default_collect_info ();
6959}
6960
6961static void
6962info_watchpoints_command (char *args, int from_tty)
6963{
6964 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6965 struct ui_out *uiout = current_uiout;
6966
6967 if (num_printed == 0)
6968 {
6969 if (args == NULL || *args == '\0')
6970 uiout->message ("No watchpoints.\n");
6971 else
6972 uiout->message ("No watchpoint matching '%s'.\n", args);
6973 }
6974}
6975
6976static void
6977maintenance_info_breakpoints (char *args, int from_tty)
6978{
6979 breakpoint_1 (args, 1, NULL);
6980
6981 default_collect_info ();
6982}
6983
6984static int
6985breakpoint_has_pc (struct breakpoint *b,
6986 struct program_space *pspace,
6987 CORE_ADDR pc, struct obj_section *section)
6988{
6989 struct bp_location *bl = b->loc;
6990
6991 for (; bl; bl = bl->next)
6992 {
6993 if (bl->pspace == pspace
6994 && bl->address == pc
6995 && (!overlay_debugging || bl->section == section))
6996 return 1;
6997 }
6998 return 0;
6999}
7000
7001/* Print a message describing any user-breakpoints set at PC. This
7002 concerns with logical breakpoints, so we match program spaces, not
7003 address spaces. */
7004
7005static void
7006describe_other_breakpoints (struct gdbarch *gdbarch,
7007 struct program_space *pspace, CORE_ADDR pc,
7008 struct obj_section *section, int thread)
7009{
7010 int others = 0;
7011 struct breakpoint *b;
7012
7013 ALL_BREAKPOINTS (b)
7014 others += (user_breakpoint_p (b)
7015 && breakpoint_has_pc (b, pspace, pc, section));
7016 if (others > 0)
7017 {
7018 if (others == 1)
7019 printf_filtered (_("Note: breakpoint "));
7020 else /* if (others == ???) */
7021 printf_filtered (_("Note: breakpoints "));
7022 ALL_BREAKPOINTS (b)
7023 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
7024 {
7025 others--;
7026 printf_filtered ("%d", b->number);
7027 if (b->thread == -1 && thread != -1)
7028 printf_filtered (" (all threads)");
7029 else if (b->thread != -1)
7030 printf_filtered (" (thread %d)", b->thread);
7031 printf_filtered ("%s%s ",
7032 ((b->enable_state == bp_disabled
7033 || b->enable_state == bp_call_disabled)
7034 ? " (disabled)"
7035 : ""),
7036 (others > 1) ? ","
7037 : ((others == 1) ? " and" : ""));
7038 }
7039 printf_filtered (_("also set at pc "));
7040 fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
7041 printf_filtered (".\n");
7042 }
7043}
7044\f
7045
7046/* Return true iff it is meaningful to use the address member of
7047 BPT locations. For some breakpoint types, the locations' address members
7048 are irrelevant and it makes no sense to attempt to compare them to other
7049 addresses (or use them for any other purpose either).
7050
7051 More specifically, each of the following breakpoint types will
7052 always have a zero valued location address and we don't want to mark
7053 breakpoints of any of these types to be a duplicate of an actual
7054 breakpoint location at address zero:
7055
7056 bp_watchpoint
7057 bp_catchpoint
7058
7059*/
7060
7061static int
7062breakpoint_address_is_meaningful (struct breakpoint *bpt)
7063{
7064 enum bptype type = bpt->type;
7065
7066 return (type != bp_watchpoint && type != bp_catchpoint);
7067}
7068
7069/* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
7070 true if LOC1 and LOC2 represent the same watchpoint location. */
7071
7072static int
7073watchpoint_locations_match (struct bp_location *loc1,
7074 struct bp_location *loc2)
7075{
7076 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
7077 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
7078
7079 /* Both of them must exist. */
7080 gdb_assert (w1 != NULL);
7081 gdb_assert (w2 != NULL);
7082
7083 /* If the target can evaluate the condition expression in hardware,
7084 then we we need to insert both watchpoints even if they are at
7085 the same place. Otherwise the watchpoint will only trigger when
7086 the condition of whichever watchpoint was inserted evaluates to
7087 true, not giving a chance for GDB to check the condition of the
7088 other watchpoint. */
7089 if ((w1->cond_exp
7090 && target_can_accel_watchpoint_condition (loc1->address,
7091 loc1->length,
7092 loc1->watchpoint_type,
7093 w1->cond_exp.get ()))
7094 || (w2->cond_exp
7095 && target_can_accel_watchpoint_condition (loc2->address,
7096 loc2->length,
7097 loc2->watchpoint_type,
7098 w2->cond_exp.get ())))
7099 return 0;
7100
7101 /* Note that this checks the owner's type, not the location's. In
7102 case the target does not support read watchpoints, but does
7103 support access watchpoints, we'll have bp_read_watchpoint
7104 watchpoints with hw_access locations. Those should be considered
7105 duplicates of hw_read locations. The hw_read locations will
7106 become hw_access locations later. */
7107 return (loc1->owner->type == loc2->owner->type
7108 && loc1->pspace->aspace == loc2->pspace->aspace
7109 && loc1->address == loc2->address
7110 && loc1->length == loc2->length);
7111}
7112
7113/* See breakpoint.h. */
7114
7115int
7116breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
7117 struct address_space *aspace2, CORE_ADDR addr2)
7118{
7119 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7120 || aspace1 == aspace2)
7121 && addr1 == addr2);
7122}
7123
7124/* Returns true if {ASPACE2,ADDR2} falls within the range determined by
7125 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
7126 matches ASPACE2. On targets that have global breakpoints, the address
7127 space doesn't really matter. */
7128
7129static int
7130breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
7131 int len1, struct address_space *aspace2,
7132 CORE_ADDR addr2)
7133{
7134 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7135 || aspace1 == aspace2)
7136 && addr2 >= addr1 && addr2 < addr1 + len1);
7137}
7138
7139/* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
7140 a ranged breakpoint. In most targets, a match happens only if ASPACE
7141 matches the breakpoint's address space. On targets that have global
7142 breakpoints, the address space doesn't really matter. */
7143
7144static int
7145breakpoint_location_address_match (struct bp_location *bl,
7146 struct address_space *aspace,
7147 CORE_ADDR addr)
7148{
7149 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
7150 aspace, addr)
7151 || (bl->length
7152 && breakpoint_address_match_range (bl->pspace->aspace,
7153 bl->address, bl->length,
7154 aspace, addr)));
7155}
7156
7157/* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
7158 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
7159 match happens only if ASPACE matches the breakpoint's address
7160 space. On targets that have global breakpoints, the address space
7161 doesn't really matter. */
7162
7163static int
7164breakpoint_location_address_range_overlap (struct bp_location *bl,
7165 struct address_space *aspace,
7166 CORE_ADDR addr, int len)
7167{
7168 if (gdbarch_has_global_breakpoints (target_gdbarch ())
7169 || bl->pspace->aspace == aspace)
7170 {
7171 int bl_len = bl->length != 0 ? bl->length : 1;
7172
7173 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
7174 return 1;
7175 }
7176 return 0;
7177}
7178
7179/* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7180 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7181 true, otherwise returns false. */
7182
7183static int
7184tracepoint_locations_match (struct bp_location *loc1,
7185 struct bp_location *loc2)
7186{
7187 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7188 /* Since tracepoint locations are never duplicated with others', tracepoint
7189 locations at the same address of different tracepoints are regarded as
7190 different locations. */
7191 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7192 else
7193 return 0;
7194}
7195
7196/* Assuming LOC1 and LOC2's types' have meaningful target addresses
7197 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
7198 represent the same location. */
7199
7200static int
7201breakpoint_locations_match (struct bp_location *loc1,
7202 struct bp_location *loc2)
7203{
7204 int hw_point1, hw_point2;
7205
7206 /* Both of them must not be in moribund_locations. */
7207 gdb_assert (loc1->owner != NULL);
7208 gdb_assert (loc2->owner != NULL);
7209
7210 hw_point1 = is_hardware_watchpoint (loc1->owner);
7211 hw_point2 = is_hardware_watchpoint (loc2->owner);
7212
7213 if (hw_point1 != hw_point2)
7214 return 0;
7215 else if (hw_point1)
7216 return watchpoint_locations_match (loc1, loc2);
7217 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7218 return tracepoint_locations_match (loc1, loc2);
7219 else
7220 /* We compare bp_location.length in order to cover ranged breakpoints. */
7221 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7222 loc2->pspace->aspace, loc2->address)
7223 && loc1->length == loc2->length);
7224}
7225
7226static void
7227breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7228 int bnum, int have_bnum)
7229{
7230 /* The longest string possibly returned by hex_string_custom
7231 is 50 chars. These must be at least that big for safety. */
7232 char astr1[64];
7233 char astr2[64];
7234
7235 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7236 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7237 if (have_bnum)
7238 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7239 bnum, astr1, astr2);
7240 else
7241 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7242}
7243
7244/* Adjust a breakpoint's address to account for architectural
7245 constraints on breakpoint placement. Return the adjusted address.
7246 Note: Very few targets require this kind of adjustment. For most
7247 targets, this function is simply the identity function. */
7248
7249static CORE_ADDR
7250adjust_breakpoint_address (struct gdbarch *gdbarch,
7251 CORE_ADDR bpaddr, enum bptype bptype)
7252{
7253 if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7254 {
7255 /* Very few targets need any kind of breakpoint adjustment. */
7256 return bpaddr;
7257 }
7258 else if (bptype == bp_watchpoint
7259 || bptype == bp_hardware_watchpoint
7260 || bptype == bp_read_watchpoint
7261 || bptype == bp_access_watchpoint
7262 || bptype == bp_catchpoint)
7263 {
7264 /* Watchpoints and the various bp_catch_* eventpoints should not
7265 have their addresses modified. */
7266 return bpaddr;
7267 }
7268 else if (bptype == bp_single_step)
7269 {
7270 /* Single-step breakpoints should not have their addresses
7271 modified. If there's any architectural constrain that
7272 applies to this address, then it should have already been
7273 taken into account when the breakpoint was created in the
7274 first place. If we didn't do this, stepping through e.g.,
7275 Thumb-2 IT blocks would break. */
7276 return bpaddr;
7277 }
7278 else
7279 {
7280 CORE_ADDR adjusted_bpaddr;
7281
7282 /* Some targets have architectural constraints on the placement
7283 of breakpoint instructions. Obtain the adjusted address. */
7284 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7285
7286 /* An adjusted breakpoint address can significantly alter
7287 a user's expectations. Print a warning if an adjustment
7288 is required. */
7289 if (adjusted_bpaddr != bpaddr)
7290 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7291
7292 return adjusted_bpaddr;
7293 }
7294}
7295
7296bp_location::bp_location (const bp_location_ops *ops, breakpoint *owner)
7297{
7298 bp_location *loc = this;
7299
7300 gdb_assert (ops != NULL);
7301
7302 loc->ops = ops;
7303 loc->owner = owner;
7304 loc->cond_bytecode = NULL;
7305 loc->shlib_disabled = 0;
7306 loc->enabled = 1;
7307
7308 switch (owner->type)
7309 {
7310 case bp_breakpoint:
7311 case bp_single_step:
7312 case bp_until:
7313 case bp_finish:
7314 case bp_longjmp:
7315 case bp_longjmp_resume:
7316 case bp_longjmp_call_dummy:
7317 case bp_exception:
7318 case bp_exception_resume:
7319 case bp_step_resume:
7320 case bp_hp_step_resume:
7321 case bp_watchpoint_scope:
7322 case bp_call_dummy:
7323 case bp_std_terminate:
7324 case bp_shlib_event:
7325 case bp_thread_event:
7326 case bp_overlay_event:
7327 case bp_jit_event:
7328 case bp_longjmp_master:
7329 case bp_std_terminate_master:
7330 case bp_exception_master:
7331 case bp_gnu_ifunc_resolver:
7332 case bp_gnu_ifunc_resolver_return:
7333 case bp_dprintf:
7334 loc->loc_type = bp_loc_software_breakpoint;
7335 mark_breakpoint_location_modified (loc);
7336 break;
7337 case bp_hardware_breakpoint:
7338 loc->loc_type = bp_loc_hardware_breakpoint;
7339 mark_breakpoint_location_modified (loc);
7340 break;
7341 case bp_hardware_watchpoint:
7342 case bp_read_watchpoint:
7343 case bp_access_watchpoint:
7344 loc->loc_type = bp_loc_hardware_watchpoint;
7345 break;
7346 case bp_watchpoint:
7347 case bp_catchpoint:
7348 case bp_tracepoint:
7349 case bp_fast_tracepoint:
7350 case bp_static_tracepoint:
7351 loc->loc_type = bp_loc_other;
7352 break;
7353 default:
7354 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7355 }
7356
7357 loc->refc = 1;
7358}
7359
7360/* Allocate a struct bp_location. */
7361
7362static struct bp_location *
7363allocate_bp_location (struct breakpoint *bpt)
7364{
7365 return bpt->ops->allocate_location (bpt);
7366}
7367
7368static void
7369free_bp_location (struct bp_location *loc)
7370{
7371 loc->ops->dtor (loc);
7372 delete loc;
7373}
7374
7375/* Increment reference count. */
7376
7377static void
7378incref_bp_location (struct bp_location *bl)
7379{
7380 ++bl->refc;
7381}
7382
7383/* Decrement reference count. If the reference count reaches 0,
7384 destroy the bp_location. Sets *BLP to NULL. */
7385
7386static void
7387decref_bp_location (struct bp_location **blp)
7388{
7389 gdb_assert ((*blp)->refc > 0);
7390
7391 if (--(*blp)->refc == 0)
7392 free_bp_location (*blp);
7393 *blp = NULL;
7394}
7395
7396/* Add breakpoint B at the end of the global breakpoint chain. */
7397
7398static breakpoint *
7399add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7400{
7401 struct breakpoint *b1;
7402 struct breakpoint *result = b.get ();
7403
7404 /* Add this breakpoint to the end of the chain so that a list of
7405 breakpoints will come out in order of increasing numbers. */
7406
7407 b1 = breakpoint_chain;
7408 if (b1 == 0)
7409 breakpoint_chain = b.release ();
7410 else
7411 {
7412 while (b1->next)
7413 b1 = b1->next;
7414 b1->next = b.release ();
7415 }
7416
7417 return result;
7418}
7419
7420/* Initializes breakpoint B with type BPTYPE and no locations yet. */
7421
7422static void
7423init_raw_breakpoint_without_location (struct breakpoint *b,
7424 struct gdbarch *gdbarch,
7425 enum bptype bptype,
7426 const struct breakpoint_ops *ops)
7427{
7428 gdb_assert (ops != NULL);
7429
7430 b->ops = ops;
7431 b->type = bptype;
7432 b->gdbarch = gdbarch;
7433 b->language = current_language->la_language;
7434 b->input_radix = input_radix;
7435 b->related_breakpoint = b;
7436}
7437
7438/* Helper to set_raw_breakpoint below. Creates a breakpoint
7439 that has type BPTYPE and has no locations as yet. */
7440
7441static struct breakpoint *
7442set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7443 enum bptype bptype,
7444 const struct breakpoint_ops *ops)
7445{
7446 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7447
7448 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7449 return add_to_breakpoint_chain (std::move (b));
7450}
7451
7452/* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7453 resolutions should be made as the user specified the location explicitly
7454 enough. */
7455
7456static void
7457set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7458{
7459 gdb_assert (loc->owner != NULL);
7460
7461 if (loc->owner->type == bp_breakpoint
7462 || loc->owner->type == bp_hardware_breakpoint
7463 || is_tracepoint (loc->owner))
7464 {
7465 int is_gnu_ifunc;
7466 const char *function_name;
7467 CORE_ADDR func_addr;
7468
7469 find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7470 &func_addr, NULL, &is_gnu_ifunc);
7471
7472 if (is_gnu_ifunc && !explicit_loc)
7473 {
7474 struct breakpoint *b = loc->owner;
7475
7476 gdb_assert (loc->pspace == current_program_space);
7477 if (gnu_ifunc_resolve_name (function_name,
7478 &loc->requested_address))
7479 {
7480 /* Recalculate ADDRESS based on new REQUESTED_ADDRESS. */
7481 loc->address = adjust_breakpoint_address (loc->gdbarch,
7482 loc->requested_address,
7483 b->type);
7484 }
7485 else if (b->type == bp_breakpoint && b->loc == loc
7486 && loc->next == NULL && b->related_breakpoint == b)
7487 {
7488 /* Create only the whole new breakpoint of this type but do not
7489 mess more complicated breakpoints with multiple locations. */
7490 b->type = bp_gnu_ifunc_resolver;
7491 /* Remember the resolver's address for use by the return
7492 breakpoint. */
7493 loc->related_address = func_addr;
7494 }
7495 }
7496
7497 if (function_name)
7498 loc->function_name = xstrdup (function_name);
7499 }
7500}
7501
7502/* Attempt to determine architecture of location identified by SAL. */
7503struct gdbarch *
7504get_sal_arch (struct symtab_and_line sal)
7505{
7506 if (sal.section)
7507 return get_objfile_arch (sal.section->objfile);
7508 if (sal.symtab)
7509 return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7510
7511 return NULL;
7512}
7513
7514/* Low level routine for partially initializing a breakpoint of type
7515 BPTYPE. The newly created breakpoint's address, section, source
7516 file name, and line number are provided by SAL.
7517
7518 It is expected that the caller will complete the initialization of
7519 the newly created breakpoint struct as well as output any status
7520 information regarding the creation of a new breakpoint. */
7521
7522static void
7523init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7524 struct symtab_and_line sal, enum bptype bptype,
7525 const struct breakpoint_ops *ops)
7526{
7527 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7528
7529 add_location_to_breakpoint (b, &sal);
7530
7531 if (bptype != bp_catchpoint)
7532 gdb_assert (sal.pspace != NULL);
7533
7534 /* Store the program space that was used to set the breakpoint,
7535 except for ordinary breakpoints, which are independent of the
7536 program space. */
7537 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7538 b->pspace = sal.pspace;
7539}
7540
7541/* set_raw_breakpoint is a low level routine for allocating and
7542 partially initializing a breakpoint of type BPTYPE. The newly
7543 created breakpoint's address, section, source file name, and line
7544 number are provided by SAL. The newly created and partially
7545 initialized breakpoint is added to the breakpoint chain and
7546 is also returned as the value of this function.
7547
7548 It is expected that the caller will complete the initialization of
7549 the newly created breakpoint struct as well as output any status
7550 information regarding the creation of a new breakpoint. In
7551 particular, set_raw_breakpoint does NOT set the breakpoint
7552 number! Care should be taken to not allow an error to occur
7553 prior to completing the initialization of the breakpoint. If this
7554 should happen, a bogus breakpoint will be left on the chain. */
7555
7556struct breakpoint *
7557set_raw_breakpoint (struct gdbarch *gdbarch,
7558 struct symtab_and_line sal, enum bptype bptype,
7559 const struct breakpoint_ops *ops)
7560{
7561 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7562
7563 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7564 return add_to_breakpoint_chain (std::move (b));
7565}
7566
7567/* Call this routine when stepping and nexting to enable a breakpoint
7568 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7569 initiated the operation. */
7570
7571void
7572set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7573{
7574 struct breakpoint *b, *b_tmp;
7575 int thread = tp->global_num;
7576
7577 /* To avoid having to rescan all objfile symbols at every step,
7578 we maintain a list of continually-inserted but always disabled
7579 longjmp "master" breakpoints. Here, we simply create momentary
7580 clones of those and enable them for the requested thread. */
7581 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7582 if (b->pspace == current_program_space
7583 && (b->type == bp_longjmp_master
7584 || b->type == bp_exception_master))
7585 {
7586 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7587 struct breakpoint *clone;
7588
7589 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7590 after their removal. */
7591 clone = momentary_breakpoint_from_master (b, type,
7592 &momentary_breakpoint_ops, 1);
7593 clone->thread = thread;
7594 }
7595
7596 tp->initiating_frame = frame;
7597}
7598
7599/* Delete all longjmp breakpoints from THREAD. */
7600void
7601delete_longjmp_breakpoint (int thread)
7602{
7603 struct breakpoint *b, *b_tmp;
7604
7605 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7606 if (b->type == bp_longjmp || b->type == bp_exception)
7607 {
7608 if (b->thread == thread)
7609 delete_breakpoint (b);
7610 }
7611}
7612
7613void
7614delete_longjmp_breakpoint_at_next_stop (int thread)
7615{
7616 struct breakpoint *b, *b_tmp;
7617
7618 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7619 if (b->type == bp_longjmp || b->type == bp_exception)
7620 {
7621 if (b->thread == thread)
7622 b->disposition = disp_del_at_next_stop;
7623 }
7624}
7625
7626/* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7627 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7628 pointer to any of them. Return NULL if this system cannot place longjmp
7629 breakpoints. */
7630
7631struct breakpoint *
7632set_longjmp_breakpoint_for_call_dummy (void)
7633{
7634 struct breakpoint *b, *retval = NULL;
7635
7636 ALL_BREAKPOINTS (b)
7637 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7638 {
7639 struct breakpoint *new_b;
7640
7641 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7642 &momentary_breakpoint_ops,
7643 1);
7644 new_b->thread = ptid_to_global_thread_id (inferior_ptid);
7645
7646 /* Link NEW_B into the chain of RETVAL breakpoints. */
7647
7648 gdb_assert (new_b->related_breakpoint == new_b);
7649 if (retval == NULL)
7650 retval = new_b;
7651 new_b->related_breakpoint = retval;
7652 while (retval->related_breakpoint != new_b->related_breakpoint)
7653 retval = retval->related_breakpoint;
7654 retval->related_breakpoint = new_b;
7655 }
7656
7657 return retval;
7658}
7659
7660/* Verify all existing dummy frames and their associated breakpoints for
7661 TP. Remove those which can no longer be found in the current frame
7662 stack.
7663
7664 You should call this function only at places where it is safe to currently
7665 unwind the whole stack. Failed stack unwind would discard live dummy
7666 frames. */
7667
7668void
7669check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7670{
7671 struct breakpoint *b, *b_tmp;
7672
7673 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7674 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7675 {
7676 struct breakpoint *dummy_b = b->related_breakpoint;
7677
7678 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7679 dummy_b = dummy_b->related_breakpoint;
7680 if (dummy_b->type != bp_call_dummy
7681 || frame_find_by_id (dummy_b->frame_id) != NULL)
7682 continue;
7683
7684 dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7685
7686 while (b->related_breakpoint != b)
7687 {
7688 if (b_tmp == b->related_breakpoint)
7689 b_tmp = b->related_breakpoint->next;
7690 delete_breakpoint (b->related_breakpoint);
7691 }
7692 delete_breakpoint (b);
7693 }
7694}
7695
7696void
7697enable_overlay_breakpoints (void)
7698{
7699 struct breakpoint *b;
7700
7701 ALL_BREAKPOINTS (b)
7702 if (b->type == bp_overlay_event)
7703 {
7704 b->enable_state = bp_enabled;
7705 update_global_location_list (UGLL_MAY_INSERT);
7706 overlay_events_enabled = 1;
7707 }
7708}
7709
7710void
7711disable_overlay_breakpoints (void)
7712{
7713 struct breakpoint *b;
7714
7715 ALL_BREAKPOINTS (b)
7716 if (b->type == bp_overlay_event)
7717 {
7718 b->enable_state = bp_disabled;
7719 update_global_location_list (UGLL_DONT_INSERT);
7720 overlay_events_enabled = 0;
7721 }
7722}
7723
7724/* Set an active std::terminate breakpoint for each std::terminate
7725 master breakpoint. */
7726void
7727set_std_terminate_breakpoint (void)
7728{
7729 struct breakpoint *b, *b_tmp;
7730
7731 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7732 if (b->pspace == current_program_space
7733 && b->type == bp_std_terminate_master)
7734 {
7735 momentary_breakpoint_from_master (b, bp_std_terminate,
7736 &momentary_breakpoint_ops, 1);
7737 }
7738}
7739
7740/* Delete all the std::terminate breakpoints. */
7741void
7742delete_std_terminate_breakpoint (void)
7743{
7744 struct breakpoint *b, *b_tmp;
7745
7746 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7747 if (b->type == bp_std_terminate)
7748 delete_breakpoint (b);
7749}
7750
7751struct breakpoint *
7752create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7753{
7754 struct breakpoint *b;
7755
7756 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7757 &internal_breakpoint_ops);
7758
7759 b->enable_state = bp_enabled;
7760 /* location has to be used or breakpoint_re_set will delete me. */
7761 b->location = new_address_location (b->loc->address, NULL, 0);
7762
7763 update_global_location_list_nothrow (UGLL_MAY_INSERT);
7764
7765 return b;
7766}
7767
7768struct lang_and_radix
7769 {
7770 enum language lang;
7771 int radix;
7772 };
7773
7774/* Create a breakpoint for JIT code registration and unregistration. */
7775
7776struct breakpoint *
7777create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7778{
7779 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7780 &internal_breakpoint_ops);
7781}
7782
7783/* Remove JIT code registration and unregistration breakpoint(s). */
7784
7785void
7786remove_jit_event_breakpoints (void)
7787{
7788 struct breakpoint *b, *b_tmp;
7789
7790 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7791 if (b->type == bp_jit_event
7792 && b->loc->pspace == current_program_space)
7793 delete_breakpoint (b);
7794}
7795
7796void
7797remove_solib_event_breakpoints (void)
7798{
7799 struct breakpoint *b, *b_tmp;
7800
7801 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7802 if (b->type == bp_shlib_event
7803 && b->loc->pspace == current_program_space)
7804 delete_breakpoint (b);
7805}
7806
7807/* See breakpoint.h. */
7808
7809void
7810remove_solib_event_breakpoints_at_next_stop (void)
7811{
7812 struct breakpoint *b, *b_tmp;
7813
7814 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7815 if (b->type == bp_shlib_event
7816 && b->loc->pspace == current_program_space)
7817 b->disposition = disp_del_at_next_stop;
7818}
7819
7820/* Helper for create_solib_event_breakpoint /
7821 create_and_insert_solib_event_breakpoint. Allows specifying which
7822 INSERT_MODE to pass through to update_global_location_list. */
7823
7824static struct breakpoint *
7825create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7826 enum ugll_insert_mode insert_mode)
7827{
7828 struct breakpoint *b;
7829
7830 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7831 &internal_breakpoint_ops);
7832 update_global_location_list_nothrow (insert_mode);
7833 return b;
7834}
7835
7836struct breakpoint *
7837create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7838{
7839 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7840}
7841
7842/* See breakpoint.h. */
7843
7844struct breakpoint *
7845create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7846{
7847 struct breakpoint *b;
7848
7849 /* Explicitly tell update_global_location_list to insert
7850 locations. */
7851 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7852 if (!b->loc->inserted)
7853 {
7854 delete_breakpoint (b);
7855 return NULL;
7856 }
7857 return b;
7858}
7859
7860/* Disable any breakpoints that are on code in shared libraries. Only
7861 apply to enabled breakpoints, disabled ones can just stay disabled. */
7862
7863void
7864disable_breakpoints_in_shlibs (void)
7865{
7866 struct bp_location *loc, **locp_tmp;
7867
7868 ALL_BP_LOCATIONS (loc, locp_tmp)
7869 {
7870 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7871 struct breakpoint *b = loc->owner;
7872
7873 /* We apply the check to all breakpoints, including disabled for
7874 those with loc->duplicate set. This is so that when breakpoint
7875 becomes enabled, or the duplicate is removed, gdb will try to
7876 insert all breakpoints. If we don't set shlib_disabled here,
7877 we'll try to insert those breakpoints and fail. */
7878 if (((b->type == bp_breakpoint)
7879 || (b->type == bp_jit_event)
7880 || (b->type == bp_hardware_breakpoint)
7881 || (is_tracepoint (b)))
7882 && loc->pspace == current_program_space
7883 && !loc->shlib_disabled
7884 && solib_name_from_address (loc->pspace, loc->address)
7885 )
7886 {
7887 loc->shlib_disabled = 1;
7888 }
7889 }
7890}
7891
7892/* Disable any breakpoints and tracepoints that are in SOLIB upon
7893 notification of unloaded_shlib. Only apply to enabled breakpoints,
7894 disabled ones can just stay disabled. */
7895
7896static void
7897disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7898{
7899 struct bp_location *loc, **locp_tmp;
7900 int disabled_shlib_breaks = 0;
7901
7902 ALL_BP_LOCATIONS (loc, locp_tmp)
7903 {
7904 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7905 struct breakpoint *b = loc->owner;
7906
7907 if (solib->pspace == loc->pspace
7908 && !loc->shlib_disabled
7909 && (((b->type == bp_breakpoint
7910 || b->type == bp_jit_event
7911 || b->type == bp_hardware_breakpoint)
7912 && (loc->loc_type == bp_loc_hardware_breakpoint
7913 || loc->loc_type == bp_loc_software_breakpoint))
7914 || is_tracepoint (b))
7915 && solib_contains_address_p (solib, loc->address))
7916 {
7917 loc->shlib_disabled = 1;
7918 /* At this point, we cannot rely on remove_breakpoint
7919 succeeding so we must mark the breakpoint as not inserted
7920 to prevent future errors occurring in remove_breakpoints. */
7921 loc->inserted = 0;
7922
7923 /* This may cause duplicate notifications for the same breakpoint. */
7924 observer_notify_breakpoint_modified (b);
7925
7926 if (!disabled_shlib_breaks)
7927 {
7928 target_terminal_ours_for_output ();
7929 warning (_("Temporarily disabling breakpoints "
7930 "for unloaded shared library \"%s\""),
7931 solib->so_name);
7932 }
7933 disabled_shlib_breaks = 1;
7934 }
7935 }
7936}
7937
7938/* Disable any breakpoints and tracepoints in OBJFILE upon
7939 notification of free_objfile. Only apply to enabled breakpoints,
7940 disabled ones can just stay disabled. */
7941
7942static void
7943disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7944{
7945 struct breakpoint *b;
7946
7947 if (objfile == NULL)
7948 return;
7949
7950 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7951 managed by the user with add-symbol-file/remove-symbol-file.
7952 Similarly to how breakpoints in shared libraries are handled in
7953 response to "nosharedlibrary", mark breakpoints in such modules
7954 shlib_disabled so they end up uninserted on the next global
7955 location list update. Shared libraries not loaded by the user
7956 aren't handled here -- they're already handled in
7957 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7958 solib_unloaded observer. We skip objfiles that are not
7959 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7960 main objfile). */
7961 if ((objfile->flags & OBJF_SHARED) == 0
7962 || (objfile->flags & OBJF_USERLOADED) == 0)
7963 return;
7964
7965 ALL_BREAKPOINTS (b)
7966 {
7967 struct bp_location *loc;
7968 int bp_modified = 0;
7969
7970 if (!is_breakpoint (b) && !is_tracepoint (b))
7971 continue;
7972
7973 for (loc = b->loc; loc != NULL; loc = loc->next)
7974 {
7975 CORE_ADDR loc_addr = loc->address;
7976
7977 if (loc->loc_type != bp_loc_hardware_breakpoint
7978 && loc->loc_type != bp_loc_software_breakpoint)
7979 continue;
7980
7981 if (loc->shlib_disabled != 0)
7982 continue;
7983
7984 if (objfile->pspace != loc->pspace)
7985 continue;
7986
7987 if (loc->loc_type != bp_loc_hardware_breakpoint
7988 && loc->loc_type != bp_loc_software_breakpoint)
7989 continue;
7990
7991 if (is_addr_in_objfile (loc_addr, objfile))
7992 {
7993 loc->shlib_disabled = 1;
7994 /* At this point, we don't know whether the object was
7995 unmapped from the inferior or not, so leave the
7996 inserted flag alone. We'll handle failure to
7997 uninsert quietly, in case the object was indeed
7998 unmapped. */
7999
8000 mark_breakpoint_location_modified (loc);
8001
8002 bp_modified = 1;
8003 }
8004 }
8005
8006 if (bp_modified)
8007 observer_notify_breakpoint_modified (b);
8008 }
8009}
8010
8011/* FORK & VFORK catchpoints. */
8012
8013/* An instance of this type is used to represent a fork or vfork
8014 catchpoint. A breakpoint is really of this type iff its ops pointer points
8015 to CATCH_FORK_BREAKPOINT_OPS. */
8016
8017struct fork_catchpoint : public breakpoint
8018{
8019 /* Process id of a child process whose forking triggered this
8020 catchpoint. This field is only valid immediately after this
8021 catchpoint has triggered. */
8022 ptid_t forked_inferior_pid;
8023};
8024
8025/* Implement the "insert" breakpoint_ops method for fork
8026 catchpoints. */
8027
8028static int
8029insert_catch_fork (struct bp_location *bl)
8030{
8031 return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
8032}
8033
8034/* Implement the "remove" breakpoint_ops method for fork
8035 catchpoints. */
8036
8037static int
8038remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
8039{
8040 return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
8041}
8042
8043/* Implement the "breakpoint_hit" breakpoint_ops method for fork
8044 catchpoints. */
8045
8046static int
8047breakpoint_hit_catch_fork (const struct bp_location *bl,
8048 struct address_space *aspace, CORE_ADDR bp_addr,
8049 const struct target_waitstatus *ws)
8050{
8051 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8052
8053 if (ws->kind != TARGET_WAITKIND_FORKED)
8054 return 0;
8055
8056 c->forked_inferior_pid = ws->value.related_pid;
8057 return 1;
8058}
8059
8060/* Implement the "print_it" breakpoint_ops method for fork
8061 catchpoints. */
8062
8063static enum print_stop_action
8064print_it_catch_fork (bpstat bs)
8065{
8066 struct ui_out *uiout = current_uiout;
8067 struct breakpoint *b = bs->breakpoint_at;
8068 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
8069
8070 annotate_catchpoint (b->number);
8071 maybe_print_thread_hit_breakpoint (uiout);
8072 if (b->disposition == disp_del)
8073 uiout->text ("Temporary catchpoint ");
8074 else
8075 uiout->text ("Catchpoint ");
8076 if (uiout->is_mi_like_p ())
8077 {
8078 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
8079 uiout->field_string ("disp", bpdisp_text (b->disposition));
8080 }
8081 uiout->field_int ("bkptno", b->number);
8082 uiout->text (" (forked process ");
8083 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8084 uiout->text ("), ");
8085 return PRINT_SRC_AND_LOC;
8086}
8087
8088/* Implement the "print_one" breakpoint_ops method for fork
8089 catchpoints. */
8090
8091static void
8092print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
8093{
8094 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8095 struct value_print_options opts;
8096 struct ui_out *uiout = current_uiout;
8097
8098 get_user_print_options (&opts);
8099
8100 /* Field 4, the address, is omitted (which makes the columns not
8101 line up too nicely with the headers, but the effect is relatively
8102 readable). */
8103 if (opts.addressprint)
8104 uiout->field_skip ("addr");
8105 annotate_field (5);
8106 uiout->text ("fork");
8107 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8108 {
8109 uiout->text (", process ");
8110 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8111 uiout->spaces (1);
8112 }
8113
8114 if (uiout->is_mi_like_p ())
8115 uiout->field_string ("catch-type", "fork");
8116}
8117
8118/* Implement the "print_mention" breakpoint_ops method for fork
8119 catchpoints. */
8120
8121static void
8122print_mention_catch_fork (struct breakpoint *b)
8123{
8124 printf_filtered (_("Catchpoint %d (fork)"), b->number);
8125}
8126
8127/* Implement the "print_recreate" breakpoint_ops method for fork
8128 catchpoints. */
8129
8130static void
8131print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
8132{
8133 fprintf_unfiltered (fp, "catch fork");
8134 print_recreate_thread (b, fp);
8135}
8136
8137/* The breakpoint_ops structure to be used in fork catchpoints. */
8138
8139static struct breakpoint_ops catch_fork_breakpoint_ops;
8140
8141/* Implement the "insert" breakpoint_ops method for vfork
8142 catchpoints. */
8143
8144static int
8145insert_catch_vfork (struct bp_location *bl)
8146{
8147 return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8148}
8149
8150/* Implement the "remove" breakpoint_ops method for vfork
8151 catchpoints. */
8152
8153static int
8154remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
8155{
8156 return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8157}
8158
8159/* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8160 catchpoints. */
8161
8162static int
8163breakpoint_hit_catch_vfork (const struct bp_location *bl,
8164 struct address_space *aspace, CORE_ADDR bp_addr,
8165 const struct target_waitstatus *ws)
8166{
8167 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8168
8169 if (ws->kind != TARGET_WAITKIND_VFORKED)
8170 return 0;
8171
8172 c->forked_inferior_pid = ws->value.related_pid;
8173 return 1;
8174}
8175
8176/* Implement the "print_it" breakpoint_ops method for vfork
8177 catchpoints. */
8178
8179static enum print_stop_action
8180print_it_catch_vfork (bpstat bs)
8181{
8182 struct ui_out *uiout = current_uiout;
8183 struct breakpoint *b = bs->breakpoint_at;
8184 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8185
8186 annotate_catchpoint (b->number);
8187 maybe_print_thread_hit_breakpoint (uiout);
8188 if (b->disposition == disp_del)
8189 uiout->text ("Temporary catchpoint ");
8190 else
8191 uiout->text ("Catchpoint ");
8192 if (uiout->is_mi_like_p ())
8193 {
8194 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
8195 uiout->field_string ("disp", bpdisp_text (b->disposition));
8196 }
8197 uiout->field_int ("bkptno", b->number);
8198 uiout->text (" (vforked process ");
8199 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8200 uiout->text ("), ");
8201 return PRINT_SRC_AND_LOC;
8202}
8203
8204/* Implement the "print_one" breakpoint_ops method for vfork
8205 catchpoints. */
8206
8207static void
8208print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
8209{
8210 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8211 struct value_print_options opts;
8212 struct ui_out *uiout = current_uiout;
8213
8214 get_user_print_options (&opts);
8215 /* Field 4, the address, is omitted (which makes the columns not
8216 line up too nicely with the headers, but the effect is relatively
8217 readable). */
8218 if (opts.addressprint)
8219 uiout->field_skip ("addr");
8220 annotate_field (5);
8221 uiout->text ("vfork");
8222 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8223 {
8224 uiout->text (", process ");
8225 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8226 uiout->spaces (1);
8227 }
8228
8229 if (uiout->is_mi_like_p ())
8230 uiout->field_string ("catch-type", "vfork");
8231}
8232
8233/* Implement the "print_mention" breakpoint_ops method for vfork
8234 catchpoints. */
8235
8236static void
8237print_mention_catch_vfork (struct breakpoint *b)
8238{
8239 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8240}
8241
8242/* Implement the "print_recreate" breakpoint_ops method for vfork
8243 catchpoints. */
8244
8245static void
8246print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8247{
8248 fprintf_unfiltered (fp, "catch vfork");
8249 print_recreate_thread (b, fp);
8250}
8251
8252/* The breakpoint_ops structure to be used in vfork catchpoints. */
8253
8254static struct breakpoint_ops catch_vfork_breakpoint_ops;
8255
8256/* An instance of this type is used to represent an solib catchpoint.
8257 A breakpoint is really of this type iff its ops pointer points to
8258 CATCH_SOLIB_BREAKPOINT_OPS. */
8259
8260struct solib_catchpoint : public breakpoint
8261{
8262 ~solib_catchpoint () override;
8263
8264 /* True for "catch load", false for "catch unload". */
8265 unsigned char is_load;
8266
8267 /* Regular expression to match, if any. COMPILED is only valid when
8268 REGEX is non-NULL. */
8269 char *regex;
8270 std::unique_ptr<compiled_regex> compiled;
8271};
8272
8273solib_catchpoint::~solib_catchpoint ()
8274{
8275 xfree (this->regex);
8276}
8277
8278static int
8279insert_catch_solib (struct bp_location *ignore)
8280{
8281 return 0;
8282}
8283
8284static int
8285remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
8286{
8287 return 0;
8288}
8289
8290static int
8291breakpoint_hit_catch_solib (const struct bp_location *bl,
8292 struct address_space *aspace,
8293 CORE_ADDR bp_addr,
8294 const struct target_waitstatus *ws)
8295{
8296 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8297 struct breakpoint *other;
8298
8299 if (ws->kind == TARGET_WAITKIND_LOADED)
8300 return 1;
8301
8302 ALL_BREAKPOINTS (other)
8303 {
8304 struct bp_location *other_bl;
8305
8306 if (other == bl->owner)
8307 continue;
8308
8309 if (other->type != bp_shlib_event)
8310 continue;
8311
8312 if (self->pspace != NULL && other->pspace != self->pspace)
8313 continue;
8314
8315 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8316 {
8317 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8318 return 1;
8319 }
8320 }
8321
8322 return 0;
8323}
8324
8325static void
8326check_status_catch_solib (struct bpstats *bs)
8327{
8328 struct solib_catchpoint *self
8329 = (struct solib_catchpoint *) bs->breakpoint_at;
8330 int ix;
8331
8332 if (self->is_load)
8333 {
8334 struct so_list *iter;
8335
8336 for (ix = 0;
8337 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8338 ix, iter);
8339 ++ix)
8340 {
8341 if (!self->regex
8342 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
8343 return;
8344 }
8345 }
8346 else
8347 {
8348 char *iter;
8349
8350 for (ix = 0;
8351 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8352 ix, iter);
8353 ++ix)
8354 {
8355 if (!self->regex
8356 || self->compiled->exec (iter, 0, NULL, 0) == 0)
8357 return;
8358 }
8359 }
8360
8361 bs->stop = 0;
8362 bs->print_it = print_it_noop;
8363}
8364
8365static enum print_stop_action
8366print_it_catch_solib (bpstat bs)
8367{
8368 struct breakpoint *b = bs->breakpoint_at;
8369 struct ui_out *uiout = current_uiout;
8370
8371 annotate_catchpoint (b->number);
8372 maybe_print_thread_hit_breakpoint (uiout);
8373 if (b->disposition == disp_del)
8374 uiout->text ("Temporary catchpoint ");
8375 else
8376 uiout->text ("Catchpoint ");
8377 uiout->field_int ("bkptno", b->number);
8378 uiout->text ("\n");
8379 if (uiout->is_mi_like_p ())
8380 uiout->field_string ("disp", bpdisp_text (b->disposition));
8381 print_solib_event (1);
8382 return PRINT_SRC_AND_LOC;
8383}
8384
8385static void
8386print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8387{
8388 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8389 struct value_print_options opts;
8390 struct ui_out *uiout = current_uiout;
8391 char *msg;
8392
8393 get_user_print_options (&opts);
8394 /* Field 4, the address, is omitted (which makes the columns not
8395 line up too nicely with the headers, but the effect is relatively
8396 readable). */
8397 if (opts.addressprint)
8398 {
8399 annotate_field (4);
8400 uiout->field_skip ("addr");
8401 }
8402
8403 annotate_field (5);
8404 if (self->is_load)
8405 {
8406 if (self->regex)
8407 msg = xstrprintf (_("load of library matching %s"), self->regex);
8408 else
8409 msg = xstrdup (_("load of library"));
8410 }
8411 else
8412 {
8413 if (self->regex)
8414 msg = xstrprintf (_("unload of library matching %s"), self->regex);
8415 else
8416 msg = xstrdup (_("unload of library"));
8417 }
8418 uiout->field_string ("what", msg);
8419 xfree (msg);
8420
8421 if (uiout->is_mi_like_p ())
8422 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8423}
8424
8425static void
8426print_mention_catch_solib (struct breakpoint *b)
8427{
8428 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8429
8430 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8431 self->is_load ? "load" : "unload");
8432}
8433
8434static void
8435print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8436{
8437 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8438
8439 fprintf_unfiltered (fp, "%s %s",
8440 b->disposition == disp_del ? "tcatch" : "catch",
8441 self->is_load ? "load" : "unload");
8442 if (self->regex)
8443 fprintf_unfiltered (fp, " %s", self->regex);
8444 fprintf_unfiltered (fp, "\n");
8445}
8446
8447static struct breakpoint_ops catch_solib_breakpoint_ops;
8448
8449/* Shared helper function (MI and CLI) for creating and installing
8450 a shared object event catchpoint. If IS_LOAD is non-zero then
8451 the events to be caught are load events, otherwise they are
8452 unload events. If IS_TEMP is non-zero the catchpoint is a
8453 temporary one. If ENABLED is non-zero the catchpoint is
8454 created in an enabled state. */
8455
8456void
8457add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8458{
8459 struct gdbarch *gdbarch = get_current_arch ();
8460
8461 if (!arg)
8462 arg = "";
8463 arg = skip_spaces (arg);
8464
8465 std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8466
8467 if (*arg != '\0')
8468 {
8469 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8470 _("Invalid regexp")));
8471 c->regex = xstrdup (arg);
8472 }
8473
8474 c->is_load = is_load;
8475 init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8476 &catch_solib_breakpoint_ops);
8477
8478 c->enable_state = enabled ? bp_enabled : bp_disabled;
8479
8480 install_breakpoint (0, std::move (c), 1);
8481}
8482
8483/* A helper function that does all the work for "catch load" and
8484 "catch unload". */
8485
8486static void
8487catch_load_or_unload (char *arg, int from_tty, int is_load,
8488 struct cmd_list_element *command)
8489{
8490 int tempflag;
8491 const int enabled = 1;
8492
8493 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8494
8495 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8496}
8497
8498static void
8499catch_load_command_1 (char *arg, int from_tty,
8500 struct cmd_list_element *command)
8501{
8502 catch_load_or_unload (arg, from_tty, 1, command);
8503}
8504
8505static void
8506catch_unload_command_1 (char *arg, int from_tty,
8507 struct cmd_list_element *command)
8508{
8509 catch_load_or_unload (arg, from_tty, 0, command);
8510}
8511
8512/* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8513 is non-zero, then make the breakpoint temporary. If COND_STRING is
8514 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8515 the breakpoint_ops structure associated to the catchpoint. */
8516
8517void
8518init_catchpoint (struct breakpoint *b,
8519 struct gdbarch *gdbarch, int tempflag,
8520 const char *cond_string,
8521 const struct breakpoint_ops *ops)
8522{
8523 symtab_and_line sal;
8524 sal.pspace = current_program_space;
8525
8526 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8527
8528 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8529 b->disposition = tempflag ? disp_del : disp_donttouch;
8530}
8531
8532void
8533install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8534{
8535 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8536 set_breakpoint_number (internal, b);
8537 if (is_tracepoint (b))
8538 set_tracepoint_count (breakpoint_count);
8539 if (!internal)
8540 mention (b);
8541 observer_notify_breakpoint_created (b);
8542
8543 if (update_gll)
8544 update_global_location_list (UGLL_MAY_INSERT);
8545}
8546
8547static void
8548create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8549 int tempflag, const char *cond_string,
8550 const struct breakpoint_ops *ops)
8551{
8552 std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8553
8554 init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8555
8556 c->forked_inferior_pid = null_ptid;
8557
8558 install_breakpoint (0, std::move (c), 1);
8559}
8560
8561/* Exec catchpoints. */
8562
8563/* An instance of this type is used to represent an exec catchpoint.
8564 A breakpoint is really of this type iff its ops pointer points to
8565 CATCH_EXEC_BREAKPOINT_OPS. */
8566
8567struct exec_catchpoint : public breakpoint
8568{
8569 ~exec_catchpoint () override;
8570
8571 /* Filename of a program whose exec triggered this catchpoint.
8572 This field is only valid immediately after this catchpoint has
8573 triggered. */
8574 char *exec_pathname;
8575};
8576
8577/* Exec catchpoint destructor. */
8578
8579exec_catchpoint::~exec_catchpoint ()
8580{
8581 xfree (this->exec_pathname);
8582}
8583
8584static int
8585insert_catch_exec (struct bp_location *bl)
8586{
8587 return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8588}
8589
8590static int
8591remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8592{
8593 return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8594}
8595
8596static int
8597breakpoint_hit_catch_exec (const struct bp_location *bl,
8598 struct address_space *aspace, CORE_ADDR bp_addr,
8599 const struct target_waitstatus *ws)
8600{
8601 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8602
8603 if (ws->kind != TARGET_WAITKIND_EXECD)
8604 return 0;
8605
8606 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8607 return 1;
8608}
8609
8610static enum print_stop_action
8611print_it_catch_exec (bpstat bs)
8612{
8613 struct ui_out *uiout = current_uiout;
8614 struct breakpoint *b = bs->breakpoint_at;
8615 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8616
8617 annotate_catchpoint (b->number);
8618 maybe_print_thread_hit_breakpoint (uiout);
8619 if (b->disposition == disp_del)
8620 uiout->text ("Temporary catchpoint ");
8621 else
8622 uiout->text ("Catchpoint ");
8623 if (uiout->is_mi_like_p ())
8624 {
8625 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8626 uiout->field_string ("disp", bpdisp_text (b->disposition));
8627 }
8628 uiout->field_int ("bkptno", b->number);
8629 uiout->text (" (exec'd ");
8630 uiout->field_string ("new-exec", c->exec_pathname);
8631 uiout->text ("), ");
8632
8633 return PRINT_SRC_AND_LOC;
8634}
8635
8636static void
8637print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8638{
8639 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8640 struct value_print_options opts;
8641 struct ui_out *uiout = current_uiout;
8642
8643 get_user_print_options (&opts);
8644
8645 /* Field 4, the address, is omitted (which makes the columns
8646 not line up too nicely with the headers, but the effect
8647 is relatively readable). */
8648 if (opts.addressprint)
8649 uiout->field_skip ("addr");
8650 annotate_field (5);
8651 uiout->text ("exec");
8652 if (c->exec_pathname != NULL)
8653 {
8654 uiout->text (", program \"");
8655 uiout->field_string ("what", c->exec_pathname);
8656 uiout->text ("\" ");
8657 }
8658
8659 if (uiout->is_mi_like_p ())
8660 uiout->field_string ("catch-type", "exec");
8661}
8662
8663static void
8664print_mention_catch_exec (struct breakpoint *b)
8665{
8666 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8667}
8668
8669/* Implement the "print_recreate" breakpoint_ops method for exec
8670 catchpoints. */
8671
8672static void
8673print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8674{
8675 fprintf_unfiltered (fp, "catch exec");
8676 print_recreate_thread (b, fp);
8677}
8678
8679static struct breakpoint_ops catch_exec_breakpoint_ops;
8680
8681static int
8682hw_breakpoint_used_count (void)
8683{
8684 int i = 0;
8685 struct breakpoint *b;
8686 struct bp_location *bl;
8687
8688 ALL_BREAKPOINTS (b)
8689 {
8690 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8691 for (bl = b->loc; bl; bl = bl->next)
8692 {
8693 /* Special types of hardware breakpoints may use more than
8694 one register. */
8695 i += b->ops->resources_needed (bl);
8696 }
8697 }
8698
8699 return i;
8700}
8701
8702/* Returns the resources B would use if it were a hardware
8703 watchpoint. */
8704
8705static int
8706hw_watchpoint_use_count (struct breakpoint *b)
8707{
8708 int i = 0;
8709 struct bp_location *bl;
8710
8711 if (!breakpoint_enabled (b))
8712 return 0;
8713
8714 for (bl = b->loc; bl; bl = bl->next)
8715 {
8716 /* Special types of hardware watchpoints may use more than
8717 one register. */
8718 i += b->ops->resources_needed (bl);
8719 }
8720
8721 return i;
8722}
8723
8724/* Returns the sum the used resources of all hardware watchpoints of
8725 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8726 the sum of the used resources of all hardware watchpoints of other
8727 types _not_ TYPE. */
8728
8729static int
8730hw_watchpoint_used_count_others (struct breakpoint *except,
8731 enum bptype type, int *other_type_used)
8732{
8733 int i = 0;
8734 struct breakpoint *b;
8735
8736 *other_type_used = 0;
8737 ALL_BREAKPOINTS (b)
8738 {
8739 if (b == except)
8740 continue;
8741 if (!breakpoint_enabled (b))
8742 continue;
8743
8744 if (b->type == type)
8745 i += hw_watchpoint_use_count (b);
8746 else if (is_hardware_watchpoint (b))
8747 *other_type_used = 1;
8748 }
8749
8750 return i;
8751}
8752
8753void
8754disable_watchpoints_before_interactive_call_start (void)
8755{
8756 struct breakpoint *b;
8757
8758 ALL_BREAKPOINTS (b)
8759 {
8760 if (is_watchpoint (b) && breakpoint_enabled (b))
8761 {
8762 b->enable_state = bp_call_disabled;
8763 update_global_location_list (UGLL_DONT_INSERT);
8764 }
8765 }
8766}
8767
8768void
8769enable_watchpoints_after_interactive_call_stop (void)
8770{
8771 struct breakpoint *b;
8772
8773 ALL_BREAKPOINTS (b)
8774 {
8775 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8776 {
8777 b->enable_state = bp_enabled;
8778 update_global_location_list (UGLL_MAY_INSERT);
8779 }
8780 }
8781}
8782
8783void
8784disable_breakpoints_before_startup (void)
8785{
8786 current_program_space->executing_startup = 1;
8787 update_global_location_list (UGLL_DONT_INSERT);
8788}
8789
8790void
8791enable_breakpoints_after_startup (void)
8792{
8793 current_program_space->executing_startup = 0;
8794 breakpoint_re_set ();
8795}
8796
8797/* Create a new single-step breakpoint for thread THREAD, with no
8798 locations. */
8799
8800static struct breakpoint *
8801new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8802{
8803 std::unique_ptr<breakpoint> b (new breakpoint ());
8804
8805 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8806 &momentary_breakpoint_ops);
8807
8808 b->disposition = disp_donttouch;
8809 b->frame_id = null_frame_id;
8810
8811 b->thread = thread;
8812 gdb_assert (b->thread != 0);
8813
8814 return add_to_breakpoint_chain (std::move (b));
8815}
8816
8817/* Set a momentary breakpoint of type TYPE at address specified by
8818 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8819 frame. */
8820
8821struct breakpoint *
8822set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8823 struct frame_id frame_id, enum bptype type)
8824{
8825 struct breakpoint *b;
8826
8827 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8828 tail-called one. */
8829 gdb_assert (!frame_id_artificial_p (frame_id));
8830
8831 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8832 b->enable_state = bp_enabled;
8833 b->disposition = disp_donttouch;
8834 b->frame_id = frame_id;
8835
8836 /* If we're debugging a multi-threaded program, then we want
8837 momentary breakpoints to be active in only a single thread of
8838 control. */
8839 if (in_thread_list (inferior_ptid))
8840 b->thread = ptid_to_global_thread_id (inferior_ptid);
8841
8842 update_global_location_list_nothrow (UGLL_MAY_INSERT);
8843
8844 return b;
8845}
8846
8847/* Make a momentary breakpoint based on the master breakpoint ORIG.
8848 The new breakpoint will have type TYPE, use OPS as its
8849 breakpoint_ops, and will set enabled to LOC_ENABLED. */
8850
8851static struct breakpoint *
8852momentary_breakpoint_from_master (struct breakpoint *orig,
8853 enum bptype type,
8854 const struct breakpoint_ops *ops,
8855 int loc_enabled)
8856{
8857 struct breakpoint *copy;
8858
8859 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8860 copy->loc = allocate_bp_location (copy);
8861 set_breakpoint_location_function (copy->loc, 1);
8862
8863 copy->loc->gdbarch = orig->loc->gdbarch;
8864 copy->loc->requested_address = orig->loc->requested_address;
8865 copy->loc->address = orig->loc->address;
8866 copy->loc->section = orig->loc->section;
8867 copy->loc->pspace = orig->loc->pspace;
8868 copy->loc->probe = orig->loc->probe;
8869 copy->loc->line_number = orig->loc->line_number;
8870 copy->loc->symtab = orig->loc->symtab;
8871 copy->loc->enabled = loc_enabled;
8872 copy->frame_id = orig->frame_id;
8873 copy->thread = orig->thread;
8874 copy->pspace = orig->pspace;
8875
8876 copy->enable_state = bp_enabled;
8877 copy->disposition = disp_donttouch;
8878 copy->number = internal_breakpoint_number--;
8879
8880 update_global_location_list_nothrow (UGLL_DONT_INSERT);
8881 return copy;
8882}
8883
8884/* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8885 ORIG is NULL. */
8886
8887struct breakpoint *
8888clone_momentary_breakpoint (struct breakpoint *orig)
8889{
8890 /* If there's nothing to clone, then return nothing. */
8891 if (orig == NULL)
8892 return NULL;
8893
8894 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8895}
8896
8897struct breakpoint *
8898set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8899 enum bptype type)
8900{
8901 struct symtab_and_line sal;
8902
8903 sal = find_pc_line (pc, 0);
8904 sal.pc = pc;
8905 sal.section = find_pc_overlay (pc);
8906 sal.explicit_pc = 1;
8907
8908 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8909}
8910\f
8911
8912/* Tell the user we have just set a breakpoint B. */
8913
8914static void
8915mention (struct breakpoint *b)
8916{
8917 b->ops->print_mention (b);
8918 if (current_uiout->is_mi_like_p ())
8919 return;
8920 printf_filtered ("\n");
8921}
8922\f
8923
8924static int bp_loc_is_permanent (struct bp_location *loc);
8925
8926static struct bp_location *
8927add_location_to_breakpoint (struct breakpoint *b,
8928 const struct symtab_and_line *sal)
8929{
8930 struct bp_location *loc, **tmp;
8931 CORE_ADDR adjusted_address;
8932 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8933
8934 if (loc_gdbarch == NULL)
8935 loc_gdbarch = b->gdbarch;
8936
8937 /* Adjust the breakpoint's address prior to allocating a location.
8938 Once we call allocate_bp_location(), that mostly uninitialized
8939 location will be placed on the location chain. Adjustment of the
8940 breakpoint may cause target_read_memory() to be called and we do
8941 not want its scan of the location chain to find a breakpoint and
8942 location that's only been partially initialized. */
8943 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8944 sal->pc, b->type);
8945
8946 /* Sort the locations by their ADDRESS. */
8947 loc = allocate_bp_location (b);
8948 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8949 tmp = &((*tmp)->next))
8950 ;
8951 loc->next = *tmp;
8952 *tmp = loc;
8953
8954 loc->requested_address = sal->pc;
8955 loc->address = adjusted_address;
8956 loc->pspace = sal->pspace;
8957 loc->probe.probe = sal->probe;
8958 loc->probe.objfile = sal->objfile;
8959 gdb_assert (loc->pspace != NULL);
8960 loc->section = sal->section;
8961 loc->gdbarch = loc_gdbarch;
8962 loc->line_number = sal->line;
8963 loc->symtab = sal->symtab;
8964
8965 set_breakpoint_location_function (loc,
8966 sal->explicit_pc || sal->explicit_line);
8967
8968 /* While by definition, permanent breakpoints are already present in the
8969 code, we don't mark the location as inserted. Normally one would expect
8970 that GDB could rely on that breakpoint instruction to stop the program,
8971 thus removing the need to insert its own breakpoint, except that executing
8972 the breakpoint instruction can kill the target instead of reporting a
8973 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8974 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8975 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8976 breakpoint be inserted normally results in QEMU knowing about the GDB
8977 breakpoint, and thus trap before the breakpoint instruction is executed.
8978 (If GDB later needs to continue execution past the permanent breakpoint,
8979 it manually increments the PC, thus avoiding executing the breakpoint
8980 instruction.) */
8981 if (bp_loc_is_permanent (loc))
8982 loc->permanent = 1;
8983
8984 return loc;
8985}
8986\f
8987
8988/* See breakpoint.h. */
8989
8990int
8991program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8992{
8993 int len;
8994 CORE_ADDR addr;
8995 const gdb_byte *bpoint;
8996 gdb_byte *target_mem;
8997
8998 addr = address;
8999 bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
9000
9001 /* Software breakpoints unsupported? */
9002 if (bpoint == NULL)
9003 return 0;
9004
9005 target_mem = (gdb_byte *) alloca (len);
9006
9007 /* Enable the automatic memory restoration from breakpoints while
9008 we read the memory. Otherwise we could say about our temporary
9009 breakpoints they are permanent. */
9010 scoped_restore restore_memory
9011 = make_scoped_restore_show_memory_breakpoints (0);
9012
9013 if (target_read_memory (address, target_mem, len) == 0
9014 && memcmp (target_mem, bpoint, len) == 0)
9015 return 1;
9016
9017 return 0;
9018}
9019
9020/* Return 1 if LOC is pointing to a permanent breakpoint,
9021 return 0 otherwise. */
9022
9023static int
9024bp_loc_is_permanent (struct bp_location *loc)
9025{
9026 gdb_assert (loc != NULL);
9027
9028 /* If we have a catchpoint or a watchpoint, just return 0. We should not
9029 attempt to read from the addresses the locations of these breakpoint types
9030 point to. program_breakpoint_here_p, below, will attempt to read
9031 memory. */
9032 if (!breakpoint_address_is_meaningful (loc->owner))
9033 return 0;
9034
9035 scoped_restore_current_pspace_and_thread restore_pspace_thread;
9036 switch_to_program_space_and_thread (loc->pspace);
9037 return program_breakpoint_here_p (loc->gdbarch, loc->address);
9038}
9039
9040/* Build a command list for the dprintf corresponding to the current
9041 settings of the dprintf style options. */
9042
9043static void
9044update_dprintf_command_list (struct breakpoint *b)
9045{
9046 char *dprintf_args = b->extra_string;
9047 char *printf_line = NULL;
9048
9049 if (!dprintf_args)
9050 return;
9051
9052 dprintf_args = skip_spaces (dprintf_args);
9053
9054 /* Allow a comma, as it may have terminated a location, but don't
9055 insist on it. */
9056 if (*dprintf_args == ',')
9057 ++dprintf_args;
9058 dprintf_args = skip_spaces (dprintf_args);
9059
9060 if (*dprintf_args != '"')
9061 error (_("Bad format string, missing '\"'."));
9062
9063 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
9064 printf_line = xstrprintf ("printf %s", dprintf_args);
9065 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
9066 {
9067 if (!dprintf_function)
9068 error (_("No function supplied for dprintf call"));
9069
9070 if (dprintf_channel && strlen (dprintf_channel) > 0)
9071 printf_line = xstrprintf ("call (void) %s (%s,%s)",
9072 dprintf_function,
9073 dprintf_channel,
9074 dprintf_args);
9075 else
9076 printf_line = xstrprintf ("call (void) %s (%s)",
9077 dprintf_function,
9078 dprintf_args);
9079 }
9080 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9081 {
9082 if (target_can_run_breakpoint_commands ())
9083 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9084 else
9085 {
9086 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9087 printf_line = xstrprintf ("printf %s", dprintf_args);
9088 }
9089 }
9090 else
9091 internal_error (__FILE__, __LINE__,
9092 _("Invalid dprintf style."));
9093
9094 gdb_assert (printf_line != NULL);
9095 /* Manufacture a printf sequence. */
9096 {
9097 struct command_line *printf_cmd_line = XNEW (struct command_line);
9098
9099 printf_cmd_line->control_type = simple_control;
9100 printf_cmd_line->body_count = 0;
9101 printf_cmd_line->body_list = NULL;
9102 printf_cmd_line->next = NULL;
9103 printf_cmd_line->line = printf_line;
9104
9105 breakpoint_set_commands (b, command_line_up (printf_cmd_line));
9106 }
9107}
9108
9109/* Update all dprintf commands, making their command lists reflect
9110 current style settings. */
9111
9112static void
9113update_dprintf_commands (char *args, int from_tty,
9114 struct cmd_list_element *c)
9115{
9116 struct breakpoint *b;
9117
9118 ALL_BREAKPOINTS (b)
9119 {
9120 if (b->type == bp_dprintf)
9121 update_dprintf_command_list (b);
9122 }
9123}
9124
9125/* Create a breakpoint with SAL as location. Use LOCATION
9126 as a description of the location, and COND_STRING
9127 as condition expression. If LOCATION is NULL then create an
9128 "address location" from the address in the SAL. */
9129
9130static void
9131init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9132 gdb::array_view<const symtab_and_line> sals,
9133 event_location_up &&location,
9134 gdb::unique_xmalloc_ptr<char> filter,
9135 gdb::unique_xmalloc_ptr<char> cond_string,
9136 gdb::unique_xmalloc_ptr<char> extra_string,
9137 enum bptype type, enum bpdisp disposition,
9138 int thread, int task, int ignore_count,
9139 const struct breakpoint_ops *ops, int from_tty,
9140 int enabled, int internal, unsigned flags,
9141 int display_canonical)
9142{
9143 int i;
9144
9145 if (type == bp_hardware_breakpoint)
9146 {
9147 int target_resources_ok;
9148
9149 i = hw_breakpoint_used_count ();
9150 target_resources_ok =
9151 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9152 i + 1, 0);
9153 if (target_resources_ok == 0)
9154 error (_("No hardware breakpoint support in the target."));
9155 else if (target_resources_ok < 0)
9156 error (_("Hardware breakpoints used exceeds limit."));
9157 }
9158
9159 gdb_assert (!sals.empty ());
9160
9161 for (const auto &sal : sals)
9162 {
9163 struct bp_location *loc;
9164
9165 if (from_tty)
9166 {
9167 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9168 if (!loc_gdbarch)
9169 loc_gdbarch = gdbarch;
9170
9171 describe_other_breakpoints (loc_gdbarch,
9172 sal.pspace, sal.pc, sal.section, thread);
9173 }
9174
9175 if (&sal == &sals[0])
9176 {
9177 init_raw_breakpoint (b, gdbarch, sal, type, ops);
9178 b->thread = thread;
9179 b->task = task;
9180
9181 b->cond_string = cond_string.release ();
9182 b->extra_string = extra_string.release ();
9183 b->ignore_count = ignore_count;
9184 b->enable_state = enabled ? bp_enabled : bp_disabled;
9185 b->disposition = disposition;
9186
9187 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9188 b->loc->inserted = 1;
9189
9190 if (type == bp_static_tracepoint)
9191 {
9192 struct tracepoint *t = (struct tracepoint *) b;
9193 struct static_tracepoint_marker marker;
9194
9195 if (strace_marker_p (b))
9196 {
9197 /* We already know the marker exists, otherwise, we
9198 wouldn't see a sal for it. */
9199 const char *p
9200 = &event_location_to_string (b->location.get ())[3];
9201 const char *endp;
9202 char *marker_str;
9203
9204 p = skip_spaces (p);
9205
9206 endp = skip_to_space (p);
9207
9208 marker_str = savestring (p, endp - p);
9209 t->static_trace_marker_id = marker_str;
9210
9211 printf_filtered (_("Probed static tracepoint "
9212 "marker \"%s\"\n"),
9213 t->static_trace_marker_id);
9214 }
9215 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9216 {
9217 t->static_trace_marker_id = xstrdup (marker.str_id);
9218 release_static_tracepoint_marker (&marker);
9219
9220 printf_filtered (_("Probed static tracepoint "
9221 "marker \"%s\"\n"),
9222 t->static_trace_marker_id);
9223 }
9224 else
9225 warning (_("Couldn't determine the static "
9226 "tracepoint marker to probe"));
9227 }
9228
9229 loc = b->loc;
9230 }
9231 else
9232 {
9233 loc = add_location_to_breakpoint (b, &sal);
9234 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9235 loc->inserted = 1;
9236 }
9237
9238 if (b->cond_string)
9239 {
9240 const char *arg = b->cond_string;
9241
9242 loc->cond = parse_exp_1 (&arg, loc->address,
9243 block_for_pc (loc->address), 0);
9244 if (*arg)
9245 error (_("Garbage '%s' follows condition"), arg);
9246 }
9247
9248 /* Dynamic printf requires and uses additional arguments on the
9249 command line, otherwise it's an error. */
9250 if (type == bp_dprintf)
9251 {
9252 if (b->extra_string)
9253 update_dprintf_command_list (b);
9254 else
9255 error (_("Format string required"));
9256 }
9257 else if (b->extra_string)
9258 error (_("Garbage '%s' at end of command"), b->extra_string);
9259 }
9260
9261 b->display_canonical = display_canonical;
9262 if (location != NULL)
9263 b->location = std::move (location);
9264 else
9265 b->location = new_address_location (b->loc->address, NULL, 0);
9266 b->filter = filter.release ();
9267}
9268
9269static void
9270create_breakpoint_sal (struct gdbarch *gdbarch,
9271 gdb::array_view<const symtab_and_line> sals,
9272 event_location_up &&location,
9273 gdb::unique_xmalloc_ptr<char> filter,
9274 gdb::unique_xmalloc_ptr<char> cond_string,
9275 gdb::unique_xmalloc_ptr<char> extra_string,
9276 enum bptype type, enum bpdisp disposition,
9277 int thread, int task, int ignore_count,
9278 const struct breakpoint_ops *ops, int from_tty,
9279 int enabled, int internal, unsigned flags,
9280 int display_canonical)
9281{
9282 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
9283
9284 init_breakpoint_sal (b.get (), gdbarch,
9285 sals, std::move (location),
9286 std::move (filter),
9287 std::move (cond_string),
9288 std::move (extra_string),
9289 type, disposition,
9290 thread, task, ignore_count,
9291 ops, from_tty,
9292 enabled, internal, flags,
9293 display_canonical);
9294
9295 install_breakpoint (internal, std::move (b), 0);
9296}
9297
9298/* Add SALS.nelts breakpoints to the breakpoint table. For each
9299 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9300 value. COND_STRING, if not NULL, specified the condition to be
9301 used for all breakpoints. Essentially the only case where
9302 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9303 function. In that case, it's still not possible to specify
9304 separate conditions for different overloaded functions, so
9305 we take just a single condition string.
9306
9307 NOTE: If the function succeeds, the caller is expected to cleanup
9308 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9309 array contents). If the function fails (error() is called), the
9310 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9311 COND and SALS arrays and each of those arrays contents. */
9312
9313static void
9314create_breakpoints_sal (struct gdbarch *gdbarch,
9315 struct linespec_result *canonical,
9316 gdb::unique_xmalloc_ptr<char> cond_string,
9317 gdb::unique_xmalloc_ptr<char> extra_string,
9318 enum bptype type, enum bpdisp disposition,
9319 int thread, int task, int ignore_count,
9320 const struct breakpoint_ops *ops, int from_tty,
9321 int enabled, int internal, unsigned flags)
9322{
9323 if (canonical->pre_expanded)
9324 gdb_assert (canonical->lsals.size () == 1);
9325
9326 for (const auto &lsal : canonical->lsals)
9327 {
9328 /* Note that 'location' can be NULL in the case of a plain
9329 'break', without arguments. */
9330 event_location_up location
9331 = (canonical->location != NULL
9332 ? copy_event_location (canonical->location.get ()) : NULL);
9333 gdb::unique_xmalloc_ptr<char> filter_string
9334 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
9335
9336 create_breakpoint_sal (gdbarch, lsal.sals,
9337 std::move (location),
9338 std::move (filter_string),
9339 std::move (cond_string),
9340 std::move (extra_string),
9341 type, disposition,
9342 thread, task, ignore_count, ops,
9343 from_tty, enabled, internal, flags,
9344 canonical->special_display);
9345 }
9346}
9347
9348/* Parse LOCATION which is assumed to be a SAL specification possibly
9349 followed by conditionals. On return, SALS contains an array of SAL
9350 addresses found. LOCATION points to the end of the SAL (for
9351 linespec locations).
9352
9353 The array and the line spec strings are allocated on the heap, it is
9354 the caller's responsibility to free them. */
9355
9356static void
9357parse_breakpoint_sals (const struct event_location *location,
9358 struct linespec_result *canonical)
9359{
9360 struct symtab_and_line cursal;
9361
9362 if (event_location_type (location) == LINESPEC_LOCATION)
9363 {
9364 const char *address = get_linespec_location (location);
9365
9366 if (address == NULL)
9367 {
9368 /* The last displayed codepoint, if it's valid, is our default
9369 breakpoint address. */
9370 if (last_displayed_sal_is_valid ())
9371 {
9372 /* Set sal's pspace, pc, symtab, and line to the values
9373 corresponding to the last call to print_frame_info.
9374 Be sure to reinitialize LINE with NOTCURRENT == 0
9375 as the breakpoint line number is inappropriate otherwise.
9376 find_pc_line would adjust PC, re-set it back. */
9377 symtab_and_line sal = get_last_displayed_sal ();
9378 CORE_ADDR pc = sal.pc;
9379
9380 sal = find_pc_line (pc, 0);
9381
9382 /* "break" without arguments is equivalent to "break *PC"
9383 where PC is the last displayed codepoint's address. So
9384 make sure to set sal.explicit_pc to prevent GDB from
9385 trying to expand the list of sals to include all other
9386 instances with the same symtab and line. */
9387 sal.pc = pc;
9388 sal.explicit_pc = 1;
9389
9390 struct linespec_sals lsal;
9391 lsal.sals = {sal};
9392 lsal.canonical = NULL;
9393
9394 canonical->lsals.push_back (std::move (lsal));
9395 return;
9396 }
9397 else
9398 error (_("No default breakpoint address now."));
9399 }
9400 }
9401
9402 /* Force almost all breakpoints to be in terms of the
9403 current_source_symtab (which is decode_line_1's default).
9404 This should produce the results we want almost all of the
9405 time while leaving default_breakpoint_* alone.
9406
9407 ObjC: However, don't match an Objective-C method name which
9408 may have a '+' or '-' succeeded by a '['. */
9409 cursal = get_current_source_symtab_and_line ();
9410 if (last_displayed_sal_is_valid ())
9411 {
9412 const char *address = NULL;
9413
9414 if (event_location_type (location) == LINESPEC_LOCATION)
9415 address = get_linespec_location (location);
9416
9417 if (!cursal.symtab
9418 || (address != NULL
9419 && strchr ("+-", address[0]) != NULL
9420 && address[1] != '['))
9421 {
9422 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9423 get_last_displayed_symtab (),
9424 get_last_displayed_line (),
9425 canonical, NULL, NULL);
9426 return;
9427 }
9428 }
9429
9430 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9431 cursal.symtab, cursal.line, canonical, NULL, NULL);
9432}
9433
9434
9435/* Convert each SAL into a real PC. Verify that the PC can be
9436 inserted as a breakpoint. If it can't throw an error. */
9437
9438static void
9439breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9440{
9441 for (auto &sal : sals)
9442 resolve_sal_pc (&sal);
9443}
9444
9445/* Fast tracepoints may have restrictions on valid locations. For
9446 instance, a fast tracepoint using a jump instead of a trap will
9447 likely have to overwrite more bytes than a trap would, and so can
9448 only be placed where the instruction is longer than the jump, or a
9449 multi-instruction sequence does not have a jump into the middle of
9450 it, etc. */
9451
9452static void
9453check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9454 gdb::array_view<const symtab_and_line> sals)
9455{
9456 int rslt;
9457 char *msg;
9458 struct cleanup *old_chain;
9459
9460 for (const auto &sal : sals)
9461 {
9462 struct gdbarch *sarch;
9463
9464 sarch = get_sal_arch (sal);
9465 /* We fall back to GDBARCH if there is no architecture
9466 associated with SAL. */
9467 if (sarch == NULL)
9468 sarch = gdbarch;
9469 rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg);
9470 old_chain = make_cleanup (xfree, msg);
9471
9472 if (!rslt)
9473 error (_("May not have a fast tracepoint at %s%s"),
9474 paddress (sarch, sal.pc), (msg ? msg : ""));
9475
9476 do_cleanups (old_chain);
9477 }
9478}
9479
9480/* Given TOK, a string specification of condition and thread, as
9481 accepted by the 'break' command, extract the condition
9482 string and thread number and set *COND_STRING and *THREAD.
9483 PC identifies the context at which the condition should be parsed.
9484 If no condition is found, *COND_STRING is set to NULL.
9485 If no thread is found, *THREAD is set to -1. */
9486
9487static void
9488find_condition_and_thread (const char *tok, CORE_ADDR pc,
9489 char **cond_string, int *thread, int *task,
9490 char **rest)
9491{
9492 *cond_string = NULL;
9493 *thread = -1;
9494 *task = 0;
9495 *rest = NULL;
9496
9497 while (tok && *tok)
9498 {
9499 const char *end_tok;
9500 int toklen;
9501 const char *cond_start = NULL;
9502 const char *cond_end = NULL;
9503
9504 tok = skip_spaces (tok);
9505
9506 if ((*tok == '"' || *tok == ',') && rest)
9507 {
9508 *rest = savestring (tok, strlen (tok));
9509 return;
9510 }
9511
9512 end_tok = skip_to_space (tok);
9513
9514 toklen = end_tok - tok;
9515
9516 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9517 {
9518 tok = cond_start = end_tok + 1;
9519 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9520 cond_end = tok;
9521 *cond_string = savestring (cond_start, cond_end - cond_start);
9522 }
9523 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9524 {
9525 const char *tmptok;
9526 struct thread_info *thr;
9527
9528 tok = end_tok + 1;
9529 thr = parse_thread_id (tok, &tmptok);
9530 if (tok == tmptok)
9531 error (_("Junk after thread keyword."));
9532 *thread = thr->global_num;
9533 tok = tmptok;
9534 }
9535 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9536 {
9537 char *tmptok;
9538
9539 tok = end_tok + 1;
9540 *task = strtol (tok, &tmptok, 0);
9541 if (tok == tmptok)
9542 error (_("Junk after task keyword."));
9543 if (!valid_task_id (*task))
9544 error (_("Unknown task %d."), *task);
9545 tok = tmptok;
9546 }
9547 else if (rest)
9548 {
9549 *rest = savestring (tok, strlen (tok));
9550 return;
9551 }
9552 else
9553 error (_("Junk at end of arguments."));
9554 }
9555}
9556
9557/* Decode a static tracepoint marker spec. */
9558
9559static std::vector<symtab_and_line>
9560decode_static_tracepoint_spec (const char **arg_p)
9561{
9562 VEC(static_tracepoint_marker_p) *markers = NULL;
9563 struct cleanup *old_chain;
9564 const char *p = &(*arg_p)[3];
9565 const char *endp;
9566 char *marker_str;
9567 int i;
9568
9569 p = skip_spaces (p);
9570
9571 endp = skip_to_space (p);
9572
9573 marker_str = savestring (p, endp - p);
9574 old_chain = make_cleanup (xfree, marker_str);
9575
9576 markers = target_static_tracepoint_markers_by_strid (marker_str);
9577 if (VEC_empty(static_tracepoint_marker_p, markers))
9578 error (_("No known static tracepoint marker named %s"), marker_str);
9579
9580 std::vector<symtab_and_line> sals;
9581 sals.reserve (VEC_length(static_tracepoint_marker_p, markers));
9582
9583 for (i = 0; i < VEC_length(static_tracepoint_marker_p, markers); i++)
9584 {
9585 struct static_tracepoint_marker *marker;
9586
9587 marker = VEC_index (static_tracepoint_marker_p, markers, i);
9588
9589 symtab_and_line sal = find_pc_line (marker->address, 0);
9590 sal.pc = marker->address;
9591 sals.push_back (sal);
9592
9593 release_static_tracepoint_marker (marker);
9594 }
9595
9596 do_cleanups (old_chain);
9597
9598 *arg_p = endp;
9599 return sals;
9600}
9601
9602/* See breakpoint.h. */
9603
9604int
9605create_breakpoint (struct gdbarch *gdbarch,
9606 const struct event_location *location,
9607 const char *cond_string,
9608 int thread, const char *extra_string,
9609 int parse_extra,
9610 int tempflag, enum bptype type_wanted,
9611 int ignore_count,
9612 enum auto_boolean pending_break_support,
9613 const struct breakpoint_ops *ops,
9614 int from_tty, int enabled, int internal,
9615 unsigned flags)
9616{
9617 struct linespec_result canonical;
9618 struct cleanup *bkpt_chain = NULL;
9619 int pending = 0;
9620 int task = 0;
9621 int prev_bkpt_count = breakpoint_count;
9622
9623 gdb_assert (ops != NULL);
9624
9625 /* If extra_string isn't useful, set it to NULL. */
9626 if (extra_string != NULL && *extra_string == '\0')
9627 extra_string = NULL;
9628
9629 TRY
9630 {
9631 ops->create_sals_from_location (location, &canonical, type_wanted);
9632 }
9633 CATCH (e, RETURN_MASK_ERROR)
9634 {
9635 /* If caller is interested in rc value from parse, set
9636 value. */
9637 if (e.error == NOT_FOUND_ERROR)
9638 {
9639 /* If pending breakpoint support is turned off, throw
9640 error. */
9641
9642 if (pending_break_support == AUTO_BOOLEAN_FALSE)
9643 throw_exception (e);
9644
9645 exception_print (gdb_stderr, e);
9646
9647 /* If pending breakpoint support is auto query and the user
9648 selects no, then simply return the error code. */
9649 if (pending_break_support == AUTO_BOOLEAN_AUTO
9650 && !nquery (_("Make %s pending on future shared library load? "),
9651 bptype_string (type_wanted)))
9652 return 0;
9653
9654 /* At this point, either the user was queried about setting
9655 a pending breakpoint and selected yes, or pending
9656 breakpoint behavior is on and thus a pending breakpoint
9657 is defaulted on behalf of the user. */
9658 pending = 1;
9659 }
9660 else
9661 throw_exception (e);
9662 }
9663 END_CATCH
9664
9665 if (!pending && canonical.lsals.empty ())
9666 return 0;
9667
9668 /* ----------------------------- SNIP -----------------------------
9669 Anything added to the cleanup chain beyond this point is assumed
9670 to be part of a breakpoint. If the breakpoint create succeeds
9671 then the memory is not reclaimed. */
9672 bkpt_chain = make_cleanup (null_cleanup, 0);
9673
9674 /* Resolve all line numbers to PC's and verify that the addresses
9675 are ok for the target. */
9676 if (!pending)
9677 {
9678 for (auto &lsal : canonical.lsals)
9679 breakpoint_sals_to_pc (lsal.sals);
9680 }
9681
9682 /* Fast tracepoints may have additional restrictions on location. */
9683 if (!pending && type_wanted == bp_fast_tracepoint)
9684 {
9685 for (const auto &lsal : canonical.lsals)
9686 check_fast_tracepoint_sals (gdbarch, lsal.sals);
9687 }
9688
9689 /* Verify that condition can be parsed, before setting any
9690 breakpoints. Allocate a separate condition expression for each
9691 breakpoint. */
9692 if (!pending)
9693 {
9694 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9695 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9696
9697 if (parse_extra)
9698 {
9699 char *rest;
9700 char *cond;
9701
9702 const linespec_sals &lsal = canonical.lsals[0];
9703
9704 /* Here we only parse 'arg' to separate condition
9705 from thread number, so parsing in context of first
9706 sal is OK. When setting the breakpoint we'll
9707 re-parse it in context of each sal. */
9708
9709 find_condition_and_thread (extra_string, lsal.sals[0].pc,
9710 &cond, &thread, &task, &rest);
9711 cond_string_copy.reset (cond);
9712 extra_string_copy.reset (rest);
9713 }
9714 else
9715 {
9716 if (type_wanted != bp_dprintf
9717 && extra_string != NULL && *extra_string != '\0')
9718 error (_("Garbage '%s' at end of location"), extra_string);
9719
9720 /* Create a private copy of condition string. */
9721 if (cond_string)
9722 cond_string_copy.reset (xstrdup (cond_string));
9723 /* Create a private copy of any extra string. */
9724 if (extra_string)
9725 extra_string_copy.reset (xstrdup (extra_string));
9726 }
9727
9728 ops->create_breakpoints_sal (gdbarch, &canonical,
9729 std::move (cond_string_copy),
9730 std::move (extra_string_copy),
9731 type_wanted,
9732 tempflag ? disp_del : disp_donttouch,
9733 thread, task, ignore_count, ops,
9734 from_tty, enabled, internal, flags);
9735 }
9736 else
9737 {
9738 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9739
9740 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9741 b->location = copy_event_location (location);
9742
9743 if (parse_extra)
9744 b->cond_string = NULL;
9745 else
9746 {
9747 /* Create a private copy of condition string. */
9748 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9749 b->thread = thread;
9750 }
9751
9752 /* Create a private copy of any extra string. */
9753 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9754 b->ignore_count = ignore_count;
9755 b->disposition = tempflag ? disp_del : disp_donttouch;
9756 b->condition_not_parsed = 1;
9757 b->enable_state = enabled ? bp_enabled : bp_disabled;
9758 if ((type_wanted != bp_breakpoint
9759 && type_wanted != bp_hardware_breakpoint) || thread != -1)
9760 b->pspace = current_program_space;
9761
9762 install_breakpoint (internal, std::move (b), 0);
9763 }
9764
9765 if (canonical.lsals.size () > 1)
9766 {
9767 warning (_("Multiple breakpoints were set.\nUse the "
9768 "\"delete\" command to delete unwanted breakpoints."));
9769 prev_breakpoint_count = prev_bkpt_count;
9770 }
9771
9772 /* That's it. Discard the cleanups for data inserted into the
9773 breakpoint. */
9774 discard_cleanups (bkpt_chain);
9775
9776 /* error call may happen here - have BKPT_CHAIN already discarded. */
9777 update_global_location_list (UGLL_MAY_INSERT);
9778
9779 return 1;
9780}
9781
9782/* Set a breakpoint.
9783 ARG is a string describing breakpoint address,
9784 condition, and thread.
9785 FLAG specifies if a breakpoint is hardware on,
9786 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9787 and BP_TEMPFLAG. */
9788
9789static void
9790break_command_1 (char *arg, int flag, int from_tty)
9791{
9792 int tempflag = flag & BP_TEMPFLAG;
9793 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9794 ? bp_hardware_breakpoint
9795 : bp_breakpoint);
9796 struct breakpoint_ops *ops;
9797
9798 event_location_up location = string_to_event_location (&arg, current_language);
9799
9800 /* Matching breakpoints on probes. */
9801 if (location != NULL
9802 && event_location_type (location.get ()) == PROBE_LOCATION)
9803 ops = &bkpt_probe_breakpoint_ops;
9804 else
9805 ops = &bkpt_breakpoint_ops;
9806
9807 create_breakpoint (get_current_arch (),
9808 location.get (),
9809 NULL, 0, arg, 1 /* parse arg */,
9810 tempflag, type_wanted,
9811 0 /* Ignore count */,
9812 pending_break_support,
9813 ops,
9814 from_tty,
9815 1 /* enabled */,
9816 0 /* internal */,
9817 0);
9818}
9819
9820/* Helper function for break_command_1 and disassemble_command. */
9821
9822void
9823resolve_sal_pc (struct symtab_and_line *sal)
9824{
9825 CORE_ADDR pc;
9826
9827 if (sal->pc == 0 && sal->symtab != NULL)
9828 {
9829 if (!find_line_pc (sal->symtab, sal->line, &pc))
9830 error (_("No line %d in file \"%s\"."),
9831 sal->line, symtab_to_filename_for_display (sal->symtab));
9832 sal->pc = pc;
9833
9834 /* If this SAL corresponds to a breakpoint inserted using a line
9835 number, then skip the function prologue if necessary. */
9836 if (sal->explicit_line)
9837 skip_prologue_sal (sal);
9838 }
9839
9840 if (sal->section == 0 && sal->symtab != NULL)
9841 {
9842 const struct blockvector *bv;
9843 const struct block *b;
9844 struct symbol *sym;
9845
9846 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9847 SYMTAB_COMPUNIT (sal->symtab));
9848 if (bv != NULL)
9849 {
9850 sym = block_linkage_function (b);
9851 if (sym != NULL)
9852 {
9853 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9854 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9855 sym);
9856 }
9857 else
9858 {
9859 /* It really is worthwhile to have the section, so we'll
9860 just have to look harder. This case can be executed
9861 if we have line numbers but no functions (as can
9862 happen in assembly source). */
9863
9864 scoped_restore_current_pspace_and_thread restore_pspace_thread;
9865 switch_to_program_space_and_thread (sal->pspace);
9866
9867 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9868 if (msym.minsym)
9869 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9870 }
9871 }
9872 }
9873}
9874
9875void
9876break_command (char *arg, int from_tty)
9877{
9878 break_command_1 (arg, 0, from_tty);
9879}
9880
9881void
9882tbreak_command (char *arg, int from_tty)
9883{
9884 break_command_1 (arg, BP_TEMPFLAG, from_tty);
9885}
9886
9887static void
9888hbreak_command (char *arg, int from_tty)
9889{
9890 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9891}
9892
9893static void
9894thbreak_command (char *arg, int from_tty)
9895{
9896 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9897}
9898
9899static void
9900stop_command (char *arg, int from_tty)
9901{
9902 printf_filtered (_("Specify the type of breakpoint to set.\n\
9903Usage: stop in <function | address>\n\
9904 stop at <line>\n"));
9905}
9906
9907static void
9908stopin_command (char *arg, int from_tty)
9909{
9910 int badInput = 0;
9911
9912 if (arg == (char *) NULL)
9913 badInput = 1;
9914 else if (*arg != '*')
9915 {
9916 char *argptr = arg;
9917 int hasColon = 0;
9918
9919 /* Look for a ':'. If this is a line number specification, then
9920 say it is bad, otherwise, it should be an address or
9921 function/method name. */
9922 while (*argptr && !hasColon)
9923 {
9924 hasColon = (*argptr == ':');
9925 argptr++;
9926 }
9927
9928 if (hasColon)
9929 badInput = (*argptr != ':'); /* Not a class::method */
9930 else
9931 badInput = isdigit (*arg); /* a simple line number */
9932 }
9933
9934 if (badInput)
9935 printf_filtered (_("Usage: stop in <function | address>\n"));
9936 else
9937 break_command_1 (arg, 0, from_tty);
9938}
9939
9940static void
9941stopat_command (char *arg, int from_tty)
9942{
9943 int badInput = 0;
9944
9945 if (arg == (char *) NULL || *arg == '*') /* no line number */
9946 badInput = 1;
9947 else
9948 {
9949 char *argptr = arg;
9950 int hasColon = 0;
9951
9952 /* Look for a ':'. If there is a '::' then get out, otherwise
9953 it is probably a line number. */
9954 while (*argptr && !hasColon)
9955 {
9956 hasColon = (*argptr == ':');
9957 argptr++;
9958 }
9959
9960 if (hasColon)
9961 badInput = (*argptr == ':'); /* we have class::method */
9962 else
9963 badInput = !isdigit (*arg); /* not a line number */
9964 }
9965
9966 if (badInput)
9967 printf_filtered (_("Usage: stop at <line>\n"));
9968 else
9969 break_command_1 (arg, 0, from_tty);
9970}
9971
9972/* The dynamic printf command is mostly like a regular breakpoint, but
9973 with a prewired command list consisting of a single output command,
9974 built from extra arguments supplied on the dprintf command
9975 line. */
9976
9977static void
9978dprintf_command (char *arg, int from_tty)
9979{
9980 event_location_up location = string_to_event_location (&arg, current_language);
9981
9982 /* If non-NULL, ARG should have been advanced past the location;
9983 the next character must be ','. */
9984 if (arg != NULL)
9985 {
9986 if (arg[0] != ',' || arg[1] == '\0')
9987 error (_("Format string required"));
9988 else
9989 {
9990 /* Skip the comma. */
9991 ++arg;
9992 }
9993 }
9994
9995 create_breakpoint (get_current_arch (),
9996 location.get (),
9997 NULL, 0, arg, 1 /* parse arg */,
9998 0, bp_dprintf,
9999 0 /* Ignore count */,
10000 pending_break_support,
10001 &dprintf_breakpoint_ops,
10002 from_tty,
10003 1 /* enabled */,
10004 0 /* internal */,
10005 0);
10006}
10007
10008static void
10009agent_printf_command (char *arg, int from_tty)
10010{
10011 error (_("May only run agent-printf on the target"));
10012}
10013
10014/* Implement the "breakpoint_hit" breakpoint_ops method for
10015 ranged breakpoints. */
10016
10017static int
10018breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10019 struct address_space *aspace,
10020 CORE_ADDR bp_addr,
10021 const struct target_waitstatus *ws)
10022{
10023 if (ws->kind != TARGET_WAITKIND_STOPPED
10024 || ws->value.sig != GDB_SIGNAL_TRAP)
10025 return 0;
10026
10027 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10028 bl->length, aspace, bp_addr);
10029}
10030
10031/* Implement the "resources_needed" breakpoint_ops method for
10032 ranged breakpoints. */
10033
10034static int
10035resources_needed_ranged_breakpoint (const struct bp_location *bl)
10036{
10037 return target_ranged_break_num_registers ();
10038}
10039
10040/* Implement the "print_it" breakpoint_ops method for
10041 ranged breakpoints. */
10042
10043static enum print_stop_action
10044print_it_ranged_breakpoint (bpstat bs)
10045{
10046 struct breakpoint *b = bs->breakpoint_at;
10047 struct bp_location *bl = b->loc;
10048 struct ui_out *uiout = current_uiout;
10049
10050 gdb_assert (b->type == bp_hardware_breakpoint);
10051
10052 /* Ranged breakpoints have only one location. */
10053 gdb_assert (bl && bl->next == NULL);
10054
10055 annotate_breakpoint (b->number);
10056
10057 maybe_print_thread_hit_breakpoint (uiout);
10058
10059 if (b->disposition == disp_del)
10060 uiout->text ("Temporary ranged breakpoint ");
10061 else
10062 uiout->text ("Ranged breakpoint ");
10063 if (uiout->is_mi_like_p ())
10064 {
10065 uiout->field_string ("reason",
10066 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10067 uiout->field_string ("disp", bpdisp_text (b->disposition));
10068 }
10069 uiout->field_int ("bkptno", b->number);
10070 uiout->text (", ");
10071
10072 return PRINT_SRC_AND_LOC;
10073}
10074
10075/* Implement the "print_one" breakpoint_ops method for
10076 ranged breakpoints. */
10077
10078static void
10079print_one_ranged_breakpoint (struct breakpoint *b,
10080 struct bp_location **last_loc)
10081{
10082 struct bp_location *bl = b->loc;
10083 struct value_print_options opts;
10084 struct ui_out *uiout = current_uiout;
10085
10086 /* Ranged breakpoints have only one location. */
10087 gdb_assert (bl && bl->next == NULL);
10088
10089 get_user_print_options (&opts);
10090
10091 if (opts.addressprint)
10092 /* We don't print the address range here, it will be printed later
10093 by print_one_detail_ranged_breakpoint. */
10094 uiout->field_skip ("addr");
10095 annotate_field (5);
10096 print_breakpoint_location (b, bl);
10097 *last_loc = bl;
10098}
10099
10100/* Implement the "print_one_detail" breakpoint_ops method for
10101 ranged breakpoints. */
10102
10103static void
10104print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10105 struct ui_out *uiout)
10106{
10107 CORE_ADDR address_start, address_end;
10108 struct bp_location *bl = b->loc;
10109 string_file stb;
10110
10111 gdb_assert (bl);
10112
10113 address_start = bl->address;
10114 address_end = address_start + bl->length - 1;
10115
10116 uiout->text ("\taddress range: ");
10117 stb.printf ("[%s, %s]",
10118 print_core_address (bl->gdbarch, address_start),
10119 print_core_address (bl->gdbarch, address_end));
10120 uiout->field_stream ("addr", stb);
10121 uiout->text ("\n");
10122}
10123
10124/* Implement the "print_mention" breakpoint_ops method for
10125 ranged breakpoints. */
10126
10127static void
10128print_mention_ranged_breakpoint (struct breakpoint *b)
10129{
10130 struct bp_location *bl = b->loc;
10131 struct ui_out *uiout = current_uiout;
10132
10133 gdb_assert (bl);
10134 gdb_assert (b->type == bp_hardware_breakpoint);
10135
10136 if (uiout->is_mi_like_p ())
10137 return;
10138
10139 printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10140 b->number, paddress (bl->gdbarch, bl->address),
10141 paddress (bl->gdbarch, bl->address + bl->length - 1));
10142}
10143
10144/* Implement the "print_recreate" breakpoint_ops method for
10145 ranged breakpoints. */
10146
10147static void
10148print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10149{
10150 fprintf_unfiltered (fp, "break-range %s, %s",
10151 event_location_to_string (b->location.get ()),
10152 event_location_to_string (b->location_range_end.get ()));
10153 print_recreate_thread (b, fp);
10154}
10155
10156/* The breakpoint_ops structure to be used in ranged breakpoints. */
10157
10158static struct breakpoint_ops ranged_breakpoint_ops;
10159
10160/* Find the address where the end of the breakpoint range should be
10161 placed, given the SAL of the end of the range. This is so that if
10162 the user provides a line number, the end of the range is set to the
10163 last instruction of the given line. */
10164
10165static CORE_ADDR
10166find_breakpoint_range_end (struct symtab_and_line sal)
10167{
10168 CORE_ADDR end;
10169
10170 /* If the user provided a PC value, use it. Otherwise,
10171 find the address of the end of the given location. */
10172 if (sal.explicit_pc)
10173 end = sal.pc;
10174 else
10175 {
10176 int ret;
10177 CORE_ADDR start;
10178
10179 ret = find_line_pc_range (sal, &start, &end);
10180 if (!ret)
10181 error (_("Could not find location of the end of the range."));
10182
10183 /* find_line_pc_range returns the start of the next line. */
10184 end--;
10185 }
10186
10187 return end;
10188}
10189
10190/* Implement the "break-range" CLI command. */
10191
10192static void
10193break_range_command (char *arg, int from_tty)
10194{
10195 char *arg_start, *addr_string_start;
10196 struct linespec_result canonical_start, canonical_end;
10197 int bp_count, can_use_bp, length;
10198 CORE_ADDR end;
10199 struct breakpoint *b;
10200 struct cleanup *cleanup_bkpt;
10201
10202 /* We don't support software ranged breakpoints. */
10203 if (target_ranged_break_num_registers () < 0)
10204 error (_("This target does not support hardware ranged breakpoints."));
10205
10206 bp_count = hw_breakpoint_used_count ();
10207 bp_count += target_ranged_break_num_registers ();
10208 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10209 bp_count, 0);
10210 if (can_use_bp < 0)
10211 error (_("Hardware breakpoints used exceeds limit."));
10212
10213 arg = skip_spaces (arg);
10214 if (arg == NULL || arg[0] == '\0')
10215 error(_("No address range specified."));
10216
10217 arg_start = arg;
10218 event_location_up start_location = string_to_event_location (&arg,
10219 current_language);
10220 parse_breakpoint_sals (start_location.get (), &canonical_start);
10221
10222 if (arg[0] != ',')
10223 error (_("Too few arguments."));
10224 else if (canonical_start.lsals.empty ())
10225 error (_("Could not find location of the beginning of the range."));
10226
10227 const linespec_sals &lsal_start = canonical_start.lsals[0];
10228
10229 if (canonical_start.lsals.size () > 1
10230 || lsal_start.sals.size () != 1)
10231 error (_("Cannot create a ranged breakpoint with multiple locations."));
10232
10233 const symtab_and_line &sal_start = lsal_start.sals[0];
10234 addr_string_start = savestring (arg_start, arg - arg_start);
10235 cleanup_bkpt = make_cleanup (xfree, addr_string_start);
10236
10237 arg++; /* Skip the comma. */
10238 arg = skip_spaces (arg);
10239
10240 /* Parse the end location. */
10241
10242 arg_start = arg;
10243
10244 /* We call decode_line_full directly here instead of using
10245 parse_breakpoint_sals because we need to specify the start location's
10246 symtab and line as the default symtab and line for the end of the
10247 range. This makes it possible to have ranges like "foo.c:27, +14",
10248 where +14 means 14 lines from the start location. */
10249 event_location_up end_location = string_to_event_location (&arg,
10250 current_language);
10251 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
10252 sal_start.symtab, sal_start.line,
10253 &canonical_end, NULL, NULL);
10254
10255 if (canonical_end.lsals.empty ())
10256 error (_("Could not find location of the end of the range."));
10257
10258 const linespec_sals &lsal_end = canonical_end.lsals[0];
10259 if (canonical_end.lsals.size () > 1
10260 || lsal_end.sals.size () != 1)
10261 error (_("Cannot create a ranged breakpoint with multiple locations."));
10262
10263 const symtab_and_line &sal_end = lsal_end.sals[0];
10264
10265 end = find_breakpoint_range_end (sal_end);
10266 if (sal_start.pc > end)
10267 error (_("Invalid address range, end precedes start."));
10268
10269 length = end - sal_start.pc + 1;
10270 if (length < 0)
10271 /* Length overflowed. */
10272 error (_("Address range too large."));
10273 else if (length == 1)
10274 {
10275 /* This range is simple enough to be handled by
10276 the `hbreak' command. */
10277 hbreak_command (addr_string_start, 1);
10278
10279 do_cleanups (cleanup_bkpt);
10280
10281 return;
10282 }
10283
10284 /* Now set up the breakpoint. */
10285 b = set_raw_breakpoint (get_current_arch (), sal_start,
10286 bp_hardware_breakpoint, &ranged_breakpoint_ops);
10287 set_breakpoint_count (breakpoint_count + 1);
10288 b->number = breakpoint_count;
10289 b->disposition = disp_donttouch;
10290 b->location = std::move (start_location);
10291 b->location_range_end = std::move (end_location);
10292 b->loc->length = length;
10293
10294 do_cleanups (cleanup_bkpt);
10295
10296 mention (b);
10297 observer_notify_breakpoint_created (b);
10298 update_global_location_list (UGLL_MAY_INSERT);
10299}
10300
10301/* Return non-zero if EXP is verified as constant. Returned zero
10302 means EXP is variable. Also the constant detection may fail for
10303 some constant expressions and in such case still falsely return
10304 zero. */
10305
10306static int
10307watchpoint_exp_is_const (const struct expression *exp)
10308{
10309 int i = exp->nelts;
10310
10311 while (i > 0)
10312 {
10313 int oplenp, argsp;
10314
10315 /* We are only interested in the descriptor of each element. */
10316 operator_length (exp, i, &oplenp, &argsp);
10317 i -= oplenp;
10318
10319 switch (exp->elts[i].opcode)
10320 {
10321 case BINOP_ADD:
10322 case BINOP_SUB:
10323 case BINOP_MUL:
10324 case BINOP_DIV:
10325 case BINOP_REM:
10326 case BINOP_MOD:
10327 case BINOP_LSH:
10328 case BINOP_RSH:
10329 case BINOP_LOGICAL_AND:
10330 case BINOP_LOGICAL_OR:
10331 case BINOP_BITWISE_AND:
10332 case BINOP_BITWISE_IOR:
10333 case BINOP_BITWISE_XOR:
10334 case BINOP_EQUAL:
10335 case BINOP_NOTEQUAL:
10336 case BINOP_LESS:
10337 case BINOP_GTR:
10338 case BINOP_LEQ:
10339 case BINOP_GEQ:
10340 case BINOP_REPEAT:
10341 case BINOP_COMMA:
10342 case BINOP_EXP:
10343 case BINOP_MIN:
10344 case BINOP_MAX:
10345 case BINOP_INTDIV:
10346 case BINOP_CONCAT:
10347 case TERNOP_COND:
10348 case TERNOP_SLICE:
10349
10350 case OP_LONG:
10351 case OP_DOUBLE:
10352 case OP_DECFLOAT:
10353 case OP_LAST:
10354 case OP_COMPLEX:
10355 case OP_STRING:
10356 case OP_ARRAY:
10357 case OP_TYPE:
10358 case OP_TYPEOF:
10359 case OP_DECLTYPE:
10360 case OP_TYPEID:
10361 case OP_NAME:
10362 case OP_OBJC_NSSTRING:
10363
10364 case UNOP_NEG:
10365 case UNOP_LOGICAL_NOT:
10366 case UNOP_COMPLEMENT:
10367 case UNOP_ADDR:
10368 case UNOP_HIGH:
10369 case UNOP_CAST:
10370
10371 case UNOP_CAST_TYPE:
10372 case UNOP_REINTERPRET_CAST:
10373 case UNOP_DYNAMIC_CAST:
10374 /* Unary, binary and ternary operators: We have to check
10375 their operands. If they are constant, then so is the
10376 result of that operation. For instance, if A and B are
10377 determined to be constants, then so is "A + B".
10378
10379 UNOP_IND is one exception to the rule above, because the
10380 value of *ADDR is not necessarily a constant, even when
10381 ADDR is. */
10382 break;
10383
10384 case OP_VAR_VALUE:
10385 /* Check whether the associated symbol is a constant.
10386
10387 We use SYMBOL_CLASS rather than TYPE_CONST because it's
10388 possible that a buggy compiler could mark a variable as
10389 constant even when it is not, and TYPE_CONST would return
10390 true in this case, while SYMBOL_CLASS wouldn't.
10391
10392 We also have to check for function symbols because they
10393 are always constant. */
10394 {
10395 struct symbol *s = exp->elts[i + 2].symbol;
10396
10397 if (SYMBOL_CLASS (s) != LOC_BLOCK
10398 && SYMBOL_CLASS (s) != LOC_CONST
10399 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10400 return 0;
10401 break;
10402 }
10403
10404 /* The default action is to return 0 because we are using
10405 the optimistic approach here: If we don't know something,
10406 then it is not a constant. */
10407 default:
10408 return 0;
10409 }
10410 }
10411
10412 return 1;
10413}
10414
10415/* Watchpoint destructor. */
10416
10417watchpoint::~watchpoint ()
10418{
10419 xfree (this->exp_string);
10420 xfree (this->exp_string_reparse);
10421 value_free (this->val);
10422}
10423
10424/* Implement the "re_set" breakpoint_ops method for watchpoints. */
10425
10426static void
10427re_set_watchpoint (struct breakpoint *b)
10428{
10429 struct watchpoint *w = (struct watchpoint *) b;
10430
10431 /* Watchpoint can be either on expression using entirely global
10432 variables, or it can be on local variables.
10433
10434 Watchpoints of the first kind are never auto-deleted, and even
10435 persist across program restarts. Since they can use variables
10436 from shared libraries, we need to reparse expression as libraries
10437 are loaded and unloaded.
10438
10439 Watchpoints on local variables can also change meaning as result
10440 of solib event. For example, if a watchpoint uses both a local
10441 and a global variables in expression, it's a local watchpoint,
10442 but unloading of a shared library will make the expression
10443 invalid. This is not a very common use case, but we still
10444 re-evaluate expression, to avoid surprises to the user.
10445
10446 Note that for local watchpoints, we re-evaluate it only if
10447 watchpoints frame id is still valid. If it's not, it means the
10448 watchpoint is out of scope and will be deleted soon. In fact,
10449 I'm not sure we'll ever be called in this case.
10450
10451 If a local watchpoint's frame id is still valid, then
10452 w->exp_valid_block is likewise valid, and we can safely use it.
10453
10454 Don't do anything about disabled watchpoints, since they will be
10455 reevaluated again when enabled. */
10456 update_watchpoint (w, 1 /* reparse */);
10457}
10458
10459/* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10460
10461static int
10462insert_watchpoint (struct bp_location *bl)
10463{
10464 struct watchpoint *w = (struct watchpoint *) bl->owner;
10465 int length = w->exact ? 1 : bl->length;
10466
10467 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10468 w->cond_exp.get ());
10469}
10470
10471/* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10472
10473static int
10474remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10475{
10476 struct watchpoint *w = (struct watchpoint *) bl->owner;
10477 int length = w->exact ? 1 : bl->length;
10478
10479 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10480 w->cond_exp.get ());
10481}
10482
10483static int
10484breakpoint_hit_watchpoint (const struct bp_location *bl,
10485 struct address_space *aspace, CORE_ADDR bp_addr,
10486 const struct target_waitstatus *ws)
10487{
10488 struct breakpoint *b = bl->owner;
10489 struct watchpoint *w = (struct watchpoint *) b;
10490
10491 /* Continuable hardware watchpoints are treated as non-existent if the
10492 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10493 some data address). Otherwise gdb won't stop on a break instruction
10494 in the code (not from a breakpoint) when a hardware watchpoint has
10495 been defined. Also skip watchpoints which we know did not trigger
10496 (did not match the data address). */
10497 if (is_hardware_watchpoint (b)
10498 && w->watchpoint_triggered == watch_triggered_no)
10499 return 0;
10500
10501 return 1;
10502}
10503
10504static void
10505check_status_watchpoint (bpstat bs)
10506{
10507 gdb_assert (is_watchpoint (bs->breakpoint_at));
10508
10509 bpstat_check_watchpoint (bs);
10510}
10511
10512/* Implement the "resources_needed" breakpoint_ops method for
10513 hardware watchpoints. */
10514
10515static int
10516resources_needed_watchpoint (const struct bp_location *bl)
10517{
10518 struct watchpoint *w = (struct watchpoint *) bl->owner;
10519 int length = w->exact? 1 : bl->length;
10520
10521 return target_region_ok_for_hw_watchpoint (bl->address, length);
10522}
10523
10524/* Implement the "works_in_software_mode" breakpoint_ops method for
10525 hardware watchpoints. */
10526
10527static int
10528works_in_software_mode_watchpoint (const struct breakpoint *b)
10529{
10530 /* Read and access watchpoints only work with hardware support. */
10531 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10532}
10533
10534static enum print_stop_action
10535print_it_watchpoint (bpstat bs)
10536{
10537 struct breakpoint *b;
10538 enum print_stop_action result;
10539 struct watchpoint *w;
10540 struct ui_out *uiout = current_uiout;
10541
10542 gdb_assert (bs->bp_location_at != NULL);
10543
10544 b = bs->breakpoint_at;
10545 w = (struct watchpoint *) b;
10546
10547 annotate_watchpoint (b->number);
10548 maybe_print_thread_hit_breakpoint (uiout);
10549
10550 string_file stb;
10551
10552 gdb::optional<ui_out_emit_tuple> tuple_emitter;
10553 switch (b->type)
10554 {
10555 case bp_watchpoint:
10556 case bp_hardware_watchpoint:
10557 if (uiout->is_mi_like_p ())
10558 uiout->field_string
10559 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10560 mention (b);
10561 tuple_emitter.emplace (uiout, "value");
10562 uiout->text ("\nOld value = ");
10563 watchpoint_value_print (bs->old_val, &stb);
10564 uiout->field_stream ("old", stb);
10565 uiout->text ("\nNew value = ");
10566 watchpoint_value_print (w->val, &stb);
10567 uiout->field_stream ("new", stb);
10568 uiout->text ("\n");
10569 /* More than one watchpoint may have been triggered. */
10570 result = PRINT_UNKNOWN;
10571 break;
10572
10573 case bp_read_watchpoint:
10574 if (uiout->is_mi_like_p ())
10575 uiout->field_string
10576 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10577 mention (b);
10578 tuple_emitter.emplace (uiout, "value");
10579 uiout->text ("\nValue = ");
10580 watchpoint_value_print (w->val, &stb);
10581 uiout->field_stream ("value", stb);
10582 uiout->text ("\n");
10583 result = PRINT_UNKNOWN;
10584 break;
10585
10586 case bp_access_watchpoint:
10587 if (bs->old_val != NULL)
10588 {
10589 if (uiout->is_mi_like_p ())
10590 uiout->field_string
10591 ("reason",
10592 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10593 mention (b);
10594 tuple_emitter.emplace (uiout, "value");
10595 uiout->text ("\nOld value = ");
10596 watchpoint_value_print (bs->old_val, &stb);
10597 uiout->field_stream ("old", stb);
10598 uiout->text ("\nNew value = ");
10599 }
10600 else
10601 {
10602 mention (b);
10603 if (uiout->is_mi_like_p ())
10604 uiout->field_string
10605 ("reason",
10606 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10607 tuple_emitter.emplace (uiout, "value");
10608 uiout->text ("\nValue = ");
10609 }
10610 watchpoint_value_print (w->val, &stb);
10611 uiout->field_stream ("new", stb);
10612 uiout->text ("\n");
10613 result = PRINT_UNKNOWN;
10614 break;
10615 default:
10616 result = PRINT_UNKNOWN;
10617 }
10618
10619 return result;
10620}
10621
10622/* Implement the "print_mention" breakpoint_ops method for hardware
10623 watchpoints. */
10624
10625static void
10626print_mention_watchpoint (struct breakpoint *b)
10627{
10628 struct watchpoint *w = (struct watchpoint *) b;
10629 struct ui_out *uiout = current_uiout;
10630 const char *tuple_name;
10631
10632 switch (b->type)
10633 {
10634 case bp_watchpoint:
10635 uiout->text ("Watchpoint ");
10636 tuple_name = "wpt";
10637 break;
10638 case bp_hardware_watchpoint:
10639 uiout->text ("Hardware watchpoint ");
10640 tuple_name = "wpt";
10641 break;
10642 case bp_read_watchpoint:
10643 uiout->text ("Hardware read watchpoint ");
10644 tuple_name = "hw-rwpt";
10645 break;
10646 case bp_access_watchpoint:
10647 uiout->text ("Hardware access (read/write) watchpoint ");
10648 tuple_name = "hw-awpt";
10649 break;
10650 default:
10651 internal_error (__FILE__, __LINE__,
10652 _("Invalid hardware watchpoint type."));
10653 }
10654
10655 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10656 uiout->field_int ("number", b->number);
10657 uiout->text (": ");
10658 uiout->field_string ("exp", w->exp_string);
10659}
10660
10661/* Implement the "print_recreate" breakpoint_ops method for
10662 watchpoints. */
10663
10664static void
10665print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10666{
10667 struct watchpoint *w = (struct watchpoint *) b;
10668
10669 switch (b->type)
10670 {
10671 case bp_watchpoint:
10672 case bp_hardware_watchpoint:
10673 fprintf_unfiltered (fp, "watch");
10674 break;
10675 case bp_read_watchpoint:
10676 fprintf_unfiltered (fp, "rwatch");
10677 break;
10678 case bp_access_watchpoint:
10679 fprintf_unfiltered (fp, "awatch");
10680 break;
10681 default:
10682 internal_error (__FILE__, __LINE__,
10683 _("Invalid watchpoint type."));
10684 }
10685
10686 fprintf_unfiltered (fp, " %s", w->exp_string);
10687 print_recreate_thread (b, fp);
10688}
10689
10690/* Implement the "explains_signal" breakpoint_ops method for
10691 watchpoints. */
10692
10693static int
10694explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10695{
10696 /* A software watchpoint cannot cause a signal other than
10697 GDB_SIGNAL_TRAP. */
10698 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10699 return 0;
10700
10701 return 1;
10702}
10703
10704/* The breakpoint_ops structure to be used in hardware watchpoints. */
10705
10706static struct breakpoint_ops watchpoint_breakpoint_ops;
10707
10708/* Implement the "insert" breakpoint_ops method for
10709 masked hardware watchpoints. */
10710
10711static int
10712insert_masked_watchpoint (struct bp_location *bl)
10713{
10714 struct watchpoint *w = (struct watchpoint *) bl->owner;
10715
10716 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10717 bl->watchpoint_type);
10718}
10719
10720/* Implement the "remove" breakpoint_ops method for
10721 masked hardware watchpoints. */
10722
10723static int
10724remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10725{
10726 struct watchpoint *w = (struct watchpoint *) bl->owner;
10727
10728 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10729 bl->watchpoint_type);
10730}
10731
10732/* Implement the "resources_needed" breakpoint_ops method for
10733 masked hardware watchpoints. */
10734
10735static int
10736resources_needed_masked_watchpoint (const struct bp_location *bl)
10737{
10738 struct watchpoint *w = (struct watchpoint *) bl->owner;
10739
10740 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10741}
10742
10743/* Implement the "works_in_software_mode" breakpoint_ops method for
10744 masked hardware watchpoints. */
10745
10746static int
10747works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10748{
10749 return 0;
10750}
10751
10752/* Implement the "print_it" breakpoint_ops method for
10753 masked hardware watchpoints. */
10754
10755static enum print_stop_action
10756print_it_masked_watchpoint (bpstat bs)
10757{
10758 struct breakpoint *b = bs->breakpoint_at;
10759 struct ui_out *uiout = current_uiout;
10760
10761 /* Masked watchpoints have only one location. */
10762 gdb_assert (b->loc && b->loc->next == NULL);
10763
10764 annotate_watchpoint (b->number);
10765 maybe_print_thread_hit_breakpoint (uiout);
10766
10767 switch (b->type)
10768 {
10769 case bp_hardware_watchpoint:
10770 if (uiout->is_mi_like_p ())
10771 uiout->field_string
10772 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10773 break;
10774
10775 case bp_read_watchpoint:
10776 if (uiout->is_mi_like_p ())
10777 uiout->field_string
10778 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10779 break;
10780
10781 case bp_access_watchpoint:
10782 if (uiout->is_mi_like_p ())
10783 uiout->field_string
10784 ("reason",
10785 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10786 break;
10787 default:
10788 internal_error (__FILE__, __LINE__,
10789 _("Invalid hardware watchpoint type."));
10790 }
10791
10792 mention (b);
10793 uiout->text (_("\n\
10794Check the underlying instruction at PC for the memory\n\
10795address and value which triggered this watchpoint.\n"));
10796 uiout->text ("\n");
10797
10798 /* More than one watchpoint may have been triggered. */
10799 return PRINT_UNKNOWN;
10800}
10801
10802/* Implement the "print_one_detail" breakpoint_ops method for
10803 masked hardware watchpoints. */
10804
10805static void
10806print_one_detail_masked_watchpoint (const struct breakpoint *b,
10807 struct ui_out *uiout)
10808{
10809 struct watchpoint *w = (struct watchpoint *) b;
10810
10811 /* Masked watchpoints have only one location. */
10812 gdb_assert (b->loc && b->loc->next == NULL);
10813
10814 uiout->text ("\tmask ");
10815 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10816 uiout->text ("\n");
10817}
10818
10819/* Implement the "print_mention" breakpoint_ops method for
10820 masked hardware watchpoints. */
10821
10822static void
10823print_mention_masked_watchpoint (struct breakpoint *b)
10824{
10825 struct watchpoint *w = (struct watchpoint *) b;
10826 struct ui_out *uiout = current_uiout;
10827 const char *tuple_name;
10828
10829 switch (b->type)
10830 {
10831 case bp_hardware_watchpoint:
10832 uiout->text ("Masked hardware watchpoint ");
10833 tuple_name = "wpt";
10834 break;
10835 case bp_read_watchpoint:
10836 uiout->text ("Masked hardware read watchpoint ");
10837 tuple_name = "hw-rwpt";
10838 break;
10839 case bp_access_watchpoint:
10840 uiout->text ("Masked hardware access (read/write) watchpoint ");
10841 tuple_name = "hw-awpt";
10842 break;
10843 default:
10844 internal_error (__FILE__, __LINE__,
10845 _("Invalid hardware watchpoint type."));
10846 }
10847
10848 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10849 uiout->field_int ("number", b->number);
10850 uiout->text (": ");
10851 uiout->field_string ("exp", w->exp_string);
10852}
10853
10854/* Implement the "print_recreate" breakpoint_ops method for
10855 masked hardware watchpoints. */
10856
10857static void
10858print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10859{
10860 struct watchpoint *w = (struct watchpoint *) b;
10861 char tmp[40];
10862
10863 switch (b->type)
10864 {
10865 case bp_hardware_watchpoint:
10866 fprintf_unfiltered (fp, "watch");
10867 break;
10868 case bp_read_watchpoint:
10869 fprintf_unfiltered (fp, "rwatch");
10870 break;
10871 case bp_access_watchpoint:
10872 fprintf_unfiltered (fp, "awatch");
10873 break;
10874 default:
10875 internal_error (__FILE__, __LINE__,
10876 _("Invalid hardware watchpoint type."));
10877 }
10878
10879 sprintf_vma (tmp, w->hw_wp_mask);
10880 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10881 print_recreate_thread (b, fp);
10882}
10883
10884/* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10885
10886static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10887
10888/* Tell whether the given watchpoint is a masked hardware watchpoint. */
10889
10890static int
10891is_masked_watchpoint (const struct breakpoint *b)
10892{
10893 return b->ops == &masked_watchpoint_breakpoint_ops;
10894}
10895
10896/* accessflag: hw_write: watch write,
10897 hw_read: watch read,
10898 hw_access: watch access (read or write) */
10899static void
10900watch_command_1 (const char *arg, int accessflag, int from_tty,
10901 int just_location, int internal)
10902{
10903 struct breakpoint *scope_breakpoint = NULL;
10904 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10905 struct value *val, *mark, *result;
10906 int saved_bitpos = 0, saved_bitsize = 0;
10907 const char *exp_start = NULL;
10908 const char *exp_end = NULL;
10909 const char *tok, *end_tok;
10910 int toklen = -1;
10911 const char *cond_start = NULL;
10912 const char *cond_end = NULL;
10913 enum bptype bp_type;
10914 int thread = -1;
10915 int pc = 0;
10916 /* Flag to indicate whether we are going to use masks for
10917 the hardware watchpoint. */
10918 int use_mask = 0;
10919 CORE_ADDR mask = 0;
10920 char *expression;
10921 struct cleanup *back_to;
10922
10923 /* Make sure that we actually have parameters to parse. */
10924 if (arg != NULL && arg[0] != '\0')
10925 {
10926 const char *value_start;
10927
10928 exp_end = arg + strlen (arg);
10929
10930 /* Look for "parameter value" pairs at the end
10931 of the arguments string. */
10932 for (tok = exp_end - 1; tok > arg; tok--)
10933 {
10934 /* Skip whitespace at the end of the argument list. */
10935 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10936 tok--;
10937
10938 /* Find the beginning of the last token.
10939 This is the value of the parameter. */
10940 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10941 tok--;
10942 value_start = tok + 1;
10943
10944 /* Skip whitespace. */
10945 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10946 tok--;
10947
10948 end_tok = tok;
10949
10950 /* Find the beginning of the second to last token.
10951 This is the parameter itself. */
10952 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10953 tok--;
10954 tok++;
10955 toklen = end_tok - tok + 1;
10956
10957 if (toklen == 6 && startswith (tok, "thread"))
10958 {
10959 struct thread_info *thr;
10960 /* At this point we've found a "thread" token, which means
10961 the user is trying to set a watchpoint that triggers
10962 only in a specific thread. */
10963 const char *endp;
10964
10965 if (thread != -1)
10966 error(_("You can specify only one thread."));
10967
10968 /* Extract the thread ID from the next token. */
10969 thr = parse_thread_id (value_start, &endp);
10970
10971 /* Check if the user provided a valid thread ID. */
10972 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10973 invalid_thread_id_error (value_start);
10974
10975 thread = thr->global_num;
10976 }
10977 else if (toklen == 4 && startswith (tok, "mask"))
10978 {
10979 /* We've found a "mask" token, which means the user wants to
10980 create a hardware watchpoint that is going to have the mask
10981 facility. */
10982 struct value *mask_value, *mark;
10983
10984 if (use_mask)
10985 error(_("You can specify only one mask."));
10986
10987 use_mask = just_location = 1;
10988
10989 mark = value_mark ();
10990 mask_value = parse_to_comma_and_eval (&value_start);
10991 mask = value_as_address (mask_value);
10992 value_free_to_mark (mark);
10993 }
10994 else
10995 /* We didn't recognize what we found. We should stop here. */
10996 break;
10997
10998 /* Truncate the string and get rid of the "parameter value" pair before
10999 the arguments string is parsed by the parse_exp_1 function. */
11000 exp_end = tok;
11001 }
11002 }
11003 else
11004 exp_end = arg;
11005
11006 /* Parse the rest of the arguments. From here on out, everything
11007 is in terms of a newly allocated string instead of the original
11008 ARG. */
11009 innermost_block = NULL;
11010 expression = savestring (arg, exp_end - arg);
11011 back_to = make_cleanup (xfree, expression);
11012 exp_start = arg = expression;
11013 expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
11014 exp_end = arg;
11015 /* Remove trailing whitespace from the expression before saving it.
11016 This makes the eventual display of the expression string a bit
11017 prettier. */
11018 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11019 --exp_end;
11020
11021 /* Checking if the expression is not constant. */
11022 if (watchpoint_exp_is_const (exp.get ()))
11023 {
11024 int len;
11025
11026 len = exp_end - exp_start;
11027 while (len > 0 && isspace (exp_start[len - 1]))
11028 len--;
11029 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11030 }
11031
11032 exp_valid_block = innermost_block;
11033 mark = value_mark ();
11034 fetch_subexp_value (exp.get (), &pc, &val, &result, NULL, just_location);
11035
11036 if (val != NULL && just_location)
11037 {
11038 saved_bitpos = value_bitpos (val);
11039 saved_bitsize = value_bitsize (val);
11040 }
11041
11042 if (just_location)
11043 {
11044 int ret;
11045
11046 exp_valid_block = NULL;
11047 val = value_addr (result);
11048 release_value (val);
11049 value_free_to_mark (mark);
11050
11051 if (use_mask)
11052 {
11053 ret = target_masked_watch_num_registers (value_as_address (val),
11054 mask);
11055 if (ret == -1)
11056 error (_("This target does not support masked watchpoints."));
11057 else if (ret == -2)
11058 error (_("Invalid mask or memory region."));
11059 }
11060 }
11061 else if (val != NULL)
11062 release_value (val);
11063
11064 tok = skip_spaces (arg);
11065 end_tok = skip_to_space (tok);
11066
11067 toklen = end_tok - tok;
11068 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11069 {
11070 innermost_block = NULL;
11071 tok = cond_start = end_tok + 1;
11072 parse_exp_1 (&tok, 0, 0, 0);
11073
11074 /* The watchpoint expression may not be local, but the condition
11075 may still be. E.g.: `watch global if local > 0'. */
11076 cond_exp_valid_block = innermost_block;
11077
11078 cond_end = tok;
11079 }
11080 if (*tok)
11081 error (_("Junk at end of command."));
11082
11083 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
11084
11085 /* Save this because create_internal_breakpoint below invalidates
11086 'wp_frame'. */
11087 frame_id watchpoint_frame = get_frame_id (wp_frame);
11088
11089 /* If the expression is "local", then set up a "watchpoint scope"
11090 breakpoint at the point where we've left the scope of the watchpoint
11091 expression. Create the scope breakpoint before the watchpoint, so
11092 that we will encounter it first in bpstat_stop_status. */
11093 if (exp_valid_block != NULL && wp_frame != NULL)
11094 {
11095 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
11096
11097 if (frame_id_p (caller_frame_id))
11098 {
11099 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
11100 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
11101
11102 scope_breakpoint
11103 = create_internal_breakpoint (caller_arch, caller_pc,
11104 bp_watchpoint_scope,
11105 &momentary_breakpoint_ops);
11106
11107 /* create_internal_breakpoint could invalidate WP_FRAME. */
11108 wp_frame = NULL;
11109
11110 scope_breakpoint->enable_state = bp_enabled;
11111
11112 /* Automatically delete the breakpoint when it hits. */
11113 scope_breakpoint->disposition = disp_del;
11114
11115 /* Only break in the proper frame (help with recursion). */
11116 scope_breakpoint->frame_id = caller_frame_id;
11117
11118 /* Set the address at which we will stop. */
11119 scope_breakpoint->loc->gdbarch = caller_arch;
11120 scope_breakpoint->loc->requested_address = caller_pc;
11121 scope_breakpoint->loc->address
11122 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11123 scope_breakpoint->loc->requested_address,
11124 scope_breakpoint->type);
11125 }
11126 }
11127
11128 /* Now set up the breakpoint. We create all watchpoints as hardware
11129 watchpoints here even if hardware watchpoints are turned off, a call
11130 to update_watchpoint later in this function will cause the type to
11131 drop back to bp_watchpoint (software watchpoint) if required. */
11132
11133 if (accessflag == hw_read)
11134 bp_type = bp_read_watchpoint;
11135 else if (accessflag == hw_access)
11136 bp_type = bp_access_watchpoint;
11137 else
11138 bp_type = bp_hardware_watchpoint;
11139
11140 std::unique_ptr<watchpoint> w (new watchpoint ());
11141
11142 if (use_mask)
11143 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
11144 &masked_watchpoint_breakpoint_ops);
11145 else
11146 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
11147 &watchpoint_breakpoint_ops);
11148 w->thread = thread;
11149 w->disposition = disp_donttouch;
11150 w->pspace = current_program_space;
11151 w->exp = std::move (exp);
11152 w->exp_valid_block = exp_valid_block;
11153 w->cond_exp_valid_block = cond_exp_valid_block;
11154 if (just_location)
11155 {
11156 struct type *t = value_type (val);
11157 CORE_ADDR addr = value_as_address (val);
11158
11159 w->exp_string_reparse
11160 = current_language->la_watch_location_expression (t, addr).release ();
11161
11162 w->exp_string = xstrprintf ("-location %.*s",
11163 (int) (exp_end - exp_start), exp_start);
11164 }
11165 else
11166 w->exp_string = savestring (exp_start, exp_end - exp_start);
11167
11168 if (use_mask)
11169 {
11170 w->hw_wp_mask = mask;
11171 }
11172 else
11173 {
11174 w->val = val;
11175 w->val_bitpos = saved_bitpos;
11176 w->val_bitsize = saved_bitsize;
11177 w->val_valid = 1;
11178 }
11179
11180 if (cond_start)
11181 w->cond_string = savestring (cond_start, cond_end - cond_start);
11182 else
11183 w->cond_string = 0;
11184
11185 if (frame_id_p (watchpoint_frame))
11186 {
11187 w->watchpoint_frame = watchpoint_frame;
11188 w->watchpoint_thread = inferior_ptid;
11189 }
11190 else
11191 {
11192 w->watchpoint_frame = null_frame_id;
11193 w->watchpoint_thread = null_ptid;
11194 }
11195
11196 if (scope_breakpoint != NULL)
11197 {
11198 /* The scope breakpoint is related to the watchpoint. We will
11199 need to act on them together. */
11200 w->related_breakpoint = scope_breakpoint;
11201 scope_breakpoint->related_breakpoint = w.get ();
11202 }
11203
11204 if (!just_location)
11205 value_free_to_mark (mark);
11206
11207 /* Finally update the new watchpoint. This creates the locations
11208 that should be inserted. */
11209 update_watchpoint (w.get (), 1);
11210
11211 install_breakpoint (internal, std::move (w), 1);
11212 do_cleanups (back_to);
11213}
11214
11215/* Return count of debug registers needed to watch the given expression.
11216 If the watchpoint cannot be handled in hardware return zero. */
11217
11218static int
11219can_use_hardware_watchpoint (struct value *v)
11220{
11221 int found_memory_cnt = 0;
11222 struct value *head = v;
11223
11224 /* Did the user specifically forbid us to use hardware watchpoints? */
11225 if (!can_use_hw_watchpoints)
11226 return 0;
11227
11228 /* Make sure that the value of the expression depends only upon
11229 memory contents, and values computed from them within GDB. If we
11230 find any register references or function calls, we can't use a
11231 hardware watchpoint.
11232
11233 The idea here is that evaluating an expression generates a series
11234 of values, one holding the value of every subexpression. (The
11235 expression a*b+c has five subexpressions: a, b, a*b, c, and
11236 a*b+c.) GDB's values hold almost enough information to establish
11237 the criteria given above --- they identify memory lvalues,
11238 register lvalues, computed values, etcetera. So we can evaluate
11239 the expression, and then scan the chain of values that leaves
11240 behind to decide whether we can detect any possible change to the
11241 expression's final value using only hardware watchpoints.
11242
11243 However, I don't think that the values returned by inferior
11244 function calls are special in any way. So this function may not
11245 notice that an expression involving an inferior function call
11246 can't be watched with hardware watchpoints. FIXME. */
11247 for (; v; v = value_next (v))
11248 {
11249 if (VALUE_LVAL (v) == lval_memory)
11250 {
11251 if (v != head && value_lazy (v))
11252 /* A lazy memory lvalue in the chain is one that GDB never
11253 needed to fetch; we either just used its address (e.g.,
11254 `a' in `a.b') or we never needed it at all (e.g., `a'
11255 in `a,b'). This doesn't apply to HEAD; if that is
11256 lazy then it was not readable, but watch it anyway. */
11257 ;
11258 else
11259 {
11260 /* Ahh, memory we actually used! Check if we can cover
11261 it with hardware watchpoints. */
11262 struct type *vtype = check_typedef (value_type (v));
11263
11264 /* We only watch structs and arrays if user asked for it
11265 explicitly, never if they just happen to appear in a
11266 middle of some value chain. */
11267 if (v == head
11268 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11269 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11270 {
11271 CORE_ADDR vaddr = value_address (v);
11272 int len;
11273 int num_regs;
11274
11275 len = (target_exact_watchpoints
11276 && is_scalar_type_recursive (vtype))?
11277 1 : TYPE_LENGTH (value_type (v));
11278
11279 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11280 if (!num_regs)
11281 return 0;
11282 else
11283 found_memory_cnt += num_regs;
11284 }
11285 }
11286 }
11287 else if (VALUE_LVAL (v) != not_lval
11288 && deprecated_value_modifiable (v) == 0)
11289 return 0; /* These are values from the history (e.g., $1). */
11290 else if (VALUE_LVAL (v) == lval_register)
11291 return 0; /* Cannot watch a register with a HW watchpoint. */
11292 }
11293
11294 /* The expression itself looks suitable for using a hardware
11295 watchpoint, but give the target machine a chance to reject it. */
11296 return found_memory_cnt;
11297}
11298
11299void
11300watch_command_wrapper (char *arg, int from_tty, int internal)
11301{
11302 watch_command_1 (arg, hw_write, from_tty, 0, internal);
11303}
11304
11305/* A helper function that looks for the "-location" argument and then
11306 calls watch_command_1. */
11307
11308static void
11309watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11310{
11311 int just_location = 0;
11312
11313 if (arg
11314 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11315 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11316 {
11317 arg = skip_spaces (arg);
11318 just_location = 1;
11319 }
11320
11321 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11322}
11323
11324static void
11325watch_command (char *arg, int from_tty)
11326{
11327 watch_maybe_just_location (arg, hw_write, from_tty);
11328}
11329
11330void
11331rwatch_command_wrapper (char *arg, int from_tty, int internal)
11332{
11333 watch_command_1 (arg, hw_read, from_tty, 0, internal);
11334}
11335
11336static void
11337rwatch_command (char *arg, int from_tty)
11338{
11339 watch_maybe_just_location (arg, hw_read, from_tty);
11340}
11341
11342void
11343awatch_command_wrapper (char *arg, int from_tty, int internal)
11344{
11345 watch_command_1 (arg, hw_access, from_tty, 0, internal);
11346}
11347
11348static void
11349awatch_command (char *arg, int from_tty)
11350{
11351 watch_maybe_just_location (arg, hw_access, from_tty);
11352}
11353\f
11354
11355/* Data for the FSM that manages the until(location)/advance commands
11356 in infcmd.c. Here because it uses the mechanisms of
11357 breakpoints. */
11358
11359struct until_break_fsm
11360{
11361 /* The base class. */
11362 struct thread_fsm thread_fsm;
11363
11364 /* The thread that as current when the command was executed. */
11365 int thread;
11366
11367 /* The breakpoint set at the destination location. */
11368 struct breakpoint *location_breakpoint;
11369
11370 /* Breakpoint set at the return address in the caller frame. May be
11371 NULL. */
11372 struct breakpoint *caller_breakpoint;
11373};
11374
11375static void until_break_fsm_clean_up (struct thread_fsm *self,
11376 struct thread_info *thread);
11377static int until_break_fsm_should_stop (struct thread_fsm *self,
11378 struct thread_info *thread);
11379static enum async_reply_reason
11380 until_break_fsm_async_reply_reason (struct thread_fsm *self);
11381
11382/* until_break_fsm's vtable. */
11383
11384static struct thread_fsm_ops until_break_fsm_ops =
11385{
11386 NULL, /* dtor */
11387 until_break_fsm_clean_up,
11388 until_break_fsm_should_stop,
11389 NULL, /* return_value */
11390 until_break_fsm_async_reply_reason,
11391};
11392
11393/* Allocate a new until_break_command_fsm. */
11394
11395static struct until_break_fsm *
11396new_until_break_fsm (struct interp *cmd_interp, int thread,
11397 struct breakpoint *location_breakpoint,
11398 struct breakpoint *caller_breakpoint)
11399{
11400 struct until_break_fsm *sm;
11401
11402 sm = XCNEW (struct until_break_fsm);
11403 thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
11404
11405 sm->thread = thread;
11406 sm->location_breakpoint = location_breakpoint;
11407 sm->caller_breakpoint = caller_breakpoint;
11408
11409 return sm;
11410}
11411
11412/* Implementation of the 'should_stop' FSM method for the
11413 until(location)/advance commands. */
11414
11415static int
11416until_break_fsm_should_stop (struct thread_fsm *self,
11417 struct thread_info *tp)
11418{
11419 struct until_break_fsm *sm = (struct until_break_fsm *) self;
11420
11421 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11422 sm->location_breakpoint) != NULL
11423 || (sm->caller_breakpoint != NULL
11424 && bpstat_find_breakpoint (tp->control.stop_bpstat,
11425 sm->caller_breakpoint) != NULL))
11426 thread_fsm_set_finished (self);
11427
11428 return 1;
11429}
11430
11431/* Implementation of the 'clean_up' FSM method for the
11432 until(location)/advance commands. */
11433
11434static void
11435until_break_fsm_clean_up (struct thread_fsm *self,
11436 struct thread_info *thread)
11437{
11438 struct until_break_fsm *sm = (struct until_break_fsm *) self;
11439
11440 /* Clean up our temporary breakpoints. */
11441 if (sm->location_breakpoint != NULL)
11442 {
11443 delete_breakpoint (sm->location_breakpoint);
11444 sm->location_breakpoint = NULL;
11445 }
11446 if (sm->caller_breakpoint != NULL)
11447 {
11448 delete_breakpoint (sm->caller_breakpoint);
11449 sm->caller_breakpoint = NULL;
11450 }
11451 delete_longjmp_breakpoint (sm->thread);
11452}
11453
11454/* Implementation of the 'async_reply_reason' FSM method for the
11455 until(location)/advance commands. */
11456
11457static enum async_reply_reason
11458until_break_fsm_async_reply_reason (struct thread_fsm *self)
11459{
11460 return EXEC_ASYNC_LOCATION_REACHED;
11461}
11462
11463void
11464until_break_command (char *arg, int from_tty, int anywhere)
11465{
11466 struct frame_info *frame;
11467 struct gdbarch *frame_gdbarch;
11468 struct frame_id stack_frame_id;
11469 struct frame_id caller_frame_id;
11470 struct breakpoint *location_breakpoint;
11471 struct breakpoint *caller_breakpoint = NULL;
11472 struct cleanup *old_chain;
11473 int thread;
11474 struct thread_info *tp;
11475 struct until_break_fsm *sm;
11476
11477 clear_proceed_status (0);
11478
11479 /* Set a breakpoint where the user wants it and at return from
11480 this function. */
11481
11482 event_location_up location = string_to_event_location (&arg, current_language);
11483
11484 std::vector<symtab_and_line> sals
11485 = (last_displayed_sal_is_valid ()
11486 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11487 get_last_displayed_symtab (),
11488 get_last_displayed_line ())
11489 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11490 NULL, (struct symtab *) NULL, 0));
11491
11492 if (sals.size () != 1)
11493 error (_("Couldn't get information on specified line."));
11494
11495 symtab_and_line &sal = sals[0];
11496
11497 if (*arg)
11498 error (_("Junk at end of arguments."));
11499
11500 resolve_sal_pc (&sal);
11501
11502 tp = inferior_thread ();
11503 thread = tp->global_num;
11504
11505 old_chain = make_cleanup (null_cleanup, NULL);
11506
11507 /* Note linespec handling above invalidates the frame chain.
11508 Installing a breakpoint also invalidates the frame chain (as it
11509 may need to switch threads), so do any frame handling before
11510 that. */
11511
11512 frame = get_selected_frame (NULL);
11513 frame_gdbarch = get_frame_arch (frame);
11514 stack_frame_id = get_stack_frame_id (frame);
11515 caller_frame_id = frame_unwind_caller_id (frame);
11516
11517 /* Keep within the current frame, or in frames called by the current
11518 one. */
11519
11520 if (frame_id_p (caller_frame_id))
11521 {
11522 struct symtab_and_line sal2;
11523 struct gdbarch *caller_gdbarch;
11524
11525 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11526 sal2.pc = frame_unwind_caller_pc (frame);
11527 caller_gdbarch = frame_unwind_caller_arch (frame);
11528 caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11529 sal2,
11530 caller_frame_id,
11531 bp_until);
11532 make_cleanup_delete_breakpoint (caller_breakpoint);
11533
11534 set_longjmp_breakpoint (tp, caller_frame_id);
11535 make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11536 }
11537
11538 /* set_momentary_breakpoint could invalidate FRAME. */
11539 frame = NULL;
11540
11541 if (anywhere)
11542 /* If the user told us to continue until a specified location,
11543 we don't specify a frame at which we need to stop. */
11544 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11545 null_frame_id, bp_until);
11546 else
11547 /* Otherwise, specify the selected frame, because we want to stop
11548 only at the very same frame. */
11549 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11550 stack_frame_id, bp_until);
11551 make_cleanup_delete_breakpoint (location_breakpoint);
11552
11553 sm = new_until_break_fsm (command_interp (), tp->global_num,
11554 location_breakpoint, caller_breakpoint);
11555 tp->thread_fsm = &sm->thread_fsm;
11556
11557 discard_cleanups (old_chain);
11558
11559 proceed (-1, GDB_SIGNAL_DEFAULT);
11560}
11561
11562/* This function attempts to parse an optional "if <cond>" clause
11563 from the arg string. If one is not found, it returns NULL.
11564
11565 Else, it returns a pointer to the condition string. (It does not
11566 attempt to evaluate the string against a particular block.) And,
11567 it updates arg to point to the first character following the parsed
11568 if clause in the arg string. */
11569
11570const char *
11571ep_parse_optional_if_clause (const char **arg)
11572{
11573 const char *cond_string;
11574
11575 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11576 return NULL;
11577
11578 /* Skip the "if" keyword. */
11579 (*arg) += 2;
11580
11581 /* Skip any extra leading whitespace, and record the start of the
11582 condition string. */
11583 *arg = skip_spaces (*arg);
11584 cond_string = *arg;
11585
11586 /* Assume that the condition occupies the remainder of the arg
11587 string. */
11588 (*arg) += strlen (cond_string);
11589
11590 return cond_string;
11591}
11592
11593/* Commands to deal with catching events, such as signals, exceptions,
11594 process start/exit, etc. */
11595
11596typedef enum
11597{
11598 catch_fork_temporary, catch_vfork_temporary,
11599 catch_fork_permanent, catch_vfork_permanent
11600}
11601catch_fork_kind;
11602
11603static void
11604catch_fork_command_1 (char *arg_entry, int from_tty,
11605 struct cmd_list_element *command)
11606{
11607 const char *arg = arg_entry;
11608 struct gdbarch *gdbarch = get_current_arch ();
11609 const char *cond_string = NULL;
11610 catch_fork_kind fork_kind;
11611 int tempflag;
11612
11613 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11614 tempflag = (fork_kind == catch_fork_temporary
11615 || fork_kind == catch_vfork_temporary);
11616
11617 if (!arg)
11618 arg = "";
11619 arg = skip_spaces (arg);
11620
11621 /* The allowed syntax is:
11622 catch [v]fork
11623 catch [v]fork if <cond>
11624
11625 First, check if there's an if clause. */
11626 cond_string = ep_parse_optional_if_clause (&arg);
11627
11628 if ((*arg != '\0') && !isspace (*arg))
11629 error (_("Junk at end of arguments."));
11630
11631 /* If this target supports it, create a fork or vfork catchpoint
11632 and enable reporting of such events. */
11633 switch (fork_kind)
11634 {
11635 case catch_fork_temporary:
11636 case catch_fork_permanent:
11637 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11638 &catch_fork_breakpoint_ops);
11639 break;
11640 case catch_vfork_temporary:
11641 case catch_vfork_permanent:
11642 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11643 &catch_vfork_breakpoint_ops);
11644 break;
11645 default:
11646 error (_("unsupported or unknown fork kind; cannot catch it"));
11647 break;
11648 }
11649}
11650
11651static void
11652catch_exec_command_1 (char *arg_entry, int from_tty,
11653 struct cmd_list_element *command)
11654{
11655 const char *arg = arg_entry;
11656 struct gdbarch *gdbarch = get_current_arch ();
11657 int tempflag;
11658 const char *cond_string = NULL;
11659
11660 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11661
11662 if (!arg)
11663 arg = "";
11664 arg = skip_spaces (arg);
11665
11666 /* The allowed syntax is:
11667 catch exec
11668 catch exec if <cond>
11669
11670 First, check if there's an if clause. */
11671 cond_string = ep_parse_optional_if_clause (&arg);
11672
11673 if ((*arg != '\0') && !isspace (*arg))
11674 error (_("Junk at end of arguments."));
11675
11676 std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11677 init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11678 &catch_exec_breakpoint_ops);
11679 c->exec_pathname = NULL;
11680
11681 install_breakpoint (0, std::move (c), 1);
11682}
11683
11684void
11685init_ada_exception_breakpoint (struct breakpoint *b,
11686 struct gdbarch *gdbarch,
11687 struct symtab_and_line sal,
11688 char *addr_string,
11689 const struct breakpoint_ops *ops,
11690 int tempflag,
11691 int enabled,
11692 int from_tty)
11693{
11694 if (from_tty)
11695 {
11696 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11697 if (!loc_gdbarch)
11698 loc_gdbarch = gdbarch;
11699
11700 describe_other_breakpoints (loc_gdbarch,
11701 sal.pspace, sal.pc, sal.section, -1);
11702 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11703 version for exception catchpoints, because two catchpoints
11704 used for different exception names will use the same address.
11705 In this case, a "breakpoint ... also set at..." warning is
11706 unproductive. Besides, the warning phrasing is also a bit
11707 inappropriate, we should use the word catchpoint, and tell
11708 the user what type of catchpoint it is. The above is good
11709 enough for now, though. */
11710 }
11711
11712 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11713
11714 b->enable_state = enabled ? bp_enabled : bp_disabled;
11715 b->disposition = tempflag ? disp_del : disp_donttouch;
11716 b->location = string_to_event_location (&addr_string,
11717 language_def (language_ada));
11718 b->language = language_ada;
11719}
11720
11721static void
11722catch_command (char *arg, int from_tty)
11723{
11724 error (_("Catch requires an event name."));
11725}
11726\f
11727
11728static void
11729tcatch_command (char *arg, int from_tty)
11730{
11731 error (_("Catch requires an event name."));
11732}
11733
11734/* A qsort comparison function that sorts breakpoints in order. */
11735
11736static int
11737compare_breakpoints (const void *a, const void *b)
11738{
11739 const breakpoint_p *ba = (const breakpoint_p *) a;
11740 uintptr_t ua = (uintptr_t) *ba;
11741 const breakpoint_p *bb = (const breakpoint_p *) b;
11742 uintptr_t ub = (uintptr_t) *bb;
11743
11744 if ((*ba)->number < (*bb)->number)
11745 return -1;
11746 else if ((*ba)->number > (*bb)->number)
11747 return 1;
11748
11749 /* Now sort by address, in case we see, e..g, two breakpoints with
11750 the number 0. */
11751 if (ua < ub)
11752 return -1;
11753 return ua > ub ? 1 : 0;
11754}
11755
11756/* Delete breakpoints by address or line. */
11757
11758static void
11759clear_command (char *arg, int from_tty)
11760{
11761 struct breakpoint *b, *prev;
11762 VEC(breakpoint_p) *found = 0;
11763 int ix;
11764 int default_match;
11765 int i;
11766 struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11767
11768 std::vector<symtab_and_line> decoded_sals;
11769 symtab_and_line last_sal;
11770 gdb::array_view<symtab_and_line> sals;
11771 if (arg)
11772 {
11773 decoded_sals
11774 = decode_line_with_current_source (arg,
11775 (DECODE_LINE_FUNFIRSTLINE
11776 | DECODE_LINE_LIST_MODE));
11777 default_match = 0;
11778 sals = decoded_sals;
11779 }
11780 else
11781 {
11782 /* Set sal's line, symtab, pc, and pspace to the values
11783 corresponding to the last call to print_frame_info. If the
11784 codepoint is not valid, this will set all the fields to 0. */
11785 last_sal = get_last_displayed_sal ();
11786 if (last_sal.symtab == 0)
11787 error (_("No source file specified."));
11788
11789 default_match = 1;
11790 sals = last_sal;
11791 }
11792
11793 /* We don't call resolve_sal_pc here. That's not as bad as it
11794 seems, because all existing breakpoints typically have both
11795 file/line and pc set. So, if clear is given file/line, we can
11796 match this to existing breakpoint without obtaining pc at all.
11797
11798 We only support clearing given the address explicitly
11799 present in breakpoint table. Say, we've set breakpoint
11800 at file:line. There were several PC values for that file:line,
11801 due to optimization, all in one block.
11802
11803 We've picked one PC value. If "clear" is issued with another
11804 PC corresponding to the same file:line, the breakpoint won't
11805 be cleared. We probably can still clear the breakpoint, but
11806 since the other PC value is never presented to user, user
11807 can only find it by guessing, and it does not seem important
11808 to support that. */
11809
11810 /* For each line spec given, delete bps which correspond to it. Do
11811 it in two passes, solely to preserve the current behavior that
11812 from_tty is forced true if we delete more than one
11813 breakpoint. */
11814
11815 found = NULL;
11816 make_cleanup (VEC_cleanup (breakpoint_p), &found);
11817 for (const auto &sal : sals)
11818 {
11819 const char *sal_fullname;
11820
11821 /* If exact pc given, clear bpts at that pc.
11822 If line given (pc == 0), clear all bpts on specified line.
11823 If defaulting, clear all bpts on default line
11824 or at default pc.
11825
11826 defaulting sal.pc != 0 tests to do
11827
11828 0 1 pc
11829 1 1 pc _and_ line
11830 0 0 line
11831 1 0 <can't happen> */
11832
11833 sal_fullname = (sal.symtab == NULL
11834 ? NULL : symtab_to_fullname (sal.symtab));
11835
11836 /* Find all matching breakpoints and add them to 'found'. */
11837 ALL_BREAKPOINTS (b)
11838 {
11839 int match = 0;
11840 /* Are we going to delete b? */
11841 if (b->type != bp_none && !is_watchpoint (b))
11842 {
11843 struct bp_location *loc = b->loc;
11844 for (; loc; loc = loc->next)
11845 {
11846 /* If the user specified file:line, don't allow a PC
11847 match. This matches historical gdb behavior. */
11848 int pc_match = (!sal.explicit_line
11849 && sal.pc
11850 && (loc->pspace == sal.pspace)
11851 && (loc->address == sal.pc)
11852 && (!section_is_overlay (loc->section)
11853 || loc->section == sal.section));
11854 int line_match = 0;
11855
11856 if ((default_match || sal.explicit_line)
11857 && loc->symtab != NULL
11858 && sal_fullname != NULL
11859 && sal.pspace == loc->pspace
11860 && loc->line_number == sal.line
11861 && filename_cmp (symtab_to_fullname (loc->symtab),
11862 sal_fullname) == 0)
11863 line_match = 1;
11864
11865 if (pc_match || line_match)
11866 {
11867 match = 1;
11868 break;
11869 }
11870 }
11871 }
11872
11873 if (match)
11874 VEC_safe_push(breakpoint_p, found, b);
11875 }
11876 }
11877
11878 /* Now go thru the 'found' chain and delete them. */
11879 if (VEC_empty(breakpoint_p, found))
11880 {
11881 if (arg)
11882 error (_("No breakpoint at %s."), arg);
11883 else
11884 error (_("No breakpoint at this line."));
11885 }
11886
11887 /* Remove duplicates from the vec. */
11888 qsort (VEC_address (breakpoint_p, found),
11889 VEC_length (breakpoint_p, found),
11890 sizeof (breakpoint_p),
11891 compare_breakpoints);
11892 prev = VEC_index (breakpoint_p, found, 0);
11893 for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11894 {
11895 if (b == prev)
11896 {
11897 VEC_ordered_remove (breakpoint_p, found, ix);
11898 --ix;
11899 }
11900 }
11901
11902 if (VEC_length(breakpoint_p, found) > 1)
11903 from_tty = 1; /* Always report if deleted more than one. */
11904 if (from_tty)
11905 {
11906 if (VEC_length(breakpoint_p, found) == 1)
11907 printf_unfiltered (_("Deleted breakpoint "));
11908 else
11909 printf_unfiltered (_("Deleted breakpoints "));
11910 }
11911
11912 for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11913 {
11914 if (from_tty)
11915 printf_unfiltered ("%d ", b->number);
11916 delete_breakpoint (b);
11917 }
11918 if (from_tty)
11919 putchar_unfiltered ('\n');
11920
11921 do_cleanups (cleanups);
11922}
11923\f
11924/* Delete breakpoint in BS if they are `delete' breakpoints and
11925 all breakpoints that are marked for deletion, whether hit or not.
11926 This is called after any breakpoint is hit, or after errors. */
11927
11928void
11929breakpoint_auto_delete (bpstat bs)
11930{
11931 struct breakpoint *b, *b_tmp;
11932
11933 for (; bs; bs = bs->next)
11934 if (bs->breakpoint_at
11935 && bs->breakpoint_at->disposition == disp_del
11936 && bs->stop)
11937 delete_breakpoint (bs->breakpoint_at);
11938
11939 ALL_BREAKPOINTS_SAFE (b, b_tmp)
11940 {
11941 if (b->disposition == disp_del_at_next_stop)
11942 delete_breakpoint (b);
11943 }
11944}
11945
11946/* A comparison function for bp_location AP and BP being interfaced to
11947 qsort. Sort elements primarily by their ADDRESS (no matter what
11948 does breakpoint_address_is_meaningful say for its OWNER),
11949 secondarily by ordering first permanent elements and
11950 terciarily just ensuring the array is sorted stable way despite
11951 qsort being an unstable algorithm. */
11952
11953static int
11954bp_locations_compare (const void *ap, const void *bp)
11955{
11956 const struct bp_location *a = *(const struct bp_location **) ap;
11957 const struct bp_location *b = *(const struct bp_location **) bp;
11958
11959 if (a->address != b->address)
11960 return (a->address > b->address) - (a->address < b->address);
11961
11962 /* Sort locations at the same address by their pspace number, keeping
11963 locations of the same inferior (in a multi-inferior environment)
11964 grouped. */
11965
11966 if (a->pspace->num != b->pspace->num)
11967 return ((a->pspace->num > b->pspace->num)
11968 - (a->pspace->num < b->pspace->num));
11969
11970 /* Sort permanent breakpoints first. */
11971 if (a->permanent != b->permanent)
11972 return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11973
11974 /* Make the internal GDB representation stable across GDB runs
11975 where A and B memory inside GDB can differ. Breakpoint locations of
11976 the same type at the same address can be sorted in arbitrary order. */
11977
11978 if (a->owner->number != b->owner->number)
11979 return ((a->owner->number > b->owner->number)
11980 - (a->owner->number < b->owner->number));
11981
11982 return (a > b) - (a < b);
11983}
11984
11985/* Set bp_locations_placed_address_before_address_max and
11986 bp_locations_shadow_len_after_address_max according to the current
11987 content of the bp_locations array. */
11988
11989static void
11990bp_locations_target_extensions_update (void)
11991{
11992 struct bp_location *bl, **blp_tmp;
11993
11994 bp_locations_placed_address_before_address_max = 0;
11995 bp_locations_shadow_len_after_address_max = 0;
11996
11997 ALL_BP_LOCATIONS (bl, blp_tmp)
11998 {
11999 CORE_ADDR start, end, addr;
12000
12001 if (!bp_location_has_shadow (bl))
12002 continue;
12003
12004 start = bl->target_info.placed_address;
12005 end = start + bl->target_info.shadow_len;
12006
12007 gdb_assert (bl->address >= start);
12008 addr = bl->address - start;
12009 if (addr > bp_locations_placed_address_before_address_max)
12010 bp_locations_placed_address_before_address_max = addr;
12011
12012 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
12013
12014 gdb_assert (bl->address < end);
12015 addr = end - bl->address;
12016 if (addr > bp_locations_shadow_len_after_address_max)
12017 bp_locations_shadow_len_after_address_max = addr;
12018 }
12019}
12020
12021/* Download tracepoint locations if they haven't been. */
12022
12023static void
12024download_tracepoint_locations (void)
12025{
12026 struct breakpoint *b;
12027 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
12028
12029 scoped_restore_current_pspace_and_thread restore_pspace_thread;
12030
12031 ALL_TRACEPOINTS (b)
12032 {
12033 struct bp_location *bl;
12034 struct tracepoint *t;
12035 int bp_location_downloaded = 0;
12036
12037 if ((b->type == bp_fast_tracepoint
12038 ? !may_insert_fast_tracepoints
12039 : !may_insert_tracepoints))
12040 continue;
12041
12042 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
12043 {
12044 if (target_can_download_tracepoint ())
12045 can_download_tracepoint = TRIBOOL_TRUE;
12046 else
12047 can_download_tracepoint = TRIBOOL_FALSE;
12048 }
12049
12050 if (can_download_tracepoint == TRIBOOL_FALSE)
12051 break;
12052
12053 for (bl = b->loc; bl; bl = bl->next)
12054 {
12055 /* In tracepoint, locations are _never_ duplicated, so
12056 should_be_inserted is equivalent to
12057 unduplicated_should_be_inserted. */
12058 if (!should_be_inserted (bl) || bl->inserted)
12059 continue;
12060
12061 switch_to_program_space_and_thread (bl->pspace);
12062
12063 target_download_tracepoint (bl);
12064
12065 bl->inserted = 1;
12066 bp_location_downloaded = 1;
12067 }
12068 t = (struct tracepoint *) b;
12069 t->number_on_target = b->number;
12070 if (bp_location_downloaded)
12071 observer_notify_breakpoint_modified (b);
12072 }
12073}
12074
12075/* Swap the insertion/duplication state between two locations. */
12076
12077static void
12078swap_insertion (struct bp_location *left, struct bp_location *right)
12079{
12080 const int left_inserted = left->inserted;
12081 const int left_duplicate = left->duplicate;
12082 const int left_needs_update = left->needs_update;
12083 const struct bp_target_info left_target_info = left->target_info;
12084
12085 /* Locations of tracepoints can never be duplicated. */
12086 if (is_tracepoint (left->owner))
12087 gdb_assert (!left->duplicate);
12088 if (is_tracepoint (right->owner))
12089 gdb_assert (!right->duplicate);
12090
12091 left->inserted = right->inserted;
12092 left->duplicate = right->duplicate;
12093 left->needs_update = right->needs_update;
12094 left->target_info = right->target_info;
12095 right->inserted = left_inserted;
12096 right->duplicate = left_duplicate;
12097 right->needs_update = left_needs_update;
12098 right->target_info = left_target_info;
12099}
12100
12101/* Force the re-insertion of the locations at ADDRESS. This is called
12102 once a new/deleted/modified duplicate location is found and we are evaluating
12103 conditions on the target's side. Such conditions need to be updated on
12104 the target. */
12105
12106static void
12107force_breakpoint_reinsertion (struct bp_location *bl)
12108{
12109 struct bp_location **locp = NULL, **loc2p;
12110 struct bp_location *loc;
12111 CORE_ADDR address = 0;
12112 int pspace_num;
12113
12114 address = bl->address;
12115 pspace_num = bl->pspace->num;
12116
12117 /* This is only meaningful if the target is
12118 evaluating conditions and if the user has
12119 opted for condition evaluation on the target's
12120 side. */
12121 if (gdb_evaluates_breakpoint_condition_p ()
12122 || !target_supports_evaluation_of_breakpoint_conditions ())
12123 return;
12124
12125 /* Flag all breakpoint locations with this address and
12126 the same program space as the location
12127 as "its condition has changed". We need to
12128 update the conditions on the target's side. */
12129 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12130 {
12131 loc = *loc2p;
12132
12133 if (!is_breakpoint (loc->owner)
12134 || pspace_num != loc->pspace->num)
12135 continue;
12136
12137 /* Flag the location appropriately. We use a different state to
12138 let everyone know that we already updated the set of locations
12139 with addr bl->address and program space bl->pspace. This is so
12140 we don't have to keep calling these functions just to mark locations
12141 that have already been marked. */
12142 loc->condition_changed = condition_updated;
12143
12144 /* Free the agent expression bytecode as well. We will compute
12145 it later on. */
12146 loc->cond_bytecode.reset ();
12147 }
12148}
12149/* Called whether new breakpoints are created, or existing breakpoints
12150 deleted, to update the global location list and recompute which
12151 locations are duplicate of which.
12152
12153 The INSERT_MODE flag determines whether locations may not, may, or
12154 shall be inserted now. See 'enum ugll_insert_mode' for more
12155 info. */
12156
12157static void
12158update_global_location_list (enum ugll_insert_mode insert_mode)
12159{
12160 struct breakpoint *b;
12161 struct bp_location **locp, *loc;
12162 struct cleanup *cleanups;
12163 /* Last breakpoint location address that was marked for update. */
12164 CORE_ADDR last_addr = 0;
12165 /* Last breakpoint location program space that was marked for update. */
12166 int last_pspace_num = -1;
12167
12168 /* Used in the duplicates detection below. When iterating over all
12169 bp_locations, points to the first bp_location of a given address.
12170 Breakpoints and watchpoints of different types are never
12171 duplicates of each other. Keep one pointer for each type of
12172 breakpoint/watchpoint, so we only need to loop over all locations
12173 once. */
12174 struct bp_location *bp_loc_first; /* breakpoint */
12175 struct bp_location *wp_loc_first; /* hardware watchpoint */
12176 struct bp_location *awp_loc_first; /* access watchpoint */
12177 struct bp_location *rwp_loc_first; /* read watchpoint */
12178
12179 /* Saved former bp_locations array which we compare against the newly
12180 built bp_locations from the current state of ALL_BREAKPOINTS. */
12181 struct bp_location **old_locations, **old_locp;
12182 unsigned old_locations_count;
12183
12184 old_locations = bp_locations;
12185 old_locations_count = bp_locations_count;
12186 bp_locations = NULL;
12187 bp_locations_count = 0;
12188 cleanups = make_cleanup (xfree, old_locations);
12189
12190 ALL_BREAKPOINTS (b)
12191 for (loc = b->loc; loc; loc = loc->next)
12192 bp_locations_count++;
12193
12194 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
12195 locp = bp_locations;
12196 ALL_BREAKPOINTS (b)
12197 for (loc = b->loc; loc; loc = loc->next)
12198 *locp++ = loc;
12199 qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
12200 bp_locations_compare);
12201
12202 bp_locations_target_extensions_update ();
12203
12204 /* Identify bp_location instances that are no longer present in the
12205 new list, and therefore should be freed. Note that it's not
12206 necessary that those locations should be removed from inferior --
12207 if there's another location at the same address (previously
12208 marked as duplicate), we don't need to remove/insert the
12209 location.
12210
12211 LOCP is kept in sync with OLD_LOCP, each pointing to the current
12212 and former bp_location array state respectively. */
12213
12214 locp = bp_locations;
12215 for (old_locp = old_locations;
12216 old_locp < old_locations + old_locations_count;
12217 old_locp++)
12218 {
12219 struct bp_location *old_loc = *old_locp;
12220 struct bp_location **loc2p;
12221
12222 /* Tells if 'old_loc' is found among the new locations. If
12223 not, we have to free it. */
12224 int found_object = 0;
12225 /* Tells if the location should remain inserted in the target. */
12226 int keep_in_target = 0;
12227 int removed = 0;
12228
12229 /* Skip LOCP entries which will definitely never be needed.
12230 Stop either at or being the one matching OLD_LOC. */
12231 while (locp < bp_locations + bp_locations_count
12232 && (*locp)->address < old_loc->address)
12233 locp++;
12234
12235 for (loc2p = locp;
12236 (loc2p < bp_locations + bp_locations_count
12237 && (*loc2p)->address == old_loc->address);
12238 loc2p++)
12239 {
12240 /* Check if this is a new/duplicated location or a duplicated
12241 location that had its condition modified. If so, we want to send
12242 its condition to the target if evaluation of conditions is taking
12243 place there. */
12244 if ((*loc2p)->condition_changed == condition_modified
12245 && (last_addr != old_loc->address
12246 || last_pspace_num != old_loc->pspace->num))
12247 {
12248 force_breakpoint_reinsertion (*loc2p);
12249 last_pspace_num = old_loc->pspace->num;
12250 }
12251
12252 if (*loc2p == old_loc)
12253 found_object = 1;
12254 }
12255
12256 /* We have already handled this address, update it so that we don't
12257 have to go through updates again. */
12258 last_addr = old_loc->address;
12259
12260 /* Target-side condition evaluation: Handle deleted locations. */
12261 if (!found_object)
12262 force_breakpoint_reinsertion (old_loc);
12263
12264 /* If this location is no longer present, and inserted, look if
12265 there's maybe a new location at the same address. If so,
12266 mark that one inserted, and don't remove this one. This is
12267 needed so that we don't have a time window where a breakpoint
12268 at certain location is not inserted. */
12269
12270 if (old_loc->inserted)
12271 {
12272 /* If the location is inserted now, we might have to remove
12273 it. */
12274
12275 if (found_object && should_be_inserted (old_loc))
12276 {
12277 /* The location is still present in the location list,
12278 and still should be inserted. Don't do anything. */
12279 keep_in_target = 1;
12280 }
12281 else
12282 {
12283 /* This location still exists, but it won't be kept in the
12284 target since it may have been disabled. We proceed to
12285 remove its target-side condition. */
12286
12287 /* The location is either no longer present, or got
12288 disabled. See if there's another location at the
12289 same address, in which case we don't need to remove
12290 this one from the target. */
12291
12292 /* OLD_LOC comes from existing struct breakpoint. */
12293 if (breakpoint_address_is_meaningful (old_loc->owner))
12294 {
12295 for (loc2p = locp;
12296 (loc2p < bp_locations + bp_locations_count
12297 && (*loc2p)->address == old_loc->address);
12298 loc2p++)
12299 {
12300 struct bp_location *loc2 = *loc2p;
12301
12302 if (breakpoint_locations_match (loc2, old_loc))
12303 {
12304 /* Read watchpoint locations are switched to
12305 access watchpoints, if the former are not
12306 supported, but the latter are. */
12307 if (is_hardware_watchpoint (old_loc->owner))
12308 {
12309 gdb_assert (is_hardware_watchpoint (loc2->owner));
12310 loc2->watchpoint_type = old_loc->watchpoint_type;
12311 }
12312
12313 /* loc2 is a duplicated location. We need to check
12314 if it should be inserted in case it will be
12315 unduplicated. */
12316 if (loc2 != old_loc
12317 && unduplicated_should_be_inserted (loc2))
12318 {
12319 swap_insertion (old_loc, loc2);
12320 keep_in_target = 1;
12321 break;
12322 }
12323 }
12324 }
12325 }
12326 }
12327
12328 if (!keep_in_target)
12329 {
12330 if (remove_breakpoint (old_loc))
12331 {
12332 /* This is just about all we can do. We could keep
12333 this location on the global list, and try to
12334 remove it next time, but there's no particular
12335 reason why we will succeed next time.
12336
12337 Note that at this point, old_loc->owner is still
12338 valid, as delete_breakpoint frees the breakpoint
12339 only after calling us. */
12340 printf_filtered (_("warning: Error removing "
12341 "breakpoint %d\n"),
12342 old_loc->owner->number);
12343 }
12344 removed = 1;
12345 }
12346 }
12347
12348 if (!found_object)
12349 {
12350 if (removed && target_is_non_stop_p ()
12351 && need_moribund_for_location_type (old_loc))
12352 {
12353 /* This location was removed from the target. In
12354 non-stop mode, a race condition is possible where
12355 we've removed a breakpoint, but stop events for that
12356 breakpoint are already queued and will arrive later.
12357 We apply an heuristic to be able to distinguish such
12358 SIGTRAPs from other random SIGTRAPs: we keep this
12359 breakpoint location for a bit, and will retire it
12360 after we see some number of events. The theory here
12361 is that reporting of events should, "on the average",
12362 be fair, so after a while we'll see events from all
12363 threads that have anything of interest, and no longer
12364 need to keep this breakpoint location around. We
12365 don't hold locations forever so to reduce chances of
12366 mistaking a non-breakpoint SIGTRAP for a breakpoint
12367 SIGTRAP.
12368
12369 The heuristic failing can be disastrous on
12370 decr_pc_after_break targets.
12371
12372 On decr_pc_after_break targets, like e.g., x86-linux,
12373 if we fail to recognize a late breakpoint SIGTRAP,
12374 because events_till_retirement has reached 0 too
12375 soon, we'll fail to do the PC adjustment, and report
12376 a random SIGTRAP to the user. When the user resumes
12377 the inferior, it will most likely immediately crash
12378 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12379 corrupted, because of being resumed e.g., in the
12380 middle of a multi-byte instruction, or skipped a
12381 one-byte instruction. This was actually seen happen
12382 on native x86-linux, and should be less rare on
12383 targets that do not support new thread events, like
12384 remote, due to the heuristic depending on
12385 thread_count.
12386
12387 Mistaking a random SIGTRAP for a breakpoint trap
12388 causes similar symptoms (PC adjustment applied when
12389 it shouldn't), but then again, playing with SIGTRAPs
12390 behind the debugger's back is asking for trouble.
12391
12392 Since hardware watchpoint traps are always
12393 distinguishable from other traps, so we don't need to
12394 apply keep hardware watchpoint moribund locations
12395 around. We simply always ignore hardware watchpoint
12396 traps we can no longer explain. */
12397
12398 old_loc->events_till_retirement = 3 * (thread_count () + 1);
12399 old_loc->owner = NULL;
12400
12401 VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12402 }
12403 else
12404 {
12405 old_loc->owner = NULL;
12406 decref_bp_location (&old_loc);
12407 }
12408 }
12409 }
12410
12411 /* Rescan breakpoints at the same address and section, marking the
12412 first one as "first" and any others as "duplicates". This is so
12413 that the bpt instruction is only inserted once. If we have a
12414 permanent breakpoint at the same place as BPT, make that one the
12415 official one, and the rest as duplicates. Permanent breakpoints
12416 are sorted first for the same address.
12417
12418 Do the same for hardware watchpoints, but also considering the
12419 watchpoint's type (regular/access/read) and length. */
12420
12421 bp_loc_first = NULL;
12422 wp_loc_first = NULL;
12423 awp_loc_first = NULL;
12424 rwp_loc_first = NULL;
12425 ALL_BP_LOCATIONS (loc, locp)
12426 {
12427 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12428 non-NULL. */
12429 struct bp_location **loc_first_p;
12430 b = loc->owner;
12431
12432 if (!unduplicated_should_be_inserted (loc)
12433 || !breakpoint_address_is_meaningful (b)
12434 /* Don't detect duplicate for tracepoint locations because they are
12435 never duplicated. See the comments in field `duplicate' of
12436 `struct bp_location'. */
12437 || is_tracepoint (b))
12438 {
12439 /* Clear the condition modification flag. */
12440 loc->condition_changed = condition_unchanged;
12441 continue;
12442 }
12443
12444 if (b->type == bp_hardware_watchpoint)
12445 loc_first_p = &wp_loc_first;
12446 else if (b->type == bp_read_watchpoint)
12447 loc_first_p = &rwp_loc_first;
12448 else if (b->type == bp_access_watchpoint)
12449 loc_first_p = &awp_loc_first;
12450 else
12451 loc_first_p = &bp_loc_first;
12452
12453 if (*loc_first_p == NULL
12454 || (overlay_debugging && loc->section != (*loc_first_p)->section)
12455 || !breakpoint_locations_match (loc, *loc_first_p))
12456 {
12457 *loc_first_p = loc;
12458 loc->duplicate = 0;
12459
12460 if (is_breakpoint (loc->owner) && loc->condition_changed)
12461 {
12462 loc->needs_update = 1;
12463 /* Clear the condition modification flag. */
12464 loc->condition_changed = condition_unchanged;
12465 }
12466 continue;
12467 }
12468
12469
12470 /* This and the above ensure the invariant that the first location
12471 is not duplicated, and is the inserted one.
12472 All following are marked as duplicated, and are not inserted. */
12473 if (loc->inserted)
12474 swap_insertion (loc, *loc_first_p);
12475 loc->duplicate = 1;
12476
12477 /* Clear the condition modification flag. */
12478 loc->condition_changed = condition_unchanged;
12479 }
12480
12481 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12482 {
12483 if (insert_mode != UGLL_DONT_INSERT)
12484 insert_breakpoint_locations ();
12485 else
12486 {
12487 /* Even though the caller told us to not insert new
12488 locations, we may still need to update conditions on the
12489 target's side of breakpoints that were already inserted
12490 if the target is evaluating breakpoint conditions. We
12491 only update conditions for locations that are marked
12492 "needs_update". */
12493 update_inserted_breakpoint_locations ();
12494 }
12495 }
12496
12497 if (insert_mode != UGLL_DONT_INSERT)
12498 download_tracepoint_locations ();
12499
12500 do_cleanups (cleanups);
12501}
12502
12503void
12504breakpoint_retire_moribund (void)
12505{
12506 struct bp_location *loc;
12507 int ix;
12508
12509 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12510 if (--(loc->events_till_retirement) == 0)
12511 {
12512 decref_bp_location (&loc);
12513 VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12514 --ix;
12515 }
12516}
12517
12518static void
12519update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12520{
12521
12522 TRY
12523 {
12524 update_global_location_list (insert_mode);
12525 }
12526 CATCH (e, RETURN_MASK_ERROR)
12527 {
12528 }
12529 END_CATCH
12530}
12531
12532/* Clear BKP from a BPS. */
12533
12534static void
12535bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12536{
12537 bpstat bs;
12538
12539 for (bs = bps; bs; bs = bs->next)
12540 if (bs->breakpoint_at == bpt)
12541 {
12542 bs->breakpoint_at = NULL;
12543 bs->old_val = NULL;
12544 /* bs->commands will be freed later. */
12545 }
12546}
12547
12548/* Callback for iterate_over_threads. */
12549static int
12550bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12551{
12552 struct breakpoint *bpt = (struct breakpoint *) data;
12553
12554 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12555 return 0;
12556}
12557
12558/* Helper for breakpoint and tracepoint breakpoint_ops->mention
12559 callbacks. */
12560
12561static void
12562say_where (struct breakpoint *b)
12563{
12564 struct value_print_options opts;
12565
12566 get_user_print_options (&opts);
12567
12568 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12569 single string. */
12570 if (b->loc == NULL)
12571 {
12572 /* For pending locations, the output differs slightly based
12573 on b->extra_string. If this is non-NULL, it contains either
12574 a condition or dprintf arguments. */
12575 if (b->extra_string == NULL)
12576 {
12577 printf_filtered (_(" (%s) pending."),
12578 event_location_to_string (b->location.get ()));
12579 }
12580 else if (b->type == bp_dprintf)
12581 {
12582 printf_filtered (_(" (%s,%s) pending."),
12583 event_location_to_string (b->location.get ()),
12584 b->extra_string);
12585 }
12586 else
12587 {
12588 printf_filtered (_(" (%s %s) pending."),
12589 event_location_to_string (b->location.get ()),
12590 b->extra_string);
12591 }
12592 }
12593 else
12594 {
12595 if (opts.addressprint || b->loc->symtab == NULL)
12596 {
12597 printf_filtered (" at ");
12598 fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12599 gdb_stdout);
12600 }
12601 if (b->loc->symtab != NULL)
12602 {
12603 /* If there is a single location, we can print the location
12604 more nicely. */
12605 if (b->loc->next == NULL)
12606 printf_filtered (": file %s, line %d.",
12607 symtab_to_filename_for_display (b->loc->symtab),
12608 b->loc->line_number);
12609 else
12610 /* This is not ideal, but each location may have a
12611 different file name, and this at least reflects the
12612 real situation somewhat. */
12613 printf_filtered (": %s.",
12614 event_location_to_string (b->location.get ()));
12615 }
12616
12617 if (b->loc->next)
12618 {
12619 struct bp_location *loc = b->loc;
12620 int n = 0;
12621 for (; loc; loc = loc->next)
12622 ++n;
12623 printf_filtered (" (%d locations)", n);
12624 }
12625 }
12626}
12627
12628/* Default bp_location_ops methods. */
12629
12630static void
12631bp_location_dtor (struct bp_location *self)
12632{
12633 xfree (self->function_name);
12634}
12635
12636static const struct bp_location_ops bp_location_ops =
12637{
12638 bp_location_dtor
12639};
12640
12641/* Destructor for the breakpoint base class. */
12642
12643breakpoint::~breakpoint ()
12644{
12645 decref_counted_command_line (&this->commands);
12646 xfree (this->cond_string);
12647 xfree (this->extra_string);
12648 xfree (this->filter);
12649}
12650
12651static struct bp_location *
12652base_breakpoint_allocate_location (struct breakpoint *self)
12653{
12654 return new bp_location (&bp_location_ops, self);
12655}
12656
12657static void
12658base_breakpoint_re_set (struct breakpoint *b)
12659{
12660 /* Nothing to re-set. */
12661}
12662
12663#define internal_error_pure_virtual_called() \
12664 gdb_assert_not_reached ("pure virtual function called")
12665
12666static int
12667base_breakpoint_insert_location (struct bp_location *bl)
12668{
12669 internal_error_pure_virtual_called ();
12670}
12671
12672static int
12673base_breakpoint_remove_location (struct bp_location *bl,
12674 enum remove_bp_reason reason)
12675{
12676 internal_error_pure_virtual_called ();
12677}
12678
12679static int
12680base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12681 struct address_space *aspace,
12682 CORE_ADDR bp_addr,
12683 const struct target_waitstatus *ws)
12684{
12685 internal_error_pure_virtual_called ();
12686}
12687
12688static void
12689base_breakpoint_check_status (bpstat bs)
12690{
12691 /* Always stop. */
12692}
12693
12694/* A "works_in_software_mode" breakpoint_ops method that just internal
12695 errors. */
12696
12697static int
12698base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12699{
12700 internal_error_pure_virtual_called ();
12701}
12702
12703/* A "resources_needed" breakpoint_ops method that just internal
12704 errors. */
12705
12706static int
12707base_breakpoint_resources_needed (const struct bp_location *bl)
12708{
12709 internal_error_pure_virtual_called ();
12710}
12711
12712static enum print_stop_action
12713base_breakpoint_print_it (bpstat bs)
12714{
12715 internal_error_pure_virtual_called ();
12716}
12717
12718static void
12719base_breakpoint_print_one_detail (const struct breakpoint *self,
12720 struct ui_out *uiout)
12721{
12722 /* nothing */
12723}
12724
12725static void
12726base_breakpoint_print_mention (struct breakpoint *b)
12727{
12728 internal_error_pure_virtual_called ();
12729}
12730
12731static void
12732base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12733{
12734 internal_error_pure_virtual_called ();
12735}
12736
12737static void
12738base_breakpoint_create_sals_from_location
12739 (const struct event_location *location,
12740 struct linespec_result *canonical,
12741 enum bptype type_wanted)
12742{
12743 internal_error_pure_virtual_called ();
12744}
12745
12746static void
12747base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12748 struct linespec_result *c,
12749 gdb::unique_xmalloc_ptr<char> cond_string,
12750 gdb::unique_xmalloc_ptr<char> extra_string,
12751 enum bptype type_wanted,
12752 enum bpdisp disposition,
12753 int thread,
12754 int task, int ignore_count,
12755 const struct breakpoint_ops *o,
12756 int from_tty, int enabled,
12757 int internal, unsigned flags)
12758{
12759 internal_error_pure_virtual_called ();
12760}
12761
12762static std::vector<symtab_and_line>
12763base_breakpoint_decode_location (struct breakpoint *b,
12764 const struct event_location *location,
12765 struct program_space *search_pspace)
12766{
12767 internal_error_pure_virtual_called ();
12768}
12769
12770/* The default 'explains_signal' method. */
12771
12772static int
12773base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12774{
12775 return 1;
12776}
12777
12778/* The default "after_condition_true" method. */
12779
12780static void
12781base_breakpoint_after_condition_true (struct bpstats *bs)
12782{
12783 /* Nothing to do. */
12784}
12785
12786struct breakpoint_ops base_breakpoint_ops =
12787{
12788 base_breakpoint_allocate_location,
12789 base_breakpoint_re_set,
12790 base_breakpoint_insert_location,
12791 base_breakpoint_remove_location,
12792 base_breakpoint_breakpoint_hit,
12793 base_breakpoint_check_status,
12794 base_breakpoint_resources_needed,
12795 base_breakpoint_works_in_software_mode,
12796 base_breakpoint_print_it,
12797 NULL,
12798 base_breakpoint_print_one_detail,
12799 base_breakpoint_print_mention,
12800 base_breakpoint_print_recreate,
12801 base_breakpoint_create_sals_from_location,
12802 base_breakpoint_create_breakpoints_sal,
12803 base_breakpoint_decode_location,
12804 base_breakpoint_explains_signal,
12805 base_breakpoint_after_condition_true,
12806};
12807
12808/* Default breakpoint_ops methods. */
12809
12810static void
12811bkpt_re_set (struct breakpoint *b)
12812{
12813 /* FIXME: is this still reachable? */
12814 if (breakpoint_event_location_empty_p (b))
12815 {
12816 /* Anything without a location can't be re-set. */
12817 delete_breakpoint (b);
12818 return;
12819 }
12820
12821 breakpoint_re_set_default (b);
12822}
12823
12824static int
12825bkpt_insert_location (struct bp_location *bl)
12826{
12827 CORE_ADDR addr = bl->target_info.reqstd_address;
12828
12829 bl->target_info.kind = breakpoint_kind (bl, &addr);
12830 bl->target_info.placed_address = addr;
12831
12832 if (bl->loc_type == bp_loc_hardware_breakpoint)
12833 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12834 else
12835 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12836}
12837
12838static int
12839bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12840{
12841 if (bl->loc_type == bp_loc_hardware_breakpoint)
12842 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12843 else
12844 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12845}
12846
12847static int
12848bkpt_breakpoint_hit (const struct bp_location *bl,
12849 struct address_space *aspace, CORE_ADDR bp_addr,
12850 const struct target_waitstatus *ws)
12851{
12852 if (ws->kind != TARGET_WAITKIND_STOPPED
12853 || ws->value.sig != GDB_SIGNAL_TRAP)
12854 return 0;
12855
12856 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12857 aspace, bp_addr))
12858 return 0;
12859
12860 if (overlay_debugging /* unmapped overlay section */
12861 && section_is_overlay (bl->section)
12862 && !section_is_mapped (bl->section))
12863 return 0;
12864
12865 return 1;
12866}
12867
12868static int
12869dprintf_breakpoint_hit (const struct bp_location *bl,
12870 struct address_space *aspace, CORE_ADDR bp_addr,
12871 const struct target_waitstatus *ws)
12872{
12873 if (dprintf_style == dprintf_style_agent
12874 && target_can_run_breakpoint_commands ())
12875 {
12876 /* An agent-style dprintf never causes a stop. If we see a trap
12877 for this address it must be for a breakpoint that happens to
12878 be set at the same address. */
12879 return 0;
12880 }
12881
12882 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12883}
12884
12885static int
12886bkpt_resources_needed (const struct bp_location *bl)
12887{
12888 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12889
12890 return 1;
12891}
12892
12893static enum print_stop_action
12894bkpt_print_it (bpstat bs)
12895{
12896 struct breakpoint *b;
12897 const struct bp_location *bl;
12898 int bp_temp;
12899 struct ui_out *uiout = current_uiout;
12900
12901 gdb_assert (bs->bp_location_at != NULL);
12902
12903 bl = bs->bp_location_at;
12904 b = bs->breakpoint_at;
12905
12906 bp_temp = b->disposition == disp_del;
12907 if (bl->address != bl->requested_address)
12908 breakpoint_adjustment_warning (bl->requested_address,
12909 bl->address,
12910 b->number, 1);
12911 annotate_breakpoint (b->number);
12912 maybe_print_thread_hit_breakpoint (uiout);
12913
12914 if (bp_temp)
12915 uiout->text ("Temporary breakpoint ");
12916 else
12917 uiout->text ("Breakpoint ");
12918 if (uiout->is_mi_like_p ())
12919 {
12920 uiout->field_string ("reason",
12921 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12922 uiout->field_string ("disp", bpdisp_text (b->disposition));
12923 }
12924 uiout->field_int ("bkptno", b->number);
12925 uiout->text (", ");
12926
12927 return PRINT_SRC_AND_LOC;
12928}
12929
12930static void
12931bkpt_print_mention (struct breakpoint *b)
12932{
12933 if (current_uiout->is_mi_like_p ())
12934 return;
12935
12936 switch (b->type)
12937 {
12938 case bp_breakpoint:
12939 case bp_gnu_ifunc_resolver:
12940 if (b->disposition == disp_del)
12941 printf_filtered (_("Temporary breakpoint"));
12942 else
12943 printf_filtered (_("Breakpoint"));
12944 printf_filtered (_(" %d"), b->number);
12945 if (b->type == bp_gnu_ifunc_resolver)
12946 printf_filtered (_(" at gnu-indirect-function resolver"));
12947 break;
12948 case bp_hardware_breakpoint:
12949 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12950 break;
12951 case bp_dprintf:
12952 printf_filtered (_("Dprintf %d"), b->number);
12953 break;
12954 }
12955
12956 say_where (b);
12957}
12958
12959static void
12960bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12961{
12962 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12963 fprintf_unfiltered (fp, "tbreak");
12964 else if (tp->type == bp_breakpoint)
12965 fprintf_unfiltered (fp, "break");
12966 else if (tp->type == bp_hardware_breakpoint
12967 && tp->disposition == disp_del)
12968 fprintf_unfiltered (fp, "thbreak");
12969 else if (tp->type == bp_hardware_breakpoint)
12970 fprintf_unfiltered (fp, "hbreak");
12971 else
12972 internal_error (__FILE__, __LINE__,
12973 _("unhandled breakpoint type %d"), (int) tp->type);
12974
12975 fprintf_unfiltered (fp, " %s",
12976 event_location_to_string (tp->location.get ()));
12977
12978 /* Print out extra_string if this breakpoint is pending. It might
12979 contain, for example, conditions that were set by the user. */
12980 if (tp->loc == NULL && tp->extra_string != NULL)
12981 fprintf_unfiltered (fp, " %s", tp->extra_string);
12982
12983 print_recreate_thread (tp, fp);
12984}
12985
12986static void
12987bkpt_create_sals_from_location (const struct event_location *location,
12988 struct linespec_result *canonical,
12989 enum bptype type_wanted)
12990{
12991 create_sals_from_location_default (location, canonical, type_wanted);
12992}
12993
12994static void
12995bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12996 struct linespec_result *canonical,
12997 gdb::unique_xmalloc_ptr<char> cond_string,
12998 gdb::unique_xmalloc_ptr<char> extra_string,
12999 enum bptype type_wanted,
13000 enum bpdisp disposition,
13001 int thread,
13002 int task, int ignore_count,
13003 const struct breakpoint_ops *ops,
13004 int from_tty, int enabled,
13005 int internal, unsigned flags)
13006{
13007 create_breakpoints_sal_default (gdbarch, canonical,
13008 std::move (cond_string),
13009 std::move (extra_string),
13010 type_wanted,
13011 disposition, thread, task,
13012 ignore_count, ops, from_tty,
13013 enabled, internal, flags);
13014}
13015
13016static std::vector<symtab_and_line>
13017bkpt_decode_location (struct breakpoint *b,
13018 const struct event_location *location,
13019 struct program_space *search_pspace)
13020{
13021 return decode_location_default (b, location, search_pspace);
13022}
13023
13024/* Virtual table for internal breakpoints. */
13025
13026static void
13027internal_bkpt_re_set (struct breakpoint *b)
13028{
13029 switch (b->type)
13030 {
13031 /* Delete overlay event and longjmp master breakpoints; they
13032 will be reset later by breakpoint_re_set. */
13033 case bp_overlay_event:
13034 case bp_longjmp_master:
13035 case bp_std_terminate_master:
13036 case bp_exception_master:
13037 delete_breakpoint (b);
13038 break;
13039
13040 /* This breakpoint is special, it's set up when the inferior
13041 starts and we really don't want to touch it. */
13042 case bp_shlib_event:
13043
13044 /* Like bp_shlib_event, this breakpoint type is special. Once
13045 it is set up, we do not want to touch it. */
13046 case bp_thread_event:
13047 break;
13048 }
13049}
13050
13051static void
13052internal_bkpt_check_status (bpstat bs)
13053{
13054 if (bs->breakpoint_at->type == bp_shlib_event)
13055 {
13056 /* If requested, stop when the dynamic linker notifies GDB of
13057 events. This allows the user to get control and place
13058 breakpoints in initializer routines for dynamically loaded
13059 objects (among other things). */
13060 bs->stop = stop_on_solib_events;
13061 bs->print = stop_on_solib_events;
13062 }
13063 else
13064 bs->stop = 0;
13065}
13066
13067static enum print_stop_action
13068internal_bkpt_print_it (bpstat bs)
13069{
13070 struct breakpoint *b;
13071
13072 b = bs->breakpoint_at;
13073
13074 switch (b->type)
13075 {
13076 case bp_shlib_event:
13077 /* Did we stop because the user set the stop_on_solib_events
13078 variable? (If so, we report this as a generic, "Stopped due
13079 to shlib event" message.) */
13080 print_solib_event (0);
13081 break;
13082
13083 case bp_thread_event:
13084 /* Not sure how we will get here.
13085 GDB should not stop for these breakpoints. */
13086 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13087 break;
13088
13089 case bp_overlay_event:
13090 /* By analogy with the thread event, GDB should not stop for these. */
13091 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13092 break;
13093
13094 case bp_longjmp_master:
13095 /* These should never be enabled. */
13096 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13097 break;
13098
13099 case bp_std_terminate_master:
13100 /* These should never be enabled. */
13101 printf_filtered (_("std::terminate Master Breakpoint: "
13102 "gdb should not stop!\n"));
13103 break;
13104
13105 case bp_exception_master:
13106 /* These should never be enabled. */
13107 printf_filtered (_("Exception Master Breakpoint: "
13108 "gdb should not stop!\n"));
13109 break;
13110 }
13111
13112 return PRINT_NOTHING;
13113}
13114
13115static void
13116internal_bkpt_print_mention (struct breakpoint *b)
13117{
13118 /* Nothing to mention. These breakpoints are internal. */
13119}
13120
13121/* Virtual table for momentary breakpoints */
13122
13123static void
13124momentary_bkpt_re_set (struct breakpoint *b)
13125{
13126 /* Keep temporary breakpoints, which can be encountered when we step
13127 over a dlopen call and solib_add is resetting the breakpoints.
13128 Otherwise these should have been blown away via the cleanup chain
13129 or by breakpoint_init_inferior when we rerun the executable. */
13130}
13131
13132static void
13133momentary_bkpt_check_status (bpstat bs)
13134{
13135 /* Nothing. The point of these breakpoints is causing a stop. */
13136}
13137
13138static enum print_stop_action
13139momentary_bkpt_print_it (bpstat bs)
13140{
13141 return PRINT_UNKNOWN;
13142}
13143
13144static void
13145momentary_bkpt_print_mention (struct breakpoint *b)
13146{
13147 /* Nothing to mention. These breakpoints are internal. */
13148}
13149
13150/* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13151
13152 It gets cleared already on the removal of the first one of such placed
13153 breakpoints. This is OK as they get all removed altogether. */
13154
13155longjmp_breakpoint::~longjmp_breakpoint ()
13156{
13157 thread_info *tp = find_thread_global_id (this->thread);
13158
13159 if (tp != NULL)
13160 tp->initiating_frame = null_frame_id;
13161}
13162
13163/* Specific methods for probe breakpoints. */
13164
13165static int
13166bkpt_probe_insert_location (struct bp_location *bl)
13167{
13168 int v = bkpt_insert_location (bl);
13169
13170 if (v == 0)
13171 {
13172 /* The insertion was successful, now let's set the probe's semaphore
13173 if needed. */
13174 if (bl->probe.probe->pops->set_semaphore != NULL)
13175 bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13176 bl->probe.objfile,
13177 bl->gdbarch);
13178 }
13179
13180 return v;
13181}
13182
13183static int
13184bkpt_probe_remove_location (struct bp_location *bl,
13185 enum remove_bp_reason reason)
13186{
13187 /* Let's clear the semaphore before removing the location. */
13188 if (bl->probe.probe->pops->clear_semaphore != NULL)
13189 bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13190 bl->probe.objfile,
13191 bl->gdbarch);
13192
13193 return bkpt_remove_location (bl, reason);
13194}
13195
13196static void
13197bkpt_probe_create_sals_from_location (const struct event_location *location,
13198 struct linespec_result *canonical,
13199 enum bptype type_wanted)
13200{
13201 struct linespec_sals lsal;
13202
13203 lsal.sals = parse_probes (location, NULL, canonical);
13204 lsal.canonical
13205 = xstrdup (event_location_to_string (canonical->location.get ()));
13206 canonical->lsals.push_back (std::move (lsal));
13207}
13208
13209static std::vector<symtab_and_line>
13210bkpt_probe_decode_location (struct breakpoint *b,
13211 const struct event_location *location,
13212 struct program_space *search_pspace)
13213{
13214 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
13215 if (sals.empty ())
13216 error (_("probe not found"));
13217 return sals;
13218}
13219
13220/* The breakpoint_ops structure to be used in tracepoints. */
13221
13222static void
13223tracepoint_re_set (struct breakpoint *b)
13224{
13225 breakpoint_re_set_default (b);
13226}
13227
13228static int
13229tracepoint_breakpoint_hit (const struct bp_location *bl,
13230 struct address_space *aspace, CORE_ADDR bp_addr,
13231 const struct target_waitstatus *ws)
13232{
13233 /* By definition, the inferior does not report stops at
13234 tracepoints. */
13235 return 0;
13236}
13237
13238static void
13239tracepoint_print_one_detail (const struct breakpoint *self,
13240 struct ui_out *uiout)
13241{
13242 struct tracepoint *tp = (struct tracepoint *) self;
13243 if (tp->static_trace_marker_id)
13244 {
13245 gdb_assert (self->type == bp_static_tracepoint);
13246
13247 uiout->text ("\tmarker id is ");
13248 uiout->field_string ("static-tracepoint-marker-string-id",
13249 tp->static_trace_marker_id);
13250 uiout->text ("\n");
13251 }
13252}
13253
13254static void
13255tracepoint_print_mention (struct breakpoint *b)
13256{
13257 if (current_uiout->is_mi_like_p ())
13258 return;
13259
13260 switch (b->type)
13261 {
13262 case bp_tracepoint:
13263 printf_filtered (_("Tracepoint"));
13264 printf_filtered (_(" %d"), b->number);
13265 break;
13266 case bp_fast_tracepoint:
13267 printf_filtered (_("Fast tracepoint"));
13268 printf_filtered (_(" %d"), b->number);
13269 break;
13270 case bp_static_tracepoint:
13271 printf_filtered (_("Static tracepoint"));
13272 printf_filtered (_(" %d"), b->number);
13273 break;
13274 default:
13275 internal_error (__FILE__, __LINE__,
13276 _("unhandled tracepoint type %d"), (int) b->type);
13277 }
13278
13279 say_where (b);
13280}
13281
13282static void
13283tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13284{
13285 struct tracepoint *tp = (struct tracepoint *) self;
13286
13287 if (self->type == bp_fast_tracepoint)
13288 fprintf_unfiltered (fp, "ftrace");
13289 else if (self->type == bp_static_tracepoint)
13290 fprintf_unfiltered (fp, "strace");
13291 else if (self->type == bp_tracepoint)
13292 fprintf_unfiltered (fp, "trace");
13293 else
13294 internal_error (__FILE__, __LINE__,
13295 _("unhandled tracepoint type %d"), (int) self->type);
13296
13297 fprintf_unfiltered (fp, " %s",
13298 event_location_to_string (self->location.get ()));
13299 print_recreate_thread (self, fp);
13300
13301 if (tp->pass_count)
13302 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
13303}
13304
13305static void
13306tracepoint_create_sals_from_location (const struct event_location *location,
13307 struct linespec_result *canonical,
13308 enum bptype type_wanted)
13309{
13310 create_sals_from_location_default (location, canonical, type_wanted);
13311}
13312
13313static void
13314tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13315 struct linespec_result *canonical,
13316 gdb::unique_xmalloc_ptr<char> cond_string,
13317 gdb::unique_xmalloc_ptr<char> extra_string,
13318 enum bptype type_wanted,
13319 enum bpdisp disposition,
13320 int thread,
13321 int task, int ignore_count,
13322 const struct breakpoint_ops *ops,
13323 int from_tty, int enabled,
13324 int internal, unsigned flags)
13325{
13326 create_breakpoints_sal_default (gdbarch, canonical,
13327 std::move (cond_string),
13328 std::move (extra_string),
13329 type_wanted,
13330 disposition, thread, task,
13331 ignore_count, ops, from_tty,
13332 enabled, internal, flags);
13333}
13334
13335static std::vector<symtab_and_line>
13336tracepoint_decode_location (struct breakpoint *b,
13337 const struct event_location *location,
13338 struct program_space *search_pspace)
13339{
13340 return decode_location_default (b, location, search_pspace);
13341}
13342
13343struct breakpoint_ops tracepoint_breakpoint_ops;
13344
13345/* The breakpoint_ops structure to be use on tracepoints placed in a
13346 static probe. */
13347
13348static void
13349tracepoint_probe_create_sals_from_location
13350 (const struct event_location *location,
13351 struct linespec_result *canonical,
13352 enum bptype type_wanted)
13353{
13354 /* We use the same method for breakpoint on probes. */
13355 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
13356}
13357
13358static std::vector<symtab_and_line>
13359tracepoint_probe_decode_location (struct breakpoint *b,
13360 const struct event_location *location,
13361 struct program_space *search_pspace)
13362{
13363 /* We use the same method for breakpoint on probes. */
13364 return bkpt_probe_decode_location (b, location, search_pspace);
13365}
13366
13367static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13368
13369/* Dprintf breakpoint_ops methods. */
13370
13371static void
13372dprintf_re_set (struct breakpoint *b)
13373{
13374 breakpoint_re_set_default (b);
13375
13376 /* extra_string should never be non-NULL for dprintf. */
13377 gdb_assert (b->extra_string != NULL);
13378
13379 /* 1 - connect to target 1, that can run breakpoint commands.
13380 2 - create a dprintf, which resolves fine.
13381 3 - disconnect from target 1
13382 4 - connect to target 2, that can NOT run breakpoint commands.
13383
13384 After steps #3/#4, you'll want the dprintf command list to
13385 be updated, because target 1 and 2 may well return different
13386 answers for target_can_run_breakpoint_commands().
13387 Given absence of finer grained resetting, we get to do
13388 it all the time. */
13389 if (b->extra_string != NULL)
13390 update_dprintf_command_list (b);
13391}
13392
13393/* Implement the "print_recreate" breakpoint_ops method for dprintf. */
13394
13395static void
13396dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13397{
13398 fprintf_unfiltered (fp, "dprintf %s,%s",
13399 event_location_to_string (tp->location.get ()),
13400 tp->extra_string);
13401 print_recreate_thread (tp, fp);
13402}
13403
13404/* Implement the "after_condition_true" breakpoint_ops method for
13405 dprintf.
13406
13407 dprintf's are implemented with regular commands in their command
13408 list, but we run the commands here instead of before presenting the
13409 stop to the user, as dprintf's don't actually cause a stop. This
13410 also makes it so that the commands of multiple dprintfs at the same
13411 address are all handled. */
13412
13413static void
13414dprintf_after_condition_true (struct bpstats *bs)
13415{
13416 struct cleanup *old_chain;
13417 struct bpstats tmp_bs = { NULL };
13418 struct bpstats *tmp_bs_p = &tmp_bs;
13419
13420 /* dprintf's never cause a stop. This wasn't set in the
13421 check_status hook instead because that would make the dprintf's
13422 condition not be evaluated. */
13423 bs->stop = 0;
13424
13425 /* Run the command list here. Take ownership of it instead of
13426 copying. We never want these commands to run later in
13427 bpstat_do_actions, if a breakpoint that causes a stop happens to
13428 be set at same address as this dprintf, or even if running the
13429 commands here throws. */
13430 tmp_bs.commands = bs->commands;
13431 bs->commands = NULL;
13432 old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13433
13434 bpstat_do_actions_1 (&tmp_bs_p);
13435
13436 /* 'tmp_bs.commands' will usually be NULL by now, but
13437 bpstat_do_actions_1 may return early without processing the whole
13438 list. */
13439 do_cleanups (old_chain);
13440}
13441
13442/* The breakpoint_ops structure to be used on static tracepoints with
13443 markers (`-m'). */
13444
13445static void
13446strace_marker_create_sals_from_location (const struct event_location *location,
13447 struct linespec_result *canonical,
13448 enum bptype type_wanted)
13449{
13450 struct linespec_sals lsal;
13451 const char *arg_start, *arg;
13452 char *str;
13453 struct cleanup *cleanup;
13454
13455 arg = arg_start = get_linespec_location (location);
13456 lsal.sals = decode_static_tracepoint_spec (&arg);
13457
13458 str = savestring (arg_start, arg - arg_start);
13459 cleanup = make_cleanup (xfree, str);
13460 canonical->location = new_linespec_location (&str);
13461 do_cleanups (cleanup);
13462
13463 lsal.canonical
13464 = xstrdup (event_location_to_string (canonical->location.get ()));
13465 canonical->lsals.push_back (std::move (lsal));
13466}
13467
13468static void
13469strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13470 struct linespec_result *canonical,
13471 gdb::unique_xmalloc_ptr<char> cond_string,
13472 gdb::unique_xmalloc_ptr<char> extra_string,
13473 enum bptype type_wanted,
13474 enum bpdisp disposition,
13475 int thread,
13476 int task, int ignore_count,
13477 const struct breakpoint_ops *ops,
13478 int from_tty, int enabled,
13479 int internal, unsigned flags)
13480{
13481 const linespec_sals &lsal = canonical->lsals[0];
13482
13483 /* If the user is creating a static tracepoint by marker id
13484 (strace -m MARKER_ID), then store the sals index, so that
13485 breakpoint_re_set can try to match up which of the newly
13486 found markers corresponds to this one, and, don't try to
13487 expand multiple locations for each sal, given than SALS
13488 already should contain all sals for MARKER_ID. */
13489
13490 for (size_t i = 0; i < lsal.sals.size (); i++)
13491 {
13492 event_location_up location
13493 = copy_event_location (canonical->location.get ());
13494
13495 std::unique_ptr<tracepoint> tp (new tracepoint ());
13496 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
13497 std::move (location), NULL,
13498 std::move (cond_string),
13499 std::move (extra_string),
13500 type_wanted, disposition,
13501 thread, task, ignore_count, ops,
13502 from_tty, enabled, internal, flags,
13503 canonical->special_display);
13504 /* Given that its possible to have multiple markers with
13505 the same string id, if the user is creating a static
13506 tracepoint by marker id ("strace -m MARKER_ID"), then
13507 store the sals index, so that breakpoint_re_set can
13508 try to match up which of the newly found markers
13509 corresponds to this one */
13510 tp->static_trace_marker_id_idx = i;
13511
13512 install_breakpoint (internal, std::move (tp), 0);
13513 }
13514}
13515
13516static std::vector<symtab_and_line>
13517strace_marker_decode_location (struct breakpoint *b,
13518 const struct event_location *location,
13519 struct program_space *search_pspace)
13520{
13521 struct tracepoint *tp = (struct tracepoint *) b;
13522 const char *s = get_linespec_location (location);
13523
13524 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13525 if (sals.size () > tp->static_trace_marker_id_idx)
13526 {
13527 sals[0] = sals[tp->static_trace_marker_id_idx];
13528 sals.resize (1);
13529 return sals;
13530 }
13531 else
13532 error (_("marker %s not found"), tp->static_trace_marker_id);
13533}
13534
13535static struct breakpoint_ops strace_marker_breakpoint_ops;
13536
13537static int
13538strace_marker_p (struct breakpoint *b)
13539{
13540 return b->ops == &strace_marker_breakpoint_ops;
13541}
13542
13543/* Delete a breakpoint and clean up all traces of it in the data
13544 structures. */
13545
13546void
13547delete_breakpoint (struct breakpoint *bpt)
13548{
13549 struct breakpoint *b;
13550
13551 gdb_assert (bpt != NULL);
13552
13553 /* Has this bp already been deleted? This can happen because
13554 multiple lists can hold pointers to bp's. bpstat lists are
13555 especial culprits.
13556
13557 One example of this happening is a watchpoint's scope bp. When
13558 the scope bp triggers, we notice that the watchpoint is out of
13559 scope, and delete it. We also delete its scope bp. But the
13560 scope bp is marked "auto-deleting", and is already on a bpstat.
13561 That bpstat is then checked for auto-deleting bp's, which are
13562 deleted.
13563
13564 A real solution to this problem might involve reference counts in
13565 bp's, and/or giving them pointers back to their referencing
13566 bpstat's, and teaching delete_breakpoint to only free a bp's
13567 storage when no more references were extent. A cheaper bandaid
13568 was chosen. */
13569 if (bpt->type == bp_none)
13570 return;
13571
13572 /* At least avoid this stale reference until the reference counting
13573 of breakpoints gets resolved. */
13574 if (bpt->related_breakpoint != bpt)
13575 {
13576 struct breakpoint *related;
13577 struct watchpoint *w;
13578
13579 if (bpt->type == bp_watchpoint_scope)
13580 w = (struct watchpoint *) bpt->related_breakpoint;
13581 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13582 w = (struct watchpoint *) bpt;
13583 else
13584 w = NULL;
13585 if (w != NULL)
13586 watchpoint_del_at_next_stop (w);
13587
13588 /* Unlink bpt from the bpt->related_breakpoint ring. */
13589 for (related = bpt; related->related_breakpoint != bpt;
13590 related = related->related_breakpoint);
13591 related->related_breakpoint = bpt->related_breakpoint;
13592 bpt->related_breakpoint = bpt;
13593 }
13594
13595 /* watch_command_1 creates a watchpoint but only sets its number if
13596 update_watchpoint succeeds in creating its bp_locations. If there's
13597 a problem in that process, we'll be asked to delete the half-created
13598 watchpoint. In that case, don't announce the deletion. */
13599 if (bpt->number)
13600 observer_notify_breakpoint_deleted (bpt);
13601
13602 if (breakpoint_chain == bpt)
13603 breakpoint_chain = bpt->next;
13604
13605 ALL_BREAKPOINTS (b)
13606 if (b->next == bpt)
13607 {
13608 b->next = bpt->next;
13609 break;
13610 }
13611
13612 /* Be sure no bpstat's are pointing at the breakpoint after it's
13613 been freed. */
13614 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
13615 in all threads for now. Note that we cannot just remove bpstats
13616 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13617 commands are associated with the bpstat; if we remove it here,
13618 then the later call to bpstat_do_actions (&stop_bpstat); in
13619 event-top.c won't do anything, and temporary breakpoints with
13620 commands won't work. */
13621
13622 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13623
13624 /* Now that breakpoint is removed from breakpoint list, update the
13625 global location list. This will remove locations that used to
13626 belong to this breakpoint. Do this before freeing the breakpoint
13627 itself, since remove_breakpoint looks at location's owner. It
13628 might be better design to have location completely
13629 self-contained, but it's not the case now. */
13630 update_global_location_list (UGLL_DONT_INSERT);
13631
13632 /* On the chance that someone will soon try again to delete this
13633 same bp, we mark it as deleted before freeing its storage. */
13634 bpt->type = bp_none;
13635 delete bpt;
13636}
13637
13638static void
13639do_delete_breakpoint_cleanup (void *b)
13640{
13641 delete_breakpoint ((struct breakpoint *) b);
13642}
13643
13644struct cleanup *
13645make_cleanup_delete_breakpoint (struct breakpoint *b)
13646{
13647 return make_cleanup (do_delete_breakpoint_cleanup, b);
13648}
13649
13650/* Iterator function to call a user-provided callback function once
13651 for each of B and its related breakpoints. */
13652
13653static void
13654iterate_over_related_breakpoints (struct breakpoint *b,
13655 void (*function) (struct breakpoint *,
13656 void *),
13657 void *data)
13658{
13659 struct breakpoint *related;
13660
13661 related = b;
13662 do
13663 {
13664 struct breakpoint *next;
13665
13666 /* FUNCTION may delete RELATED. */
13667 next = related->related_breakpoint;
13668
13669 if (next == related)
13670 {
13671 /* RELATED is the last ring entry. */
13672 function (related, data);
13673
13674 /* FUNCTION may have deleted it, so we'd never reach back to
13675 B. There's nothing left to do anyway, so just break
13676 out. */
13677 break;
13678 }
13679 else
13680 function (related, data);
13681
13682 related = next;
13683 }
13684 while (related != b);
13685}
13686
13687static void
13688do_delete_breakpoint (struct breakpoint *b, void *ignore)
13689{
13690 delete_breakpoint (b);
13691}
13692
13693/* A callback for map_breakpoint_numbers that calls
13694 delete_breakpoint. */
13695
13696static void
13697do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13698{
13699 iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13700}
13701
13702void
13703delete_command (char *arg, int from_tty)
13704{
13705 struct breakpoint *b, *b_tmp;
13706
13707 dont_repeat ();
13708
13709 if (arg == 0)
13710 {
13711 int breaks_to_delete = 0;
13712
13713 /* Delete all breakpoints if no argument. Do not delete
13714 internal breakpoints, these have to be deleted with an
13715 explicit breakpoint number argument. */
13716 ALL_BREAKPOINTS (b)
13717 if (user_breakpoint_p (b))
13718 {
13719 breaks_to_delete = 1;
13720 break;
13721 }
13722
13723 /* Ask user only if there are some breakpoints to delete. */
13724 if (!from_tty
13725 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13726 {
13727 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13728 if (user_breakpoint_p (b))
13729 delete_breakpoint (b);
13730 }
13731 }
13732 else
13733 map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13734}
13735
13736/* Return true if all locations of B bound to PSPACE are pending. If
13737 PSPACE is NULL, all locations of all program spaces are
13738 considered. */
13739
13740static int
13741all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13742{
13743 struct bp_location *loc;
13744
13745 for (loc = b->loc; loc != NULL; loc = loc->next)
13746 if ((pspace == NULL
13747 || loc->pspace == pspace)
13748 && !loc->shlib_disabled
13749 && !loc->pspace->executing_startup)
13750 return 0;
13751 return 1;
13752}
13753
13754/* Subroutine of update_breakpoint_locations to simplify it.
13755 Return non-zero if multiple fns in list LOC have the same name.
13756 Null names are ignored. */
13757
13758static int
13759ambiguous_names_p (struct bp_location *loc)
13760{
13761 struct bp_location *l;
13762 htab_t htab = htab_create_alloc (13, htab_hash_string,
13763 (int (*) (const void *,
13764 const void *)) streq,
13765 NULL, xcalloc, xfree);
13766
13767 for (l = loc; l != NULL; l = l->next)
13768 {
13769 const char **slot;
13770 const char *name = l->function_name;
13771
13772 /* Allow for some names to be NULL, ignore them. */
13773 if (name == NULL)
13774 continue;
13775
13776 slot = (const char **) htab_find_slot (htab, (const void *) name,
13777 INSERT);
13778 /* NOTE: We can assume slot != NULL here because xcalloc never
13779 returns NULL. */
13780 if (*slot != NULL)
13781 {
13782 htab_delete (htab);
13783 return 1;
13784 }
13785 *slot = name;
13786 }
13787
13788 htab_delete (htab);
13789 return 0;
13790}
13791
13792/* When symbols change, it probably means the sources changed as well,
13793 and it might mean the static tracepoint markers are no longer at
13794 the same address or line numbers they used to be at last we
13795 checked. Losing your static tracepoints whenever you rebuild is
13796 undesirable. This function tries to resync/rematch gdb static
13797 tracepoints with the markers on the target, for static tracepoints
13798 that have not been set by marker id. Static tracepoint that have
13799 been set by marker id are reset by marker id in breakpoint_re_set.
13800 The heuristic is:
13801
13802 1) For a tracepoint set at a specific address, look for a marker at
13803 the old PC. If one is found there, assume to be the same marker.
13804 If the name / string id of the marker found is different from the
13805 previous known name, assume that means the user renamed the marker
13806 in the sources, and output a warning.
13807
13808 2) For a tracepoint set at a given line number, look for a marker
13809 at the new address of the old line number. If one is found there,
13810 assume to be the same marker. If the name / string id of the
13811 marker found is different from the previous known name, assume that
13812 means the user renamed the marker in the sources, and output a
13813 warning.
13814
13815 3) If a marker is no longer found at the same address or line, it
13816 may mean the marker no longer exists. But it may also just mean
13817 the code changed a bit. Maybe the user added a few lines of code
13818 that made the marker move up or down (in line number terms). Ask
13819 the target for info about the marker with the string id as we knew
13820 it. If found, update line number and address in the matching
13821 static tracepoint. This will get confused if there's more than one
13822 marker with the same ID (possible in UST, although unadvised
13823 precisely because it confuses tools). */
13824
13825static struct symtab_and_line
13826update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13827{
13828 struct tracepoint *tp = (struct tracepoint *) b;
13829 struct static_tracepoint_marker marker;
13830 CORE_ADDR pc;
13831
13832 pc = sal.pc;
13833 if (sal.line)
13834 find_line_pc (sal.symtab, sal.line, &pc);
13835
13836 if (target_static_tracepoint_marker_at (pc, &marker))
13837 {
13838 if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13839 warning (_("static tracepoint %d changed probed marker from %s to %s"),
13840 b->number,
13841 tp->static_trace_marker_id, marker.str_id);
13842
13843 xfree (tp->static_trace_marker_id);
13844 tp->static_trace_marker_id = xstrdup (marker.str_id);
13845 release_static_tracepoint_marker (&marker);
13846
13847 return sal;
13848 }
13849
13850 /* Old marker wasn't found on target at lineno. Try looking it up
13851 by string ID. */
13852 if (!sal.explicit_pc
13853 && sal.line != 0
13854 && sal.symtab != NULL
13855 && tp->static_trace_marker_id != NULL)
13856 {
13857 VEC(static_tracepoint_marker_p) *markers;
13858
13859 markers
13860 = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13861
13862 if (!VEC_empty(static_tracepoint_marker_p, markers))
13863 {
13864 struct symbol *sym;
13865 struct static_tracepoint_marker *tpmarker;
13866 struct ui_out *uiout = current_uiout;
13867 struct explicit_location explicit_loc;
13868
13869 tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13870
13871 xfree (tp->static_trace_marker_id);
13872 tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13873
13874 warning (_("marker for static tracepoint %d (%s) not "
13875 "found at previous line number"),
13876 b->number, tp->static_trace_marker_id);
13877
13878 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13879 sym = find_pc_sect_function (tpmarker->address, NULL);
13880 uiout->text ("Now in ");
13881 if (sym)
13882 {
13883 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
13884 uiout->text (" at ");
13885 }
13886 uiout->field_string ("file",
13887 symtab_to_filename_for_display (sal2.symtab));
13888 uiout->text (":");
13889
13890 if (uiout->is_mi_like_p ())
13891 {
13892 const char *fullname = symtab_to_fullname (sal2.symtab);
13893
13894 uiout->field_string ("fullname", fullname);
13895 }
13896
13897 uiout->field_int ("line", sal2.line);
13898 uiout->text ("\n");
13899
13900 b->loc->line_number = sal2.line;
13901 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13902
13903 b->location.reset (NULL);
13904 initialize_explicit_location (&explicit_loc);
13905 explicit_loc.source_filename
13906 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13907 explicit_loc.line_offset.offset = b->loc->line_number;
13908 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13909 b->location = new_explicit_location (&explicit_loc);
13910
13911 /* Might be nice to check if function changed, and warn if
13912 so. */
13913
13914 release_static_tracepoint_marker (tpmarker);
13915 }
13916 }
13917 return sal;
13918}
13919
13920/* Returns 1 iff locations A and B are sufficiently same that
13921 we don't need to report breakpoint as changed. */
13922
13923static int
13924locations_are_equal (struct bp_location *a, struct bp_location *b)
13925{
13926 while (a && b)
13927 {
13928 if (a->address != b->address)
13929 return 0;
13930
13931 if (a->shlib_disabled != b->shlib_disabled)
13932 return 0;
13933
13934 if (a->enabled != b->enabled)
13935 return 0;
13936
13937 a = a->next;
13938 b = b->next;
13939 }
13940
13941 if ((a == NULL) != (b == NULL))
13942 return 0;
13943
13944 return 1;
13945}
13946
13947/* Split all locations of B that are bound to PSPACE out of B's
13948 location list to a separate list and return that list's head. If
13949 PSPACE is NULL, hoist out all locations of B. */
13950
13951static struct bp_location *
13952hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13953{
13954 struct bp_location head;
13955 struct bp_location *i = b->loc;
13956 struct bp_location **i_link = &b->loc;
13957 struct bp_location *hoisted = &head;
13958
13959 if (pspace == NULL)
13960 {
13961 i = b->loc;
13962 b->loc = NULL;
13963 return i;
13964 }
13965
13966 head.next = NULL;
13967
13968 while (i != NULL)
13969 {
13970 if (i->pspace == pspace)
13971 {
13972 *i_link = i->next;
13973 i->next = NULL;
13974 hoisted->next = i;
13975 hoisted = i;
13976 }
13977 else
13978 i_link = &i->next;
13979 i = *i_link;
13980 }
13981
13982 return head.next;
13983}
13984
13985/* Create new breakpoint locations for B (a hardware or software
13986 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
13987 zero, then B is a ranged breakpoint. Only recreates locations for
13988 FILTER_PSPACE. Locations of other program spaces are left
13989 untouched. */
13990
13991void
13992update_breakpoint_locations (struct breakpoint *b,
13993 struct program_space *filter_pspace,
13994 gdb::array_view<const symtab_and_line> sals,
13995 gdb::array_view<const symtab_and_line> sals_end)
13996{
13997 int i;
13998 struct bp_location *existing_locations;
13999
14000 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
14001 {
14002 /* Ranged breakpoints have only one start location and one end
14003 location. */
14004 b->enable_state = bp_disabled;
14005 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14006 "multiple locations found\n"),
14007 b->number);
14008 return;
14009 }
14010
14011 /* If there's no new locations, and all existing locations are
14012 pending, don't do anything. This optimizes the common case where
14013 all locations are in the same shared library, that was unloaded.
14014 We'd like to retain the location, so that when the library is
14015 loaded again, we don't loose the enabled/disabled status of the
14016 individual locations. */
14017 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
14018 return;
14019
14020 existing_locations = hoist_existing_locations (b, filter_pspace);
14021
14022 for (const auto &sal : sals)
14023 {
14024 struct bp_location *new_loc;
14025
14026 switch_to_program_space_and_thread (sal.pspace);
14027
14028 new_loc = add_location_to_breakpoint (b, &sal);
14029
14030 /* Reparse conditions, they might contain references to the
14031 old symtab. */
14032 if (b->cond_string != NULL)
14033 {
14034 const char *s;
14035
14036 s = b->cond_string;
14037 TRY
14038 {
14039 new_loc->cond = parse_exp_1 (&s, sal.pc,
14040 block_for_pc (sal.pc),
14041 0);
14042 }
14043 CATCH (e, RETURN_MASK_ERROR)
14044 {
14045 warning (_("failed to reevaluate condition "
14046 "for breakpoint %d: %s"),
14047 b->number, e.message);
14048 new_loc->enabled = 0;
14049 }
14050 END_CATCH
14051 }
14052
14053 if (!sals_end.empty ())
14054 {
14055 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
14056
14057 new_loc->length = end - sals[0].pc + 1;
14058 }
14059 }
14060
14061 /* If possible, carry over 'disable' status from existing
14062 breakpoints. */
14063 {
14064 struct bp_location *e = existing_locations;
14065 /* If there are multiple breakpoints with the same function name,
14066 e.g. for inline functions, comparing function names won't work.
14067 Instead compare pc addresses; this is just a heuristic as things
14068 may have moved, but in practice it gives the correct answer
14069 often enough until a better solution is found. */
14070 int have_ambiguous_names = ambiguous_names_p (b->loc);
14071
14072 for (; e; e = e->next)
14073 {
14074 if (!e->enabled && e->function_name)
14075 {
14076 struct bp_location *l = b->loc;
14077 if (have_ambiguous_names)
14078 {
14079 for (; l; l = l->next)
14080 if (breakpoint_locations_match (e, l))
14081 {
14082 l->enabled = 0;
14083 break;
14084 }
14085 }
14086 else
14087 {
14088 for (; l; l = l->next)
14089 if (l->function_name
14090 && strcmp (e->function_name, l->function_name) == 0)
14091 {
14092 l->enabled = 0;
14093 break;
14094 }
14095 }
14096 }
14097 }
14098 }
14099
14100 if (!locations_are_equal (existing_locations, b->loc))
14101 observer_notify_breakpoint_modified (b);
14102}
14103
14104/* Find the SaL locations corresponding to the given LOCATION.
14105 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
14106
14107static std::vector<symtab_and_line>
14108location_to_sals (struct breakpoint *b, struct event_location *location,
14109 struct program_space *search_pspace, int *found)
14110{
14111 struct gdb_exception exception = exception_none;
14112
14113 gdb_assert (b->ops != NULL);
14114
14115 std::vector<symtab_and_line> sals;
14116
14117 TRY
14118 {
14119 sals = b->ops->decode_location (b, location, search_pspace);
14120 }
14121 CATCH (e, RETURN_MASK_ERROR)
14122 {
14123 int not_found_and_ok = 0;
14124
14125 exception = e;
14126
14127 /* For pending breakpoints, it's expected that parsing will
14128 fail until the right shared library is loaded. User has
14129 already told to create pending breakpoints and don't need
14130 extra messages. If breakpoint is in bp_shlib_disabled
14131 state, then user already saw the message about that
14132 breakpoint being disabled, and don't want to see more
14133 errors. */
14134 if (e.error == NOT_FOUND_ERROR
14135 && (b->condition_not_parsed
14136 || (b->loc != NULL
14137 && search_pspace != NULL
14138 && b->loc->pspace != search_pspace)
14139 || (b->loc && b->loc->shlib_disabled)
14140 || (b->loc && b->loc->pspace->executing_startup)
14141 || b->enable_state == bp_disabled))
14142 not_found_and_ok = 1;
14143
14144 if (!not_found_and_ok)
14145 {
14146 /* We surely don't want to warn about the same breakpoint
14147 10 times. One solution, implemented here, is disable
14148 the breakpoint on error. Another solution would be to
14149 have separate 'warning emitted' flag. Since this
14150 happens only when a binary has changed, I don't know
14151 which approach is better. */
14152 b->enable_state = bp_disabled;
14153 throw_exception (e);
14154 }
14155 }
14156 END_CATCH
14157
14158 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
14159 {
14160 for (auto &sal : sals)
14161 resolve_sal_pc (&sal);
14162 if (b->condition_not_parsed && b->extra_string != NULL)
14163 {
14164 char *cond_string, *extra_string;
14165 int thread, task;
14166
14167 find_condition_and_thread (b->extra_string, sals[0].pc,
14168 &cond_string, &thread, &task,
14169 &extra_string);
14170 gdb_assert (b->cond_string == NULL);
14171 if (cond_string)
14172 b->cond_string = cond_string;
14173 b->thread = thread;
14174 b->task = task;
14175 if (extra_string)
14176 {
14177 xfree (b->extra_string);
14178 b->extra_string = extra_string;
14179 }
14180 b->condition_not_parsed = 0;
14181 }
14182
14183 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14184 sals[0] = update_static_tracepoint (b, sals[0]);
14185
14186 *found = 1;
14187 }
14188 else
14189 *found = 0;
14190
14191 return sals;
14192}
14193
14194/* The default re_set method, for typical hardware or software
14195 breakpoints. Reevaluate the breakpoint and recreate its
14196 locations. */
14197
14198static void
14199breakpoint_re_set_default (struct breakpoint *b)
14200{
14201 struct program_space *filter_pspace = current_program_space;
14202 std::vector<symtab_and_line> expanded, expanded_end;
14203
14204 int found;
14205 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
14206 filter_pspace, &found);
14207 if (found)
14208 expanded = std::move (sals);
14209
14210 if (b->location_range_end != NULL)
14211 {
14212 std::vector<symtab_and_line> sals_end
14213 = location_to_sals (b, b->location_range_end.get (),
14214 filter_pspace, &found);
14215 if (found)
14216 expanded_end = std::move (sals_end);
14217 }
14218
14219 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
14220}
14221
14222/* Default method for creating SALs from an address string. It basically
14223 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
14224
14225static void
14226create_sals_from_location_default (const struct event_location *location,
14227 struct linespec_result *canonical,
14228 enum bptype type_wanted)
14229{
14230 parse_breakpoint_sals (location, canonical);
14231}
14232
14233/* Call create_breakpoints_sal for the given arguments. This is the default
14234 function for the `create_breakpoints_sal' method of
14235 breakpoint_ops. */
14236
14237static void
14238create_breakpoints_sal_default (struct gdbarch *gdbarch,
14239 struct linespec_result *canonical,
14240 gdb::unique_xmalloc_ptr<char> cond_string,
14241 gdb::unique_xmalloc_ptr<char> extra_string,
14242 enum bptype type_wanted,
14243 enum bpdisp disposition,
14244 int thread,
14245 int task, int ignore_count,
14246 const struct breakpoint_ops *ops,
14247 int from_tty, int enabled,
14248 int internal, unsigned flags)
14249{
14250 create_breakpoints_sal (gdbarch, canonical,
14251 std::move (cond_string),
14252 std::move (extra_string),
14253 type_wanted, disposition,
14254 thread, task, ignore_count, ops, from_tty,
14255 enabled, internal, flags);
14256}
14257
14258/* Decode the line represented by S by calling decode_line_full. This is the
14259 default function for the `decode_location' method of breakpoint_ops. */
14260
14261static std::vector<symtab_and_line>
14262decode_location_default (struct breakpoint *b,
14263 const struct event_location *location,
14264 struct program_space *search_pspace)
14265{
14266 struct linespec_result canonical;
14267
14268 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
14269 (struct symtab *) NULL, 0,
14270 &canonical, multiple_symbols_all,
14271 b->filter);
14272
14273 /* We should get 0 or 1 resulting SALs. */
14274 gdb_assert (canonical.lsals.size () < 2);
14275
14276 if (!canonical.lsals.empty ())
14277 {
14278 const linespec_sals &lsal = canonical.lsals[0];
14279 return std::move (lsal.sals);
14280 }
14281 return {};
14282}
14283
14284/* Prepare the global context for a re-set of breakpoint B. */
14285
14286static struct cleanup *
14287prepare_re_set_context (struct breakpoint *b)
14288{
14289 input_radix = b->input_radix;
14290 set_language (b->language);
14291
14292 return make_cleanup (null_cleanup, NULL);
14293}
14294
14295/* Reset a breakpoint given it's struct breakpoint * BINT.
14296 The value we return ends up being the return value from catch_errors.
14297 Unused in this case. */
14298
14299static int
14300breakpoint_re_set_one (void *bint)
14301{
14302 /* Get past catch_errs. */
14303 struct breakpoint *b = (struct breakpoint *) bint;
14304 struct cleanup *cleanups;
14305
14306 cleanups = prepare_re_set_context (b);
14307 b->ops->re_set (b);
14308 do_cleanups (cleanups);
14309 return 0;
14310}
14311
14312/* Re-set breakpoint locations for the current program space.
14313 Locations bound to other program spaces are left untouched. */
14314
14315void
14316breakpoint_re_set (void)
14317{
14318 struct breakpoint *b, *b_tmp;
14319 enum language save_language;
14320 int save_input_radix;
14321
14322 save_language = current_language->la_language;
14323 save_input_radix = input_radix;
14324
14325 {
14326 scoped_restore_current_pspace_and_thread restore_pspace_thread;
14327
14328 /* Note: we must not try to insert locations until after all
14329 breakpoints have been re-set. Otherwise, e.g., when re-setting
14330 breakpoint 1, we'd insert the locations of breakpoint 2, which
14331 hadn't been re-set yet, and thus may have stale locations. */
14332
14333 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14334 {
14335 /* Format possible error msg. */
14336 char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14337 b->number);
14338 struct cleanup *cleanups = make_cleanup (xfree, message);
14339 catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14340 do_cleanups (cleanups);
14341 }
14342 set_language (save_language);
14343 input_radix = save_input_radix;
14344
14345 jit_breakpoint_re_set ();
14346 }
14347
14348 create_overlay_event_breakpoint ();
14349 create_longjmp_master_breakpoint ();
14350 create_std_terminate_master_breakpoint ();
14351 create_exception_master_breakpoint ();
14352
14353 /* Now we can insert. */
14354 update_global_location_list (UGLL_MAY_INSERT);
14355}
14356\f
14357/* Reset the thread number of this breakpoint:
14358
14359 - If the breakpoint is for all threads, leave it as-is.
14360 - Else, reset it to the current thread for inferior_ptid. */
14361void
14362breakpoint_re_set_thread (struct breakpoint *b)
14363{
14364 if (b->thread != -1)
14365 {
14366 if (in_thread_list (inferior_ptid))
14367 b->thread = ptid_to_global_thread_id (inferior_ptid);
14368
14369 /* We're being called after following a fork. The new fork is
14370 selected as current, and unless this was a vfork will have a
14371 different program space from the original thread. Reset that
14372 as well. */
14373 b->loc->pspace = current_program_space;
14374 }
14375}
14376
14377/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14378 If from_tty is nonzero, it prints a message to that effect,
14379 which ends with a period (no newline). */
14380
14381void
14382set_ignore_count (int bptnum, int count, int from_tty)
14383{
14384 struct breakpoint *b;
14385
14386 if (count < 0)
14387 count = 0;
14388
14389 ALL_BREAKPOINTS (b)
14390 if (b->number == bptnum)
14391 {
14392 if (is_tracepoint (b))
14393 {
14394 if (from_tty && count != 0)
14395 printf_filtered (_("Ignore count ignored for tracepoint %d."),
14396 bptnum);
14397 return;
14398 }
14399
14400 b->ignore_count = count;
14401 if (from_tty)
14402 {
14403 if (count == 0)
14404 printf_filtered (_("Will stop next time "
14405 "breakpoint %d is reached."),
14406 bptnum);
14407 else if (count == 1)
14408 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14409 bptnum);
14410 else
14411 printf_filtered (_("Will ignore next %d "
14412 "crossings of breakpoint %d."),
14413 count, bptnum);
14414 }
14415 observer_notify_breakpoint_modified (b);
14416 return;
14417 }
14418
14419 error (_("No breakpoint number %d."), bptnum);
14420}
14421
14422/* Command to set ignore-count of breakpoint N to COUNT. */
14423
14424static void
14425ignore_command (char *args, int from_tty)
14426{
14427 char *p = args;
14428 int num;
14429
14430 if (p == 0)
14431 error_no_arg (_("a breakpoint number"));
14432
14433 num = get_number (&p);
14434 if (num == 0)
14435 error (_("bad breakpoint number: '%s'"), args);
14436 if (*p == 0)
14437 error (_("Second argument (specified ignore-count) is missing."));
14438
14439 set_ignore_count (num,
14440 longest_to_int (value_as_long (parse_and_eval (p))),
14441 from_tty);
14442 if (from_tty)
14443 printf_filtered ("\n");
14444}
14445\f
14446/* Call FUNCTION on each of the breakpoints
14447 whose numbers are given in ARGS. */
14448
14449static void
14450map_breakpoint_numbers (const char *args,
14451 void (*function) (struct breakpoint *,
14452 void *),
14453 void *data)
14454{
14455 int num;
14456 struct breakpoint *b, *tmp;
14457
14458 if (args == 0 || *args == '\0')
14459 error_no_arg (_("one or more breakpoint numbers"));
14460
14461 number_or_range_parser parser (args);
14462
14463 while (!parser.finished ())
14464 {
14465 const char *p = parser.cur_tok ();
14466 bool match = false;
14467
14468 num = parser.get_number ();
14469 if (num == 0)
14470 {
14471 warning (_("bad breakpoint number at or near '%s'"), p);
14472 }
14473 else
14474 {
14475 ALL_BREAKPOINTS_SAFE (b, tmp)
14476 if (b->number == num)
14477 {
14478 match = true;
14479 function (b, data);
14480 break;
14481 }
14482 if (!match)
14483 printf_unfiltered (_("No breakpoint number %d.\n"), num);
14484 }
14485 }
14486}
14487
14488static struct bp_location *
14489find_location_by_number (const char *number)
14490{
14491 const char *p1;
14492 int bp_num;
14493 int loc_num;
14494 struct breakpoint *b;
14495 struct bp_location *loc;
14496
14497 p1 = number;
14498 bp_num = get_number_trailer (&p1, '.');
14499 if (bp_num == 0 || p1[0] != '.')
14500 error (_("Bad breakpoint number '%s'"), number);
14501
14502 ALL_BREAKPOINTS (b)
14503 if (b->number == bp_num)
14504 {
14505 break;
14506 }
14507
14508 if (!b || b->number != bp_num)
14509 error (_("Bad breakpoint number '%s'"), number);
14510
14511 /* Skip the dot. */
14512 ++p1;
14513 const char *save = p1;
14514 loc_num = get_number (&p1);
14515 if (loc_num == 0)
14516 error (_("Bad breakpoint location number '%s'"), number);
14517
14518 --loc_num;
14519 loc = b->loc;
14520 for (;loc_num && loc; --loc_num, loc = loc->next)
14521 ;
14522 if (!loc)
14523 error (_("Bad breakpoint location number '%s'"), save);
14524
14525 return loc;
14526}
14527
14528
14529/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14530 If from_tty is nonzero, it prints a message to that effect,
14531 which ends with a period (no newline). */
14532
14533void
14534disable_breakpoint (struct breakpoint *bpt)
14535{
14536 /* Never disable a watchpoint scope breakpoint; we want to
14537 hit them when we leave scope so we can delete both the
14538 watchpoint and its scope breakpoint at that time. */
14539 if (bpt->type == bp_watchpoint_scope)
14540 return;
14541
14542 bpt->enable_state = bp_disabled;
14543
14544 /* Mark breakpoint locations modified. */
14545 mark_breakpoint_modified (bpt);
14546
14547 if (target_supports_enable_disable_tracepoint ()
14548 && current_trace_status ()->running && is_tracepoint (bpt))
14549 {
14550 struct bp_location *location;
14551
14552 for (location = bpt->loc; location; location = location->next)
14553 target_disable_tracepoint (location);
14554 }
14555
14556 update_global_location_list (UGLL_DONT_INSERT);
14557
14558 observer_notify_breakpoint_modified (bpt);
14559}
14560
14561/* A callback for iterate_over_related_breakpoints. */
14562
14563static void
14564do_disable_breakpoint (struct breakpoint *b, void *ignore)
14565{
14566 disable_breakpoint (b);
14567}
14568
14569/* A callback for map_breakpoint_numbers that calls
14570 disable_breakpoint. */
14571
14572static void
14573do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14574{
14575 iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14576}
14577
14578static void
14579disable_command (char *args, int from_tty)
14580{
14581 if (args == 0)
14582 {
14583 struct breakpoint *bpt;
14584
14585 ALL_BREAKPOINTS (bpt)
14586 if (user_breakpoint_p (bpt))
14587 disable_breakpoint (bpt);
14588 }
14589 else
14590 {
14591 std::string num = extract_arg (&args);
14592
14593 while (!num.empty ())
14594 {
14595 if (num.find ('.') != std::string::npos)
14596 {
14597 struct bp_location *loc = find_location_by_number (num.c_str ());
14598
14599 if (loc)
14600 {
14601 if (loc->enabled)
14602 {
14603 loc->enabled = 0;
14604 mark_breakpoint_location_modified (loc);
14605 }
14606 if (target_supports_enable_disable_tracepoint ()
14607 && current_trace_status ()->running && loc->owner
14608 && is_tracepoint (loc->owner))
14609 target_disable_tracepoint (loc);
14610 }
14611 update_global_location_list (UGLL_DONT_INSERT);
14612 }
14613 else
14614 map_breakpoint_numbers (num.c_str (), do_map_disable_breakpoint,
14615 NULL);
14616 num = extract_arg (&args);
14617 }
14618 }
14619}
14620
14621static void
14622enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14623 int count)
14624{
14625 int target_resources_ok;
14626
14627 if (bpt->type == bp_hardware_breakpoint)
14628 {
14629 int i;
14630 i = hw_breakpoint_used_count ();
14631 target_resources_ok =
14632 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
14633 i + 1, 0);
14634 if (target_resources_ok == 0)
14635 error (_("No hardware breakpoint support in the target."));
14636 else if (target_resources_ok < 0)
14637 error (_("Hardware breakpoints used exceeds limit."));
14638 }
14639
14640 if (is_watchpoint (bpt))
14641 {
14642 /* Initialize it just to avoid a GCC false warning. */
14643 enum enable_state orig_enable_state = bp_disabled;
14644
14645 TRY
14646 {
14647 struct watchpoint *w = (struct watchpoint *) bpt;
14648
14649 orig_enable_state = bpt->enable_state;
14650 bpt->enable_state = bp_enabled;
14651 update_watchpoint (w, 1 /* reparse */);
14652 }
14653 CATCH (e, RETURN_MASK_ALL)
14654 {
14655 bpt->enable_state = orig_enable_state;
14656 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14657 bpt->number);
14658 return;
14659 }
14660 END_CATCH
14661 }
14662
14663 bpt->enable_state = bp_enabled;
14664
14665 /* Mark breakpoint locations modified. */
14666 mark_breakpoint_modified (bpt);
14667
14668 if (target_supports_enable_disable_tracepoint ()
14669 && current_trace_status ()->running && is_tracepoint (bpt))
14670 {
14671 struct bp_location *location;
14672
14673 for (location = bpt->loc; location; location = location->next)
14674 target_enable_tracepoint (location);
14675 }
14676
14677 bpt->disposition = disposition;
14678 bpt->enable_count = count;
14679 update_global_location_list (UGLL_MAY_INSERT);
14680
14681 observer_notify_breakpoint_modified (bpt);
14682}
14683
14684
14685void
14686enable_breakpoint (struct breakpoint *bpt)
14687{
14688 enable_breakpoint_disp (bpt, bpt->disposition, 0);
14689}
14690
14691static void
14692do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14693{
14694 enable_breakpoint (bpt);
14695}
14696
14697/* A callback for map_breakpoint_numbers that calls
14698 enable_breakpoint. */
14699
14700static void
14701do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14702{
14703 iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14704}
14705
14706/* The enable command enables the specified breakpoints (or all defined
14707 breakpoints) so they once again become (or continue to be) effective
14708 in stopping the inferior. */
14709
14710static void
14711enable_command (char *args, int from_tty)
14712{
14713 if (args == 0)
14714 {
14715 struct breakpoint *bpt;
14716
14717 ALL_BREAKPOINTS (bpt)
14718 if (user_breakpoint_p (bpt))
14719 enable_breakpoint (bpt);
14720 }
14721 else
14722 {
14723 std::string num = extract_arg (&args);
14724
14725 while (!num.empty ())
14726 {
14727 if (num.find ('.') != std::string::npos)
14728 {
14729 struct bp_location *loc = find_location_by_number (num.c_str ());
14730
14731 if (loc)
14732 {
14733 if (!loc->enabled)
14734 {
14735 loc->enabled = 1;
14736 mark_breakpoint_location_modified (loc);
14737 }
14738 if (target_supports_enable_disable_tracepoint ()
14739 && current_trace_status ()->running && loc->owner
14740 && is_tracepoint (loc->owner))
14741 target_enable_tracepoint (loc);
14742 }
14743 update_global_location_list (UGLL_MAY_INSERT);
14744 }
14745 else
14746 map_breakpoint_numbers (num.c_str (), do_map_enable_breakpoint,
14747 NULL);
14748 num = extract_arg (&args);
14749 }
14750 }
14751}
14752
14753/* This struct packages up disposition data for application to multiple
14754 breakpoints. */
14755
14756struct disp_data
14757{
14758 enum bpdisp disp;
14759 int count;
14760};
14761
14762static void
14763do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14764{
14765 struct disp_data disp_data = *(struct disp_data *) arg;
14766
14767 enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14768}
14769
14770static void
14771do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14772{
14773 struct disp_data disp = { disp_disable, 1 };
14774
14775 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14776}
14777
14778static void
14779enable_once_command (char *args, int from_tty)
14780{
14781 map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14782}
14783
14784static void
14785do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14786{
14787 struct disp_data disp = { disp_disable, *(int *) countptr };
14788
14789 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14790}
14791
14792static void
14793enable_count_command (char *args, int from_tty)
14794{
14795 int count;
14796
14797 if (args == NULL)
14798 error_no_arg (_("hit count"));
14799
14800 count = get_number (&args);
14801
14802 map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14803}
14804
14805static void
14806do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14807{
14808 struct disp_data disp = { disp_del, 1 };
14809
14810 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14811}
14812
14813static void
14814enable_delete_command (char *args, int from_tty)
14815{
14816 map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14817}
14818\f
14819static void
14820set_breakpoint_cmd (char *args, int from_tty)
14821{
14822}
14823
14824static void
14825show_breakpoint_cmd (char *args, int from_tty)
14826{
14827}
14828
14829/* Invalidate last known value of any hardware watchpoint if
14830 the memory which that value represents has been written to by
14831 GDB itself. */
14832
14833static void
14834invalidate_bp_value_on_memory_change (struct inferior *inferior,
14835 CORE_ADDR addr, ssize_t len,
14836 const bfd_byte *data)
14837{
14838 struct breakpoint *bp;
14839
14840 ALL_BREAKPOINTS (bp)
14841 if (bp->enable_state == bp_enabled
14842 && bp->type == bp_hardware_watchpoint)
14843 {
14844 struct watchpoint *wp = (struct watchpoint *) bp;
14845
14846 if (wp->val_valid && wp->val)
14847 {
14848 struct bp_location *loc;
14849
14850 for (loc = bp->loc; loc != NULL; loc = loc->next)
14851 if (loc->loc_type == bp_loc_hardware_watchpoint
14852 && loc->address + loc->length > addr
14853 && addr + len > loc->address)
14854 {
14855 value_free (wp->val);
14856 wp->val = NULL;
14857 wp->val_valid = 0;
14858 }
14859 }
14860 }
14861}
14862
14863/* Create and insert a breakpoint for software single step. */
14864
14865void
14866insert_single_step_breakpoint (struct gdbarch *gdbarch,
14867 struct address_space *aspace,
14868 CORE_ADDR next_pc)
14869{
14870 struct thread_info *tp = inferior_thread ();
14871 struct symtab_and_line sal;
14872 CORE_ADDR pc = next_pc;
14873
14874 if (tp->control.single_step_breakpoints == NULL)
14875 {
14876 tp->control.single_step_breakpoints
14877 = new_single_step_breakpoint (tp->global_num, gdbarch);
14878 }
14879
14880 sal = find_pc_line (pc, 0);
14881 sal.pc = pc;
14882 sal.section = find_pc_overlay (pc);
14883 sal.explicit_pc = 1;
14884 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14885
14886 update_global_location_list (UGLL_INSERT);
14887}
14888
14889/* Insert single step breakpoints according to the current state. */
14890
14891int
14892insert_single_step_breakpoints (struct gdbarch *gdbarch)
14893{
14894 struct regcache *regcache = get_current_regcache ();
14895 std::vector<CORE_ADDR> next_pcs;
14896
14897 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14898
14899 if (!next_pcs.empty ())
14900 {
14901 struct frame_info *frame = get_current_frame ();
14902 struct address_space *aspace = get_frame_address_space (frame);
14903
14904 for (CORE_ADDR pc : next_pcs)
14905 insert_single_step_breakpoint (gdbarch, aspace, pc);
14906
14907 return 1;
14908 }
14909 else
14910 return 0;
14911}
14912
14913/* See breakpoint.h. */
14914
14915int
14916breakpoint_has_location_inserted_here (struct breakpoint *bp,
14917 struct address_space *aspace,
14918 CORE_ADDR pc)
14919{
14920 struct bp_location *loc;
14921
14922 for (loc = bp->loc; loc != NULL; loc = loc->next)
14923 if (loc->inserted
14924 && breakpoint_location_address_match (loc, aspace, pc))
14925 return 1;
14926
14927 return 0;
14928}
14929
14930/* Check whether a software single-step breakpoint is inserted at
14931 PC. */
14932
14933int
14934single_step_breakpoint_inserted_here_p (struct address_space *aspace,
14935 CORE_ADDR pc)
14936{
14937 struct breakpoint *bpt;
14938
14939 ALL_BREAKPOINTS (bpt)
14940 {
14941 if (bpt->type == bp_single_step
14942 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14943 return 1;
14944 }
14945 return 0;
14946}
14947
14948/* Tracepoint-specific operations. */
14949
14950/* Set tracepoint count to NUM. */
14951static void
14952set_tracepoint_count (int num)
14953{
14954 tracepoint_count = num;
14955 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14956}
14957
14958static void
14959trace_command (char *arg, int from_tty)
14960{
14961 struct breakpoint_ops *ops;
14962
14963 event_location_up location = string_to_event_location (&arg,
14964 current_language);
14965 if (location != NULL
14966 && event_location_type (location.get ()) == PROBE_LOCATION)
14967 ops = &tracepoint_probe_breakpoint_ops;
14968 else
14969 ops = &tracepoint_breakpoint_ops;
14970
14971 create_breakpoint (get_current_arch (),
14972 location.get (),
14973 NULL, 0, arg, 1 /* parse arg */,
14974 0 /* tempflag */,
14975 bp_tracepoint /* type_wanted */,
14976 0 /* Ignore count */,
14977 pending_break_support,
14978 ops,
14979 from_tty,
14980 1 /* enabled */,
14981 0 /* internal */, 0);
14982}
14983
14984static void
14985ftrace_command (char *arg, int from_tty)
14986{
14987 event_location_up location = string_to_event_location (&arg,
14988 current_language);
14989 create_breakpoint (get_current_arch (),
14990 location.get (),
14991 NULL, 0, arg, 1 /* parse arg */,
14992 0 /* tempflag */,
14993 bp_fast_tracepoint /* type_wanted */,
14994 0 /* Ignore count */,
14995 pending_break_support,
14996 &tracepoint_breakpoint_ops,
14997 from_tty,
14998 1 /* enabled */,
14999 0 /* internal */, 0);
15000}
15001
15002/* strace command implementation. Creates a static tracepoint. */
15003
15004static void
15005strace_command (char *arg, int from_tty)
15006{
15007 struct breakpoint_ops *ops;
15008 event_location_up location;
15009 struct cleanup *back_to;
15010
15011 /* Decide if we are dealing with a static tracepoint marker (`-m'),
15012 or with a normal static tracepoint. */
15013 if (arg && startswith (arg, "-m") && isspace (arg[2]))
15014 {
15015 ops = &strace_marker_breakpoint_ops;
15016 location = new_linespec_location (&arg);
15017 }
15018 else
15019 {
15020 ops = &tracepoint_breakpoint_ops;
15021 location = string_to_event_location (&arg, current_language);
15022 }
15023
15024 create_breakpoint (get_current_arch (),
15025 location.get (),
15026 NULL, 0, arg, 1 /* parse arg */,
15027 0 /* tempflag */,
15028 bp_static_tracepoint /* type_wanted */,
15029 0 /* Ignore count */,
15030 pending_break_support,
15031 ops,
15032 from_tty,
15033 1 /* enabled */,
15034 0 /* internal */, 0);
15035}
15036
15037/* Set up a fake reader function that gets command lines from a linked
15038 list that was acquired during tracepoint uploading. */
15039
15040static struct uploaded_tp *this_utp;
15041static int next_cmd;
15042
15043static char *
15044read_uploaded_action (void)
15045{
15046 char *rslt;
15047
15048 VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15049
15050 next_cmd++;
15051
15052 return rslt;
15053}
15054
15055/* Given information about a tracepoint as recorded on a target (which
15056 can be either a live system or a trace file), attempt to create an
15057 equivalent GDB tracepoint. This is not a reliable process, since
15058 the target does not necessarily have all the information used when
15059 the tracepoint was originally defined. */
15060
15061struct tracepoint *
15062create_tracepoint_from_upload (struct uploaded_tp *utp)
15063{
15064 char *addr_str, small_buf[100];
15065 struct tracepoint *tp;
15066
15067 if (utp->at_string)
15068 addr_str = utp->at_string;
15069 else
15070 {
15071 /* In the absence of a source location, fall back to raw
15072 address. Since there is no way to confirm that the address
15073 means the same thing as when the trace was started, warn the
15074 user. */
15075 warning (_("Uploaded tracepoint %d has no "
15076 "source location, using raw address"),
15077 utp->number);
15078 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15079 addr_str = small_buf;
15080 }
15081
15082 /* There's not much we can do with a sequence of bytecodes. */
15083 if (utp->cond && !utp->cond_string)
15084 warning (_("Uploaded tracepoint %d condition "
15085 "has no source form, ignoring it"),
15086 utp->number);
15087
15088 event_location_up location = string_to_event_location (&addr_str,
15089 current_language);
15090 if (!create_breakpoint (get_current_arch (),
15091 location.get (),
15092 utp->cond_string, -1, addr_str,
15093 0 /* parse cond/thread */,
15094 0 /* tempflag */,
15095 utp->type /* type_wanted */,
15096 0 /* Ignore count */,
15097 pending_break_support,
15098 &tracepoint_breakpoint_ops,
15099 0 /* from_tty */,
15100 utp->enabled /* enabled */,
15101 0 /* internal */,
15102 CREATE_BREAKPOINT_FLAGS_INSERTED))
15103 return NULL;
15104
15105 /* Get the tracepoint we just created. */
15106 tp = get_tracepoint (tracepoint_count);
15107 gdb_assert (tp != NULL);
15108
15109 if (utp->pass > 0)
15110 {
15111 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15112 tp->number);
15113
15114 trace_pass_command (small_buf, 0);
15115 }
15116
15117 /* If we have uploaded versions of the original commands, set up a
15118 special-purpose "reader" function and call the usual command line
15119 reader, then pass the result to the breakpoint command-setting
15120 function. */
15121 if (!VEC_empty (char_ptr, utp->cmd_strings))
15122 {
15123 command_line_up cmd_list;
15124
15125 this_utp = utp;
15126 next_cmd = 0;
15127
15128 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15129
15130 breakpoint_set_commands (tp, std::move (cmd_list));
15131 }
15132 else if (!VEC_empty (char_ptr, utp->actions)
15133 || !VEC_empty (char_ptr, utp->step_actions))
15134 warning (_("Uploaded tracepoint %d actions "
15135 "have no source form, ignoring them"),
15136 utp->number);
15137
15138 /* Copy any status information that might be available. */
15139 tp->hit_count = utp->hit_count;
15140 tp->traceframe_usage = utp->traceframe_usage;
15141
15142 return tp;
15143}
15144
15145/* Print information on tracepoint number TPNUM_EXP, or all if
15146 omitted. */
15147
15148static void
15149info_tracepoints_command (char *args, int from_tty)
15150{
15151 struct ui_out *uiout = current_uiout;
15152 int num_printed;
15153
15154 num_printed = breakpoint_1 (args, 0, is_tracepoint);
15155
15156 if (num_printed == 0)
15157 {
15158 if (args == NULL || *args == '\0')
15159 uiout->message ("No tracepoints.\n");
15160 else
15161 uiout->message ("No tracepoint matching '%s'.\n", args);
15162 }
15163
15164 default_collect_info ();
15165}
15166
15167/* The 'enable trace' command enables tracepoints.
15168 Not supported by all targets. */
15169static void
15170enable_trace_command (char *args, int from_tty)
15171{
15172 enable_command (args, from_tty);
15173}
15174
15175/* The 'disable trace' command disables tracepoints.
15176 Not supported by all targets. */
15177static void
15178disable_trace_command (char *args, int from_tty)
15179{
15180 disable_command (args, from_tty);
15181}
15182
15183/* Remove a tracepoint (or all if no argument). */
15184static void
15185delete_trace_command (char *arg, int from_tty)
15186{
15187 struct breakpoint *b, *b_tmp;
15188
15189 dont_repeat ();
15190
15191 if (arg == 0)
15192 {
15193 int breaks_to_delete = 0;
15194
15195 /* Delete all breakpoints if no argument.
15196 Do not delete internal or call-dummy breakpoints, these
15197 have to be deleted with an explicit breakpoint number
15198 argument. */
15199 ALL_TRACEPOINTS (b)
15200 if (is_tracepoint (b) && user_breakpoint_p (b))
15201 {
15202 breaks_to_delete = 1;
15203 break;
15204 }
15205
15206 /* Ask user only if there are some breakpoints to delete. */
15207 if (!from_tty
15208 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15209 {
15210 ALL_BREAKPOINTS_SAFE (b, b_tmp)
15211 if (is_tracepoint (b) && user_breakpoint_p (b))
15212 delete_breakpoint (b);
15213 }
15214 }
15215 else
15216 map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15217}
15218
15219/* Helper function for trace_pass_command. */
15220
15221static void
15222trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15223{
15224 tp->pass_count = count;
15225 observer_notify_breakpoint_modified (tp);
15226 if (from_tty)
15227 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15228 tp->number, count);
15229}
15230
15231/* Set passcount for tracepoint.
15232
15233 First command argument is passcount, second is tracepoint number.
15234 If tracepoint number omitted, apply to most recently defined.
15235 Also accepts special argument "all". */
15236
15237static void
15238trace_pass_command (char *args, int from_tty)
15239{
15240 struct tracepoint *t1;
15241 unsigned int count;
15242
15243 if (args == 0 || *args == 0)
15244 error (_("passcount command requires an "
15245 "argument (count + optional TP num)"));
15246
15247 count = strtoul (args, &args, 10); /* Count comes first, then TP num. */
15248
15249 args = skip_spaces (args);
15250 if (*args && strncasecmp (args, "all", 3) == 0)
15251 {
15252 struct breakpoint *b;
15253
15254 args += 3; /* Skip special argument "all". */
15255 if (*args)
15256 error (_("Junk at end of arguments."));
15257
15258 ALL_TRACEPOINTS (b)
15259 {
15260 t1 = (struct tracepoint *) b;
15261 trace_pass_set_count (t1, count, from_tty);
15262 }
15263 }
15264 else if (*args == '\0')
15265 {
15266 t1 = get_tracepoint_by_number (&args, NULL);
15267 if (t1)
15268 trace_pass_set_count (t1, count, from_tty);
15269 }
15270 else
15271 {
15272 number_or_range_parser parser (args);
15273 while (!parser.finished ())
15274 {
15275 t1 = get_tracepoint_by_number (&args, &parser);
15276 if (t1)
15277 trace_pass_set_count (t1, count, from_tty);
15278 }
15279 }
15280}
15281
15282struct tracepoint *
15283get_tracepoint (int num)
15284{
15285 struct breakpoint *t;
15286
15287 ALL_TRACEPOINTS (t)
15288 if (t->number == num)
15289 return (struct tracepoint *) t;
15290
15291 return NULL;
15292}
15293
15294/* Find the tracepoint with the given target-side number (which may be
15295 different from the tracepoint number after disconnecting and
15296 reconnecting). */
15297
15298struct tracepoint *
15299get_tracepoint_by_number_on_target (int num)
15300{
15301 struct breakpoint *b;
15302
15303 ALL_TRACEPOINTS (b)
15304 {
15305 struct tracepoint *t = (struct tracepoint *) b;
15306
15307 if (t->number_on_target == num)
15308 return t;
15309 }
15310
15311 return NULL;
15312}
15313
15314/* Utility: parse a tracepoint number and look it up in the list.
15315 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15316 If the argument is missing, the most recent tracepoint
15317 (tracepoint_count) is returned. */
15318
15319struct tracepoint *
15320get_tracepoint_by_number (char **arg,
15321 number_or_range_parser *parser)
15322{
15323 struct breakpoint *t;
15324 int tpnum;
15325 char *instring = arg == NULL ? NULL : *arg;
15326
15327 if (parser != NULL)
15328 {
15329 gdb_assert (!parser->finished ());
15330 tpnum = parser->get_number ();
15331 }
15332 else if (arg == NULL || *arg == NULL || ! **arg)
15333 tpnum = tracepoint_count;
15334 else
15335 tpnum = get_number (arg);
15336
15337 if (tpnum <= 0)
15338 {
15339 if (instring && *instring)
15340 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
15341 instring);
15342 else
15343 printf_filtered (_("No previous tracepoint\n"));
15344 return NULL;
15345 }
15346
15347 ALL_TRACEPOINTS (t)
15348 if (t->number == tpnum)
15349 {
15350 return (struct tracepoint *) t;
15351 }
15352
15353 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15354 return NULL;
15355}
15356
15357void
15358print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15359{
15360 if (b->thread != -1)
15361 fprintf_unfiltered (fp, " thread %d", b->thread);
15362
15363 if (b->task != 0)
15364 fprintf_unfiltered (fp, " task %d", b->task);
15365
15366 fprintf_unfiltered (fp, "\n");
15367}
15368
15369/* Save information on user settable breakpoints (watchpoints, etc) to
15370 a new script file named FILENAME. If FILTER is non-NULL, call it
15371 on each breakpoint and only include the ones for which it returns
15372 non-zero. */
15373
15374static void
15375save_breakpoints (char *filename, int from_tty,
15376 int (*filter) (const struct breakpoint *))
15377{
15378 struct breakpoint *tp;
15379 int any = 0;
15380 int extra_trace_bits = 0;
15381
15382 if (filename == 0 || *filename == 0)
15383 error (_("Argument required (file name in which to save)"));
15384
15385 /* See if we have anything to save. */
15386 ALL_BREAKPOINTS (tp)
15387 {
15388 /* Skip internal and momentary breakpoints. */
15389 if (!user_breakpoint_p (tp))
15390 continue;
15391
15392 /* If we have a filter, only save the breakpoints it accepts. */
15393 if (filter && !filter (tp))
15394 continue;
15395
15396 any = 1;
15397
15398 if (is_tracepoint (tp))
15399 {
15400 extra_trace_bits = 1;
15401
15402 /* We can stop searching. */
15403 break;
15404 }
15405 }
15406
15407 if (!any)
15408 {
15409 warning (_("Nothing to save."));
15410 return;
15411 }
15412
15413 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
15414
15415 stdio_file fp;
15416
15417 if (!fp.open (expanded_filename.get (), "w"))
15418 error (_("Unable to open file '%s' for saving (%s)"),
15419 expanded_filename.get (), safe_strerror (errno));
15420
15421 if (extra_trace_bits)
15422 save_trace_state_variables (&fp);
15423
15424 ALL_BREAKPOINTS (tp)
15425 {
15426 /* Skip internal and momentary breakpoints. */
15427 if (!user_breakpoint_p (tp))
15428 continue;
15429
15430 /* If we have a filter, only save the breakpoints it accepts. */
15431 if (filter && !filter (tp))
15432 continue;
15433
15434 tp->ops->print_recreate (tp, &fp);
15435
15436 /* Note, we can't rely on tp->number for anything, as we can't
15437 assume the recreated breakpoint numbers will match. Use $bpnum
15438 instead. */
15439
15440 if (tp->cond_string)
15441 fp.printf (" condition $bpnum %s\n", tp->cond_string);
15442
15443 if (tp->ignore_count)
15444 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
15445
15446 if (tp->type != bp_dprintf && tp->commands)
15447 {
15448 fp.puts (" commands\n");
15449
15450 current_uiout->redirect (&fp);
15451 TRY
15452 {
15453 print_command_lines (current_uiout, tp->commands->commands, 2);
15454 }
15455 CATCH (ex, RETURN_MASK_ALL)
15456 {
15457 current_uiout->redirect (NULL);
15458 throw_exception (ex);
15459 }
15460 END_CATCH
15461
15462 current_uiout->redirect (NULL);
15463 fp.puts (" end\n");
15464 }
15465
15466 if (tp->enable_state == bp_disabled)
15467 fp.puts ("disable $bpnum\n");
15468
15469 /* If this is a multi-location breakpoint, check if the locations
15470 should be individually disabled. Watchpoint locations are
15471 special, and not user visible. */
15472 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15473 {
15474 struct bp_location *loc;
15475 int n = 1;
15476
15477 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15478 if (!loc->enabled)
15479 fp.printf ("disable $bpnum.%d\n", n);
15480 }
15481 }
15482
15483 if (extra_trace_bits && *default_collect)
15484 fp.printf ("set default-collect %s\n", default_collect);
15485
15486 if (from_tty)
15487 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15488}
15489
15490/* The `save breakpoints' command. */
15491
15492static void
15493save_breakpoints_command (char *args, int from_tty)
15494{
15495 save_breakpoints (args, from_tty, NULL);
15496}
15497
15498/* The `save tracepoints' command. */
15499
15500static void
15501save_tracepoints_command (char *args, int from_tty)
15502{
15503 save_breakpoints (args, from_tty, is_tracepoint);
15504}
15505
15506/* Create a vector of all tracepoints. */
15507
15508VEC(breakpoint_p) *
15509all_tracepoints (void)
15510{
15511 VEC(breakpoint_p) *tp_vec = 0;
15512 struct breakpoint *tp;
15513
15514 ALL_TRACEPOINTS (tp)
15515 {
15516 VEC_safe_push (breakpoint_p, tp_vec, tp);
15517 }
15518
15519 return tp_vec;
15520}
15521
15522\f
15523/* This help string is used to consolidate all the help string for specifying
15524 locations used by several commands. */
15525
15526#define LOCATION_HELP_STRING \
15527"Linespecs are colon-separated lists of location parameters, such as\n\
15528source filename, function name, label name, and line number.\n\
15529Example: To specify the start of a label named \"the_top\" in the\n\
15530function \"fact\" in the file \"factorial.c\", use\n\
15531\"factorial.c:fact:the_top\".\n\
15532\n\
15533Address locations begin with \"*\" and specify an exact address in the\n\
15534program. Example: To specify the fourth byte past the start function\n\
15535\"main\", use \"*main + 4\".\n\
15536\n\
15537Explicit locations are similar to linespecs but use an option/argument\n\
15538syntax to specify location parameters.\n\
15539Example: To specify the start of the label named \"the_top\" in the\n\
15540function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15541-function fact -label the_top\".\n"
15542
15543/* This help string is used for the break, hbreak, tbreak and thbreak
15544 commands. It is defined as a macro to prevent duplication.
15545 COMMAND should be a string constant containing the name of the
15546 command. */
15547
15548#define BREAK_ARGS_HELP(command) \
15549command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15550PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15551probe point. Accepted values are `-probe' (for a generic, automatically\n\
15552guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15553`-probe-dtrace' (for a DTrace probe).\n\
15554LOCATION may be a linespec, address, or explicit location as described\n\
15555below.\n\
15556\n\
15557With no LOCATION, uses current execution address of the selected\n\
15558stack frame. This is useful for breaking on return to a stack frame.\n\
15559\n\
15560THREADNUM is the number from \"info threads\".\n\
15561CONDITION is a boolean expression.\n\
15562\n" LOCATION_HELP_STRING "\n\
15563Multiple breakpoints at one place are permitted, and useful if their\n\
15564conditions are different.\n\
15565\n\
15566Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15567
15568/* List of subcommands for "catch". */
15569static struct cmd_list_element *catch_cmdlist;
15570
15571/* List of subcommands for "tcatch". */
15572static struct cmd_list_element *tcatch_cmdlist;
15573
15574void
15575add_catch_command (const char *name, const char *docstring,
15576 cmd_sfunc_ftype *sfunc,
15577 completer_ftype *completer,
15578 void *user_data_catch,
15579 void *user_data_tcatch)
15580{
15581 struct cmd_list_element *command;
15582
15583 command = add_cmd (name, class_breakpoint, NULL, docstring,
15584 &catch_cmdlist);
15585 set_cmd_sfunc (command, sfunc);
15586 set_cmd_context (command, user_data_catch);
15587 set_cmd_completer (command, completer);
15588
15589 command = add_cmd (name, class_breakpoint, NULL, docstring,
15590 &tcatch_cmdlist);
15591 set_cmd_sfunc (command, sfunc);
15592 set_cmd_context (command, user_data_tcatch);
15593 set_cmd_completer (command, completer);
15594}
15595
15596static void
15597save_command (char *arg, int from_tty)
15598{
15599 printf_unfiltered (_("\"save\" must be followed by "
15600 "the name of a save subcommand.\n"));
15601 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15602}
15603
15604struct breakpoint *
15605iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15606 void *data)
15607{
15608 struct breakpoint *b, *b_tmp;
15609
15610 ALL_BREAKPOINTS_SAFE (b, b_tmp)
15611 {
15612 if ((*callback) (b, data))
15613 return b;
15614 }
15615
15616 return NULL;
15617}
15618
15619/* Zero if any of the breakpoint's locations could be a location where
15620 functions have been inlined, nonzero otherwise. */
15621
15622static int
15623is_non_inline_function (struct breakpoint *b)
15624{
15625 /* The shared library event breakpoint is set on the address of a
15626 non-inline function. */
15627 if (b->type == bp_shlib_event)
15628 return 1;
15629
15630 return 0;
15631}
15632
15633/* Nonzero if the specified PC cannot be a location where functions
15634 have been inlined. */
15635
15636int
15637pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15638 const struct target_waitstatus *ws)
15639{
15640 struct breakpoint *b;
15641 struct bp_location *bl;
15642
15643 ALL_BREAKPOINTS (b)
15644 {
15645 if (!is_non_inline_function (b))
15646 continue;
15647
15648 for (bl = b->loc; bl != NULL; bl = bl->next)
15649 {
15650 if (!bl->shlib_disabled
15651 && bpstat_check_location (bl, aspace, pc, ws))
15652 return 1;
15653 }
15654 }
15655
15656 return 0;
15657}
15658
15659/* Remove any references to OBJFILE which is going to be freed. */
15660
15661void
15662breakpoint_free_objfile (struct objfile *objfile)
15663{
15664 struct bp_location **locp, *loc;
15665
15666 ALL_BP_LOCATIONS (loc, locp)
15667 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15668 loc->symtab = NULL;
15669}
15670
15671void
15672initialize_breakpoint_ops (void)
15673{
15674 static int initialized = 0;
15675
15676 struct breakpoint_ops *ops;
15677
15678 if (initialized)
15679 return;
15680 initialized = 1;
15681
15682 /* The breakpoint_ops structure to be inherit by all kinds of
15683 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15684 internal and momentary breakpoints, etc.). */
15685 ops = &bkpt_base_breakpoint_ops;
15686 *ops = base_breakpoint_ops;
15687 ops->re_set = bkpt_re_set;
15688 ops->insert_location = bkpt_insert_location;
15689 ops->remove_location = bkpt_remove_location;
15690 ops->breakpoint_hit = bkpt_breakpoint_hit;
15691 ops->create_sals_from_location = bkpt_create_sals_from_location;
15692 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15693 ops->decode_location = bkpt_decode_location;
15694
15695 /* The breakpoint_ops structure to be used in regular breakpoints. */
15696 ops = &bkpt_breakpoint_ops;
15697 *ops = bkpt_base_breakpoint_ops;
15698 ops->re_set = bkpt_re_set;
15699 ops->resources_needed = bkpt_resources_needed;
15700 ops->print_it = bkpt_print_it;
15701 ops->print_mention = bkpt_print_mention;
15702 ops->print_recreate = bkpt_print_recreate;
15703
15704 /* Ranged breakpoints. */
15705 ops = &ranged_breakpoint_ops;
15706 *ops = bkpt_breakpoint_ops;
15707 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15708 ops->resources_needed = resources_needed_ranged_breakpoint;
15709 ops->print_it = print_it_ranged_breakpoint;
15710 ops->print_one = print_one_ranged_breakpoint;
15711 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15712 ops->print_mention = print_mention_ranged_breakpoint;
15713 ops->print_recreate = print_recreate_ranged_breakpoint;
15714
15715 /* Internal breakpoints. */
15716 ops = &internal_breakpoint_ops;
15717 *ops = bkpt_base_breakpoint_ops;
15718 ops->re_set = internal_bkpt_re_set;
15719 ops->check_status = internal_bkpt_check_status;
15720 ops->print_it = internal_bkpt_print_it;
15721 ops->print_mention = internal_bkpt_print_mention;
15722
15723 /* Momentary breakpoints. */
15724 ops = &momentary_breakpoint_ops;
15725 *ops = bkpt_base_breakpoint_ops;
15726 ops->re_set = momentary_bkpt_re_set;
15727 ops->check_status = momentary_bkpt_check_status;
15728 ops->print_it = momentary_bkpt_print_it;
15729 ops->print_mention = momentary_bkpt_print_mention;
15730
15731 /* Probe breakpoints. */
15732 ops = &bkpt_probe_breakpoint_ops;
15733 *ops = bkpt_breakpoint_ops;
15734 ops->insert_location = bkpt_probe_insert_location;
15735 ops->remove_location = bkpt_probe_remove_location;
15736 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15737 ops->decode_location = bkpt_probe_decode_location;
15738
15739 /* Watchpoints. */
15740 ops = &watchpoint_breakpoint_ops;
15741 *ops = base_breakpoint_ops;
15742 ops->re_set = re_set_watchpoint;
15743 ops->insert_location = insert_watchpoint;
15744 ops->remove_location = remove_watchpoint;
15745 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15746 ops->check_status = check_status_watchpoint;
15747 ops->resources_needed = resources_needed_watchpoint;
15748 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15749 ops->print_it = print_it_watchpoint;
15750 ops->print_mention = print_mention_watchpoint;
15751 ops->print_recreate = print_recreate_watchpoint;
15752 ops->explains_signal = explains_signal_watchpoint;
15753
15754 /* Masked watchpoints. */
15755 ops = &masked_watchpoint_breakpoint_ops;
15756 *ops = watchpoint_breakpoint_ops;
15757 ops->insert_location = insert_masked_watchpoint;
15758 ops->remove_location = remove_masked_watchpoint;
15759 ops->resources_needed = resources_needed_masked_watchpoint;
15760 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15761 ops->print_it = print_it_masked_watchpoint;
15762 ops->print_one_detail = print_one_detail_masked_watchpoint;
15763 ops->print_mention = print_mention_masked_watchpoint;
15764 ops->print_recreate = print_recreate_masked_watchpoint;
15765
15766 /* Tracepoints. */
15767 ops = &tracepoint_breakpoint_ops;
15768 *ops = base_breakpoint_ops;
15769 ops->re_set = tracepoint_re_set;
15770 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15771 ops->print_one_detail = tracepoint_print_one_detail;
15772 ops->print_mention = tracepoint_print_mention;
15773 ops->print_recreate = tracepoint_print_recreate;
15774 ops->create_sals_from_location = tracepoint_create_sals_from_location;
15775 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15776 ops->decode_location = tracepoint_decode_location;
15777
15778 /* Probe tracepoints. */
15779 ops = &tracepoint_probe_breakpoint_ops;
15780 *ops = tracepoint_breakpoint_ops;
15781 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15782 ops->decode_location = tracepoint_probe_decode_location;
15783
15784 /* Static tracepoints with marker (`-m'). */
15785 ops = &strace_marker_breakpoint_ops;
15786 *ops = tracepoint_breakpoint_ops;
15787 ops->create_sals_from_location = strace_marker_create_sals_from_location;
15788 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15789 ops->decode_location = strace_marker_decode_location;
15790
15791 /* Fork catchpoints. */
15792 ops = &catch_fork_breakpoint_ops;
15793 *ops = base_breakpoint_ops;
15794 ops->insert_location = insert_catch_fork;
15795 ops->remove_location = remove_catch_fork;
15796 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15797 ops->print_it = print_it_catch_fork;
15798 ops->print_one = print_one_catch_fork;
15799 ops->print_mention = print_mention_catch_fork;
15800 ops->print_recreate = print_recreate_catch_fork;
15801
15802 /* Vfork catchpoints. */
15803 ops = &catch_vfork_breakpoint_ops;
15804 *ops = base_breakpoint_ops;
15805 ops->insert_location = insert_catch_vfork;
15806 ops->remove_location = remove_catch_vfork;
15807 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15808 ops->print_it = print_it_catch_vfork;
15809 ops->print_one = print_one_catch_vfork;
15810 ops->print_mention = print_mention_catch_vfork;
15811 ops->print_recreate = print_recreate_catch_vfork;
15812
15813 /* Exec catchpoints. */
15814 ops = &catch_exec_breakpoint_ops;
15815 *ops = base_breakpoint_ops;
15816 ops->insert_location = insert_catch_exec;
15817 ops->remove_location = remove_catch_exec;
15818 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15819 ops->print_it = print_it_catch_exec;
15820 ops->print_one = print_one_catch_exec;
15821 ops->print_mention = print_mention_catch_exec;
15822 ops->print_recreate = print_recreate_catch_exec;
15823
15824 /* Solib-related catchpoints. */
15825 ops = &catch_solib_breakpoint_ops;
15826 *ops = base_breakpoint_ops;
15827 ops->insert_location = insert_catch_solib;
15828 ops->remove_location = remove_catch_solib;
15829 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15830 ops->check_status = check_status_catch_solib;
15831 ops->print_it = print_it_catch_solib;
15832 ops->print_one = print_one_catch_solib;
15833 ops->print_mention = print_mention_catch_solib;
15834 ops->print_recreate = print_recreate_catch_solib;
15835
15836 ops = &dprintf_breakpoint_ops;
15837 *ops = bkpt_base_breakpoint_ops;
15838 ops->re_set = dprintf_re_set;
15839 ops->resources_needed = bkpt_resources_needed;
15840 ops->print_it = bkpt_print_it;
15841 ops->print_mention = bkpt_print_mention;
15842 ops->print_recreate = dprintf_print_recreate;
15843 ops->after_condition_true = dprintf_after_condition_true;
15844 ops->breakpoint_hit = dprintf_breakpoint_hit;
15845}
15846
15847/* Chain containing all defined "enable breakpoint" subcommands. */
15848
15849static struct cmd_list_element *enablebreaklist = NULL;
15850
15851void
15852_initialize_breakpoint (void)
15853{
15854 struct cmd_list_element *c;
15855
15856 initialize_breakpoint_ops ();
15857
15858 observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15859 observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
15860 observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15861
15862 breakpoint_objfile_key
15863 = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15864
15865 breakpoint_chain = 0;
15866 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15867 before a breakpoint is set. */
15868 breakpoint_count = 0;
15869
15870 tracepoint_count = 0;
15871
15872 add_com ("ignore", class_breakpoint, ignore_command, _("\
15873Set ignore-count of breakpoint number N to COUNT.\n\
15874Usage is `ignore N COUNT'."));
15875
15876 add_com ("commands", class_breakpoint, commands_command, _("\
15877Set commands to be executed when the given breakpoints are hit.\n\
15878Give a space-separated breakpoint list as argument after \"commands\".\n\
15879A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15880(e.g. `5-7').\n\
15881With no argument, the targeted breakpoint is the last one set.\n\
15882The commands themselves follow starting on the next line.\n\
15883Type a line containing \"end\" to indicate the end of them.\n\
15884Give \"silent\" as the first line to make the breakpoint silent;\n\
15885then no output is printed when it is hit, except what the commands print."));
15886
15887 c = add_com ("condition", class_breakpoint, condition_command, _("\
15888Specify breakpoint number N to break only if COND is true.\n\
15889Usage is `condition N COND', where N is an integer and COND is an\n\
15890expression to be evaluated whenever breakpoint N is reached."));
15891 set_cmd_completer (c, condition_completer);
15892
15893 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15894Set a temporary breakpoint.\n\
15895Like \"break\" except the breakpoint is only temporary,\n\
15896so it will be deleted when hit. Equivalent to \"break\" followed\n\
15897by using \"enable delete\" on the breakpoint number.\n\
15898\n"
15899BREAK_ARGS_HELP ("tbreak")));
15900 set_cmd_completer (c, location_completer);
15901
15902 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15903Set a hardware assisted breakpoint.\n\
15904Like \"break\" except the breakpoint requires hardware support,\n\
15905some target hardware may not have this support.\n\
15906\n"
15907BREAK_ARGS_HELP ("hbreak")));
15908 set_cmd_completer (c, location_completer);
15909
15910 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15911Set a temporary hardware assisted breakpoint.\n\
15912Like \"hbreak\" except the breakpoint is only temporary,\n\
15913so it will be deleted when hit.\n\
15914\n"
15915BREAK_ARGS_HELP ("thbreak")));
15916 set_cmd_completer (c, location_completer);
15917
15918 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15919Enable some breakpoints.\n\
15920Give breakpoint numbers (separated by spaces) as arguments.\n\
15921With no subcommand, breakpoints are enabled until you command otherwise.\n\
15922This is used to cancel the effect of the \"disable\" command.\n\
15923With a subcommand you can enable temporarily."),
15924 &enablelist, "enable ", 1, &cmdlist);
15925
15926 add_com_alias ("en", "enable", class_breakpoint, 1);
15927
15928 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15929Enable some breakpoints.\n\
15930Give breakpoint numbers (separated by spaces) as arguments.\n\
15931This is used to cancel the effect of the \"disable\" command.\n\
15932May be abbreviated to simply \"enable\".\n"),
15933 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15934
15935 add_cmd ("once", no_class, enable_once_command, _("\
15936Enable breakpoints for one hit. Give breakpoint numbers.\n\
15937If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15938 &enablebreaklist);
15939
15940 add_cmd ("delete", no_class, enable_delete_command, _("\
15941Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15942If a breakpoint is hit while enabled in this fashion, it is deleted."),
15943 &enablebreaklist);
15944
15945 add_cmd ("count", no_class, enable_count_command, _("\
15946Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15947If a breakpoint is hit while enabled in this fashion,\n\
15948the count is decremented; when it reaches zero, the breakpoint is disabled."),
15949 &enablebreaklist);
15950
15951 add_cmd ("delete", no_class, enable_delete_command, _("\
15952Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15953If a breakpoint is hit while enabled in this fashion, it is deleted."),
15954 &enablelist);
15955
15956 add_cmd ("once", no_class, enable_once_command, _("\
15957Enable breakpoints for one hit. Give breakpoint numbers.\n\
15958If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15959 &enablelist);
15960
15961 add_cmd ("count", no_class, enable_count_command, _("\
15962Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15963If a breakpoint is hit while enabled in this fashion,\n\
15964the count is decremented; when it reaches zero, the breakpoint is disabled."),
15965 &enablelist);
15966
15967 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15968Disable some breakpoints.\n\
15969Arguments are breakpoint numbers with spaces in between.\n\
15970To disable all breakpoints, give no argument.\n\
15971A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15972 &disablelist, "disable ", 1, &cmdlist);
15973 add_com_alias ("dis", "disable", class_breakpoint, 1);
15974 add_com_alias ("disa", "disable", class_breakpoint, 1);
15975
15976 add_cmd ("breakpoints", class_alias, disable_command, _("\
15977Disable some breakpoints.\n\
15978Arguments are breakpoint numbers with spaces in between.\n\
15979To disable all breakpoints, give no argument.\n\
15980A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15981This command may be abbreviated \"disable\"."),
15982 &disablelist);
15983
15984 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15985Delete some breakpoints or auto-display expressions.\n\
15986Arguments are breakpoint numbers with spaces in between.\n\
15987To delete all breakpoints, give no argument.\n\
15988\n\
15989Also a prefix command for deletion of other GDB objects.\n\
15990The \"unset\" command is also an alias for \"delete\"."),
15991 &deletelist, "delete ", 1, &cmdlist);
15992 add_com_alias ("d", "delete", class_breakpoint, 1);
15993 add_com_alias ("del", "delete", class_breakpoint, 1);
15994
15995 add_cmd ("breakpoints", class_alias, delete_command, _("\
15996Delete some breakpoints or auto-display expressions.\n\
15997Arguments are breakpoint numbers with spaces in between.\n\
15998To delete all breakpoints, give no argument.\n\
15999This command may be abbreviated \"delete\"."),
16000 &deletelist);
16001
16002 add_com ("clear", class_breakpoint, clear_command, _("\
16003Clear breakpoint at specified location.\n\
16004Argument may be a linespec, explicit, or address location as described below.\n\
16005\n\
16006With no argument, clears all breakpoints in the line that the selected frame\n\
16007is executing in.\n"
16008"\n" LOCATION_HELP_STRING "\n\
16009See also the \"delete\" command which clears breakpoints by number."));
16010 add_com_alias ("cl", "clear", class_breakpoint, 1);
16011
16012 c = add_com ("break", class_breakpoint, break_command, _("\
16013Set breakpoint at specified location.\n"
16014BREAK_ARGS_HELP ("break")));
16015 set_cmd_completer (c, location_completer);
16016
16017 add_com_alias ("b", "break", class_run, 1);
16018 add_com_alias ("br", "break", class_run, 1);
16019 add_com_alias ("bre", "break", class_run, 1);
16020 add_com_alias ("brea", "break", class_run, 1);
16021
16022 if (dbx_commands)
16023 {
16024 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16025Break in function/address or break at a line in the current file."),
16026 &stoplist, "stop ", 1, &cmdlist);
16027 add_cmd ("in", class_breakpoint, stopin_command,
16028 _("Break in function or address."), &stoplist);
16029 add_cmd ("at", class_breakpoint, stopat_command,
16030 _("Break at a line in the current file."), &stoplist);
16031 add_com ("status", class_info, info_breakpoints_command, _("\
16032Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16033The \"Type\" column indicates one of:\n\
16034\tbreakpoint - normal breakpoint\n\
16035\twatchpoint - watchpoint\n\
16036The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16037the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16038breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
16039address and file/line number respectively.\n\
16040\n\
16041Convenience variable \"$_\" and default examine address for \"x\"\n\
16042are set to the address of the last breakpoint listed unless the command\n\
16043is prefixed with \"server \".\n\n\
16044Convenience variable \"$bpnum\" contains the number of the last\n\
16045breakpoint set."));
16046 }
16047
16048 add_info ("breakpoints", info_breakpoints_command, _("\
16049Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16050The \"Type\" column indicates one of:\n\
16051\tbreakpoint - normal breakpoint\n\
16052\twatchpoint - watchpoint\n\
16053The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16054the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16055breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
16056address and file/line number respectively.\n\
16057\n\
16058Convenience variable \"$_\" and default examine address for \"x\"\n\
16059are set to the address of the last breakpoint listed unless the command\n\
16060is prefixed with \"server \".\n\n\
16061Convenience variable \"$bpnum\" contains the number of the last\n\
16062breakpoint set."));
16063
16064 add_info_alias ("b", "breakpoints", 1);
16065
16066 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16067Status of all breakpoints, or breakpoint number NUMBER.\n\
16068The \"Type\" column indicates one of:\n\
16069\tbreakpoint - normal breakpoint\n\
16070\twatchpoint - watchpoint\n\
16071\tlongjmp - internal breakpoint used to step through longjmp()\n\
16072\tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16073\tuntil - internal breakpoint used by the \"until\" command\n\
16074\tfinish - internal breakpoint used by the \"finish\" command\n\
16075The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16076the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16077breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
16078address and file/line number respectively.\n\
16079\n\
16080Convenience variable \"$_\" and default examine address for \"x\"\n\
16081are set to the address of the last breakpoint listed unless the command\n\
16082is prefixed with \"server \".\n\n\
16083Convenience variable \"$bpnum\" contains the number of the last\n\
16084breakpoint set."),
16085 &maintenanceinfolist);
16086
16087 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16088Set catchpoints to catch events."),
16089 &catch_cmdlist, "catch ",
16090 0/*allow-unknown*/, &cmdlist);
16091
16092 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16093Set temporary catchpoints to catch events."),
16094 &tcatch_cmdlist, "tcatch ",
16095 0/*allow-unknown*/, &cmdlist);
16096
16097 add_catch_command ("fork", _("Catch calls to fork."),
16098 catch_fork_command_1,
16099 NULL,
16100 (void *) (uintptr_t) catch_fork_permanent,
16101 (void *) (uintptr_t) catch_fork_temporary);
16102 add_catch_command ("vfork", _("Catch calls to vfork."),
16103 catch_fork_command_1,
16104 NULL,
16105 (void *) (uintptr_t) catch_vfork_permanent,
16106 (void *) (uintptr_t) catch_vfork_temporary);
16107 add_catch_command ("exec", _("Catch calls to exec."),
16108 catch_exec_command_1,
16109 NULL,
16110 CATCH_PERMANENT,
16111 CATCH_TEMPORARY);
16112 add_catch_command ("load", _("Catch loads of shared libraries.\n\
16113Usage: catch load [REGEX]\n\
16114If REGEX is given, only stop for libraries matching the regular expression."),
16115 catch_load_command_1,
16116 NULL,
16117 CATCH_PERMANENT,
16118 CATCH_TEMPORARY);
16119 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16120Usage: catch unload [REGEX]\n\
16121If REGEX is given, only stop for libraries matching the regular expression."),
16122 catch_unload_command_1,
16123 NULL,
16124 CATCH_PERMANENT,
16125 CATCH_TEMPORARY);
16126
16127 c = add_com ("watch", class_breakpoint, watch_command, _("\
16128Set a watchpoint for an expression.\n\
16129Usage: watch [-l|-location] EXPRESSION\n\
16130A watchpoint stops execution of your program whenever the value of\n\
16131an expression changes.\n\
16132If -l or -location is given, this evaluates EXPRESSION and watches\n\
16133the memory to which it refers."));
16134 set_cmd_completer (c, expression_completer);
16135
16136 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16137Set a read watchpoint for an expression.\n\
16138Usage: rwatch [-l|-location] EXPRESSION\n\
16139A watchpoint stops execution of your program whenever the value of\n\
16140an expression is read.\n\
16141If -l or -location is given, this evaluates EXPRESSION and watches\n\
16142the memory to which it refers."));
16143 set_cmd_completer (c, expression_completer);
16144
16145 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16146Set a watchpoint for an expression.\n\
16147Usage: awatch [-l|-location] EXPRESSION\n\
16148A watchpoint stops execution of your program whenever the value of\n\
16149an expression is either read or written.\n\
16150If -l or -location is given, this evaluates EXPRESSION and watches\n\
16151the memory to which it refers."));
16152 set_cmd_completer (c, expression_completer);
16153
16154 add_info ("watchpoints", info_watchpoints_command, _("\
16155Status of specified watchpoints (all watchpoints if no argument)."));
16156
16157 /* XXX: cagney/2005-02-23: This should be a boolean, and should
16158 respond to changes - contrary to the description. */
16159 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16160 &can_use_hw_watchpoints, _("\
16161Set debugger's willingness to use watchpoint hardware."), _("\
16162Show debugger's willingness to use watchpoint hardware."), _("\
16163If zero, gdb will not use hardware for new watchpoints, even if\n\
16164such is available. (However, any hardware watchpoints that were\n\
16165created before setting this to nonzero, will continue to use watchpoint\n\
16166hardware.)"),
16167 NULL,
16168 show_can_use_hw_watchpoints,
16169 &setlist, &showlist);
16170
16171 can_use_hw_watchpoints = 1;
16172
16173 /* Tracepoint manipulation commands. */
16174
16175 c = add_com ("trace", class_breakpoint, trace_command, _("\
16176Set a tracepoint at specified location.\n\
16177\n"
16178BREAK_ARGS_HELP ("trace") "\n\
16179Do \"help tracepoints\" for info on other tracepoint commands."));
16180 set_cmd_completer (c, location_completer);
16181
16182 add_com_alias ("tp", "trace", class_alias, 0);
16183 add_com_alias ("tr", "trace", class_alias, 1);
16184 add_com_alias ("tra", "trace", class_alias, 1);
16185 add_com_alias ("trac", "trace", class_alias, 1);
16186
16187 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16188Set a fast tracepoint at specified location.\n\
16189\n"
16190BREAK_ARGS_HELP ("ftrace") "\n\
16191Do \"help tracepoints\" for info on other tracepoint commands."));
16192 set_cmd_completer (c, location_completer);
16193
16194 c = add_com ("strace", class_breakpoint, strace_command, _("\
16195Set a static tracepoint at location or marker.\n\
16196\n\
16197strace [LOCATION] [if CONDITION]\n\
16198LOCATION may be a linespec, explicit, or address location (described below) \n\
16199or -m MARKER_ID.\n\n\
16200If a marker id is specified, probe the marker with that name. With\n\
16201no LOCATION, uses current execution address of the selected stack frame.\n\
16202Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16203This collects arbitrary user data passed in the probe point call to the\n\
16204tracing library. You can inspect it when analyzing the trace buffer,\n\
16205by printing the $_sdata variable like any other convenience variable.\n\
16206\n\
16207CONDITION is a boolean expression.\n\
16208\n" LOCATION_HELP_STRING "\n\
16209Multiple tracepoints at one place are permitted, and useful if their\n\
16210conditions are different.\n\
16211\n\
16212Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16213Do \"help tracepoints\" for info on other tracepoint commands."));
16214 set_cmd_completer (c, location_completer);
16215
16216 add_info ("tracepoints", info_tracepoints_command, _("\
16217Status of specified tracepoints (all tracepoints if no argument).\n\
16218Convenience variable \"$tpnum\" contains the number of the\n\
16219last tracepoint set."));
16220
16221 add_info_alias ("tp", "tracepoints", 1);
16222
16223 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16224Delete specified tracepoints.\n\
16225Arguments are tracepoint numbers, separated by spaces.\n\
16226No argument means delete all tracepoints."),
16227 &deletelist);
16228 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16229
16230 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16231Disable specified tracepoints.\n\
16232Arguments are tracepoint numbers, separated by spaces.\n\
16233No argument means disable all tracepoints."),
16234 &disablelist);
16235 deprecate_cmd (c, "disable");
16236
16237 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16238Enable specified tracepoints.\n\
16239Arguments are tracepoint numbers, separated by spaces.\n\
16240No argument means enable all tracepoints."),
16241 &enablelist);
16242 deprecate_cmd (c, "enable");
16243
16244 add_com ("passcount", class_trace, trace_pass_command, _("\
16245Set the passcount for a tracepoint.\n\
16246The trace will end when the tracepoint has been passed 'count' times.\n\
16247Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16248if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16249
16250 add_prefix_cmd ("save", class_breakpoint, save_command,
16251 _("Save breakpoint definitions as a script."),
16252 &save_cmdlist, "save ",
16253 0/*allow-unknown*/, &cmdlist);
16254
16255 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16256Save current breakpoint definitions as a script.\n\
16257This includes all types of breakpoints (breakpoints, watchpoints,\n\
16258catchpoints, tracepoints). Use the 'source' command in another debug\n\
16259session to restore them."),
16260 &save_cmdlist);
16261 set_cmd_completer (c, filename_completer);
16262
16263 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16264Save current tracepoint definitions as a script.\n\
16265Use the 'source' command in another debug session to restore them."),
16266 &save_cmdlist);
16267 set_cmd_completer (c, filename_completer);
16268
16269 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16270 deprecate_cmd (c, "save tracepoints");
16271
16272 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16273Breakpoint specific settings\n\
16274Configure various breakpoint-specific variables such as\n\
16275pending breakpoint behavior"),
16276 &breakpoint_set_cmdlist, "set breakpoint ",
16277 0/*allow-unknown*/, &setlist);
16278 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16279Breakpoint specific settings\n\
16280Configure various breakpoint-specific variables such as\n\
16281pending breakpoint behavior"),
16282 &breakpoint_show_cmdlist, "show breakpoint ",
16283 0/*allow-unknown*/, &showlist);
16284
16285 add_setshow_auto_boolean_cmd ("pending", no_class,
16286 &pending_break_support, _("\
16287Set debugger's behavior regarding pending breakpoints."), _("\
16288Show debugger's behavior regarding pending breakpoints."), _("\
16289If on, an unrecognized breakpoint location will cause gdb to create a\n\
16290pending breakpoint. If off, an unrecognized breakpoint location results in\n\
16291an error. If auto, an unrecognized breakpoint location results in a\n\
16292user-query to see if a pending breakpoint should be created."),
16293 NULL,
16294 show_pending_break_support,
16295 &breakpoint_set_cmdlist,
16296 &breakpoint_show_cmdlist);
16297
16298 pending_break_support = AUTO_BOOLEAN_AUTO;
16299
16300 add_setshow_boolean_cmd ("auto-hw", no_class,
16301 &automatic_hardware_breakpoints, _("\
16302Set automatic usage of hardware breakpoints."), _("\
16303Show automatic usage of hardware breakpoints."), _("\
16304If set, the debugger will automatically use hardware breakpoints for\n\
16305breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
16306a warning will be emitted for such breakpoints."),
16307 NULL,
16308 show_automatic_hardware_breakpoints,
16309 &breakpoint_set_cmdlist,
16310 &breakpoint_show_cmdlist);
16311
16312 add_setshow_boolean_cmd ("always-inserted", class_support,
16313 &always_inserted_mode, _("\
16314Set mode for inserting breakpoints."), _("\
16315Show mode for inserting breakpoints."), _("\
16316When this mode is on, breakpoints are inserted immediately as soon as\n\
16317they're created, kept inserted even when execution stops, and removed\n\
16318only when the user deletes them. When this mode is off (the default),\n\
16319breakpoints are inserted only when execution continues, and removed\n\
16320when execution stops."),
16321 NULL,
16322 &show_always_inserted_mode,
16323 &breakpoint_set_cmdlist,
16324 &breakpoint_show_cmdlist);
16325
16326 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16327 condition_evaluation_enums,
16328 &condition_evaluation_mode_1, _("\
16329Set mode of breakpoint condition evaluation."), _("\
16330Show mode of breakpoint condition evaluation."), _("\
16331When this is set to \"host\", breakpoint conditions will be\n\
16332evaluated on the host's side by GDB. When it is set to \"target\",\n\
16333breakpoint conditions will be downloaded to the target (if the target\n\
16334supports such feature) and conditions will be evaluated on the target's side.\n\
16335If this is set to \"auto\" (default), this will be automatically set to\n\
16336\"target\" if it supports condition evaluation, otherwise it will\n\
16337be set to \"gdb\""),
16338 &set_condition_evaluation_mode,
16339 &show_condition_evaluation_mode,
16340 &breakpoint_set_cmdlist,
16341 &breakpoint_show_cmdlist);
16342
16343 add_com ("break-range", class_breakpoint, break_range_command, _("\
16344Set a breakpoint for an address range.\n\
16345break-range START-LOCATION, END-LOCATION\n\
16346where START-LOCATION and END-LOCATION can be one of the following:\n\
16347 LINENUM, for that line in the current file,\n\
16348 FILE:LINENUM, for that line in that file,\n\
16349 +OFFSET, for that number of lines after the current line\n\
16350 or the start of the range\n\
16351 FUNCTION, for the first line in that function,\n\
16352 FILE:FUNCTION, to distinguish among like-named static functions.\n\
16353 *ADDRESS, for the instruction at that address.\n\
16354\n\
16355The breakpoint will stop execution of the inferior whenever it executes\n\
16356an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16357range (including START-LOCATION and END-LOCATION)."));
16358
16359 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16360Set a dynamic printf at specified location.\n\
16361dprintf location,format string,arg1,arg2,...\n\
16362location may be a linespec, explicit, or address location.\n"
16363"\n" LOCATION_HELP_STRING));
16364 set_cmd_completer (c, location_completer);
16365
16366 add_setshow_enum_cmd ("dprintf-style", class_support,
16367 dprintf_style_enums, &dprintf_style, _("\
16368Set the style of usage for dynamic printf."), _("\
16369Show the style of usage for dynamic printf."), _("\
16370This setting chooses how GDB will do a dynamic printf.\n\
16371If the value is \"gdb\", then the printing is done by GDB to its own\n\
16372console, as with the \"printf\" command.\n\
16373If the value is \"call\", the print is done by calling a function in your\n\
16374program; by default printf(), but you can choose a different function or\n\
16375output stream by setting dprintf-function and dprintf-channel."),
16376 update_dprintf_commands, NULL,
16377 &setlist, &showlist);
16378
16379 dprintf_function = xstrdup ("printf");
16380 add_setshow_string_cmd ("dprintf-function", class_support,
16381 &dprintf_function, _("\
16382Set the function to use for dynamic printf"), _("\
16383Show the function to use for dynamic printf"), NULL,
16384 update_dprintf_commands, NULL,
16385 &setlist, &showlist);
16386
16387 dprintf_channel = xstrdup ("");
16388 add_setshow_string_cmd ("dprintf-channel", class_support,
16389 &dprintf_channel, _("\
16390Set the channel to use for dynamic printf"), _("\
16391Show the channel to use for dynamic printf"), NULL,
16392 update_dprintf_commands, NULL,
16393 &setlist, &showlist);
16394
16395 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16396 &disconnected_dprintf, _("\
16397Set whether dprintf continues after GDB disconnects."), _("\
16398Show whether dprintf continues after GDB disconnects."), _("\
16399Use this to let dprintf commands continue to hit and produce output\n\
16400even if GDB disconnects or detaches from the target."),
16401 NULL,
16402 NULL,
16403 &setlist, &showlist);
16404
16405 add_com ("agent-printf", class_vars, agent_printf_command, _("\
16406agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16407(target agent only) This is useful for formatted output in user-defined commands."));
16408
16409 automatic_hardware_breakpoints = 1;
16410
16411 observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16412 observer_attach_thread_exit (remove_threaded_breakpoints);
16413}
This page took 0.078671 seconds and 4 git commands to generate.