1 /* Everything about breakpoints, for GDB.
2 Copyright 1986, 87, 89, 90, 91, 92, 93, 94, 95, 96, 97, 1998
3 Free Software Foundation, Inc.
5 This file is part of GDB.
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 2 of the License, or
10 (at your option) any later version.
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.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
25 #include "breakpoint.h"
27 #include "expression.h"
33 #include "gdbthread.h"
36 #include "gdb_string.h"
42 /* local function prototypes */
45 catch_command_1 PARAMS ((char *, int, int));
48 enable_delete_command PARAMS ((char *, int));
51 enable_delete_breakpoint PARAMS ((struct breakpoint *));
54 enable_once_command PARAMS ((char *, int));
57 enable_once_breakpoint PARAMS ((struct breakpoint *));
60 disable_command PARAMS ((char *, int));
63 enable_command PARAMS ((char *, int));
66 map_breakpoint_numbers PARAMS ((char *, void (*)(struct breakpoint *)));
69 ignore_command PARAMS ((char *, int));
72 breakpoint_re_set_one PARAMS ((char *));
75 delete_command PARAMS ((char *, int));
78 clear_command PARAMS ((char *, int));
81 catch_command PARAMS ((char *, int));
83 static struct symtabs_and_lines
84 get_catch_sals PARAMS ((int));
87 watch_command PARAMS ((char *, int));
90 can_use_hardware_watchpoint PARAMS ((struct value *));
93 tbreak_command PARAMS ((char *, int));
96 break_command_1 PARAMS ((char *, int, int));
99 mention PARAMS ((struct breakpoint *));
102 set_raw_breakpoint PARAMS ((struct symtab_and_line));
105 check_duplicates PARAMS ((CORE_ADDR, asection *));
108 describe_other_breakpoints PARAMS ((CORE_ADDR, asection *));
111 breakpoints_info PARAMS ((char *, int));
114 breakpoint_1 PARAMS ((int, int));
117 bpstat_alloc PARAMS ((struct breakpoint *, bpstat));
120 breakpoint_cond_eval PARAMS ((char *));
123 cleanup_executing_breakpoints PARAMS ((PTR));
126 commands_command PARAMS ((char *, int));
129 condition_command PARAMS ((char *, int));
132 get_number PARAMS ((char **));
135 set_breakpoint_count PARAMS ((int));
138 remove_breakpoint PARAMS ((struct breakpoint *));
141 print_it_normal PARAMS ((bpstat));
144 watchpoint_check PARAMS ((char *));
147 print_it_done PARAMS ((bpstat));
150 print_it_noop PARAMS ((bpstat));
153 maintenance_info_breakpoints PARAMS ((char *, int));
155 #ifdef GET_LONGJMP_TARGET
157 create_longjmp_breakpoint PARAMS ((char *));
161 hw_breakpoint_used_count PARAMS ((void));
164 hw_watchpoint_used_count PARAMS ((enum bptype, int *));
167 hbreak_command PARAMS ((char *, int));
170 thbreak_command PARAMS ((char *, int));
173 watch_command_1 PARAMS ((char *, int, int));
176 rwatch_command PARAMS ((char *, int));
179 awatch_command PARAMS ((char *, int));
182 do_enable_breakpoint PARAMS ((struct breakpoint *, enum bpdisp));
184 extern int addressprint; /* Print machine addresses? */
186 #if defined (GET_LONGJMP_TARGET) || defined (SOLIB_ADD)
187 static int internal_breakpoint_number = -1;
190 /* Are we executing breakpoint commands? */
191 static int executing_breakpoint_commands;
193 /* Walk the following statement or block through all breakpoints.
194 ALL_BREAKPOINTS_SAFE does so even if the statment deletes the current
197 #define ALL_BREAKPOINTS(b) for (b = breakpoint_chain; b; b = b->next)
199 #define ALL_BREAKPOINTS_SAFE(b,tmp) \
200 for (b = breakpoint_chain; \
201 b? (tmp=b->next, 1): 0; \
204 /* True if SHIFT_INST_REGS defined, false otherwise. */
206 int must_shift_inst_regs =
207 #if defined(SHIFT_INST_REGS)
214 /* True if breakpoint hit counts should be displayed in breakpoint info. */
216 int show_breakpoint_hit_counts = 1;
218 /* Chain of all breakpoints defined. */
220 struct breakpoint *breakpoint_chain;
222 /* Number of last breakpoint made. */
224 int breakpoint_count;
226 /* Set breakpoint count to NUM. */
229 set_breakpoint_count (num)
232 breakpoint_count = num;
233 set_internalvar (lookup_internalvar ("bpnum"),
234 value_from_longest (builtin_type_int, (LONGEST) num));
237 /* Used in run_command to zero the hit count when a new run starts. */
240 clear_breakpoint_hit_counts ()
242 struct breakpoint *b;
248 /* Default address, symtab and line to put a breakpoint at
249 for "break" command with no arg.
250 if default_breakpoint_valid is zero, the other three are
251 not valid, and "break" with no arg is an error.
253 This set by print_stack_frame, which calls set_default_breakpoint. */
255 int default_breakpoint_valid;
256 CORE_ADDR default_breakpoint_address;
257 struct symtab *default_breakpoint_symtab;
258 int default_breakpoint_line;
260 /* *PP is a string denoting a breakpoint. Get the number of the breakpoint.
261 Advance *PP after the string and any trailing whitespace.
263 Currently the string can either be a number or "$" followed by the name
264 of a convenience variable. Making it an expression wouldn't work well
265 for map_breakpoint_numbers (e.g. "4 + 5 + 6"). */
274 /* Empty line means refer to the last breakpoint. */
275 return breakpoint_count;
278 /* Make a copy of the name, so we can null-terminate it
279 to pass to lookup_internalvar(). */
284 while (isalnum (*p) || *p == '_')
286 varname = (char *) alloca (p - start + 1);
287 strncpy (varname, start, p - start);
288 varname[p - start] = '\0';
289 val = value_of_internalvar (lookup_internalvar (varname));
290 if (TYPE_CODE (VALUE_TYPE (val)) != TYPE_CODE_INT)
292 "Convenience variables used to specify breakpoints must have integer values."
294 retval = (int) value_as_long (val);
300 while (*p >= '0' && *p <= '9')
303 /* There is no number here. (e.g. "cond a == b"). */
304 error_no_arg ("breakpoint number");
307 if (!(isspace (*p) || *p == '\0'))
308 error ("breakpoint number expected");
315 /* condition N EXP -- set break condition of breakpoint N to EXP. */
318 condition_command (arg, from_tty)
322 register struct breakpoint *b;
327 error_no_arg ("breakpoint number");
330 bnum = get_number (&p);
333 if (b->number == bnum)
340 if (b->cond_string != NULL)
341 free ((PTR)b->cond_string);
346 b->cond_string = NULL;
348 printf_filtered ("Breakpoint %d now unconditional.\n", bnum);
353 /* I don't know if it matters whether this is the string the user
354 typed in or the decompiled expression. */
355 b->cond_string = savestring (arg, strlen (arg));
356 b->cond = parse_exp_1 (&arg, block_for_pc (b->address), 0);
358 error ("Junk at end of expression");
360 breakpoints_changed ();
364 error ("No breakpoint number %d.", bnum);
369 commands_command (arg, from_tty)
373 register struct breakpoint *b;
376 struct command_line *l;
378 /* If we allowed this, we would have problems with when to
379 free the storage, if we change the commands currently
382 if (executing_breakpoint_commands)
383 error ("Can't use the \"commands\" command among a breakpoint's commands.");
386 bnum = get_number (&p);
388 error ("Unexpected extra arguments following breakpoint number.");
391 if (b->number == bnum)
394 sprintf (tmpbuf, "Type commands for when breakpoint %d is hit, one per line.", bnum);
395 l = read_command_lines (tmpbuf, from_tty);
396 free_command_lines (&b->commands);
398 breakpoints_changed ();
401 error ("No breakpoint number %d.", bnum);
404 extern int memory_breakpoint_size; /* from mem-break.c */
406 /* Like target_read_memory() but if breakpoints are inserted, return
407 the shadow contents instead of the breakpoints themselves.
409 Read "memory data" from whatever target or inferior we have.
410 Returns zero if successful, errno value if not. EIO is used
411 for address out of bounds. If breakpoints are inserted, returns
412 shadow contents, not the breakpoints themselves. From breakpoint.c. */
415 read_memory_nobpt (memaddr, myaddr, len)
421 struct breakpoint *b;
423 if (memory_breakpoint_size < 0)
424 /* No breakpoints on this machine. FIXME: This should be
425 dependent on the debugging target. Probably want
426 target_insert_breakpoint to return a size, saying how many
427 bytes of the shadow contents are used, or perhaps have
428 something like target_xfer_shadow. */
429 return target_read_memory (memaddr, myaddr, len);
433 if (b->type == bp_watchpoint
434 || b->type == bp_hardware_watchpoint
435 || b->type == bp_read_watchpoint
436 || b->type == bp_access_watchpoint
439 else if (b->address + memory_breakpoint_size <= memaddr)
440 /* The breakpoint is entirely before the chunk of memory
443 else if (b->address >= memaddr + len)
444 /* The breakpoint is entirely after the chunk of memory we
449 /* Copy the breakpoint from the shadow contents, and recurse
450 for the things before and after. */
452 /* Addresses and length of the part of the breakpoint that
454 CORE_ADDR membpt = b->address;
455 unsigned int bptlen = memory_breakpoint_size;
456 /* Offset within shadow_contents. */
459 if (membpt < memaddr)
461 /* Only copy the second part of the breakpoint. */
462 bptlen -= memaddr - membpt;
463 bptoffset = memaddr - membpt;
467 if (membpt + bptlen > memaddr + len)
469 /* Only copy the first part of the breakpoint. */
470 bptlen -= (membpt + bptlen) - (memaddr + len);
473 memcpy (myaddr + membpt - memaddr,
474 b->shadow_contents + bptoffset, bptlen);
476 if (membpt > memaddr)
478 /* Copy the section of memory before the breakpoint. */
479 status = read_memory_nobpt (memaddr, myaddr, membpt - memaddr);
484 if (membpt + bptlen < memaddr + len)
486 /* Copy the section of memory after the breakpoint. */
487 status = read_memory_nobpt
489 myaddr + membpt + bptlen - memaddr,
490 memaddr + len - (membpt + bptlen));
497 /* Nothing overlaps. Just call read_memory_noerr. */
498 return target_read_memory (memaddr, myaddr, len);
501 /* insert_breakpoints is used when starting or continuing the program.
502 remove_breakpoints is used when the program stops.
503 Both return zero if successful,
504 or an `errno' value if could not write the inferior. */
507 insert_breakpoints ()
509 register struct breakpoint *b, *temp;
511 int disabled_breaks = 0;
513 ALL_BREAKPOINTS_SAFE (b, temp)
514 if (b->type != bp_watchpoint
515 && b->type != bp_hardware_watchpoint
516 && b->type != bp_read_watchpoint
517 && b->type != bp_access_watchpoint
518 && b->enable != disabled
519 && b->enable != shlib_disabled
523 if (b->type == bp_hardware_breakpoint)
524 val = target_insert_hw_breakpoint(b->address, b->shadow_contents);
527 /* Check to see if breakpoint is in an overlay section;
528 if so, we should set the breakpoint at the LMA address.
529 Only if the section is currently mapped should we ALSO
530 set a break at the VMA address. */
531 if (overlay_debugging && b->section &&
532 section_is_overlay (b->section))
536 addr = overlay_unmapped_address (b->address, b->section);
537 val = target_insert_breakpoint (addr, b->shadow_contents);
538 /* This would be the time to check val, to see if the
539 breakpoint write to the load address succeeded.
540 However, this might be an ordinary occurrance, eg. if
541 the unmapped overlay is in ROM. */
542 val = 0; /* in case unmapped address failed */
543 if (section_is_mapped (b->section))
544 val = target_insert_breakpoint (b->address,
547 else /* ordinary (non-overlay) address */
548 val = target_insert_breakpoint(b->address, b->shadow_contents);
552 /* Can't set the breakpoint. */
553 #if defined (DISABLE_UNSETTABLE_BREAK)
554 if (DISABLE_UNSETTABLE_BREAK (b->address))
557 b->enable = shlib_disabled;
558 if (!disabled_breaks)
560 target_terminal_ours_for_output ();
561 fprintf_unfiltered (gdb_stderr,
562 "Cannot insert breakpoint %d:\n", b->number);
563 printf_filtered ("Temporarily disabling shared library breakpoints:\n");
566 printf_filtered ("%d ", b->number);
571 target_terminal_ours_for_output ();
572 fprintf_unfiltered (gdb_stderr, "Cannot insert breakpoint %d:\n", b->number);
573 #ifdef ONE_PROCESS_WRITETEXT
574 fprintf_unfiltered (gdb_stderr,
575 "The same program may be running in another process.\n");
577 memory_error (val, b->address); /* which bombs us out */
583 else if ((b->type == bp_hardware_watchpoint ||
584 b->type == bp_read_watchpoint ||
585 b->type == bp_access_watchpoint)
586 && b->enable == enabled
590 struct frame_info *saved_frame;
591 int saved_level, within_current_scope;
592 value_ptr mark = value_mark ();
595 /* Save the current frame and level so we can restore it after
596 evaluating the watchpoint expression on its own frame. */
597 saved_frame = selected_frame;
598 saved_level = selected_frame_level;
600 /* Determine if the watchpoint is within scope. */
601 if (b->exp_valid_block == NULL)
602 within_current_scope = 1;
605 struct frame_info *fi;
607 /* There might be no current frame at this moment if we are
608 resuming from a step over a breakpoint.
609 Set up current frame before trying to find the watchpoint
611 get_current_frame ();
612 fi = find_frame_addr_in_frame_chain (b->watchpoint_frame);
613 within_current_scope = (fi != NULL);
614 if (within_current_scope)
615 select_frame (fi, -1);
618 if (within_current_scope)
620 /* Evaluate the expression and cut the chain of values
621 produced off from the value chain. */
622 v = evaluate_expression (b->exp);
623 value_release_to_mark (mark);
628 /* Look at each value on the value chain. */
629 for ( ; v; v=v->next)
631 /* If it's a memory location, then we must watch it. */
632 if (v->lval == lval_memory)
636 addr = VALUE_ADDRESS (v) + VALUE_OFFSET (v);
637 len = TYPE_LENGTH (VALUE_TYPE (v));
639 if (b->type == bp_read_watchpoint)
641 else if (b->type == bp_access_watchpoint)
644 val = target_insert_watchpoint (addr, len, type);
653 /* Failure to insert a watchpoint on any memory value in the
654 value chain brings us here. */
656 warning ("Hardware watchpoint %d: Could not insert watchpoint\n",
662 Hardware watchpoint %d deleted because the program has left the block in\n\
663 which its expression is valid.\n", b->number);
664 if (b->related_breakpoint)
665 b->related_breakpoint->disposition = del_at_next_stop;
666 b->disposition = del_at_next_stop;
669 /* Restore the frame and level. */
670 select_frame (saved_frame, saved_level);
673 printf_filtered ("\n");
679 remove_breakpoints ()
681 register struct breakpoint *b;
688 val = remove_breakpoint (b);
698 remove_breakpoint (b)
699 struct breakpoint *b;
703 if (b->type != bp_watchpoint
704 && b->type != bp_hardware_watchpoint
705 && b->type != bp_read_watchpoint
706 && b->type != bp_access_watchpoint)
708 if (b->type == bp_hardware_breakpoint)
709 val = target_remove_hw_breakpoint(b->address, b->shadow_contents);
712 /* Check to see if breakpoint is in an overlay section;
713 if so, we should remove the breakpoint at the LMA address.
714 If that is not equal to the raw address, then we should
715 presumable remove the breakpoint there as well. */
716 if (overlay_debugging && b->section &&
717 section_is_overlay (b->section))
721 addr = overlay_unmapped_address (b->address, b->section);
722 val = target_remove_breakpoint (addr, b->shadow_contents);
723 /* This would be the time to check val, to see if the
724 shadow breakpoint write to the load address succeeded.
725 However, this might be an ordinary occurrance, eg. if
726 the unmapped overlay is in ROM. */
727 val = 0; /* in case unmapped address failed */
728 if (section_is_mapped (b->section))
729 val = target_remove_breakpoint (b->address,
732 else /* ordinary (non-overlay) address */
733 val = target_remove_breakpoint(b->address, b->shadow_contents);
739 else if ((b->type == bp_hardware_watchpoint ||
740 b->type == bp_read_watchpoint ||
741 b->type == bp_access_watchpoint)
742 && b->enable == enabled
748 /* Walk down the saved value chain. */
749 for (v = b->val_chain; v; v = v->next)
751 /* For each memory reference remove the watchpoint
753 if (v->lval == lval_memory)
757 addr = VALUE_ADDRESS (v) + VALUE_OFFSET (v);
758 len = TYPE_LENGTH (VALUE_TYPE (v));
760 if (b->type == bp_read_watchpoint)
762 else if (b->type == bp_access_watchpoint)
765 val = target_remove_watchpoint (addr, len, type);
771 /* Failure to remove any of the hardware watchpoints comes here. */
773 warning ("Hardware watchpoint %d: Could not remove watchpoint\n",
776 /* Free the saved value chain. We will construct a new one
777 the next time the watchpoint is inserted. */
778 for (v = b->val_chain; v; v = n)
788 /* Clear the "inserted" flag in all breakpoints. */
791 mark_breakpoints_out ()
793 register struct breakpoint *b;
799 /* Clear the "inserted" flag in all breakpoints and delete any breakpoints
800 which should go away between runs of the program. */
803 breakpoint_init_inferior ()
805 register struct breakpoint *b, *temp;
807 ALL_BREAKPOINTS_SAFE (b, temp)
814 case bp_watchpoint_scope:
816 /* If the call dummy breakpoint is at the entry point it will
817 cause problems when the inferior is rerun, so we better
820 Also get rid of scope breakpoints. */
821 delete_breakpoint (b);
825 case bp_hardware_watchpoint:
826 case bp_read_watchpoint:
827 case bp_access_watchpoint:
829 /* Likewise for watchpoints on local expressions. */
830 if (b->exp_valid_block != NULL)
831 delete_breakpoint (b);
840 /* breakpoint_here_p (PC) returns 1 if an enabled breakpoint exists at PC.
841 When continuing from a location with a breakpoint,
842 we actually single step once before calling insert_breakpoints. */
845 breakpoint_here_p (pc)
848 register struct breakpoint *b;
851 if (b->enable == enabled
852 && b->address == pc) /* bp is enabled and matches pc */
854 if (overlay_debugging &&
855 section_is_overlay (b->section) &&
856 !section_is_mapped (b->section))
857 continue; /* unmapped overlay -- can't be a match */
865 /* breakpoint_inserted_here_p (PC) is just like breakpoint_here_p(), but it
866 only returns true if there is actually a breakpoint inserted at PC. */
869 breakpoint_inserted_here_p (pc)
872 register struct breakpoint *b;
876 && b->address == pc) /* bp is inserted and matches pc */
878 if (overlay_debugging &&
879 section_is_overlay (b->section) &&
880 !section_is_mapped (b->section))
881 continue; /* unmapped overlay -- can't be a match */
889 /* Return nonzero if FRAME is a dummy frame. We can't use PC_IN_CALL_DUMMY
890 because figuring out the saved SP would take too much time, at least using
891 get_saved_register on the 68k. This means that for this function to
892 work right a port must use the bp_call_dummy breakpoint. */
895 frame_in_dummy (frame)
896 struct frame_info *frame;
899 #ifdef USE_GENERIC_DUMMY_FRAMES
900 return generic_pc_in_call_dummy (frame->pc, frame->frame);
902 struct breakpoint *b;
906 static ULONGEST dummy[] = CALL_DUMMY;
908 if (b->type == bp_call_dummy
909 && b->frame == frame->frame
911 /* We need to check the PC as well as the frame on the sparc,
912 for signals.exp in the testsuite. */
915 - sizeof (dummy) / sizeof (LONGEST) * REGISTER_SIZE))
916 && frame->pc <= b->address)
919 #endif /* GENERIC_DUMMY_FRAMES */
920 #endif /* CALL_DUMMY */
924 /* breakpoint_match_thread (PC, PID) returns true if the breakpoint at PC
925 is valid for process/thread PID. */
928 breakpoint_thread_match (pc, pid)
932 struct breakpoint *b;
935 thread = pid_to_thread_id (pid);
938 if (b->enable != disabled
939 && b->enable != shlib_disabled
941 && (b->thread == -1 || b->thread == thread))
943 if (overlay_debugging &&
944 section_is_overlay (b->section) &&
945 !section_is_mapped (b->section))
946 continue; /* unmapped overlay -- can't be a match */
955 /* bpstat stuff. External routines' interfaces are documented
958 /* Clear a bpstat so that it says we are not at any breakpoint.
959 Also free any storage that is part of a bpstat. */
974 if (p->old_val != NULL)
975 value_free (p->old_val);
982 /* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
983 is part of the bpstat is copied as well. */
991 bpstat retval = NULL;
996 for (; bs != NULL; bs = bs->next)
998 tmp = (bpstat) xmalloc (sizeof (*tmp));
999 memcpy (tmp, bs, sizeof (*tmp));
1001 /* This is the first thing in the chain. */
1011 /* Find the bpstat associated with this breakpoint */
1014 bpstat_find_breakpoint(bsp, breakpoint)
1016 struct breakpoint *breakpoint;
1018 if (bsp == NULL) return NULL;
1020 for (;bsp != NULL; bsp = bsp->next) {
1021 if (bsp->breakpoint_at == breakpoint) return bsp;
1026 /* Return the breakpoint number of the first breakpoint we are stopped
1027 at. *BSP upon return is a bpstat which points to the remaining
1028 breakpoints stopped at (but which is not guaranteed to be good for
1029 anything but further calls to bpstat_num).
1030 Return 0 if passed a bpstat which does not indicate any breakpoints. */
1036 struct breakpoint *b;
1039 return 0; /* No more breakpoint values */
1042 b = (*bsp)->breakpoint_at;
1043 *bsp = (*bsp)->next;
1045 return -1; /* breakpoint that's been deleted since */
1047 return b->number; /* We have its number */
1051 /* Modify BS so that the actions will not be performed. */
1054 bpstat_clear_actions (bs)
1057 for (; bs != NULL; bs = bs->next)
1059 bs->commands = NULL;
1060 if (bs->old_val != NULL)
1062 value_free (bs->old_val);
1068 /* Stub for cleaning up our state if we error-out of a breakpoint command */
1071 cleanup_executing_breakpoints (ignore)
1074 executing_breakpoint_commands = 0;
1077 /* Execute all the commands associated with all the breakpoints at this
1078 location. Any of these commands could cause the process to proceed
1079 beyond this point, etc. We look out for such changes by checking
1080 the global "breakpoint_proceeded" after each command. */
1083 bpstat_do_actions (bsp)
1087 struct cleanup *old_chain;
1088 struct command_line *cmd;
1090 /* Avoid endless recursion if a `source' command is contained
1092 if (executing_breakpoint_commands)
1095 executing_breakpoint_commands = 1;
1096 old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
1101 breakpoint_proceeded = 0;
1102 for (; bs != NULL; bs = bs->next)
1107 execute_control_command (cmd);
1110 if (breakpoint_proceeded)
1111 /* The inferior is proceeded by the command; bomb out now.
1112 The bpstat chain has been blown away by wait_for_inferior.
1113 But since execution has stopped again, there is a new bpstat
1114 to look at, so start over. */
1117 bs->commands = NULL;
1120 executing_breakpoint_commands = 0;
1121 discard_cleanups (old_chain);
1124 /* This is the normal print_it function for a bpstat. In the future,
1125 much of this logic could (should?) be moved to bpstat_stop_status,
1126 by having it set different print_it functions. */
1129 print_it_normal (bs)
1132 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
1133 which has since been deleted. */
1134 if (bs->breakpoint_at == NULL
1135 || (bs->breakpoint_at->type != bp_breakpoint
1136 && bs->breakpoint_at->type != bp_hardware_breakpoint
1137 && bs->breakpoint_at->type != bp_watchpoint
1138 && bs->breakpoint_at->type != bp_read_watchpoint
1139 && bs->breakpoint_at->type != bp_access_watchpoint
1140 && bs->breakpoint_at->type != bp_hardware_watchpoint))
1143 if (bs->breakpoint_at->type == bp_breakpoint ||
1144 bs->breakpoint_at->type == bp_hardware_breakpoint)
1146 /* I think the user probably only wants to see one breakpoint
1147 number, not all of them. */
1148 annotate_breakpoint (bs->breakpoint_at->number);
1149 printf_filtered ("\nBreakpoint %d, ", bs->breakpoint_at->number);
1152 else if ((bs->old_val != NULL) &&
1153 (bs->breakpoint_at->type == bp_watchpoint ||
1154 bs->breakpoint_at->type == bp_access_watchpoint ||
1155 bs->breakpoint_at->type == bp_hardware_watchpoint))
1157 annotate_watchpoint (bs->breakpoint_at->number);
1158 mention (bs->breakpoint_at);
1159 printf_filtered ("\nOld value = ");
1160 value_print (bs->old_val, gdb_stdout, 0, Val_pretty_default);
1161 printf_filtered ("\nNew value = ");
1162 value_print (bs->breakpoint_at->val, gdb_stdout, 0,
1163 Val_pretty_default);
1164 printf_filtered ("\n");
1165 value_free (bs->old_val);
1167 /* More than one watchpoint may have been triggered. */
1170 else if (bs->breakpoint_at->type == bp_access_watchpoint ||
1171 bs->breakpoint_at->type == bp_read_watchpoint)
1173 mention (bs->breakpoint_at);
1174 printf_filtered ("\nValue = ");
1175 value_print (bs->breakpoint_at->val, gdb_stdout, 0,
1176 Val_pretty_default);
1177 printf_filtered ("\n");
1180 /* We can't deal with it. Maybe another member of the bpstat chain can. */
1184 /* Print a message indicating what happened. Returns nonzero to
1185 say that only the source line should be printed after this (zero
1186 return means print the frame as well as the source line). */
1187 /* Currently we always return zero. */
1197 val = (*bs->print_it) (bs);
1201 /* Maybe another breakpoint in the chain caused us to stop.
1202 (Currently all watchpoints go on the bpstat whether hit or
1203 not. That probably could (should) be changed, provided care is taken
1204 with respect to bpstat_explains_signal). */
1206 return bpstat_print (bs->next);
1208 /* We reached the end of the chain without printing anything. */
1212 /* Evaluate the expression EXP and return 1 if value is zero.
1213 This is used inside a catch_errors to evaluate the breakpoint condition.
1214 The argument is a "struct expression *" that has been cast to char * to
1215 make it pass through catch_errors. */
1218 breakpoint_cond_eval (exp)
1221 value_ptr mark = value_mark ();
1222 int i = !value_true (evaluate_expression ((struct expression *)exp));
1223 value_free_to_mark (mark);
1227 /* Allocate a new bpstat and chain it to the current one. */
1230 bpstat_alloc (b, cbs)
1231 register struct breakpoint *b;
1232 bpstat cbs; /* Current "bs" value */
1236 bs = (bpstat) xmalloc (sizeof (*bs));
1238 bs->breakpoint_at = b;
1239 /* If the condition is false, etc., don't do the commands. */
1240 bs->commands = NULL;
1242 bs->print_it = print_it_normal;
1246 /* Possible return values for watchpoint_check (this can't be an enum
1247 because of check_errors). */
1248 /* The watchpoint has been deleted. */
1249 #define WP_DELETED 1
1250 /* The value has changed. */
1251 #define WP_VALUE_CHANGED 2
1252 /* The value has not changed. */
1253 #define WP_VALUE_NOT_CHANGED 3
1255 #define BP_TEMPFLAG 1
1256 #define BP_HARDWAREFLAG 2
1258 /* Check watchpoint condition. */
1261 watchpoint_check (p)
1264 bpstat bs = (bpstat) p;
1265 struct breakpoint *b;
1266 struct frame_info *fr;
1267 int within_current_scope;
1269 b = bs->breakpoint_at;
1271 if (b->exp_valid_block == NULL)
1272 within_current_scope = 1;
1275 /* There is no current frame at this moment. If we're going to have
1276 any chance of handling watchpoints on local variables, we'll need
1277 the frame chain (so we can determine if we're in scope). */
1278 reinit_frame_cache();
1279 fr = find_frame_addr_in_frame_chain (b->watchpoint_frame);
1280 within_current_scope = (fr != NULL);
1281 if (within_current_scope)
1282 /* If we end up stopping, the current frame will get selected
1283 in normal_stop. So this call to select_frame won't affect
1285 select_frame (fr, -1);
1288 if (within_current_scope)
1290 /* We use value_{,free_to_}mark because it could be a
1291 *long* time before we return to the command level and
1292 call free_all_values. We can't call free_all_values because
1293 we might be in the middle of evaluating a function call. */
1295 value_ptr mark = value_mark ();
1296 value_ptr new_val = evaluate_expression (bs->breakpoint_at->exp);
1297 if (!value_equal (b->val, new_val))
1299 release_value (new_val);
1300 value_free_to_mark (mark);
1301 bs->old_val = b->val;
1303 /* We will stop here */
1304 return WP_VALUE_CHANGED;
1308 /* Nothing changed, don't do anything. */
1309 value_free_to_mark (mark);
1310 /* We won't stop here */
1311 return WP_VALUE_NOT_CHANGED;
1316 /* This seems like the only logical thing to do because
1317 if we temporarily ignored the watchpoint, then when
1318 we reenter the block in which it is valid it contains
1319 garbage (in the case of a function, it may have two
1320 garbage values, one before and one after the prologue).
1321 So we can't even detect the first assignment to it and
1322 watch after that (since the garbage may or may not equal
1323 the first value assigned). */
1325 Watchpoint %d deleted because the program has left the block in\n\
1326 which its expression is valid.\n", bs->breakpoint_at->number);
1327 if (b->related_breakpoint)
1328 b->related_breakpoint->disposition = del_at_next_stop;
1329 b->disposition = del_at_next_stop;
1335 /* This is used when everything which needs to be printed has
1336 already been printed. But we still want to print the frame. */
1344 /* This is used when nothing should be printed for this bpstat entry. */
1353 /* Get a bpstat associated with having just stopped at address *PC
1354 and frame address CORE_ADDRESS. Update *PC to point at the
1355 breakpoint (if we hit a breakpoint). NOT_A_BREAKPOINT is nonzero
1356 if this is known to not be a real breakpoint (it could still be a
1357 watchpoint, though). */
1359 /* Determine whether we stopped at a breakpoint, etc, or whether we
1360 don't understand this stop. Result is a chain of bpstat's such that:
1362 if we don't understand the stop, the result is a null pointer.
1364 if we understand why we stopped, the result is not null.
1366 Each element of the chain refers to a particular breakpoint or
1367 watchpoint at which we have stopped. (We may have stopped for
1368 several reasons concurrently.)
1370 Each element of the chain has valid next, breakpoint_at,
1371 commands, FIXME??? fields.
1376 bpstat_stop_status (pc, not_a_breakpoint)
1378 int not_a_breakpoint;
1380 register struct breakpoint *b, *temp;
1382 /* True if we've hit a breakpoint (as opposed to a watchpoint). */
1383 int real_breakpoint = 0;
1384 /* Root of the chain of bpstat's */
1385 struct bpstats root_bs[1];
1386 /* Pointer to the last thing in the chain currently. */
1387 bpstat bs = root_bs;
1388 static char message1[] =
1389 "Error evaluating expression for watchpoint %d\n";
1390 char message[sizeof (message1) + 30 /* slop */];
1392 /* Get the address where the breakpoint would have been. */
1393 bp_addr = *pc - DECR_PC_AFTER_BREAK;
1395 ALL_BREAKPOINTS_SAFE (b, temp)
1397 if (b->enable == disabled
1398 || b->enable == shlib_disabled)
1401 if (b->type != bp_watchpoint
1402 && b->type != bp_hardware_watchpoint
1403 && b->type != bp_read_watchpoint
1404 && b->type != bp_access_watchpoint
1405 && b->type != bp_hardware_breakpoint) /* a non-watchpoint bp */
1406 if (b->address != bp_addr || /* address doesn't match or */
1407 (overlay_debugging && /* overlay doesn't match */
1408 section_is_overlay (b->section) &&
1409 !section_is_mapped (b->section)))
1412 if (b->type == bp_hardware_breakpoint
1413 && b->address != (bp_addr - DECR_PC_AFTER_HW_BREAK))
1416 if (b->type != bp_watchpoint
1417 && b->type != bp_hardware_watchpoint
1418 && b->type != bp_read_watchpoint
1419 && b->type != bp_access_watchpoint
1420 && not_a_breakpoint)
1423 /* Come here if it's a watchpoint, or if the break address matches */
1427 bs = bpstat_alloc (b, bs); /* Alloc a bpstat to explain stop */
1432 sprintf (message, message1, b->number);
1433 if (b->type == bp_watchpoint || b->type == bp_hardware_watchpoint)
1435 switch (catch_errors (watchpoint_check, (char *) bs, message,
1439 /* We've already printed what needs to be printed. */
1440 bs->print_it = print_it_done;
1443 case WP_VALUE_CHANGED:
1446 case WP_VALUE_NOT_CHANGED:
1448 bs->print_it = print_it_noop;
1450 --(b->hit_count); /* don't consider this a hit */
1456 /* Error from catch_errors. */
1457 printf_filtered ("Watchpoint %d deleted.\n", b->number);
1458 if (b->related_breakpoint)
1459 b->related_breakpoint->disposition = del_at_next_stop;
1460 b->disposition = del_at_next_stop;
1461 /* We've already printed what needs to be printed. */
1462 bs->print_it = print_it_done;
1468 else if (b->type == bp_read_watchpoint || b->type == bp_access_watchpoint)
1474 addr = target_stopped_data_address();
1475 if (addr == 0) continue;
1476 for (v = b->val_chain; v; v = v->next)
1478 if (v->lval == lval_memory)
1482 vaddr = VALUE_ADDRESS (v) + VALUE_OFFSET (v);
1488 switch (catch_errors (watchpoint_check, (char *) bs, message,
1492 /* We've already printed what needs to be printed. */
1493 bs->print_it = print_it_done;
1496 case WP_VALUE_CHANGED:
1497 case WP_VALUE_NOT_CHANGED:
1503 /* Error from catch_errors. */
1504 printf_filtered ("Watchpoint %d deleted.\n", b->number);
1505 if (b->related_breakpoint)
1506 b->related_breakpoint->disposition = del_at_next_stop;
1507 b->disposition = del_at_next_stop;
1508 /* We've already printed what needs to be printed. */
1509 bs->print_it = print_it_done;
1513 else if (DECR_PC_AFTER_BREAK != 0 || must_shift_inst_regs)
1514 real_breakpoint = 1;
1516 if (b->frame && b->frame != (get_current_frame ())->frame &&
1517 (b->type == bp_step_resume &&
1518 (get_current_frame ())->frame INNER_THAN b->frame))
1522 int value_is_zero = 0;
1526 /* Need to select the frame, with all that implies
1527 so that the conditions will have the right context. */
1528 select_frame (get_current_frame (), 0);
1530 = catch_errors (breakpoint_cond_eval, (char *)(b->cond),
1531 "Error in testing breakpoint condition:\n",
1533 /* FIXME-someday, should give breakpoint # */
1536 if (b->cond && value_is_zero)
1540 else if (b->ignore_count > 0)
1547 /* We will stop here */
1548 if (b->disposition == disable)
1549 b->enable = disabled;
1550 bs->commands = b->commands;
1553 if (bs->commands && STREQ ("silent", bs->commands->line))
1555 bs->commands = bs->commands->next;
1560 /* Print nothing for this entry if we dont stop or if we dont print. */
1561 if (bs->stop == 0 || bs->print == 0)
1562 bs->print_it = print_it_noop;
1565 bs->next = NULL; /* Terminate the chain */
1566 bs = root_bs->next; /* Re-grab the head of the chain */
1568 if ((DECR_PC_AFTER_BREAK != 0 || must_shift_inst_regs) && bs)
1570 if (real_breakpoint)
1573 #if defined (SHIFT_INST_REGS)
1575 #else /* No SHIFT_INST_REGS. */
1577 #endif /* No SHIFT_INST_REGS. */
1581 /* The value of a hardware watchpoint hasn't changed, but the
1582 intermediate memory locations we are watching may have. */
1583 if (bs && ! bs->stop &&
1584 (bs->breakpoint_at->type == bp_hardware_watchpoint ||
1585 bs->breakpoint_at->type == bp_read_watchpoint ||
1586 bs->breakpoint_at->type == bp_access_watchpoint))
1588 remove_breakpoints ();
1589 insert_breakpoints ();
1594 /* Tell what to do about this bpstat. */
1599 /* Classify each bpstat as one of the following. */
1601 /* This bpstat element has no effect on the main_action. */
1604 /* There was a watchpoint, stop but don't print. */
1607 /* There was a watchpoint, stop and print. */
1610 /* There was a breakpoint but we're not stopping. */
1613 /* There was a breakpoint, stop but don't print. */
1616 /* There was a breakpoint, stop and print. */
1619 /* We hit the longjmp breakpoint. */
1622 /* We hit the longjmp_resume breakpoint. */
1625 /* We hit the step_resume breakpoint. */
1628 /* We hit the through_sigtramp breakpoint. */
1631 /* We hit the shared library event breakpoint. */
1634 /* This is just used to count how many enums there are. */
1638 /* Here is the table which drives this routine. So that we can
1639 format it pretty, we define some abbreviations for the
1640 enum bpstat_what codes. */
1641 #define kc BPSTAT_WHAT_KEEP_CHECKING
1642 #define ss BPSTAT_WHAT_STOP_SILENT
1643 #define sn BPSTAT_WHAT_STOP_NOISY
1644 #define sgl BPSTAT_WHAT_SINGLE
1645 #define slr BPSTAT_WHAT_SET_LONGJMP_RESUME
1646 #define clr BPSTAT_WHAT_CLEAR_LONGJMP_RESUME
1647 #define clrs BPSTAT_WHAT_CLEAR_LONGJMP_RESUME_SINGLE
1648 #define sr BPSTAT_WHAT_STEP_RESUME
1649 #define ts BPSTAT_WHAT_THROUGH_SIGTRAMP
1650 #define shl BPSTAT_WHAT_CHECK_SHLIBS
1652 /* "Can't happen." Might want to print an error message.
1653 abort() is not out of the question, but chances are GDB is just
1654 a bit confused, not unusable. */
1655 #define err BPSTAT_WHAT_STOP_NOISY
1657 /* Given an old action and a class, come up with a new action. */
1658 /* One interesting property of this table is that wp_silent is the same
1659 as bp_silent and wp_noisy is the same as bp_noisy. That is because
1660 after stopping, the check for whether to step over a breakpoint
1661 (BPSTAT_WHAT_SINGLE type stuff) is handled in proceed() without
1662 reference to how we stopped. We retain separate wp_silent and bp_silent
1663 codes in case we want to change that someday. */
1665 /* step_resume entries: a step resume breakpoint overrides another
1666 breakpoint of signal handling (see comment in wait_for_inferior
1667 at first IN_SIGTRAMP where we set the step_resume breakpoint). */
1668 /* We handle the through_sigtramp_breakpoint the same way; having both
1669 one of those and a step_resume_breakpoint is probably very rare (?). */
1671 static const enum bpstat_what_main_action
1672 table[(int)class_last][(int)BPSTAT_WHAT_LAST] =
1675 /* kc ss sn sgl slr clr clrs sr ts shl
1677 /*no_effect*/ {kc, ss, sn, sgl, slr, clr, clrs, sr, ts, shl},
1678 /*wp_silent*/ {ss, ss, sn, ss, ss, ss, ss, sr, ts, shl},
1679 /*wp_noisy*/ {sn, sn, sn, sn, sn, sn, sn, sr, ts, shl},
1680 /*bp_nostop*/ {sgl, ss, sn, sgl, slr, clrs, clrs, sr, ts, shl},
1681 /*bp_silent*/ {ss, ss, sn, ss, ss, ss, ss, sr, ts, shl},
1682 /*bp_noisy*/ {sn, sn, sn, sn, sn, sn, sn, sr, ts, shl},
1683 /*long_jump*/ {slr, ss, sn, slr, err, err, err, sr, ts, shl},
1684 /*long_resume*/ {clr, ss, sn, clrs, err, err, err, sr, ts, shl},
1685 /*step_resume*/ {sr, sr, sr, sr, sr, sr, sr, sr, ts, shl},
1686 /*through_sig*/ {ts, ts, ts, ts, ts, ts, ts, ts, ts, shl},
1687 /*shlib*/ {shl, shl, shl, shl, shl, shl, shl, shl, ts, shl}
1700 enum bpstat_what_main_action current_action = BPSTAT_WHAT_KEEP_CHECKING;
1701 struct bpstat_what retval;
1703 retval.call_dummy = 0;
1704 for (; bs != NULL; bs = bs->next)
1706 enum class bs_class = no_effect;
1707 if (bs->breakpoint_at == NULL)
1708 /* I suspect this can happen if it was a momentary breakpoint
1709 which has since been deleted. */
1711 switch (bs->breakpoint_at->type)
1714 case bp_hardware_breakpoint:
1720 bs_class = bp_noisy;
1722 bs_class = bp_silent;
1725 bs_class = bp_nostop;
1728 case bp_hardware_watchpoint:
1729 case bp_read_watchpoint:
1730 case bp_access_watchpoint:
1734 bs_class = wp_noisy;
1736 bs_class = wp_silent;
1739 /* There was a watchpoint, but we're not stopping. This requires
1740 no further action. */
1741 bs_class = no_effect;
1744 bs_class = long_jump;
1746 case bp_longjmp_resume:
1747 bs_class = long_resume;
1749 case bp_step_resume:
1752 bs_class = step_resume;
1755 /* It is for the wrong frame. */
1756 bs_class = bp_nostop;
1758 case bp_through_sigtramp:
1759 bs_class = through_sig;
1761 case bp_watchpoint_scope:
1762 bs_class = bp_nostop;
1764 case bp_shlib_event:
1765 bs_class = shlib_event;
1768 /* Make sure the action is stop (silent or noisy), so infrun.c
1769 pops the dummy frame. */
1770 bs_class = bp_silent;
1771 retval.call_dummy = 1;
1774 current_action = table[(int)bs_class][(int)current_action];
1776 retval.main_action = current_action;
1780 /* Nonzero if we should step constantly (e.g. watchpoints on machines
1781 without hardware support). This isn't related to a specific bpstat,
1782 just to things like whether watchpoints are set. */
1785 bpstat_should_step ()
1787 struct breakpoint *b;
1789 if (b->enable == enabled && b->type == bp_watchpoint)
1794 /* Print information on breakpoint number BNUM, or -1 if all.
1795 If WATCHPOINTS is zero, process only breakpoints; if WATCHPOINTS
1796 is nonzero, process only watchpoints. */
1799 breakpoint_1 (bnum, allflag)
1803 register struct breakpoint *b;
1804 register struct command_line *l;
1805 register struct symbol *sym;
1806 CORE_ADDR last_addr = (CORE_ADDR)-1;
1807 int found_a_breakpoint = 0;
1808 static char *bptypes[] = {"breakpoint", "hw breakpoint",
1809 "until", "finish", "watchpoint",
1810 "hw watchpoint", "read watchpoint",
1811 "acc watchpoint", "longjmp",
1812 "longjmp resume", "step resume",
1814 "watchpoint scope", "call dummy",
1816 static char *bpdisps[] = {"del", "dstp", "dis", "keep"};
1817 static char bpenables[] = "nyn";
1818 char wrap_indent[80];
1822 || bnum == b->number)
1824 /* We only print out user settable breakpoints unless the allflag is set. */
1826 && b->type != bp_breakpoint
1827 && b->type != bp_hardware_breakpoint
1828 && b->type != bp_watchpoint
1829 && b->type != bp_read_watchpoint
1830 && b->type != bp_access_watchpoint
1831 && b->type != bp_hardware_watchpoint)
1834 if (!found_a_breakpoint++)
1836 annotate_breakpoints_headers ();
1839 printf_filtered ("Num ");
1841 printf_filtered ("Type ");
1843 printf_filtered ("Disp ");
1845 printf_filtered ("Enb ");
1849 printf_filtered ("Address ");
1852 printf_filtered ("What\n");
1854 annotate_breakpoints_table ();
1859 printf_filtered ("%-3d ", b->number);
1861 printf_filtered ("%-14s ", bptypes[(int)b->type]);
1863 printf_filtered ("%-4s ", bpdisps[(int)b->disposition]);
1865 printf_filtered ("%-3c ", bpenables[(int)b->enable]);
1867 strcpy (wrap_indent, " ");
1869 strcat (wrap_indent, " ");
1873 case bp_hardware_watchpoint:
1874 case bp_read_watchpoint:
1875 case bp_access_watchpoint:
1876 /* Field 4, the address, is omitted (which makes the columns
1877 not line up too nicely with the headers, but the effect
1878 is relatively readable). */
1880 print_expression (b->exp, gdb_stdout);
1884 case bp_hardware_breakpoint:
1888 case bp_longjmp_resume:
1889 case bp_step_resume:
1890 case bp_through_sigtramp:
1891 case bp_watchpoint_scope:
1893 case bp_shlib_event:
1897 /* FIXME-32x64: need a print_address_numeric with
1901 local_hex_string_custom
1902 ((unsigned long) b->address, "08l"));
1907 last_addr = b->address;
1910 sym = find_pc_sect_function (b->address, b->section);
1913 fputs_filtered ("in ", gdb_stdout);
1914 fputs_filtered (SYMBOL_SOURCE_NAME (sym), gdb_stdout);
1915 wrap_here (wrap_indent);
1916 fputs_filtered (" at ", gdb_stdout);
1918 fputs_filtered (b->source_file, gdb_stdout);
1919 printf_filtered (":%d", b->line_number);
1922 print_address_symbolic (b->address, gdb_stdout, demangle, " ");
1926 printf_filtered ("\n");
1932 printf_filtered ("\tstop only in stack frame at ");
1933 print_address_numeric (b->frame, 1, gdb_stdout);
1934 printf_filtered ("\n");
1941 printf_filtered ("\tstop only if ");
1942 print_expression (b->cond, gdb_stdout);
1943 printf_filtered ("\n");
1946 if (b->thread != -1)
1948 /* FIXME should make an annotation for this */
1949 printf_filtered ("\tstop only in thread %d\n", b->thread);
1952 if (show_breakpoint_hit_counts && b->hit_count)
1954 /* FIXME should make an annotation for this */
1956 printf_filtered ("\tbreakpoint already hit %d time%s\n",
1957 b->hit_count, (b->hit_count == 1 ? "" : "s"));
1960 if (b->ignore_count)
1964 printf_filtered ("\tignore next %d hits\n", b->ignore_count);
1967 if ((l = b->commands))
1973 print_command_line (l, 4);
1979 if (!found_a_breakpoint)
1982 printf_filtered ("No breakpoints or watchpoints.\n");
1984 printf_filtered ("No breakpoint or watchpoint number %d.\n", bnum);
1987 /* Compare against (CORE_ADDR)-1 in case some compiler decides
1988 that a comparison of an unsigned with -1 is always false. */
1989 if (last_addr != (CORE_ADDR)-1)
1990 set_next_address (last_addr);
1992 annotate_breakpoints_table_end ();
1997 breakpoints_info (bnum_exp, from_tty)
2004 bnum = parse_and_eval_address (bnum_exp);
2006 breakpoint_1 (bnum, 0);
2009 #if MAINTENANCE_CMDS
2013 maintenance_info_breakpoints (bnum_exp, from_tty)
2020 bnum = parse_and_eval_address (bnum_exp);
2022 breakpoint_1 (bnum, 1);
2027 /* Print a message describing any breakpoints set at PC. */
2030 describe_other_breakpoints (pc, section)
2034 register int others = 0;
2035 register struct breakpoint *b;
2038 if (b->address == pc)
2039 if (overlay_debugging == 0 ||
2040 b->section == section)
2044 printf_filtered ("Note: breakpoint%s ", (others > 1) ? "s" : "");
2046 if (b->address == pc)
2047 if (overlay_debugging == 0 ||
2048 b->section == section)
2054 ((b->enable == disabled || b->enable == shlib_disabled)
2055 ? " (disabled)" : ""),
2056 (others > 1) ? "," : ((others == 1) ? " and" : ""));
2058 printf_filtered ("also set at pc ");
2059 print_address_numeric (pc, 1, gdb_stdout);
2060 printf_filtered (".\n");
2064 /* Set the default place to put a breakpoint
2065 for the `break' command with no arguments. */
2068 set_default_breakpoint (valid, addr, symtab, line)
2071 struct symtab *symtab;
2074 default_breakpoint_valid = valid;
2075 default_breakpoint_address = addr;
2076 default_breakpoint_symtab = symtab;
2077 default_breakpoint_line = line;
2080 /* Rescan breakpoints at address ADDRESS,
2081 marking the first one as "first" and any others as "duplicates".
2082 This is so that the bpt instruction is only inserted once. */
2085 check_duplicates (address, section)
2089 register struct breakpoint *b;
2090 register int count = 0;
2092 if (address == 0) /* Watchpoints are uninteresting */
2096 if (b->enable != disabled
2097 && b->enable != shlib_disabled
2098 && b->address == address
2099 && (overlay_debugging == 0 || b->section == section))
2102 b->duplicate = count > 1;
2106 /* Low level routine to set a breakpoint.
2107 Takes as args the three things that every breakpoint must have.
2108 Returns the breakpoint object so caller can set other things.
2109 Does not set the breakpoint number!
2110 Does not print anything.
2112 ==> This routine should not be called if there is a chance of later
2113 error(); otherwise it leaves a bogus breakpoint on the chain. Validate
2114 your arguments BEFORE calling this routine! */
2117 set_raw_breakpoint (sal)
2118 struct symtab_and_line sal;
2120 register struct breakpoint *b, *b1;
2122 b = (struct breakpoint *) xmalloc (sizeof (struct breakpoint));
2123 memset (b, 0, sizeof (*b));
2124 b->address = sal.pc;
2125 if (sal.symtab == NULL)
2126 b->source_file = NULL;
2128 b->source_file = savestring (sal.symtab->filename,
2129 strlen (sal.symtab->filename));
2130 b->section = sal.section;
2131 b->language = current_language->la_language;
2132 b->input_radix = input_radix;
2134 b->line_number = sal.line;
2135 b->enable = enabled;
2138 b->ignore_count = 0;
2142 /* Add this breakpoint to the end of the chain
2143 so that a list of breakpoints will come out in order
2144 of increasing numbers. */
2146 b1 = breakpoint_chain;
2148 breakpoint_chain = b;
2156 check_duplicates (sal.pc, sal.section);
2157 breakpoints_changed ();
2162 #ifdef GET_LONGJMP_TARGET
2165 create_longjmp_breakpoint (func_name)
2168 struct symtab_and_line sal;
2169 struct breakpoint *b;
2171 INIT_SAL (&sal); /* initialize to zeroes */
2172 if (func_name != NULL)
2174 struct minimal_symbol *m;
2176 m = lookup_minimal_symbol_text (func_name, NULL, (struct objfile *)NULL);
2178 sal.pc = SYMBOL_VALUE_ADDRESS (m);
2182 sal.section = find_pc_overlay (sal.pc);
2183 b = set_raw_breakpoint (sal);
2186 b->type = func_name != NULL ? bp_longjmp : bp_longjmp_resume;
2187 b->disposition = donttouch;
2188 b->enable = disabled;
2191 b->addr_string = strsave(func_name);
2192 b->number = internal_breakpoint_number--;
2195 #endif /* #ifdef GET_LONGJMP_TARGET */
2197 /* Call this routine when stepping and nexting to enable a breakpoint if we do
2198 a longjmp(). When we hit that breakpoint, call
2199 set_longjmp_resume_breakpoint() to figure out where we are going. */
2202 enable_longjmp_breakpoint()
2204 register struct breakpoint *b;
2207 if (b->type == bp_longjmp)
2209 b->enable = enabled;
2210 check_duplicates (b->address, b->section);
2215 disable_longjmp_breakpoint()
2217 register struct breakpoint *b;
2220 if ( b->type == bp_longjmp
2221 || b->type == bp_longjmp_resume)
2223 b->enable = disabled;
2224 check_duplicates (b->address, b->section);
2230 remove_solib_event_breakpoints ()
2232 register struct breakpoint *b, *temp;
2234 ALL_BREAKPOINTS_SAFE (b, temp)
2235 if (b->type == bp_shlib_event)
2236 delete_breakpoint (b);
2240 create_solib_event_breakpoint (address)
2243 struct breakpoint *b;
2244 struct symtab_and_line sal;
2246 INIT_SAL (&sal); /* initialize to zeroes */
2248 sal.section = find_pc_overlay (sal.pc);
2249 b = set_raw_breakpoint (sal);
2250 b->number = internal_breakpoint_number--;
2251 b->disposition = donttouch;
2252 b->type = bp_shlib_event;
2255 /* Try to reenable any breakpoints in shared libraries. */
2257 re_enable_breakpoints_in_shlibs ()
2259 struct breakpoint *b;
2262 if (b->enable == shlib_disabled)
2266 /* Do not reenable the breakpoint if the shared library
2267 is still not mapped in. */
2268 if (target_read_memory (b->address, buf, 1) == 0)
2269 b->enable = enabled;
2276 hw_breakpoint_used_count()
2278 register struct breakpoint *b;
2283 if (b->type == bp_hardware_breakpoint && b->enable == enabled)
2291 hw_watchpoint_used_count(type, other_type_used)
2293 int *other_type_used;
2295 register struct breakpoint *b;
2298 *other_type_used = 0;
2301 if (b->enable == enabled)
2303 if (b->type == type) i++;
2304 else if ((b->type == bp_hardware_watchpoint ||
2305 b->type == bp_read_watchpoint ||
2306 b->type == bp_access_watchpoint)
2307 && b->enable == enabled)
2308 *other_type_used = 1;
2314 /* Call this after hitting the longjmp() breakpoint. Use this to set a new
2315 breakpoint at the target of the jmp_buf.
2317 FIXME - This ought to be done by setting a temporary breakpoint that gets
2318 deleted automatically...
2322 set_longjmp_resume_breakpoint(pc, frame)
2324 struct frame_info *frame;
2326 register struct breakpoint *b;
2329 if (b->type == bp_longjmp_resume)
2332 b->enable = enabled;
2334 b->frame = frame->frame;
2337 check_duplicates (b->address, b->section);
2342 /* Set a breakpoint that will evaporate an end of command
2343 at address specified by SAL.
2344 Restrict it to frame FRAME if FRAME is nonzero. */
2347 set_momentary_breakpoint (sal, frame, type)
2348 struct symtab_and_line sal;
2349 struct frame_info *frame;
2352 register struct breakpoint *b;
2353 b = set_raw_breakpoint (sal);
2355 b->enable = enabled;
2356 b->disposition = donttouch;
2357 b->frame = (frame ? frame->frame : 0);
2359 /* If we're debugging a multi-threaded program, then we
2360 want momentary breakpoints to be active in only a
2361 single thread of control. */
2362 if (in_thread_list (inferior_pid))
2363 b->thread = pid_to_thread_id (inferior_pid);
2369 /* Tell the user we have just set a breakpoint B. */
2373 struct breakpoint *b;
2377 /* FIXME: This is misplaced; mention() is called by things (like hitting a
2378 watchpoint) other than breakpoint creation. It should be possible to
2379 clean this up and at the same time replace the random calls to
2380 breakpoint_changed with this hook, as has already been done for
2381 delete_breakpoint_hook and so on. */
2382 if (create_breakpoint_hook)
2383 create_breakpoint_hook (b);
2388 printf_filtered ("Watchpoint %d: ", b->number);
2389 print_expression (b->exp, gdb_stdout);
2391 case bp_hardware_watchpoint:
2392 printf_filtered ("Hardware watchpoint %d: ", b->number);
2393 print_expression (b->exp, gdb_stdout);
2395 case bp_read_watchpoint:
2396 printf_filtered ("Hardware read watchpoint %d: ", b->number);
2397 print_expression (b->exp, gdb_stdout);
2399 case bp_access_watchpoint:
2400 printf_filtered ("Hardware access(read/write) watchpoint %d: ",b->number);
2401 print_expression (b->exp, gdb_stdout);
2404 printf_filtered ("Breakpoint %d", b->number);
2407 case bp_hardware_breakpoint:
2408 printf_filtered ("Hardware assisted breakpoint %d", b->number);
2414 case bp_longjmp_resume:
2415 case bp_step_resume:
2416 case bp_through_sigtramp:
2418 case bp_watchpoint_scope:
2419 case bp_shlib_event:
2424 if (addressprint || b->source_file == NULL)
2426 printf_filtered (" at ");
2427 print_address_numeric (b->address, 1, gdb_stdout);
2430 printf_filtered (": file %s, line %d.",
2431 b->source_file, b->line_number);
2433 printf_filtered ("\n");
2437 /* Set a breakpoint according to ARG (function, linenum or *address)
2438 flag: first bit : 0 non-temporary, 1 temporary.
2439 second bit : 0 normal breakpoint, 1 hardware breakpoint. */
2442 break_command_1 (arg, flag, from_tty)
2446 int tempflag, hardwareflag;
2447 struct symtabs_and_lines sals;
2448 struct symtab_and_line sal;
2449 register struct expression *cond = 0;
2450 register struct breakpoint *b;
2452 /* Pointers in arg to the start, and one past the end, of the condition. */
2453 char *cond_start = NULL;
2454 char *cond_end = NULL;
2455 /* Pointers in arg to the start, and one past the end,
2456 of the address part. */
2457 char *addr_start = NULL;
2458 char *addr_end = NULL;
2459 struct cleanup *old_chain;
2460 struct cleanup *canonical_strings_chain = NULL;
2461 char **canonical = (char **)NULL;
2465 hardwareflag = flag & BP_HARDWAREFLAG;
2466 tempflag = flag & BP_TEMPFLAG;
2471 INIT_SAL (&sal); /* initialize to zeroes */
2473 /* If no arg given, or if first arg is 'if ', use the default breakpoint. */
2475 if (!arg || (arg[0] == 'i' && arg[1] == 'f'
2476 && (arg[2] == ' ' || arg[2] == '\t')))
2478 if (default_breakpoint_valid)
2480 sals.sals = (struct symtab_and_line *)
2481 xmalloc (sizeof (struct symtab_and_line));
2482 sal.pc = default_breakpoint_address;
2483 sal.line = default_breakpoint_line;
2484 sal.symtab = default_breakpoint_symtab;
2485 sal.section = find_pc_overlay (sal.pc);
2490 error ("No default breakpoint address now.");
2496 /* Force almost all breakpoints to be in terms of the
2497 current_source_symtab (which is decode_line_1's default). This
2498 should produce the results we want almost all of the time while
2499 leaving default_breakpoint_* alone. */
2500 if (default_breakpoint_valid
2501 && (!current_source_symtab
2502 || (arg && (*arg == '+' || *arg == '-'))))
2503 sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
2504 default_breakpoint_line, &canonical);
2506 sals = decode_line_1 (&arg, 1, (struct symtab *)NULL, 0, &canonical);
2514 /* Make sure that all storage allocated in decode_line_1 gets freed in case
2515 the following `for' loop errors out. */
2516 old_chain = make_cleanup (free, sals.sals);
2517 if (canonical != (char **)NULL)
2519 make_cleanup (free, canonical);
2520 canonical_strings_chain = make_cleanup (null_cleanup, 0);
2521 for (i = 0; i < sals.nelts; i++)
2523 if (canonical[i] != NULL)
2524 make_cleanup (free, canonical[i]);
2528 thread = -1; /* No specific thread yet */
2530 /* Resolve all line numbers to PC's, and verify that conditions
2531 can be parsed, before setting any breakpoints. */
2532 for (i = 0; i < sals.nelts; i++)
2534 char *tok, *end_tok;
2537 resolve_sal_pc (&sals.sals[i]);
2543 while (*tok == ' ' || *tok == '\t')
2548 while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
2551 toklen = end_tok - tok;
2553 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
2555 tok = cond_start = end_tok + 1;
2556 cond = parse_exp_1 (&tok, block_for_pc (sals.sals[i].pc), 0);
2559 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
2565 thread = strtol (tok, &tok, 0);
2567 error ("Junk after thread keyword.");
2568 if (!valid_thread_id (thread))
2569 error ("Unknown thread %d\n", thread);
2572 error ("Junk at end of arguments.");
2577 int i, target_resources_ok;
2579 i = hw_breakpoint_used_count ();
2580 target_resources_ok = TARGET_CAN_USE_HARDWARE_WATCHPOINT (
2581 bp_hardware_breakpoint, i + sals.nelts, 0);
2582 if (target_resources_ok == 0)
2583 error ("No hardware breakpoint support in the target.");
2584 else if (target_resources_ok < 0)
2585 error ("Hardware breakpoints used exceeds limit.");
2588 /* Remove the canonical strings from the cleanup, they are needed below. */
2589 if (canonical != (char **)NULL)
2590 discard_cleanups (canonical_strings_chain);
2592 /* Now set all the breakpoints. */
2593 for (i = 0; i < sals.nelts; i++)
2598 describe_other_breakpoints (sal.pc, sal.section);
2600 b = set_raw_breakpoint (sal);
2601 set_breakpoint_count (breakpoint_count + 1);
2602 b->number = breakpoint_count;
2603 b->type = hardwareflag ? bp_hardware_breakpoint : bp_breakpoint;
2607 /* If a canonical line spec is needed use that instead of the
2609 if (canonical != (char **)NULL && canonical[i] != NULL)
2610 b->addr_string = canonical[i];
2611 else if (addr_start)
2612 b->addr_string = savestring (addr_start, addr_end - addr_start);
2614 b->cond_string = savestring (cond_start, cond_end - cond_start);
2616 b->enable = enabled;
2617 b->disposition = tempflag ? del : donttouch;
2623 printf_filtered ("Multiple breakpoints were set.\n");
2624 printf_filtered ("Use the \"delete\" command to delete unwanted breakpoints.\n");
2626 do_cleanups (old_chain);
2629 /* Helper function for break_command_1 and disassemble_command. */
2632 resolve_sal_pc (sal)
2633 struct symtab_and_line *sal;
2637 if (sal->pc == 0 && sal->symtab != NULL)
2639 if (!find_line_pc (sal->symtab, sal->line, &pc))
2640 error ("No line %d in file \"%s\".",
2641 sal->line, sal->symtab->filename);
2645 if (sal->section == 0 && sal->symtab != NULL)
2647 struct blockvector *bv;
2652 bv = blockvector_for_pc_sect (sal->pc, 0, &index, sal->symtab);
2655 b = BLOCKVECTOR_BLOCK (bv, index);
2656 sym = block_function (b);
2659 fixup_symbol_section (sym, sal->symtab->objfile);
2660 sal->section = SYMBOL_BFD_SECTION (sym);
2664 /* It really is worthwhile to have the section, so we'll just
2665 have to look harder. This case can be executed if we have
2666 line numbers but no functions (as can happen in assembly
2669 struct minimal_symbol *msym;
2671 msym = lookup_minimal_symbol_by_pc (sal->pc);
2673 sal->section = SYMBOL_BFD_SECTION (msym);
2680 break_command (arg, from_tty)
2684 break_command_1 (arg, 0, from_tty);
2688 tbreak_command (arg, from_tty)
2692 break_command_1 (arg, BP_TEMPFLAG, from_tty);
2696 hbreak_command (arg, from_tty)
2700 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
2704 thbreak_command (arg, from_tty)
2708 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
2712 /* accessflag: 0: watch write, 1: watch read, 2: watch access(read or write)
2715 watch_command_1 (arg, accessflag, from_tty)
2720 struct breakpoint *b;
2721 struct symtab_and_line sal;
2722 struct expression *exp;
2723 struct block *exp_valid_block;
2724 struct value *val, *mark;
2725 struct frame_info *frame;
2726 struct frame_info *prev_frame = NULL;
2727 char *exp_start = NULL;
2728 char *exp_end = NULL;
2729 char *tok, *end_tok;
2731 char *cond_start = NULL;
2732 char *cond_end = NULL;
2733 struct expression *cond = NULL;
2734 int i, other_type_used, target_resources_ok = 0;
2735 enum bptype bp_type;
2738 INIT_SAL (&sal); /* initialize to zeroes */
2740 /* Parse arguments. */
2741 innermost_block = NULL;
2743 exp = parse_exp_1 (&arg, 0, 0);
2745 exp_valid_block = innermost_block;
2746 mark = value_mark ();
2747 val = evaluate_expression (exp);
2748 release_value (val);
2749 if (VALUE_LAZY (val))
2750 value_fetch_lazy (val);
2753 while (*tok == ' ' || *tok == '\t')
2757 while (*end_tok != ' ' && *end_tok != '\t' && *end_tok != '\000')
2760 toklen = end_tok - tok;
2761 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
2763 tok = cond_start = end_tok + 1;
2764 cond = parse_exp_1 (&tok, 0, 0);
2768 error("Junk at end of command.");
2770 if (accessflag == 1) bp_type = bp_read_watchpoint;
2771 else if (accessflag == 2) bp_type = bp_access_watchpoint;
2772 else bp_type = bp_hardware_watchpoint;
2774 mem_cnt = can_use_hardware_watchpoint (val);
2775 if (mem_cnt == 0 && bp_type != bp_hardware_watchpoint)
2776 error ("Expression cannot be implemented with read/access watchpoint.");
2778 i = hw_watchpoint_used_count (bp_type, &other_type_used);
2779 target_resources_ok = TARGET_CAN_USE_HARDWARE_WATCHPOINT(
2780 bp_type, i + mem_cnt, other_type_used);
2781 if (target_resources_ok == 0 && bp_type != bp_hardware_watchpoint)
2782 error ("Target does not have this type of hardware watchpoint support.");
2783 if (target_resources_ok < 0 && bp_type != bp_hardware_watchpoint)
2784 error ("Target resources have been allocated for other types of watchpoints.");
2787 /* Now set up the breakpoint. */
2788 b = set_raw_breakpoint (sal);
2789 set_breakpoint_count (breakpoint_count + 1);
2790 b->number = breakpoint_count;
2791 b->disposition = donttouch;
2793 b->exp_valid_block = exp_valid_block;
2794 b->exp_string = savestring (exp_start, exp_end - exp_start);
2798 b->cond_string = savestring (cond_start, cond_end - cond_start);
2802 frame = block_innermost_frame (exp_valid_block);
2805 prev_frame = get_prev_frame (frame);
2806 b->watchpoint_frame = frame->frame;
2809 b->watchpoint_frame = (CORE_ADDR)0;
2811 if (mem_cnt && target_resources_ok > 0)
2814 b->type = bp_watchpoint;
2816 /* If the expression is "local", then set up a "watchpoint scope"
2817 breakpoint at the point where we've left the scope of the watchpoint
2819 if (innermost_block)
2823 struct breakpoint *scope_breakpoint;
2824 struct symtab_and_line scope_sal;
2826 INIT_SAL (&scope_sal); /* initialize to zeroes */
2827 scope_sal.pc = get_frame_pc (prev_frame);
2828 scope_sal.section = find_pc_overlay (scope_sal.pc);
2830 scope_breakpoint = set_raw_breakpoint (scope_sal);
2831 set_breakpoint_count (breakpoint_count + 1);
2832 scope_breakpoint->number = breakpoint_count;
2834 scope_breakpoint->type = bp_watchpoint_scope;
2835 scope_breakpoint->enable = enabled;
2837 /* Automatically delete the breakpoint when it hits. */
2838 scope_breakpoint->disposition = del;
2840 /* Only break in the proper frame (help with recursion). */
2841 scope_breakpoint->frame = prev_frame->frame;
2843 /* Set the address at which we will stop. */
2844 scope_breakpoint->address = get_frame_pc (prev_frame);
2846 /* The scope breakpoint is related to the watchpoint. We
2847 will need to act on them together. */
2848 b->related_breakpoint = scope_breakpoint;
2851 value_free_to_mark (mark);
2855 /* Return count of locations need to be watched and can be handled
2856 in hardware. If the watchpoint can not be handled
2857 in hardware return zero. */
2860 can_use_hardware_watchpoint (v)
2863 int found_memory_cnt = 0;
2865 /* Make sure all the intermediate values are in memory. Also make sure
2866 we found at least one memory expression. Guards against watch 0x12345,
2867 which is meaningless, but could cause errors if one tries to insert a
2868 hardware watchpoint for the constant expression. */
2869 for ( ; v; v = v->next)
2871 if (v->lval == lval_memory)
2873 if (TYPE_LENGTH (VALUE_TYPE (v)) <= REGISTER_SIZE)
2876 else if (v->lval != not_lval && v->modifiable == 0)
2880 /* The expression itself looks suitable for using a hardware
2881 watchpoint, but give the target machine a chance to reject it. */
2882 return found_memory_cnt;
2885 static void watch_command (arg, from_tty)
2889 watch_command_1 (arg, 0, from_tty);
2892 static void rwatch_command (arg, from_tty)
2896 watch_command_1 (arg, 1, from_tty);
2899 static void awatch_command (arg, from_tty)
2903 watch_command_1 (arg, 2, from_tty);
2907 /* Helper routine for the until_command routine in infcmd.c. Here
2908 because it uses the mechanisms of breakpoints. */
2912 until_break_command (arg, from_tty)
2916 struct symtabs_and_lines sals;
2917 struct symtab_and_line sal;
2918 struct frame_info *prev_frame = get_prev_frame (selected_frame);
2919 struct breakpoint *breakpoint;
2920 struct cleanup *old_chain;
2922 clear_proceed_status ();
2924 /* Set a breakpoint where the user wants it and at return from
2927 if (default_breakpoint_valid)
2928 sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
2929 default_breakpoint_line, (char ***)NULL);
2931 sals = decode_line_1 (&arg, 1, (struct symtab *)NULL, 0, (char ***)NULL);
2933 if (sals.nelts != 1)
2934 error ("Couldn't get information on specified line.");
2937 free ((PTR)sals.sals); /* malloc'd, so freed */
2940 error ("Junk at end of arguments.");
2942 resolve_sal_pc (&sal);
2944 breakpoint = set_momentary_breakpoint (sal, selected_frame, bp_until);
2946 old_chain = make_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
2948 /* Keep within the current frame */
2952 sal = find_pc_line (prev_frame->pc, 0);
2953 sal.pc = prev_frame->pc;
2954 breakpoint = set_momentary_breakpoint (sal, prev_frame, bp_until);
2955 make_cleanup ((make_cleanup_func) delete_breakpoint, breakpoint);
2958 proceed (-1, TARGET_SIGNAL_DEFAULT, 0);
2959 do_cleanups(old_chain);
2963 /* These aren't used; I don't konw what they were for. */
2964 /* Set a breakpoint at the catch clause for NAME. */
2966 catch_breakpoint (name)
2972 disable_catch_breakpoint ()
2977 delete_catch_breakpoint ()
2982 enable_catch_breakpoint ()
2989 struct sal_chain *next;
2990 struct symtab_and_line sal;
2994 /* This isn't used; I don't know what it was for. */
2995 /* For each catch clause identified in ARGS, run FUNCTION
2996 with that clause as an argument. */
2997 static struct symtabs_and_lines
2998 map_catch_names (args, function)
3002 register char *p = args;
3004 struct symtabs_and_lines sals;
3006 struct sal_chain *sal_chain = 0;
3010 error_no_arg ("one or more catch names");
3018 /* Don't swallow conditional part. */
3019 if (p1[0] == 'i' && p1[1] == 'f'
3020 && (p1[2] == ' ' || p1[2] == '\t'))
3026 while (isalnum (*p1) || *p1 == '_' || *p1 == '$')
3030 if (*p1 && *p1 != ' ' && *p1 != '\t')
3031 error ("Arguments must be catch names.");
3037 struct sal_chain *next = (struct sal_chain *)
3038 alloca (sizeof (struct sal_chain));
3039 next->next = sal_chain;
3040 next->sal = get_catch_sal (p);
3045 printf_unfiltered ("No catch clause for exception %s.\n", p);
3050 while (*p == ' ' || *p == '\t') p++;
3055 /* This shares a lot of code with `print_frame_label_vars' from stack.c. */
3057 static struct symtabs_and_lines
3058 get_catch_sals (this_level_only)
3059 int this_level_only;
3061 register struct blockvector *bl;
3062 register struct block *block;
3063 int index, have_default = 0;
3065 struct symtabs_and_lines sals;
3066 struct sal_chain *sal_chain = 0;
3067 char *blocks_searched;
3069 /* Not sure whether an error message is always the correct response,
3070 but it's better than a core dump. */
3071 if (selected_frame == NULL)
3072 error ("No selected frame.");
3073 block = get_frame_block (selected_frame);
3074 pc = selected_frame->pc;
3080 error ("No symbol table info available.\n");
3082 bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
3083 blocks_searched = (char *) alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
3084 memset (blocks_searched, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
3088 CORE_ADDR end = BLOCK_END (block) - 4;
3091 if (bl != blockvector_for_pc (end, &index))
3092 error ("blockvector blotch");
3093 if (BLOCKVECTOR_BLOCK (bl, index) != block)
3094 error ("blockvector botch");
3095 last_index = BLOCKVECTOR_NBLOCKS (bl);
3098 /* Don't print out blocks that have gone by. */
3099 while (index < last_index
3100 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
3103 while (index < last_index
3104 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
3106 if (blocks_searched[index] == 0)
3108 struct block *b = BLOCKVECTOR_BLOCK (bl, index);
3111 register struct symbol *sym;
3113 nsyms = BLOCK_NSYMS (b);
3115 for (i = 0; i < nsyms; i++)
3117 sym = BLOCK_SYM (b, i);
3118 if (STREQ (SYMBOL_NAME (sym), "default"))
3124 if (SYMBOL_CLASS (sym) == LOC_LABEL)
3126 struct sal_chain *next = (struct sal_chain *)
3127 alloca (sizeof (struct sal_chain));
3128 next->next = sal_chain;
3129 next->sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
3133 blocks_searched[index] = 1;
3139 if (sal_chain && this_level_only)
3142 /* After handling the function's top-level block, stop.
3143 Don't continue to its superblock, the block of
3144 per-file symbols. */
3145 if (BLOCK_FUNCTION (block))
3147 block = BLOCK_SUPERBLOCK (block);
3152 struct sal_chain *tmp_chain;
3154 /* Count the number of entries. */
3155 for (index = 0, tmp_chain = sal_chain; tmp_chain;
3156 tmp_chain = tmp_chain->next)
3160 sals.sals = (struct symtab_and_line *)
3161 xmalloc (index * sizeof (struct symtab_and_line));
3162 for (index = 0; sal_chain; sal_chain = sal_chain->next, index++)
3163 sals.sals[index] = sal_chain->sal;
3169 /* Commands to deal with catching exceptions. */
3172 catch_command_1 (arg, tempflag, from_tty)
3177 /* First, translate ARG into something we can deal with in terms
3180 struct symtabs_and_lines sals;
3181 struct symtab_and_line sal;
3182 register struct expression *cond = 0;
3183 register struct breakpoint *b;
3187 INIT_SAL (&sal); /* initialize to zeroes */
3189 /* If no arg given, or if first arg is 'if ', all active catch clauses
3190 are breakpointed. */
3192 if (!arg || (arg[0] == 'i' && arg[1] == 'f'
3193 && (arg[2] == ' ' || arg[2] == '\t')))
3195 /* Grab all active catch clauses. */
3196 sals = get_catch_sals (0);
3200 /* Grab selected catch clauses. */
3201 error ("catch NAME not implemented");
3203 /* This isn't used; I don't know what it was for. */
3204 sals = map_catch_names (arg, catch_breakpoint);
3212 for (i = 0; i < sals.nelts; i++)
3214 resolve_sal_pc (&sals.sals[i]);
3218 if (arg[0] == 'i' && arg[1] == 'f'
3219 && (arg[2] == ' ' || arg[2] == '\t'))
3220 cond = parse_exp_1 ((arg += 2, &arg),
3221 block_for_pc (sals.sals[i].pc), 0);
3223 error ("Junk at end of arguments.");
3228 for (i = 0; i < sals.nelts; i++)
3233 describe_other_breakpoints (sal.pc, sal.section);
3235 b = set_raw_breakpoint (sal);
3236 set_breakpoint_count (breakpoint_count + 1);
3237 b->number = breakpoint_count;
3238 b->type = bp_breakpoint;
3240 b->enable = enabled;
3241 b->disposition = tempflag ? del : donttouch;
3248 printf_unfiltered ("Multiple breakpoints were set.\n");
3249 printf_unfiltered ("Use the \"delete\" command to delete unwanted breakpoints.\n");
3251 free ((PTR)sals.sals);
3254 /* Used by the gui, could be made a worker for other things. */
3257 set_breakpoint_sal (sal)
3258 struct symtab_and_line sal;
3260 struct breakpoint *b;
3261 b = set_raw_breakpoint (sal);
3262 set_breakpoint_count (breakpoint_count + 1);
3263 b->number = breakpoint_count;
3264 b->type = bp_breakpoint;
3271 /* These aren't used; I don't know what they were for. */
3272 /* Disable breakpoints on all catch clauses described in ARGS. */
3274 disable_catch (args)
3277 /* Map the disable command to catch clauses described in ARGS. */
3280 /* Enable breakpoints on all catch clauses described in ARGS. */
3285 /* Map the disable command to catch clauses described in ARGS. */
3288 /* Delete breakpoints on all catch clauses in the active scope. */
3293 /* Map the delete command to catch clauses described in ARGS. */
3298 catch_command (arg, from_tty)
3302 catch_command_1 (arg, 0, from_tty);
3306 clear_command (arg, from_tty)
3310 register struct breakpoint *b, *b1;
3311 struct symtabs_and_lines sals;
3312 struct symtab_and_line sal;
3313 register struct breakpoint *found;
3318 sals = decode_line_spec (arg, 1);
3322 sals.sals = (struct symtab_and_line *)
3323 xmalloc (sizeof (struct symtab_and_line));
3324 INIT_SAL (&sal); /* initialize to zeroes */
3325 sal.line = default_breakpoint_line;
3326 sal.symtab = default_breakpoint_symtab;
3327 if (sal.symtab == 0)
3328 error ("No source file specified.");
3334 for (i = 0; i < sals.nelts; i++)
3336 /* If exact pc given, clear bpts at that pc.
3337 But if sal.pc is zero, clear all bpts on specified line. */
3339 found = (struct breakpoint *) 0;
3341 while (breakpoint_chain
3343 ? (breakpoint_chain->address == sal.pc &&
3344 (overlay_debugging == 0 ||
3345 breakpoint_chain->section == sal.section))
3346 : (breakpoint_chain->source_file != NULL
3347 && sal.symtab != NULL
3348 && STREQ (breakpoint_chain->source_file,
3349 sal.symtab->filename)
3350 && breakpoint_chain->line_number == sal.line)))
3352 b1 = breakpoint_chain;
3353 breakpoint_chain = b1->next;
3360 && b->next->type != bp_watchpoint
3361 && b->next->type != bp_hardware_watchpoint
3362 && b->next->type != bp_read_watchpoint
3363 && b->next->type != bp_access_watchpoint
3365 ? (b->next->address == sal.pc &&
3366 (overlay_debugging == 0 ||
3367 b->next->section == sal.section))
3368 : (b->next->source_file != NULL
3369 && sal.symtab != NULL
3370 && STREQ (b->next->source_file, sal.symtab->filename)
3371 && b->next->line_number == sal.line)))
3382 error ("No breakpoint at %s.", arg);
3384 error ("No breakpoint at this line.");
3387 if (found->next) from_tty = 1; /* Always report if deleted more than one */
3388 if (from_tty) printf_unfiltered ("Deleted breakpoint%s ", found->next ? "s" : "");
3389 breakpoints_changed ();
3392 if (from_tty) printf_unfiltered ("%d ", found->number);
3394 delete_breakpoint (found);
3397 if (from_tty) putchar_unfiltered ('\n');
3399 free ((PTR)sals.sals);
3402 /* Delete breakpoint in BS if they are `delete' breakpoints and
3403 all breakpoints that are marked for deletion, whether hit or not.
3404 This is called after any breakpoint is hit, or after errors. */
3407 breakpoint_auto_delete (bs)
3410 struct breakpoint *b, *temp;
3412 for (; bs; bs = bs->next)
3413 if (bs->breakpoint_at && bs->breakpoint_at->disposition == del
3415 delete_breakpoint (bs->breakpoint_at);
3417 ALL_BREAKPOINTS_SAFE (b, temp)
3419 if (b->disposition == del_at_next_stop)
3420 delete_breakpoint (b);
3424 /* Delete a breakpoint and clean up all traces of it in the data structures. */
3427 delete_breakpoint (bpt)
3428 struct breakpoint *bpt;
3430 register struct breakpoint *b;
3433 if (delete_breakpoint_hook)
3434 delete_breakpoint_hook (bpt);
3437 remove_breakpoint (bpt);
3439 if (breakpoint_chain == bpt)
3440 breakpoint_chain = bpt->next;
3445 b->next = bpt->next;
3449 check_duplicates (bpt->address, bpt->section);
3450 /* If this breakpoint was inserted, and there is another breakpoint
3451 at the same address, we need to insert the other breakpoint. */
3453 && bpt->type != bp_hardware_watchpoint
3454 && bpt->type != bp_read_watchpoint
3455 && bpt->type != bp_access_watchpoint)
3458 if (b->address == bpt->address
3459 && b->section == bpt->section
3461 && b->enable != disabled
3462 && b->enable != shlib_disabled)
3465 val = target_insert_breakpoint (b->address, b->shadow_contents);
3468 target_terminal_ours_for_output ();
3469 fprintf_unfiltered (gdb_stderr, "Cannot insert breakpoint %d:\n", b->number);
3470 memory_error (val, b->address); /* which bombs us out */
3477 free_command_lines (&bpt->commands);
3480 if (bpt->cond_string != NULL)
3481 free (bpt->cond_string);
3482 if (bpt->addr_string != NULL)
3483 free (bpt->addr_string);
3484 if (bpt->exp != NULL)
3486 if (bpt->exp_string != NULL)
3487 free (bpt->exp_string);
3488 if (bpt->val != NULL)
3489 value_free (bpt->val);
3490 if (bpt->source_file != NULL)
3491 free (bpt->source_file);
3493 /* Be sure no bpstat's are pointing at it after it's been freed. */
3494 /* FIXME, how can we find all bpstat's?
3495 We just check stop_bpstat for now. */
3496 for (bs = stop_bpstat; bs; bs = bs->next)
3497 if (bs->breakpoint_at == bpt)
3498 bs->breakpoint_at = NULL;
3503 delete_command (arg, from_tty)
3507 struct breakpoint *b, *temp;
3511 int breaks_to_delete = 0;
3513 /* Delete all breakpoints if no argument.
3514 Do not delete internal or call-dummy breakpoints, these
3515 have to be deleted with an explicit breakpoint number argument. */
3518 if (b->type != bp_call_dummy && b->number >= 0)
3519 breaks_to_delete = 1;
3522 /* Ask user only if there are some breakpoints to delete. */
3524 || (breaks_to_delete && query ("Delete all breakpoints? ")))
3526 ALL_BREAKPOINTS_SAFE (b, temp)
3528 if (b->type != bp_call_dummy && b->number >= 0)
3529 delete_breakpoint (b);
3534 map_breakpoint_numbers (arg, delete_breakpoint);
3537 /* Reset a breakpoint given it's struct breakpoint * BINT.
3538 The value we return ends up being the return value from catch_errors.
3539 Unused in this case. */
3542 breakpoint_re_set_one (bint)
3545 struct breakpoint *b = (struct breakpoint *)bint; /* get past catch_errs */
3548 struct symtabs_and_lines sals;
3550 enum enable save_enable;
3555 case bp_hardware_breakpoint:
3556 if (b->addr_string == NULL)
3558 /* Anything without a string can't be re-set. */
3559 delete_breakpoint (b);
3562 /* In case we have a problem, disable this breakpoint. We'll restore
3563 its status if we succeed. */
3564 save_enable = b->enable;
3565 b->enable = disabled;
3567 set_language (b->language);
3568 input_radix = b->input_radix;
3570 sals = decode_line_1 (&s, 1, (struct symtab *)NULL, 0, (char ***)NULL);
3571 for (i = 0; i < sals.nelts; i++)
3573 resolve_sal_pc (&sals.sals[i]);
3575 /* Reparse conditions, they might contain references to the
3577 if (b->cond_string != NULL)
3581 free ((PTR)b->cond);
3582 b->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc), 0);
3585 /* We need to re-set the breakpoint if the address changes...*/
3586 if (b->address != sals.sals[i].pc
3587 /* ...or new and old breakpoints both have source files, and
3588 the source file name or the line number changes... */
3589 || (b->source_file != NULL
3590 && sals.sals[i].symtab != NULL
3591 && (!STREQ (b->source_file, sals.sals[i].symtab->filename)
3592 || b->line_number != sals.sals[i].line)
3594 /* ...or we switch between having a source file and not having
3596 || ((b->source_file == NULL) != (sals.sals[i].symtab == NULL))
3599 if (b->source_file != NULL)
3600 free (b->source_file);
3601 if (sals.sals[i].symtab == NULL)
3602 b->source_file = NULL;
3605 savestring (sals.sals[i].symtab->filename,
3606 strlen (sals.sals[i].symtab->filename));
3607 b->line_number = sals.sals[i].line;
3608 b->address = sals.sals[i].pc;
3609 check_duplicates (b->address, b->section);
3613 /* Might be better to do this just once per breakpoint_re_set,
3614 rather than once for every breakpoint. */
3615 breakpoints_changed ();
3617 b->section = sals.sals[i].section;
3618 b->enable = save_enable; /* Restore it, this worked. */
3620 free ((PTR)sals.sals);
3624 case bp_hardware_watchpoint:
3625 case bp_read_watchpoint:
3626 case bp_access_watchpoint:
3627 innermost_block = NULL;
3628 /* The issue arises of what context to evaluate this in. The same
3629 one as when it was set, but what does that mean when symbols have
3630 been re-read? We could save the filename and functionname, but
3631 if the context is more local than that, the best we could do would
3632 be something like how many levels deep and which index at that
3633 particular level, but that's going to be less stable than filenames
3634 or functionnames. */
3635 /* So for now, just use a global context. */
3638 b->exp = parse_expression (b->exp_string);
3639 b->exp_valid_block = innermost_block;
3640 mark = value_mark ();
3642 value_free (b->val);
3643 b->val = evaluate_expression (b->exp);
3644 release_value (b->val);
3645 if (VALUE_LAZY (b->val))
3646 value_fetch_lazy (b->val);
3648 if (b->cond_string != NULL)
3652 free ((PTR)b->cond);
3653 b->cond = parse_exp_1 (&s, (struct block *)0, 0);
3655 if (b->enable == enabled)
3657 value_free_to_mark (mark);
3661 printf_filtered ("Deleting unknown breakpoint type %d\n", b->type);
3663 /* Delete longjmp breakpoints, they will be reset later by
3664 breakpoint_re_set. */
3666 case bp_longjmp_resume:
3667 delete_breakpoint (b);
3670 /* This breakpoint is special, it's set up when the inferior
3671 starts and we really don't want to touch it. */
3672 case bp_shlib_event:
3674 /* Keep temporary breakpoints, which can be encountered when we step
3675 over a dlopen call and SOLIB_ADD is resetting the breakpoints.
3676 Otherwise these should have been blown away via the cleanup chain
3677 or by breakpoint_init_inferior when we rerun the executable. */
3680 case bp_watchpoint_scope:
3682 case bp_step_resume:
3689 /* Re-set all breakpoints after symbols have been re-loaded. */
3691 breakpoint_re_set ()
3693 struct breakpoint *b, *temp;
3694 enum language save_language;
3695 int save_input_radix;
3696 static char message1[] = "Error in re-setting breakpoint %d:\n";
3697 char message[sizeof (message1) + 30 /* slop */];
3699 save_language = current_language->la_language;
3700 save_input_radix = input_radix;
3701 ALL_BREAKPOINTS_SAFE (b, temp)
3703 sprintf (message, message1, b->number); /* Format possible error msg */
3704 catch_errors (breakpoint_re_set_one, (char *) b, message,
3707 set_language (save_language);
3708 input_radix = save_input_radix;
3710 #ifdef GET_LONGJMP_TARGET
3711 create_longjmp_breakpoint ("longjmp");
3712 create_longjmp_breakpoint ("_longjmp");
3713 create_longjmp_breakpoint ("siglongjmp");
3714 create_longjmp_breakpoint ("_siglongjmp");
3715 create_longjmp_breakpoint (NULL);
3719 /* Took this out (temporarily at least), since it produces an extra
3720 blank line at startup. This messes up the gdbtests. -PB */
3721 /* Blank line to finish off all those mention() messages we just printed. */
3722 printf_filtered ("\n");
3726 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
3727 If from_tty is nonzero, it prints a message to that effect,
3728 which ends with a period (no newline). */
3731 set_ignore_count (bptnum, count, from_tty)
3732 int bptnum, count, from_tty;
3734 register struct breakpoint *b;
3740 if (b->number == bptnum)
3742 b->ignore_count = count;
3745 else if (count == 0)
3746 printf_filtered ("Will stop next time breakpoint %d is reached.",
3748 else if (count == 1)
3749 printf_filtered ("Will ignore next crossing of breakpoint %d.",
3752 printf_filtered ("Will ignore next %d crossings of breakpoint %d.",
3754 breakpoints_changed ();
3758 error ("No breakpoint number %d.", bptnum);
3761 /* Clear the ignore counts of all breakpoints. */
3763 breakpoint_clear_ignore_counts ()
3765 struct breakpoint *b;
3768 b->ignore_count = 0;
3771 /* Command to set ignore-count of breakpoint N to COUNT. */
3774 ignore_command (args, from_tty)
3782 error_no_arg ("a breakpoint number");
3784 num = get_number (&p);
3787 error ("Second argument (specified ignore-count) is missing.");
3789 set_ignore_count (num,
3790 longest_to_int (value_as_long (parse_and_eval (p))),
3792 printf_filtered ("\n");
3793 breakpoints_changed ();
3796 /* Call FUNCTION on each of the breakpoints
3797 whose numbers are given in ARGS. */
3800 map_breakpoint_numbers (args, function)
3802 void (*function) PARAMS ((struct breakpoint *));
3804 register char *p = args;
3807 register struct breakpoint *b;
3810 error_no_arg ("one or more breakpoint numbers");
3816 num = get_number (&p1);
3819 if (b->number == num)
3821 struct breakpoint *related_breakpoint = b->related_breakpoint;
3823 if (related_breakpoint)
3824 function (related_breakpoint);
3827 printf_unfiltered ("No breakpoint number %d.\n", num);
3834 disable_breakpoint (bpt)
3835 struct breakpoint *bpt;
3837 /* Never disable a watchpoint scope breakpoint; we want to
3838 hit them when we leave scope so we can delete both the
3839 watchpoint and its scope breakpoint at that time. */
3840 if (bpt->type == bp_watchpoint_scope)
3843 bpt->enable = disabled;
3845 check_duplicates (bpt->address, bpt->section);
3847 if (modify_breakpoint_hook)
3848 modify_breakpoint_hook (bpt);
3853 disable_command (args, from_tty)
3857 register struct breakpoint *bpt;
3859 ALL_BREAKPOINTS (bpt)
3863 case bp_hardware_breakpoint:
3865 case bp_hardware_watchpoint:
3866 case bp_read_watchpoint:
3867 case bp_access_watchpoint:
3868 disable_breakpoint (bpt);
3873 map_breakpoint_numbers (args, disable_breakpoint);
3877 do_enable_breakpoint (bpt, disposition)
3878 struct breakpoint *bpt;
3879 enum bpdisp disposition;
3881 struct frame_info *save_selected_frame = NULL;
3882 int save_selected_frame_level = -1;
3883 int target_resources_ok, other_type_used;
3886 if (bpt->type == bp_hardware_breakpoint)
3889 i = hw_breakpoint_used_count();
3890 target_resources_ok = TARGET_CAN_USE_HARDWARE_WATCHPOINT(
3891 bp_hardware_breakpoint, i+1, 0);
3892 if (target_resources_ok == 0)
3893 error ("No hardware breakpoint support in the target.");
3894 else if (target_resources_ok < 0)
3895 error ("Hardware breakpoints used exceeds limit.");
3898 bpt->enable = enabled;
3899 bpt->disposition = disposition;
3900 check_duplicates (bpt->address, bpt->section);
3901 breakpoints_changed ();
3903 if (bpt->type == bp_watchpoint || bpt->type == bp_hardware_watchpoint ||
3904 bpt->type == bp_read_watchpoint || bpt->type == bp_access_watchpoint)
3906 if (bpt->exp_valid_block != NULL)
3908 struct frame_info *fr =
3909 find_frame_addr_in_frame_chain (bpt->watchpoint_frame);
3913 Cannot enable watchpoint %d because the block in which its expression\n\
3914 is valid is not currently in scope.\n", bpt->number);
3915 bpt->enable = disabled;
3919 save_selected_frame = selected_frame;
3920 save_selected_frame_level = selected_frame_level;
3921 select_frame (fr, -1);
3924 value_free (bpt->val);
3925 mark = value_mark ();
3926 bpt->val = evaluate_expression (bpt->exp);
3927 release_value (bpt->val);
3928 if (VALUE_LAZY (bpt->val))
3929 value_fetch_lazy (bpt->val);
3931 if (bpt->type == bp_hardware_watchpoint ||
3932 bpt->type == bp_read_watchpoint ||
3933 bpt->type == bp_access_watchpoint)
3935 int i = hw_watchpoint_used_count (bpt->type, &other_type_used);
3936 int mem_cnt = can_use_hardware_watchpoint (bpt->val);
3938 /* Hack around 'unused var' error for some targets here */
3940 target_resources_ok = TARGET_CAN_USE_HARDWARE_WATCHPOINT(
3941 bpt->type, i + mem_cnt, other_type_used);
3942 /* we can consider of type is bp_hardware_watchpoint, convert to
3943 bp_watchpoint in the following condition */
3944 if (target_resources_ok < 0)
3947 Cannot enable watchpoint %d because target watch resources\n\
3948 have been allocated for other watchpoints.\n", bpt->number);
3949 bpt->enable = disabled;
3950 value_free_to_mark (mark);
3955 if (save_selected_frame_level >= 0)
3956 select_frame (save_selected_frame, save_selected_frame_level);
3957 value_free_to_mark (mark);
3959 if (modify_breakpoint_hook)
3960 modify_breakpoint_hook (bpt);
3964 enable_breakpoint (bpt)
3965 struct breakpoint *bpt;
3967 do_enable_breakpoint (bpt, bpt->disposition);
3970 /* The enable command enables the specified breakpoints (or all defined
3971 breakpoints) so they once again become (or continue to be) effective
3972 in stopping the inferior. */
3976 enable_command (args, from_tty)
3980 register struct breakpoint *bpt;
3982 ALL_BREAKPOINTS (bpt)
3986 case bp_hardware_breakpoint:
3988 case bp_hardware_watchpoint:
3989 case bp_read_watchpoint:
3990 case bp_access_watchpoint:
3991 enable_breakpoint (bpt);
3996 map_breakpoint_numbers (args, enable_breakpoint);
4000 enable_once_breakpoint (bpt)
4001 struct breakpoint *bpt;
4003 do_enable_breakpoint (bpt, disable);
4008 enable_once_command (args, from_tty)
4012 map_breakpoint_numbers (args, enable_once_breakpoint);
4016 enable_delete_breakpoint (bpt)
4017 struct breakpoint *bpt;
4019 do_enable_breakpoint (bpt, del);
4024 enable_delete_command (args, from_tty)
4028 map_breakpoint_numbers (args, enable_delete_breakpoint);
4031 /* Use default_breakpoint_'s, or nothing if they aren't valid. */
4033 struct symtabs_and_lines
4034 decode_line_spec_1 (string, funfirstline)
4038 struct symtabs_and_lines sals;
4040 error ("Empty line specification.");
4041 if (default_breakpoint_valid)
4042 sals = decode_line_1 (&string, funfirstline,
4043 default_breakpoint_symtab, default_breakpoint_line,
4046 sals = decode_line_1 (&string, funfirstline,
4047 (struct symtab *)NULL, 0, (char ***)NULL);
4049 error ("Junk at end of line specification: %s", string);
4054 _initialize_breakpoint ()
4056 breakpoint_chain = 0;
4057 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
4058 before a breakpoint is set. */
4059 breakpoint_count = 0;
4061 add_com ("ignore", class_breakpoint, ignore_command,
4062 "Set ignore-count of breakpoint number N to COUNT.\n\
4063 Usage is `ignore N COUNT'.");
4065 add_com ("commands", class_breakpoint, commands_command,
4066 "Set commands to be executed when a breakpoint is hit.\n\
4067 Give breakpoint number as argument after \"commands\".\n\
4068 With no argument, the targeted breakpoint is the last one set.\n\
4069 The commands themselves follow starting on the next line.\n\
4070 Type a line containing \"end\" to indicate the end of them.\n\
4071 Give \"silent\" as the first line to make the breakpoint silent;\n\
4072 then no output is printed when it is hit, except what the commands print.");
4074 add_com ("condition", class_breakpoint, condition_command,
4075 "Specify breakpoint number N to break only if COND is true.\n\
4076 Usage is `condition N COND', where N is an integer and COND is an\n\
4077 expression to be evaluated whenever breakpoint N is reached. ");
4079 add_com ("tbreak", class_breakpoint, tbreak_command,
4080 "Set a temporary breakpoint. Args like \"break\" command.\n\
4081 Like \"break\" except the breakpoint is only temporary,\n\
4082 so it will be deleted when hit. Equivalent to \"break\" followed\n\
4083 by using \"enable delete\" on the breakpoint number.");
4085 add_com ("hbreak", class_breakpoint, hbreak_command,
4086 "Set a hardware assisted breakpoint. Args like \"break\" command.\n\
4087 Like \"break\" except the breakpoint requires hardware support,\n\
4088 some target hardware may not have this support.");
4090 add_com ("thbreak", class_breakpoint, thbreak_command,
4091 "Set a temporary hardware assisted breakpoint. Args like \"break\" command.\n\
4092 Like \"hbreak\" except the breakpoint is only temporary,\n\
4093 so it will be deleted when hit.");
4095 add_prefix_cmd ("enable", class_breakpoint, enable_command,
4096 "Enable some breakpoints.\n\
4097 Give breakpoint numbers (separated by spaces) as arguments.\n\
4098 With no subcommand, breakpoints are enabled until you command otherwise.\n\
4099 This is used to cancel the effect of the \"disable\" command.\n\
4100 With a subcommand you can enable temporarily.",
4101 &enablelist, "enable ", 1, &cmdlist);
4103 add_com_alias ("en", "enable", class_breakpoint, 1);
4105 add_abbrev_prefix_cmd ("breakpoints", class_breakpoint, enable_command,
4106 "Enable some breakpoints.\n\
4107 Give breakpoint numbers (separated by spaces) as arguments.\n\
4108 This is used to cancel the effect of the \"disable\" command.\n\
4109 May be abbreviated to simply \"enable\".\n",
4110 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
4112 add_cmd ("once", no_class, enable_once_command,
4113 "Enable breakpoints for one hit. Give breakpoint numbers.\n\
4114 If a breakpoint is hit while enabled in this fashion, it becomes disabled.",
4117 add_cmd ("delete", no_class, enable_delete_command,
4118 "Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
4119 If a breakpoint is hit while enabled in this fashion, it is deleted.",
4122 add_cmd ("delete", no_class, enable_delete_command,
4123 "Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
4124 If a breakpoint is hit while enabled in this fashion, it is deleted.",
4127 add_cmd ("once", no_class, enable_once_command,
4128 "Enable breakpoints for one hit. Give breakpoint numbers.\n\
4129 If a breakpoint is hit while enabled in this fashion, it becomes disabled.",
4132 add_prefix_cmd ("disable", class_breakpoint, disable_command,
4133 "Disable some breakpoints.\n\
4134 Arguments are breakpoint numbers with spaces in between.\n\
4135 To disable all breakpoints, give no argument.\n\
4136 A disabled breakpoint is not forgotten, but has no effect until reenabled.",
4137 &disablelist, "disable ", 1, &cmdlist);
4138 add_com_alias ("dis", "disable", class_breakpoint, 1);
4139 add_com_alias ("disa", "disable", class_breakpoint, 1);
4141 add_cmd ("breakpoints", class_alias, disable_command,
4142 "Disable some breakpoints.\n\
4143 Arguments are breakpoint numbers with spaces in between.\n\
4144 To disable all breakpoints, give no argument.\n\
4145 A disabled breakpoint is not forgotten, but has no effect until reenabled.\n\
4146 This command may be abbreviated \"disable\".",
4149 add_prefix_cmd ("delete", class_breakpoint, delete_command,
4150 "Delete some breakpoints or auto-display expressions.\n\
4151 Arguments are breakpoint numbers with spaces in between.\n\
4152 To delete all breakpoints, give no argument.\n\
4154 Also a prefix command for deletion of other GDB objects.\n\
4155 The \"unset\" command is also an alias for \"delete\".",
4156 &deletelist, "delete ", 1, &cmdlist);
4157 add_com_alias ("d", "delete", class_breakpoint, 1);
4159 add_cmd ("breakpoints", class_alias, delete_command,
4160 "Delete some breakpoints or auto-display expressions.\n\
4161 Arguments are breakpoint numbers with spaces in between.\n\
4162 To delete all breakpoints, give no argument.\n\
4163 This command may be abbreviated \"delete\".",
4166 add_com ("clear", class_breakpoint, clear_command,
4167 concat ("Clear breakpoint at specified line or function.\n\
4168 Argument may be line number, function name, or \"*\" and an address.\n\
4169 If line number is specified, all breakpoints in that line are cleared.\n\
4170 If function is specified, breakpoints at beginning of function are cleared.\n\
4171 If an address is specified, breakpoints at that address are cleared.\n\n",
4172 "With no argument, clears all breakpoints in the line that the selected frame\n\
4175 See also the \"delete\" command which clears breakpoints by number.", NULL));
4177 add_com ("break", class_breakpoint, break_command,
4178 concat ("Set breakpoint at specified line or function.\n\
4179 Argument may be line number, function name, or \"*\" and an address.\n\
4180 If line number is specified, break at start of code for that line.\n\
4181 If function is specified, break at start of code for that function.\n\
4182 If an address is specified, break at that exact address.\n",
4183 "With no arg, uses current execution address of selected stack frame.\n\
4184 This is useful for breaking on return to a stack frame.\n\
4186 Multiple breakpoints at one place are permitted, and useful if conditional.\n\
4188 Do \"help breakpoints\" for info on other commands dealing with breakpoints.", NULL));
4189 add_com_alias ("b", "break", class_run, 1);
4190 add_com_alias ("br", "break", class_run, 1);
4191 add_com_alias ("bre", "break", class_run, 1);
4192 add_com_alias ("brea", "break", class_run, 1);
4194 add_info ("breakpoints", breakpoints_info,
4195 concat ("Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
4196 The \"Type\" column indicates one of:\n\
4197 \tbreakpoint - normal breakpoint\n\
4198 \twatchpoint - watchpoint\n\
4199 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
4200 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
4201 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
4202 address and file/line number respectively.\n\n",
4203 "Convenience variable \"$_\" and default examine address for \"x\"\n\
4204 are set to the address of the last breakpoint listed.\n\n\
4205 Convenience variable \"$bpnum\" contains the number of the last\n\
4206 breakpoint set.", NULL));
4208 #if MAINTENANCE_CMDS
4210 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints,
4211 concat ("Status of all breakpoints, or breakpoint number NUMBER.\n\
4212 The \"Type\" column indicates one of:\n\
4213 \tbreakpoint - normal breakpoint\n\
4214 \twatchpoint - watchpoint\n\
4215 \tlongjmp - internal breakpoint used to step through longjmp()\n\
4216 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
4217 \tuntil - internal breakpoint used by the \"until\" command\n\
4218 \tfinish - internal breakpoint used by the \"finish\" command\n",
4219 "The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
4220 the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
4221 breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
4222 address and file/line number respectively.\n\n",
4223 "Convenience variable \"$_\" and default examine address for \"x\"\n\
4224 are set to the address of the last breakpoint listed.\n\n\
4225 Convenience variable \"$bpnum\" contains the number of the last\n\
4226 breakpoint set.", NULL),
4227 &maintenanceinfolist);
4229 #endif /* MAINTENANCE_CMDS */
4231 add_com ("catch", class_breakpoint, catch_command,
4232 "Set breakpoints to catch exceptions that are raised.\n\
4233 Argument may be a single exception to catch, multiple exceptions\n\
4234 to catch, or the default exception \"default\". If no arguments\n\
4235 are given, breakpoints are set at all exception handlers catch clauses\n\
4236 within the current scope.\n\
4238 A condition specified for the catch applies to all breakpoints set\n\
4239 with this command\n\
4241 Do \"help breakpoints\" for info on other commands dealing with breakpoints.");
4243 add_com ("watch", class_breakpoint, watch_command,
4244 "Set a watchpoint for an expression.\n\
4245 A watchpoint stops execution of your program whenever the value of\n\
4246 an expression changes.");
4248 add_com ("rwatch", class_breakpoint, rwatch_command,
4249 "Set a read watchpoint for an expression.\n\
4250 A watchpoint stops execution of your program whenever the value of\n\
4251 an expression is read.");
4253 add_com ("awatch", class_breakpoint, awatch_command,
4254 "Set a watchpoint for an expression.\n\
4255 A watchpoint stops execution of your program whenever the value of\n\
4256 an expression is either read or written.");
4258 add_info ("watchpoints", breakpoints_info,
4259 "Synonym for ``info breakpoints''.");