X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=gdb%2Fbreakpoint.c;h=ae5d79f699f62aff93bb119037d2e8c5019d70c2;hb=a86a52d180573b34545cb8f2d3357a39aeb0e91f;hp=336264d5efd11ac97313aed75adc32979bc559e4;hpb=42c5e05f069fcdb02838d00fb6955f704b1eaac4;p=pf3gnuchains%2Fpf3gnuchains3x.git diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 336264d5ef..ae5d79f699 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -1,7 +1,7 @@ /* Everything about breakpoints, for GDB. Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, - 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 + 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GDB. @@ -49,6 +49,9 @@ #include "cli/cli-script.h" #include "gdb_assert.h" #include "block.h" +#include "solist.h" +#include "observer.h" +#include "exceptions.h" #include "gdb-events.h" @@ -84,11 +87,6 @@ static void watch_command (char *, int); static int can_use_hardware_watchpoint (struct value *); -extern void break_at_finish_command (char *, int); -extern void break_at_finish_at_depth_command (char *, int); - -extern void tbreak_at_finish_command (char *, int); - static int break_command_1 (char *, int, int, struct breakpoint *); static void mention (struct breakpoint *); @@ -120,8 +118,6 @@ static void condition_command (char *, int); static int get_number_trailer (char **, int); -static int do_captured_parse_breakpoint (struct ui_out *, void *); - void set_breakpoint_count (int); typedef enum @@ -179,11 +175,6 @@ static void create_fork_vfork_event_catchpoint (int tempflag, char *cond_string, enum bptype bp_kind); -static void break_at_finish_at_depth_command_1 (char *arg, - int flag, int from_tty); - -static void break_at_finish_command_1 (char *arg, int flag, int from_tty); - static void stop_command (char *arg, int from_tty); static void stopin_command (char *arg, int from_tty); @@ -314,7 +305,7 @@ int deprecated_exception_support_initialized = 0; #ifndef SOLIB_CREATE_CATCH_LOAD_HOOK #define SOLIB_CREATE_CATCH_LOAD_HOOK(pid,tempflag,filename,cond_string) \ - error ("catch of library loads not yet implemented on this platform") + error (_("catch of library loads not yet implemented on this platform")) #endif /* This function is called by the "catch unload" command. It allows @@ -323,8 +314,8 @@ int deprecated_exception_support_initialized = 0; unloaded. */ #ifndef SOLIB_CREATE_CATCH_UNLOAD_HOOK -#define SOLIB_CREATE_CATCH_UNLOAD_HOOK(pid,tempflag,filename,cond_string) \ - error ("catch of library unloads not yet implemented on this platform") +#define SOLIB_CREATE_CATCH_UNLOAD_HOOK(pid, tempflag, filename, cond_string) \ + error (_("catch of library unloads not yet implemented on this platform")) #endif /* Return whether a breakpoint is an active enabled breakpoint. */ @@ -399,11 +390,11 @@ get_number_trailer (char **pp, int trailer) strncpy (varname, start, p - start); varname[p - start] = '\0'; val = value_of_internalvar (lookup_internalvar (varname)); - if (TYPE_CODE (VALUE_TYPE (val)) == TYPE_CODE_INT) + if (TYPE_CODE (value_type (val)) == TYPE_CODE_INT) retval = (int) value_as_long (val); else { - printf_filtered ("Convenience variable must have integer value.\n"); + printf_filtered (_("Convenience variable must have integer value.\n")); retval = 0; } } @@ -489,7 +480,7 @@ get_number_or_range (char **pp) end_value = get_number (temp); if (end_value < last_retval) { - error ("inverted range"); + error (_("inverted range")); } else if (end_value == last_retval) { @@ -503,7 +494,7 @@ get_number_or_range (char **pp) } } else if (! in_range) - error ("negative value"); + error (_("negative value")); else { /* pp points to the '-' that betokens a range. All @@ -534,12 +525,12 @@ condition_command (char *arg, int from_tty) int bnum; if (arg == 0) - error_no_arg ("breakpoint number"); + error_no_arg (_("breakpoint number")); p = arg; bnum = get_number (&p); if (bnum == 0) - error ("Bad breakpoint argument: '%s'", arg); + error (_("Bad breakpoint argument: '%s'"), arg); ALL_BREAKPOINTS (b) if (b->number == bnum) @@ -557,7 +548,7 @@ condition_command (char *arg, int from_tty) b->cond = 0; b->cond_string = NULL; if (from_tty) - printf_filtered ("Breakpoint %d now unconditional.\n", bnum); + printf_filtered (_("Breakpoint %d now unconditional.\n"), bnum); } else { @@ -569,7 +560,7 @@ condition_command (char *arg, int from_tty) { b->cond = parse_exp_1 (&arg, block_for_pc (b->loc->address), 0); if (*arg) - error ("Junk at end of expression"); + error (_("Junk at end of expression")); } } breakpoints_changed (); @@ -577,7 +568,7 @@ condition_command (char *arg, int from_tty) return; } - error ("No breakpoint number %d.", bnum); + error (_("No breakpoint number %d."), bnum); } static void @@ -593,13 +584,13 @@ commands_command (char *arg, int from_tty) being read from. */ if (executing_breakpoint_commands) - error ("Can't use the \"commands\" command among a breakpoint's commands."); + error (_("Can't use the \"commands\" command among a breakpoint's commands.")); p = arg; bnum = get_number (&p); if (p && *p) - error ("Unexpected extra arguments following breakpoint number."); + error (_("Unexpected extra arguments following breakpoint number.")); ALL_BREAKPOINTS (b) if (b->number == bnum) @@ -615,7 +606,7 @@ commands_command (char *arg, int from_tty) breakpoint_modify_event (b->number); return; } - error ("No breakpoint number %d.", bnum); + error (_("No breakpoint number %d."), bnum); } /* Like target_read_memory() but if breakpoints are inserted, return @@ -627,7 +618,7 @@ commands_command (char *arg, int from_tty) shadow contents, not the breakpoints themselves. From breakpoint.c. */ int -read_memory_nobpt (CORE_ADDR memaddr, char *myaddr, unsigned len) +deprecated_read_memory_nobpt (CORE_ADDR memaddr, char *myaddr, unsigned len) { int status; struct bp_location *b; @@ -641,7 +632,7 @@ read_memory_nobpt (CORE_ADDR memaddr, char *myaddr, unsigned len) ALL_BP_LOCATIONS (b) { if (b->owner->type == bp_none) - warning ("reading through apparently deleted breakpoint #%d?", + warning (_("reading through apparently deleted breakpoint #%d?"), b->owner->number); if (b->loc_type != bp_loc_software_breakpoint) @@ -695,7 +686,7 @@ read_memory_nobpt (CORE_ADDR memaddr, char *myaddr, unsigned len) if (bp_addr > memaddr) { /* Copy the section of memory before the breakpoint. */ - status = read_memory_nobpt (memaddr, myaddr, bp_addr - memaddr); + status = deprecated_read_memory_nobpt (memaddr, myaddr, bp_addr - memaddr); if (status != 0) return status; } @@ -703,7 +694,7 @@ read_memory_nobpt (CORE_ADDR memaddr, char *myaddr, unsigned len) if (bp_addr + bp_size < memaddr + len) { /* Copy the section of memory after the breakpoint. */ - status = read_memory_nobpt (bp_addr + bp_size, + status = deprecated_read_memory_nobpt (bp_addr + bp_size, myaddr + bp_addr + bp_size - memaddr, memaddr + len - (bp_addr + bp_size)); if (status != 0) @@ -718,7 +709,7 @@ read_memory_nobpt (CORE_ADDR memaddr, char *myaddr, unsigned len) /* A wrapper function for inserting catchpoints. */ -static int +static void insert_catchpoint (struct ui_out *uo, void *args) { struct breakpoint *b = (struct breakpoint *) args; @@ -727,23 +718,18 @@ insert_catchpoint (struct ui_out *uo, void *args) switch (b->type) { case bp_catch_fork: - val = target_insert_fork_catchpoint (PIDGET (inferior_ptid)); + target_insert_fork_catchpoint (PIDGET (inferior_ptid)); break; case bp_catch_vfork: - val = target_insert_vfork_catchpoint (PIDGET (inferior_ptid)); + target_insert_vfork_catchpoint (PIDGET (inferior_ptid)); break; case bp_catch_exec: - val = target_insert_exec_catchpoint (PIDGET (inferior_ptid)); + target_insert_exec_catchpoint (PIDGET (inferior_ptid)); break; default: - internal_error (__FILE__, __LINE__, "unknown breakpoint type"); + internal_error (__FILE__, __LINE__, _("unknown breakpoint type")); break; } - - if (val < 0) - throw_exception (RETURN_ERROR); - - return 0; } /* Helper routine: free the value chain for a breakpoint (watchpoint). */ @@ -757,7 +743,7 @@ static void free_valchain (struct bp_location *b) the next time the watchpoint is inserted. */ for (v = b->owner->val_chain; v; v = n) { - n = v->next; + n = value_next (v); value_free (v); } b->owner->val_chain = NULL; @@ -812,7 +798,7 @@ insert_bp_location (struct bp_location *bpt, so we must try to set a breakpoint at the LMA. This will not work for a hardware breakpoint. */ if (bpt->loc_type == bp_loc_hardware_breakpoint) - warning ("hardware breakpoint %d not supported in overlay!\n", + warning (_("hardware breakpoint %d not supported in overlay!"), bpt->owner->number); else { @@ -886,7 +872,7 @@ insert_bp_location (struct bp_location *bpt, bpt->owner->number); fprintf_filtered (tmp_error_stream, "Error accessing memory address "); - print_address_numeric (bpt->address, 1, tmp_error_stream); + deprecated_print_address_numeric (bpt->address, 1, tmp_error_stream); fprintf_filtered (tmp_error_stream, ": %s.\n", safe_strerror (val)); } @@ -945,22 +931,22 @@ insert_bp_location (struct bp_location *bpt, laziness to determine what memory GDB actually needed in order to compute the value of the expression. */ v = evaluate_expression (bpt->owner->exp); - VALUE_CONTENTS (v); + value_contents (v); value_release_to_mark (mark); bpt->owner->val_chain = v; bpt->inserted = 1; /* Look at each value on the value chain. */ - for (; v; v = v->next) + for (; v; v = value_next (v)) { /* If it's a memory location, and GDB actually needed its contents to evaluate the expression, then we must watch it. */ if (VALUE_LVAL (v) == lval_memory - && ! VALUE_LAZY (v)) + && ! value_lazy (v)) { - struct type *vtype = check_typedef (VALUE_TYPE (v)); + struct type *vtype = check_typedef (value_type (v)); /* We only watch structs and arrays if user asked for it explicitly, never if they just happen to @@ -972,8 +958,8 @@ insert_bp_location (struct bp_location *bpt, CORE_ADDR addr; int len, type; - addr = VALUE_ADDRESS (v) + VALUE_OFFSET (v); - len = TYPE_LENGTH (VALUE_TYPE (v)); + addr = VALUE_ADDRESS (v) + value_offset (v); + len = TYPE_LENGTH (value_type (v)); type = hw_write; if (bpt->owner->type == bp_read_watchpoint) type = hw_read; @@ -1009,9 +995,10 @@ insert_bp_location (struct bp_location *bpt, } else { - printf_filtered ("Hardware watchpoint %d deleted ", bpt->owner->number); - printf_filtered ("because the program has left the block \n"); - printf_filtered ("in which its expression is valid.\n"); + printf_filtered (_("\ +Hardware watchpoint %d deleted because the program has left the block \n\ +in which its expression is valid.\n"), + bpt->owner->number); if (bpt->owner->related_breakpoint) bpt->owner->related_breakpoint->disposition = disp_del_at_next_stop; bpt->owner->disposition = disp_del_at_next_stop; @@ -1041,7 +1028,7 @@ insert_bp_location (struct bp_location *bpt, bpt->owner->number); fprintf_filtered (tmp_error_stream, "Error accessing memory address "); - print_address_numeric (bpt->address, 1, tmp_error_stream); + deprecated_print_address_numeric (bpt->address, 1, tmp_error_stream); fprintf_filtered (tmp_error_stream, ": %s.\n", safe_strerror (val)); bpt->owner->enable_state = bp_disabled; @@ -1082,13 +1069,11 @@ insert_bp_location (struct bp_location *bpt, || bpt->owner->type == bp_catch_vfork || bpt->owner->type == bp_catch_exec) { - char *prefix = xstrprintf ("warning: inserting catchpoint %d: ", - bpt->owner->number); - struct cleanup *cleanups = make_cleanup (xfree, prefix); - val = catch_exceptions (uiout, insert_catchpoint, bpt->owner, prefix, - RETURN_MASK_ERROR); - do_cleanups (cleanups); - if (val < 0) + struct exception e = catch_exception (uiout, insert_catchpoint, + bpt->owner, RETURN_MASK_ERROR); + exception_fprintf (gdb_stderr, e, "warning: inserting catchpoint %d: ", + bpt->owner->number); + if (e.reason < 0) bpt->owner->enable_state = bp_disabled; else bpt->inserted = 1; @@ -1139,7 +1124,7 @@ insert_breakpoints (void) struct value *val; val = evaluate_expression (b->owner->exp); release_value (val); - if (VALUE_LAZY (val)) + if (value_lazy (val)) value_fetch_lazy (val); b->owner->val = val; } @@ -1381,7 +1366,7 @@ detach_breakpoints (int pid) struct cleanup *old_chain = save_inferior_ptid (); if (pid == PIDGET (inferior_ptid)) - error ("Cannot detach breakpoints of inferior_ptid"); + error (_("Cannot detach breakpoints of inferior_ptid")); /* Set inferior_ptid; remove_breakpoint uses this global. */ inferior_ptid = pid_to_ptid (pid); @@ -1411,7 +1396,7 @@ remove_breakpoint (struct bp_location *b, insertion_state_t is) return 0; if (b->owner->type == bp_none) - warning ("attempted to remove apparently deleted breakpoint #%d?", + warning (_("attempted to remove apparently deleted breakpoint #%d?"), b->owner->number); if (b->loc_type == bp_loc_software_breakpoint @@ -1486,14 +1471,14 @@ remove_breakpoint (struct bp_location *b, insertion_state_t is) b->inserted = (is == mark_inserted); /* Walk down the saved value chain. */ - for (v = b->owner->val_chain; v; v = v->next) + for (v = b->owner->val_chain; v; v = value_next (v)) { /* For each memory reference remove the watchpoint at that address. */ if (VALUE_LVAL (v) == lval_memory - && ! VALUE_LAZY (v)) + && ! value_lazy (v)) { - struct type *vtype = check_typedef (VALUE_TYPE (v)); + struct type *vtype = check_typedef (value_type (v)); if (v == b->owner->val_chain || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT @@ -1502,8 +1487,8 @@ remove_breakpoint (struct bp_location *b, insertion_state_t is) CORE_ADDR addr; int len, type; - addr = VALUE_ADDRESS (v) + VALUE_OFFSET (v); - len = TYPE_LENGTH (VALUE_TYPE (v)); + addr = VALUE_ADDRESS (v) + value_offset (v); + len = TYPE_LENGTH (value_type (v)); type = hw_write; if (b->owner->type == bp_read_watchpoint) type = hw_read; @@ -1519,7 +1504,7 @@ remove_breakpoint (struct bp_location *b, insertion_state_t is) } /* Failure to remove any of the hardware watchpoints comes here. */ if ((is == mark_uninserted) && (b->inserted)) - warning ("Could not remove hardware watchpoint %d.", + warning (_("Could not remove hardware watchpoint %d."), b->owner->number); } else if ((b->owner->type == bp_catch_fork || @@ -1541,7 +1526,7 @@ remove_breakpoint (struct bp_location *b, insertion_state_t is) val = target_remove_exec_catchpoint (PIDGET (inferior_ptid)); break; default: - warning ("Internal error, %s line %d.", __FILE__, __LINE__); + warning (_("Internal error, %s line %d."), __FILE__, __LINE__); break; } if (val) @@ -1659,8 +1644,8 @@ breakpoint_init_inferior (enum inf_context context) /* Don't issue the warning unless it's really needed... */ if (warning_needed && (context != inf_exited)) { - warning ("Exception catchpoints from last run were deleted."); - warning ("You must reinsert them explicitly."); + warning (_("Exception catchpoints from last run were deleted.\n" + "You must reinsert them explicitly.")); warning_needed = 0; } } @@ -1922,8 +1907,7 @@ bpstat_find_step_resume_breakpoint (bpstat bsp) { int current_thread; - if (bsp == NULL) - error ("Internal error (bpstat_find_step_resume_breakpoint)"); + gdb_assert (bsp != NULL); current_thread = pid_to_thread_id (inferior_ptid); @@ -1936,7 +1920,7 @@ bpstat_find_step_resume_breakpoint (bpstat bsp) return bsp->breakpoint_at; } - error ("Internal error (no step_resume breakpoint found)"); + internal_error (__FILE__, __LINE__, _("No step_resume breakpoint found.")); } @@ -2115,60 +2099,58 @@ print_it_typical (bpstat bs) /* Did we stop because the user set the stop_on_solib_events variable? (If so, we report this as a generic, "Stopped due to shlib event" message.) */ - printf_filtered ("Stopped due to shared library event\n"); + printf_filtered (_("Stopped due to shared library event\n")); return PRINT_NOTHING; break; case bp_thread_event: /* Not sure how we will get here. GDB should not stop for these breakpoints. */ - printf_filtered ("Thread Event Breakpoint: gdb should not stop!\n"); + printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n")); return PRINT_NOTHING; break; case bp_overlay_event: /* By analogy with the thread event, GDB should not stop for these. */ - printf_filtered ("Overlay Event Breakpoint: gdb should not stop!\n"); + printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n")); return PRINT_NOTHING; break; case bp_catch_load: annotate_catchpoint (bs->breakpoint_at->number); - printf_filtered ("\nCatchpoint %d (", bs->breakpoint_at->number); - printf_filtered ("loaded"); - printf_filtered (" %s), ", bs->breakpoint_at->triggered_dll_pathname); + printf_filtered (_("\nCatchpoint %d (loaded %s), "), + bs->breakpoint_at->number, + bs->breakpoint_at->triggered_dll_pathname); return PRINT_SRC_AND_LOC; break; case bp_catch_unload: annotate_catchpoint (bs->breakpoint_at->number); - printf_filtered ("\nCatchpoint %d (", bs->breakpoint_at->number); - printf_filtered ("unloaded"); - printf_filtered (" %s), ", bs->breakpoint_at->triggered_dll_pathname); + printf_filtered (_("\nCatchpoint %d (unloaded %s), "), + bs->breakpoint_at->number, + bs->breakpoint_at->triggered_dll_pathname); return PRINT_SRC_AND_LOC; break; case bp_catch_fork: annotate_catchpoint (bs->breakpoint_at->number); - printf_filtered ("\nCatchpoint %d (", bs->breakpoint_at->number); - printf_filtered ("forked"); - printf_filtered (" process %d), ", + printf_filtered (_("\nCatchpoint %d (forked process %d), "), + bs->breakpoint_at->number, bs->breakpoint_at->forked_inferior_pid); return PRINT_SRC_AND_LOC; break; case bp_catch_vfork: annotate_catchpoint (bs->breakpoint_at->number); - printf_filtered ("\nCatchpoint %d (", bs->breakpoint_at->number); - printf_filtered ("vforked"); - printf_filtered (" process %d), ", + printf_filtered (_("\nCatchpoint %d (vforked process %d), "), + bs->breakpoint_at->number, bs->breakpoint_at->forked_inferior_pid); return PRINT_SRC_AND_LOC; break; case bp_catch_exec: annotate_catchpoint (bs->breakpoint_at->number); - printf_filtered ("\nCatchpoint %d (exec'd %s), ", + printf_filtered (_("\nCatchpoint %d (exec'd %s), "), bs->breakpoint_at->number, bs->breakpoint_at->exec_pathname); return PRINT_SRC_AND_LOC; @@ -2179,25 +2161,22 @@ print_it_typical (bpstat bs) (CURRENT_EXCEPTION_KIND == EX_EVENT_CATCH)) { annotate_catchpoint (bs->breakpoint_at->number); - printf_filtered ("\nCatchpoint %d (exception caught), ", + printf_filtered (_("\nCatchpoint %d (exception caught), "), bs->breakpoint_at->number); - printf_filtered ("throw location "); if (CURRENT_EXCEPTION_THROW_PC && CURRENT_EXCEPTION_THROW_LINE) - printf_filtered ("%s:%d", + printf_filtered (_("throw location %s:%d, "), CURRENT_EXCEPTION_THROW_FILE, CURRENT_EXCEPTION_THROW_LINE); else - printf_filtered ("unknown"); + printf_filtered (_("throw location unknown, ")); - printf_filtered (", catch location "); if (CURRENT_EXCEPTION_CATCH_PC && CURRENT_EXCEPTION_CATCH_LINE) - printf_filtered ("%s:%d", + printf_filtered (_("catch location %s:%d\n"), CURRENT_EXCEPTION_CATCH_FILE, CURRENT_EXCEPTION_CATCH_LINE); else - printf_filtered ("unknown"); + printf_filtered (_("catch location unknown\n")); - printf_filtered ("\n"); /* don't bother to print location frame info */ return PRINT_SRC_ONLY; } @@ -2213,25 +2192,22 @@ print_it_typical (bpstat bs) (CURRENT_EXCEPTION_KIND == EX_EVENT_THROW)) { annotate_catchpoint (bs->breakpoint_at->number); - printf_filtered ("\nCatchpoint %d (exception thrown), ", + printf_filtered (_("\nCatchpoint %d (exception thrown), "), bs->breakpoint_at->number); - printf_filtered ("throw location "); if (CURRENT_EXCEPTION_THROW_PC && CURRENT_EXCEPTION_THROW_LINE) - printf_filtered ("%s:%d", + printf_filtered (_("throw location %s:%d, "), CURRENT_EXCEPTION_THROW_FILE, CURRENT_EXCEPTION_THROW_LINE); else - printf_filtered ("unknown"); + printf_filtered (_("throw location unknown, ")); - printf_filtered (", catch location "); if (CURRENT_EXCEPTION_CATCH_PC && CURRENT_EXCEPTION_CATCH_LINE) - printf_filtered ("%s:%d", + printf_filtered (_("catch location %s:%d\n"), CURRENT_EXCEPTION_CATCH_FILE, CURRENT_EXCEPTION_CATCH_LINE); else - printf_filtered ("unknown"); + printf_filtered (_("catch location unknown\n")); - printf_filtered ("\n"); /* don't bother to print location frame info */ return PRINT_SRC_ONLY; } @@ -2370,7 +2346,7 @@ print_bp_stop_message (bpstat bs) default: internal_error (__FILE__, __LINE__, - "print_bp_stop_message: unrecognized enum value"); + _("print_bp_stop_message: unrecognized enum value")); break; } } @@ -2721,7 +2697,7 @@ bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid, int stopped_by_watchpoint) /* FALLTHROUGH */ case 0: /* Error from catch_errors. */ - printf_filtered ("Watchpoint %d deleted.\n", b->number); + printf_filtered (_("Watchpoint %d deleted.\n"), b->number); if (b->related_breakpoint) b->related_breakpoint->disposition = disp_del_at_next_stop; b->disposition = disp_del_at_next_stop; @@ -2739,15 +2715,14 @@ bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid, int stopped_by_watchpoint) struct value *v; int found = 0; - addr = target_stopped_data_address (); - if (addr == 0) + if (!target_stopped_data_address (¤t_target, &addr)) continue; - for (v = b->val_chain; v; v = v->next) + for (v = b->val_chain; v; v = value_next (v)) { if (VALUE_LVAL (v) == lval_memory - && ! VALUE_LAZY (v)) + && ! value_lazy (v)) { - struct type *vtype = check_typedef (VALUE_TYPE (v)); + struct type *vtype = check_typedef (value_type (v)); if (v == b->val_chain || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT @@ -2755,11 +2730,11 @@ bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid, int stopped_by_watchpoint) { CORE_ADDR vaddr; - vaddr = VALUE_ADDRESS (v) + VALUE_OFFSET (v); + vaddr = VALUE_ADDRESS (v) + value_offset (v); /* Exact match not required. Within range is sufficient. */ if (addr >= vaddr && - addr < vaddr + TYPE_LENGTH (VALUE_TYPE (v))) + addr < vaddr + TYPE_LENGTH (value_type (v))) found = 1; } } @@ -2799,7 +2774,7 @@ bpstat_stop_status (CORE_ADDR bp_addr, ptid_t ptid, int stopped_by_watchpoint) /* Can't happen. */ case 0: /* Error from catch_errors. */ - printf_filtered ("Watchpoint %d deleted.\n", b->number); + printf_filtered (_("Watchpoint %d deleted.\n"), b->number); if (b->related_breakpoint) b->related_breakpoint->disposition = disp_del_at_next_stop; b->disposition = disp_del_at_next_stop; @@ -3331,7 +3306,7 @@ print_one_breakpoint (struct breakpoint *b, if (((int) b->type > (sizeof (bptypes) / sizeof (bptypes[0]))) || ((int) b->type != bptypes[(int) b->type].type)) internal_error (__FILE__, __LINE__, - "bptypes table does not describe type #%d.", + _("bptypes table does not describe type #%d."), (int) b->type); ui_out_field_string (uiout, "type", bptypes[(int) b->type].description); @@ -3361,7 +3336,7 @@ print_one_breakpoint (struct breakpoint *b, { case bp_none: internal_error (__FILE__, __LINE__, - "print_one_breakpoint: bp_none encountered\n"); + _("print_one_breakpoint: bp_none encountered\n")); break; case bp_watchpoint: @@ -3611,14 +3586,14 @@ do_captured_breakpoint_query (struct ui_out *uiout, void *data) } enum gdb_rc -gdb_breakpoint_query (struct ui_out *uiout, int bnum) +gdb_breakpoint_query (struct ui_out *uiout, int bnum, char **error_message) { struct captured_breakpoint_query_args args; args.bnum = bnum; /* For the moment we don't trust print_one_breakpoint() to not throw an error. */ - return catch_exceptions (uiout, do_captured_breakpoint_query, &args, - NULL, RETURN_MASK_ALL); + return catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args, + error_message, RETURN_MASK_ALL); } /* Return non-zero if B is user settable (breakpoints, watchpoints, @@ -3772,7 +3747,10 @@ describe_other_breakpoints (CORE_ADDR pc, asection *section) others++; if (others > 0) { - printf_filtered ("Note: breakpoint%s ", (others > 1) ? "s" : ""); + if (others == 1) + printf_filtered (_("Note: breakpoint ")); + else /* if (others == ???) */ + printf_filtered (_("Note: breakpoints ")); ALL_BREAKPOINTS (b) if (b->loc->address == pc) /* address match / overlay match */ if (!b->pending && (!overlay_debugging || b->loc->section == section)) @@ -3790,8 +3768,8 @@ describe_other_breakpoints (CORE_ADDR pc, asection *section) (others > 1) ? "," : ((others == 1) ? " and" : "")); } - printf_filtered ("also set at pc "); - print_address_numeric (pc, 1, gdb_stdout); + printf_filtered (_("also set at pc ")); + deprecated_print_address_numeric (pc, 1, gdb_stdout); printf_filtered (".\n"); } } @@ -3891,8 +3869,8 @@ check_duplicates (struct breakpoint *bpt) /* Permanent breakpoint should always be inserted. */ if (! perm_bp->inserted) internal_error (__FILE__, __LINE__, - "allegedly permanent breakpoint is not " - "actually inserted"); + _("allegedly permanent breakpoint is not " + "actually inserted")); ALL_BP_LOCATIONS (b) if (b != perm_bp) @@ -3907,8 +3885,8 @@ check_duplicates (struct breakpoint *bpt) { if (b->inserted) internal_error (__FILE__, __LINE__, - "another breakpoint was inserted on top of " - "a permanent breakpoint"); + _("another breakpoint was inserted on top of " + "a permanent breakpoint")); b->duplicate = 1; } @@ -3923,13 +3901,13 @@ breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr, char astr1[40]; char astr2[40]; - strcpy (astr1, local_hex_string_custom ((unsigned long) from_addr, "08l")); - strcpy (astr2, local_hex_string_custom ((unsigned long) to_addr, "08l")); + strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8)); + strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8)); if (have_bnum) - warning ("Breakpoint %d address previously adjusted from %s to %s.", + warning (_("Breakpoint %d address previously adjusted from %s to %s."), bnum, astr1, astr2); else - warning ("Breakpoint address adjusted from %s to %s.", astr1, astr2); + warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2); } /* Adjust a breakpoint's address to account for architectural constraints @@ -4023,7 +4001,7 @@ allocate_bp_location (struct breakpoint *bpt, enum bptype bp_type) loc->loc_type = bp_loc_other; break; default: - internal_error (__FILE__, __LINE__, "unknown breakpoint type"); + internal_error (__FILE__, __LINE__, _("unknown breakpoint type")); } /* Add this breakpoint to the end of the chain. */ @@ -4258,7 +4236,7 @@ create_thread_event_breakpoint (CORE_ADDR address) b->enable_state = bp_enabled; /* addr_string has to be used or breakpoint_re_set will delete me. */ - xasprintf (&b->addr_string, "*0x%s", paddr (b->loc->address)); + b->addr_string = xstrprintf ("*0x%s", paddr (b->loc->address)); return b; } @@ -4327,7 +4305,7 @@ resolve_pending_breakpoint (struct breakpoint *b) if (rc == GDB_RC_OK) /* Pending breakpoint has been resolved. */ - printf_filtered ("Pending breakpoint \"%s\" resolved\n", b->addr_string); + printf_filtered (_("Pending breakpoint \"%s\" resolved\n"), b->addr_string); do_cleanups (old_chain); return rc; @@ -4378,16 +4356,56 @@ disable_breakpoints_in_shlibs (int silent) if (!disabled_shlib_breaks) { target_terminal_ours_for_output (); - warning ("Temporarily disabling shared library breakpoints:"); + warning (_("Temporarily disabling shared library breakpoints:")); } disabled_shlib_breaks = 1; - warning ("breakpoint #%d ", b->number); + warning (_("breakpoint #%d "), b->number); } } #endif } } +/* Disable any breakpoints that are in in an unloaded shared library. Only + apply to enabled breakpoints, disabled ones can just stay disabled. */ + +void +disable_breakpoints_in_unloaded_shlib (struct so_list *solib) +{ + struct breakpoint *b; + int disabled_shlib_breaks = 0; + +#if defined (PC_SOLIB) + /* See also: insert_breakpoints, under DISABLE_UNSETTABLE_BREAK. */ + ALL_BREAKPOINTS (b) + { + if ((b->loc->loc_type == bp_loc_hardware_breakpoint + || b->loc->loc_type == bp_loc_software_breakpoint) + && breakpoint_enabled (b) + && !b->loc->duplicate) + { + char *so_name = PC_SOLIB (b->loc->address); + if (so_name + && !strcmp (so_name, solib->so_name)) + { + b->enable_state = bp_shlib_disabled; + /* At this point, we cannot rely on remove_breakpoint + succeeding so we must mark the breakpoint as not inserted + to prevent future errors occurring in remove_breakpoints. */ + b->loc->inserted = 0; + if (!disabled_shlib_breaks) + { + target_terminal_ours_for_output (); + warning (_("Temporarily disabling breakpoints for unloaded shared library \"%s\""), + so_name); + } + disabled_shlib_breaks = 1; + } + } + } +#endif +} + /* Try to reenable any breakpoints in shared libraries. */ void re_enable_breakpoints_in_shlibs (void) @@ -4429,21 +4447,22 @@ solib_load_unload_1 (char *hookname, int tempflag, char *dll_pathname, char **canonical = (char **) NULL; int thread = -1; /* All threads. */ - /* Set a breakpoint on the specified hook. */ - sals = decode_line_1 (&hookname, 1, (struct symtab *) NULL, 0, &canonical, NULL); + /* Set a breakpoint on the specified hook. */ + sals = decode_line_1 (&hookname, 1, (struct symtab *) NULL, + 0, &canonical, NULL); addr_end = hookname; if (sals.nelts == 0) { - warning ("Unable to set a breakpoint on dynamic linker callback."); - warning ("Suggest linking with /opt/langtools/lib/end.o."); - warning ("GDB will be unable to track shl_load/shl_unload calls"); + warning (_("Unable to set a breakpoint on dynamic linker callback.\n" + "Suggest linking with /opt/langtools/lib/end.o.\n" + "GDB will be unable to track shl_load/shl_unload calls.")); return; } if (sals.nelts != 1) { - warning ("Unable to set unique breakpoint on dynamic linker callback."); - warning ("GDB will be unable to track shl_load/shl_unload calls"); + warning (_("Unable to set unique breakpoint on dynamic linker callback.\n" + "GDB will be unable to track shl_load/shl_unload calls.")); return; } @@ -4504,7 +4523,7 @@ void create_solib_unload_event_breakpoint (char *hookname, int tempflag, char *dll_pathname, char *cond_string) { - solib_load_unload_1 (hookname,tempflag, dll_pathname, + solib_load_unload_1 (hookname, tempflag, dll_pathname, cond_string, bp_catch_unload); } @@ -4727,7 +4746,7 @@ mention (struct breakpoint *b) switch (b->type) { case bp_none: - printf_filtered ("(apparently deleted?) Eventpoint %d: ", b->number); + printf_filtered (_("(apparently deleted?) Eventpoint %d: "), b->number); break; case bp_watchpoint: ui_out_text (uiout, "Watchpoint "); @@ -4771,7 +4790,7 @@ mention (struct breakpoint *b) say_where = 0; break; } - printf_filtered ("Breakpoint %d", b->number); + printf_filtered (_("Breakpoint %d"), b->number); say_where = 1; break; case bp_hardware_breakpoint: @@ -4780,12 +4799,12 @@ mention (struct breakpoint *b) say_where = 0; break; } - printf_filtered ("Hardware assisted breakpoint %d", b->number); + printf_filtered (_("Hardware assisted breakpoint %d"), b->number); say_where = 1; break; case bp_catch_load: case bp_catch_unload: - printf_filtered ("Catchpoint %d (%s %s)", + printf_filtered (_("Catchpoint %d (%s %s)"), b->number, (b->type == bp_catch_load) ? "load" : "unload", (b->dll_pathname != NULL) ? @@ -4793,17 +4812,17 @@ mention (struct breakpoint *b) break; case bp_catch_fork: case bp_catch_vfork: - printf_filtered ("Catchpoint %d (%s)", + printf_filtered (_("Catchpoint %d (%s)"), b->number, (b->type == bp_catch_fork) ? "fork" : "vfork"); break; case bp_catch_exec: - printf_filtered ("Catchpoint %d (exec)", + printf_filtered (_("Catchpoint %d (exec)"), b->number); break; case bp_catch_catch: case bp_catch_throw: - printf_filtered ("Catchpoint %d (%s)", + printf_filtered (_("Catchpoint %d (%s)"), b->number, (b->type == bp_catch_catch) ? "catch" : "throw"); break; @@ -4824,16 +4843,18 @@ mention (struct breakpoint *b) if (say_where) { + /* i18n: cagney/2005-02-11: Below needs to be merged into a + single string. */ if (b->pending) { - printf_filtered (" (%s) pending.", b->addr_string); + printf_filtered (_(" (%s) pending."), b->addr_string); } else { if (addressprint || b->source_file == NULL) { printf_filtered (" at "); - print_address_numeric (b->loc->address, 1, gdb_stdout); + deprecated_print_address_numeric (b->loc->address, 1, gdb_stdout); } if (b->source_file) printf_filtered (": file %s, line %d.", @@ -4876,9 +4897,9 @@ create_breakpoints (struct symtabs_and_lines sals, char **addr_string, TARGET_CAN_USE_HARDWARE_WATCHPOINT (bp_hardware_breakpoint, i + sals.nelts, 0); if (target_resources_ok == 0) - error ("No hardware breakpoint support in the target."); + error (_("No hardware breakpoint support in the target.")); else if (target_resources_ok < 0) - error ("Hardware breakpoints used exceeds limit."); + error (_("Hardware breakpoints used exceeds limit.")); } /* Now set all the breakpoints. */ @@ -4902,7 +4923,7 @@ create_breakpoints (struct symtabs_and_lines sals, char **addr_string, else /* addr_string has to be used or breakpoint_re_set will delete me. */ - xasprintf (&b->addr_string, "*0x%s", paddr (b->loc->address)); + b->addr_string = xstrprintf ("*0x%s", paddr (b->loc->address)); b->cond_string = cond_string[i]; b->ignore_count = ignore_count; b->enable_state = bp_enabled; @@ -4920,7 +4941,7 @@ create_breakpoints (struct symtabs_and_lines sals, char **addr_string, b->cond_string = savestring (arg, strlen (arg)); b->cond = parse_exp_1 (&arg, block_for_pc (b->loc->address), 0); if (*arg) - error ("Junk at end of pending breakpoint condition expression"); + error (_("Junk at end of pending breakpoint condition expression")); } /* If there are commands associated with the breakpoint, they should be copied too. */ @@ -4968,7 +4989,7 @@ parse_breakpoint_sals (char **address, sals->nelts = 1; } else - error ("No default breakpoint address now."); + error (_("No default breakpoint address now.")); } else { @@ -5037,24 +5058,22 @@ breakpoint_sals_to_pc (struct symtabs_and_lines *sals, if (DEPRECATED_PC_REQUIRES_RUN_BEFORE_USE (sals->sals[i].pc)) { if (address == NULL) - error ("Cannot break without a running program."); + error (_("Cannot break without a running program.")); else - error ("Cannot break on %s without a running program.", + error (_("Cannot break on %s without a running program."), address); } #endif } } -static int +static void do_captured_parse_breakpoint (struct ui_out *ui, void *data) { struct captured_parse_breakpoint_args *args = data; parse_breakpoint_sals (args->arg_p, args->sals_p, args->addr_string_p, args->not_found_ptr); - - return GDB_RC_OK; } /* Set a breakpoint according to ARG (function, linenum or *address) @@ -5067,6 +5086,7 @@ do_captured_parse_breakpoint (struct ui_out *ui, void *data) static int break_command_1 (char *arg, int flag, int from_tty, struct breakpoint *pending_bp) { + struct exception e; int tempflag, hardwareflag; struct symtabs_and_lines sals; struct expression **cond = 0; @@ -5079,7 +5099,7 @@ break_command_1 (char *arg, int flag, int from_tty, struct breakpoint *pending_b struct cleanup *old_chain; struct cleanup *breakpoint_chain = NULL; struct captured_parse_breakpoint_args parse_args; - int i, rc; + int i; int pending = 0; int thread = -1; int ignore_count = 0; @@ -5097,51 +5117,57 @@ break_command_1 (char *arg, int flag, int from_tty, struct breakpoint *pending_b parse_args.addr_string_p = &addr_string; parse_args.not_found_ptr = ¬_found; - rc = catch_exceptions_with_msg (uiout, do_captured_parse_breakpoint, - &parse_args, NULL, &err_msg, - RETURN_MASK_ALL); + e = catch_exception (uiout, do_captured_parse_breakpoint, + &parse_args, RETURN_MASK_ALL); /* If caller is interested in rc value from parse, set value. */ - - if (rc != GDB_RC_OK) + switch (e.reason) { - /* Check for file or function not found. */ - if (not_found) + case RETURN_QUIT: + exception_print (gdb_stderr, e); + return e.reason; + case RETURN_ERROR: + switch (e.error) { - /* If called to resolve pending breakpoint, just return error code. */ + case NOT_FOUND_ERROR: + /* If called to resolve pending breakpoint, just return + error code. */ if (pending_bp) - return rc; + return e.reason; - error_output_message (NULL, err_msg); - xfree (err_msg); + exception_print (gdb_stderr, e); - /* If pending breakpoint support is turned off, throw error. */ + /* If pending breakpoint support is turned off, throw + error. */ if (pending_break_support == AUTO_BOOLEAN_FALSE) - throw_exception (RETURN_ERROR); + deprecated_throw_reason (RETURN_ERROR); - /* If pending breakpoint support is auto query and the user selects - no, then simply return the error code. */ + /* If pending breakpoint support is auto query and the user + selects no, then simply return the error code. */ if (pending_break_support == AUTO_BOOLEAN_AUTO && !nquery ("Make breakpoint pending on future shared library load? ")) - return rc; + return e.reason; - /* At this point, either the user was queried about setting a - pending breakpoint and selected yes, or pending breakpoint - behavior is on and thus a pending breakpoint is defaulted - on behalf of the user. */ + /* At this point, either the user was queried about setting + a pending breakpoint and selected yes, or pending + breakpoint behavior is on and thus a pending breakpoint + is defaulted on behalf of the user. */ copy_arg = xstrdup (addr_start); addr_string = ©_arg; sals.nelts = 1; sals.sals = &pending_sal; pending_sal.pc = 0; pending = 1; + break; + default: + exception_print (gdb_stderr, e); + return e.reason; } - else - return rc; + default: + if (!sals.nelts) + return GDB_RC_FAIL; } - else if (!sals.nelts) - return GDB_RC_FAIL; /* Create a chain of things that always need to be cleaned up. */ old_chain = make_cleanup (null_cleanup, 0); @@ -5227,12 +5253,12 @@ break_command_1 (char *arg, int flag, int from_tty, struct breakpoint *pending_b tmptok = tok; thread = strtol (tok, &tok, 0); if (tok == tmptok) - error ("Junk after thread keyword."); + error (_("Junk after thread keyword.")); if (!valid_thread_id (thread)) - error ("Unknown thread %d\n", thread); + error (_("Unknown thread %d."), thread); } else - error ("Junk at end of arguments."); + error (_("Junk at end of arguments.")); } } create_breakpoints (sals, addr_string, cond, cond_string, @@ -5269,10 +5295,8 @@ break_command_1 (char *arg, int flag, int from_tty, struct breakpoint *pending_b } if (sals.nelts > 1) - { - warning ("Multiple breakpoints were set."); - warning ("Use the \"delete\" command to delete unwanted breakpoints."); - } + warning (_("Multiple breakpoints were set.\n" + "Use the \"delete\" command to delete unwanted breakpoints.")); /* That's it. Discard the cleanups for data inserted into the breakpoint. */ discard_cleanups (breakpoint_chain); @@ -5296,7 +5320,7 @@ struct captured_breakpoint_args }; static int -do_captured_breakpoint (void *data) +do_captured_breakpoint (struct ui_out *uiout, void *data) { struct captured_breakpoint_args *args = data; struct symtabs_and_lines sals; @@ -5357,7 +5381,7 @@ do_captured_breakpoint (void *data) address. That way cleanups can take care of freeing any memory. */ if (*address_end != '\0') - error ("Garbage %s following breakpoint address", address_end); + error (_("Garbage %s following breakpoint address"), address_end); /* Resolve all line numbers to PC's. */ breakpoint_sals_to_pc (&sals, args->address); @@ -5371,7 +5395,7 @@ do_captured_breakpoint (void *data) char *tok = args->condition; cond[i] = parse_exp_1 (&tok, block_for_pc (sals.sals[i].pc), 0); if (*tok != '\0') - error ("Garbage %s follows condition", tok); + error (_("Garbage %s follows condition"), tok); make_cleanup (xfree, cond[i]); cond_string[i] = xstrdup (args->condition); } @@ -5394,7 +5418,8 @@ do_captured_breakpoint (void *data) enum gdb_rc gdb_breakpoint (char *address, char *condition, int hardwareflag, int tempflag, - int thread, int ignore_count) + int thread, int ignore_count, + char **error_message) { struct captured_breakpoint_args args; args.address = address; @@ -5403,171 +5428,8 @@ gdb_breakpoint (char *address, char *condition, args.tempflag = tempflag; args.thread = thread; args.ignore_count = ignore_count; - return catch_errors (do_captured_breakpoint, &args, - NULL, RETURN_MASK_ALL); -} - - -static void -break_at_finish_at_depth_command_1 (char *arg, int flag, int from_tty) -{ - struct frame_info *frame; - CORE_ADDR low, high, selected_pc = 0; - char *extra_args = NULL; - char *level_arg; - int extra_args_len = 0, if_arg = 0; - - if (!arg || - (arg[0] == 'i' && arg[1] == 'f' && (arg[2] == ' ' || arg[2] == '\t'))) - { - - if (default_breakpoint_valid) - { - if (deprecated_selected_frame) - { - selected_pc = get_frame_pc (deprecated_selected_frame); - if (arg) - if_arg = 1; - } - else - error ("No selected frame."); - } - else - error ("No default breakpoint address now."); - } - else - { - extra_args = strchr (arg, ' '); - if (extra_args) - { - extra_args++; - extra_args_len = strlen (extra_args); - level_arg = (char *) xmalloc (extra_args - arg); - strncpy (level_arg, arg, extra_args - arg - 1); - level_arg[extra_args - arg - 1] = '\0'; - } - else - { - level_arg = (char *) xmalloc (strlen (arg) + 1); - strcpy (level_arg, arg); - } - - frame = parse_frame_specification (level_arg); - if (frame) - selected_pc = get_frame_pc (frame); - else - selected_pc = 0; - } - if (if_arg) - { - extra_args = arg; - extra_args_len = strlen (arg); - } - - if (selected_pc) - { - if (find_pc_partial_function (selected_pc, (char **) NULL, &low, &high)) - { - char *addr_string; - if (extra_args_len) - addr_string = xstrprintf ("*0x%s %s", paddr_nz (high), extra_args); - else - addr_string = xstrprintf ("*0x%s", paddr_nz (high)); - break_command_1 (addr_string, flag, from_tty, NULL); - xfree (addr_string); - } - else - error ("No function contains the specified address"); - } - else - error ("Unable to set breakpoint at procedure exit"); -} - - -static void -break_at_finish_command_1 (char *arg, int flag, int from_tty) -{ - char *addr_string, *break_string, *beg_addr_string; - CORE_ADDR low, high; - struct symtabs_and_lines sals; - struct symtab_and_line sal; - struct cleanup *old_chain; - char *extra_args = NULL; - int extra_args_len = 0; - int i, if_arg = 0; - - if (!arg || - (arg[0] == 'i' && arg[1] == 'f' && (arg[2] == ' ' || arg[2] == '\t'))) - { - if (default_breakpoint_valid) - { - if (deprecated_selected_frame) - { - addr_string = xstrprintf ("*0x%s", - paddr_nz (get_frame_pc (deprecated_selected_frame))); - if (arg) - if_arg = 1; - } - else - error ("No selected frame."); - } - else - error ("No default breakpoint address now."); - } - else - { - addr_string = (char *) xmalloc (strlen (arg) + 1); - strcpy (addr_string, arg); - } - - if (if_arg) - { - extra_args = arg; - extra_args_len = strlen (arg); - } - else if (arg) - { - /* get the stuff after the function name or address */ - extra_args = strchr (arg, ' '); - if (extra_args) - { - extra_args++; - extra_args_len = strlen (extra_args); - } - } - - sals.sals = NULL; - sals.nelts = 0; - - beg_addr_string = addr_string; - sals = decode_line_1 (&addr_string, 1, (struct symtab *) NULL, 0, - (char ***) NULL, NULL); - - xfree (beg_addr_string); - old_chain = make_cleanup (xfree, sals.sals); - for (i = 0; (i < sals.nelts); i++) - { - sal = sals.sals[i]; - if (find_pc_partial_function (sal.pc, (char **) NULL, &low, &high)) - { - break_string; - if (extra_args_len) - break_string = xstrprintf ("*0x%s %s", paddr_nz (high), - extra_args); - else - break_string = xstrprintf ("*0x%s", paddr_nz (high)); - break_command_1 (break_string, flag, from_tty, NULL); - xfree (break_string); - } - else - error ("No function contains the specified address"); - } - if (sals.nelts > 1) - { - warning ("Multiple breakpoints were set.\n"); - warning ("Use the \"delete\" command to delete unwanted breakpoints."); - } - do_cleanups (old_chain); + return catch_exceptions_with_msg (uiout, do_captured_breakpoint, &args, + error_message, RETURN_MASK_ALL); } @@ -5581,7 +5443,7 @@ resolve_sal_pc (struct symtab_and_line *sal) if (sal->pc == 0 && sal->symtab != NULL) { if (!find_line_pc (sal->symtab, sal->line, &pc)) - error ("No line %d in file \"%s\".", + error (_("No line %d in file \"%s\"."), sal->line, sal->symtab->filename); sal->pc = pc; } @@ -5627,29 +5489,11 @@ break_command (char *arg, int from_tty) } void -break_at_finish_command (char *arg, int from_tty) -{ - break_at_finish_command_1 (arg, 0, from_tty); -} - -void -break_at_finish_at_depth_command (char *arg, int from_tty) -{ - break_at_finish_at_depth_command_1 (arg, 0, from_tty); -} - -void tbreak_command (char *arg, int from_tty) { break_command_1 (arg, BP_TEMPFLAG, from_tty, NULL); } -void -tbreak_at_finish_command (char *arg, int from_tty) -{ - break_at_finish_command_1 (arg, BP_TEMPFLAG, from_tty); -} - static void hbreak_command (char *arg, int from_tty) { @@ -5665,9 +5509,9 @@ thbreak_command (char *arg, int from_tty) static void stop_command (char *arg, int from_tty) { - printf_filtered ("Specify the type of breakpoint to set.\n\ + printf_filtered (_("Specify the type of breakpoint to set.\n\ Usage: stop in \n\ - stop at \n"); + stop at \n")); } static void @@ -5698,7 +5542,7 @@ stopin_command (char *arg, int from_tty) } if (badInput) - printf_filtered ("Usage: stop in \n"); + printf_filtered (_("Usage: stop in \n")); else break_command_1 (arg, 0, from_tty, NULL); } @@ -5730,7 +5574,7 @@ stopat_command (char *arg, int from_tty) } if (badInput) - printf_filtered ("Usage: stop at \n"); + printf_filtered (_("Usage: stop at \n")); else break_command_1 (arg, 0, from_tty, NULL); } @@ -5770,7 +5614,7 @@ watch_command_1 (char *arg, int accessflag, int from_tty) mark = value_mark (); val = evaluate_expression (exp); release_value (val); - if (VALUE_LAZY (val)) + if (value_lazy (val)) value_fetch_lazy (val); tok = arg; @@ -5789,7 +5633,7 @@ watch_command_1 (char *arg, int accessflag, int from_tty) cond_end = tok; } if (*tok) - error ("Junk at end of command."); + error (_("Junk at end of command.")); if (accessflag == hw_read) bp_type = bp_read_watchpoint; @@ -5800,7 +5644,7 @@ watch_command_1 (char *arg, int accessflag, int from_tty) mem_cnt = can_use_hardware_watchpoint (val); if (mem_cnt == 0 && bp_type != bp_hardware_watchpoint) - error ("Expression cannot be implemented with read/access watchpoint."); + error (_("Expression cannot be implemented with read/access watchpoint.")); if (mem_cnt != 0) { i = hw_watchpoint_used_count (bp_type, &other_type_used); @@ -5808,10 +5652,10 @@ watch_command_1 (char *arg, int accessflag, int from_tty) TARGET_CAN_USE_HARDWARE_WATCHPOINT (bp_type, i + mem_cnt, other_type_used); if (target_resources_ok == 0 && bp_type != bp_hardware_watchpoint) - error ("Target does not support this type of hardware watchpoint."); + error (_("Target does not support this type of hardware watchpoint.")); if (target_resources_ok < 0 && bp_type != bp_hardware_watchpoint) - error ("Target can only support one kind of HW watchpoint at a time."); + error (_("Target can only support one kind of HW watchpoint at a time.")); } #if defined(HPUXHPPA) @@ -5831,7 +5675,7 @@ watch_command_1 (char *arg, int accessflag, int from_tty) set watches after getting the program started. */ if (!target_has_execution) { - warning ("can't do that without a running program; try \"break main\", \"run\" first"); + warning (_("can't do that without a running program; try \"break main\"), \"run\" first"); return; } #endif /* HPUXHPPA */ @@ -5940,11 +5784,11 @@ can_use_hardware_watchpoint (struct value *v) function calls are special in any way. So this function may not notice that an expression involving an inferior function call can't be watched with hardware watchpoints. FIXME. */ - for (; v; v = v->next) + for (; v; v = value_next (v)) { if (VALUE_LVAL (v) == lval_memory) { - if (VALUE_LAZY (v)) + if (value_lazy (v)) /* A lazy memory lvalue is one that GDB never needed to fetch; we either just used its address (e.g., `a' in `a.b') or we never needed it at all (e.g., `a' in `a,b'). */ @@ -5953,7 +5797,7 @@ can_use_hardware_watchpoint (struct value *v) { /* Ahh, memory we actually used! Check if we can cover it with hardware watchpoints. */ - struct type *vtype = check_typedef (VALUE_TYPE (v)); + struct type *vtype = check_typedef (value_type (v)); /* We only watch structs and arrays if user asked for it explicitly, never if they just happen to appear in a @@ -5962,8 +5806,8 @@ can_use_hardware_watchpoint (struct value *v) || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT && TYPE_CODE (vtype) != TYPE_CODE_ARRAY)) { - CORE_ADDR vaddr = VALUE_ADDRESS (v) + VALUE_OFFSET (v); - int len = TYPE_LENGTH (VALUE_TYPE (v)); + CORE_ADDR vaddr = VALUE_ADDRESS (v) + value_offset (v); + int len = TYPE_LENGTH (value_type (v)); if (!TARGET_REGION_OK_FOR_HW_WATCHPOINT (vaddr, len)) return 0; @@ -5972,9 +5816,10 @@ can_use_hardware_watchpoint (struct value *v) } } } - else if (v->lval != not_lval && v->modifiable == 0) + else if (VALUE_LVAL (v) != not_lval + && deprecated_value_modifiable (v) == 0) return 0; /* ??? What does this represent? */ - else if (v->lval == lval_register) + else if (VALUE_LVAL (v) == lval_register) return 0; /* cannot watch a register with a HW watchpoint */ } @@ -6060,13 +5905,13 @@ until_break_command (char *arg, int from_tty, int anywhere) 0, (char ***) NULL, NULL); if (sals.nelts != 1) - error ("Couldn't get information on specified line."); + error (_("Couldn't get information on specified line.")); sal = sals.sals[0]; xfree (sals.sals); /* malloc'd, so freed */ if (*arg) - error ("Junk at end of arguments."); + error (_("Junk at end of arguments.")); resolve_sal_pc (&sal); @@ -6081,7 +5926,7 @@ until_break_command (char *arg, int from_tty, int anywhere) get_frame_id (deprecated_selected_frame), bp_until); - if (!event_loop_p || !target_can_async_p ()) + if (!target_can_async_p ()) old_chain = make_cleanup_delete_breakpoint (breakpoint); else old_chain = make_exec_cleanup_delete_breakpoint (breakpoint); @@ -6093,7 +5938,7 @@ until_break_command (char *arg, int from_tty, int anywhere) where we get a chance to do that is in fetch_inferior_event, so we must set things up for that. */ - if (event_loop_p && target_can_async_p ()) + if (target_can_async_p ()) { /* In this case the arg for the continuation is just the point in the exec_cleanups chain from where to start doing @@ -6115,7 +5960,7 @@ until_break_command (char *arg, int from_tty, int anywhere) sal.pc = get_frame_pc (prev_frame); breakpoint = set_momentary_breakpoint (sal, get_frame_id (prev_frame), bp_until); - if (!event_loop_p || !target_can_async_p ()) + if (!target_can_async_p ()) make_cleanup_delete_breakpoint (breakpoint); else make_exec_cleanup_delete_breakpoint (breakpoint); @@ -6124,7 +5969,7 @@ until_break_command (char *arg, int from_tty, int anywhere) proceed (-1, TARGET_SIGNAL_DEFAULT, 0); /* Do the cleanups now, anly if we are not running asynchronously, of if we are, but the target is still synchronous. */ - if (!event_loop_p || !target_can_async_p ()) + if (!target_can_async_p ()) do_cleanups (old_chain); } @@ -6258,7 +6103,7 @@ catch_fork_command_1 (catch_fork_kind fork_kind, char *arg, int tempflag, cond_string = ep_parse_optional_if_clause (&arg); if ((*arg != '\0') && !isspace (*arg)) - error ("Junk at end of arguments."); + error (_("Junk at end of arguments.")); /* If this target supports it, create a fork or vfork catchpoint and enable reporting of such events. */ @@ -6271,7 +6116,7 @@ catch_fork_command_1 (catch_fork_kind fork_kind, char *arg, int tempflag, create_vfork_event_catchpoint (tempflag, cond_string); break; default: - error ("unsupported or unknown fork kind; cannot catch it"); + error (_("unsupported or unknown fork kind; cannot catch it")); break; } } @@ -6291,7 +6136,7 @@ catch_exec_command_1 (char *arg, int tempflag, int from_tty) cond_string = ep_parse_optional_if_clause (&arg); if ((*arg != '\0') && !isspace (*arg)) - error ("Junk at end of arguments."); + error (_("Junk at end of arguments.")); /* If this target supports it, create an exec catchpoint and enable reporting of such events. */ @@ -6331,7 +6176,7 @@ catch_load_command_1 (char *arg, int tempflag, int from_tty) } if ((*arg != '\0') && !isspace (*arg)) - error ("Junk at end of arguments."); + error (_("Junk at end of arguments.")); /* Create a load breakpoint that only triggers when a load of the specified dll (or any dll, if no pathname was specified) @@ -6373,7 +6218,7 @@ catch_unload_command_1 (char *arg, int tempflag, int from_tty) } if ((*arg != '\0') && !isspace (*arg)) - error ("Junk at end of arguments."); + error (_("Junk at end of arguments.")); /* Create an unload breakpoint that only triggers when an unload of the specified dll (or any dll, if no pathname was specified) @@ -6408,7 +6253,7 @@ create_exception_catchpoint (int tempflag, char *cond_string, bptype = bp_catch_catch; break; default: /* error condition */ - error ("Internal error -- invalid catchpoint kind"); + error (_("Internal error -- invalid catchpoint kind")); } b = set_raw_breakpoint (*sal, bptype); @@ -6430,10 +6275,10 @@ print_exception_catchpoint (struct breakpoint *b) annotate_catchpoint (b->number); if (strstr (b->addr_string, "throw") != NULL) - printf_filtered ("\nCatchpoint %d (exception thrown)\n", + printf_filtered (_("\nCatchpoint %d (exception thrown)\n"), b->number); else - printf_filtered ("\nCatchpoint %d (exception caught)\n", + printf_filtered (_("\nCatchpoint %d (exception caught)\n"), b->number); return PRINT_SRC_AND_LOC; @@ -6459,9 +6304,9 @@ static void print_mention_exception_catchpoint (struct breakpoint *b) { if (strstr (b->addr_string, "throw") != NULL) - printf_filtered ("Catchpoint %d (throw)", b->number); + printf_filtered (_("Catchpoint %d (throw)"), b->number); else - printf_filtered ("Catchpoint %d (catch)", b->number); + printf_filtered (_("Catchpoint %d (catch)"), b->number); } static struct breakpoint_ops gnu_v3_exception_catchpoint_ops = { @@ -6522,11 +6367,11 @@ catch_exception_command_1 (enum exception_event_kind ex_event, char *arg, cond_string = ep_parse_optional_if_clause (&arg); if ((*arg != '\0') && !isspace (*arg)) - error ("Junk at end of arguments."); + error (_("Junk at end of arguments.")); if ((ex_event != EX_EVENT_THROW) && (ex_event != EX_EVENT_CATCH)) - error ("Unsupported or unknown exception event; cannot catch it"); + error (_("Unsupported or unknown exception event; cannot catch it")); if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty)) return; @@ -6544,7 +6389,7 @@ catch_exception_command_1 (enum exception_event_kind ex_event, char *arg, return; /* something went wrong with setting up callbacks */ } - warning ("Unsupported with this platform/compiler combination."); + warning (_("Unsupported with this platform/compiler combination.")); } /* Cover routine to allow wrapping target_enable_exception_catchpoints @@ -6584,18 +6429,18 @@ catch_command_1 (char *arg, int tempflag, int from_tty) /* catch_throw_command_1 (arg1_start, tempflag, from_tty); */ /* return; */ /* Now, this is not allowed */ - error ("Catch requires an event name."); + error (_("Catch requires an event name.")); } arg1_end = ep_find_event_name_end (arg1_start); if (arg1_end == NULL) - error ("catch requires an event"); + error (_("catch requires an event")); arg1_length = arg1_end + 1 - arg1_start; /* Try to match what we found against known event names. */ if (strncmp (arg1_start, "signal", arg1_length) == 0) { - error ("Catch of signal not yet implemented"); + error (_("Catch of signal not yet implemented")); } else if (strncmp (arg1_start, "catch", arg1_length) == 0) { @@ -6609,23 +6454,23 @@ catch_command_1 (char *arg, int tempflag, int from_tty) } else if (strncmp (arg1_start, "thread_start", arg1_length) == 0) { - error ("Catch of thread_start not yet implemented"); + error (_("Catch of thread_start not yet implemented")); } else if (strncmp (arg1_start, "thread_exit", arg1_length) == 0) { - error ("Catch of thread_exit not yet implemented"); + error (_("Catch of thread_exit not yet implemented")); } else if (strncmp (arg1_start, "thread_join", arg1_length) == 0) { - error ("Catch of thread_join not yet implemented"); + error (_("Catch of thread_join not yet implemented")); } else if (strncmp (arg1_start, "start", arg1_length) == 0) { - error ("Catch of start not yet implemented"); + error (_("Catch of start not yet implemented")); } else if (strncmp (arg1_start, "exit", arg1_length) == 0) { - error ("Catch of exit not yet implemented"); + error (_("Catch of exit not yet implemented")); } else if (strncmp (arg1_start, "fork", arg1_length) == 0) { @@ -6649,7 +6494,7 @@ catch_command_1 (char *arg, int tempflag, int from_tty) } else if (strncmp (arg1_start, "stop", arg1_length) == 0) { - error ("Catch of stop not yet implemented"); + error (_("Catch of stop not yet implemented")); } /* This doesn't appear to be an event name */ @@ -6660,7 +6505,7 @@ catch_command_1 (char *arg, int tempflag, int from_tty) as the name of an exception */ /* catch_throw_command_1 (arg1_start, tempflag, from_tty); */ /* Now this is not allowed */ - error ("Unknown event kind specified for catch"); + error (_("Unknown event kind specified for catch")); } } @@ -6718,7 +6563,7 @@ clear_command (char *arg, int from_tty) sal.symtab = default_breakpoint_symtab; sal.pc = default_breakpoint_address; if (sal.symtab == 0) - error ("No source file specified."); + error (_("No source file specified.")); sals.sals[0] = sal; sals.nelts = 1; @@ -6796,15 +6641,20 @@ clear_command (char *arg, int from_tty) if (found == 0) { if (arg) - error ("No breakpoint at %s.", arg); + error (_("No breakpoint at %s."), arg); else - error ("No breakpoint at this line."); + error (_("No breakpoint at this line.")); } if (found->next) from_tty = 1; /* Always report if deleted more than one */ if (from_tty) - printf_unfiltered ("Deleted breakpoint%s ", found->next ? "s" : ""); + { + if (!found->next) + printf_unfiltered (_("Deleted breakpoint ")); + else + printf_unfiltered (_("Deleted breakpoints ")); + } breakpoints_changed (); while (found) { @@ -6849,9 +6699,7 @@ delete_breakpoint (struct breakpoint *bpt) bpstat bs; struct bp_location *loc; - if (bpt == NULL) - error ("Internal error (attempted to delete a NULL breakpoint)"); - + gdb_assert (bpt != NULL); /* Has this bp already been deleted? This can happen because multiple lists can hold pointers to bp's. bpstat lists are especial culprits. @@ -6865,7 +6713,7 @@ delete_breakpoint (struct breakpoint *bpt) A real solution to this problem might involve reference counts in bp's, and/or giving them pointers back to their referencing bpstat's, and teaching delete_breakpoint to only free a bp's storage when no more - references were extent. A cheaper bandaid was chosen. */ + references were extent. A cheaper bandaid was chosen. */ if (bpt->type == bp_none) return; @@ -6889,7 +6737,7 @@ delete_breakpoint (struct breakpoint *bpt) isn't actually running. target_enable_exception_callback for a null target ops vector gives an undesirable error message, so we check here and avoid it. Since currently (1997-09-17) only HP-UX aCC's - exceptions are supported in this way, it's OK for now. FIXME */ + exceptions are supported in this way, it's OK for now. FIXME */ if (ep_is_exception_catchpoint (bpt) && target_has_execution) { /* Format possible error msg */ @@ -6948,8 +6796,8 @@ delete_breakpoint (struct breakpoint *bpt) always be the only one inserted. */ if (b->enable_state == bp_permanent) internal_error (__FILE__, __LINE__, - "another breakpoint was inserted on top of " - "a permanent breakpoint"); + _("another breakpoint was inserted on top of " + "a permanent breakpoint")); if (b->type == bp_hardware_breakpoint) val = target_insert_hw_breakpoint (b->loc->address, b->loc->shadow_contents); @@ -6974,7 +6822,7 @@ delete_breakpoint (struct breakpoint *bpt) { fprintf_unfiltered (tmp_error_stream, "Cannot insert breakpoint %d.\n", b->number); fprintf_filtered (tmp_error_stream, "Error accessing memory address "); - print_address_numeric (b->loc->address, 1, tmp_error_stream); + deprecated_print_address_numeric (b->loc->address, 1, tmp_error_stream); fprintf_filtered (tmp_error_stream, ": %s.\n", safe_strerror (val)); } @@ -7072,7 +6920,7 @@ delete_command (char *arg, int from_tty) /* Ask user only if there are some breakpoints to delete. */ if (!from_tty - || (breaks_to_delete && query ("Delete all breakpoints? "))) + || (breaks_to_delete && query (_("Delete all breakpoints? ")))) { ALL_BREAKPOINTS_SAFE (b, temp) { @@ -7100,6 +6948,8 @@ breakpoint_re_set_one (void *bint) struct breakpoint *b = (struct breakpoint *) bint; struct value *mark; int i; + int not_found; + int *not_found_ptr = NULL; struct symtabs_and_lines sals; char *s; enum enable_state save_enable; @@ -7107,7 +6957,7 @@ breakpoint_re_set_one (void *bint) switch (b->type) { case bp_none: - warning ("attempted to reset apparently deleted breakpoint #%d?", + warning (_("attempted to reset apparently deleted breakpoint #%d?"), b->number); return 0; case bp_breakpoint: @@ -7150,11 +7000,19 @@ breakpoint_re_set_one (void *bint) save_enable = b->enable_state; if (b->enable_state != bp_shlib_disabled) b->enable_state = bp_disabled; + else + /* If resetting a shlib-disabled breakpoint, we don't want to + see an error message if it is not found since we will expect + this to occur until the shared library is finally reloaded. + We accomplish this by giving decode_line_1 a pointer to use + for silent notification that the symbol is not found. */ + not_found_ptr = ¬_found; set_language (b->language); input_radix = b->input_radix; s = b->addr_string; - sals = decode_line_1 (&s, 1, (struct symtab *) NULL, 0, (char ***) NULL, NULL); + sals = decode_line_1 (&s, 1, (struct symtab *) NULL, 0, (char ***) NULL, + not_found_ptr); for (i = 0; i < sals.nelts; i++) { resolve_sal_pc (&sals.sals[i]); @@ -7257,7 +7115,7 @@ breakpoint_re_set_one (void *bint) } b->val = evaluate_expression (b->exp); release_value (b->val); - if (VALUE_LAZY (b->val) && breakpoint_enabled (b)) + if (value_lazy (b->val) && breakpoint_enabled (b)) value_fetch_lazy (b->val); if (b->cond_string != NULL) @@ -7288,7 +7146,7 @@ breakpoint_re_set_one (void *bint) break; default: - printf_filtered ("Deleting unknown breakpoint type %d\n", b->type); + printf_filtered (_("Deleting unknown breakpoint type %d\n"), b->type); /* fall through */ /* Delete longjmp and overlay event breakpoints; they will be reset later by breakpoint_re_set. */ @@ -7388,13 +7246,13 @@ set_ignore_count (int bptnum, int count, int from_tty) if (from_tty) { if (count == 0) - printf_filtered ("Will stop next time breakpoint %d is reached.", + printf_filtered (_("Will stop next time breakpoint %d is reached."), bptnum); else if (count == 1) - printf_filtered ("Will ignore next crossing of breakpoint %d.", + printf_filtered (_("Will ignore next crossing of breakpoint %d."), bptnum); else - printf_filtered ("Will ignore next %d crossings of breakpoint %d.", + printf_filtered (_("Will ignore next %d crossings of breakpoint %d."), count, bptnum); } breakpoints_changed (); @@ -7402,7 +7260,7 @@ set_ignore_count (int bptnum, int count, int from_tty) return; } - error ("No breakpoint number %d.", bptnum); + error (_("No breakpoint number %d."), bptnum); } /* Clear the ignore counts of all breakpoints. */ @@ -7424,13 +7282,13 @@ ignore_command (char *args, int from_tty) int num; if (p == 0) - error_no_arg ("a breakpoint number"); + error_no_arg (_("a breakpoint number")); num = get_number (&p); if (num == 0) - error ("bad breakpoint number: '%s'", args); + error (_("bad breakpoint number: '%s'"), args); if (*p == 0) - error ("Second argument (specified ignore-count) is missing."); + error (_("Second argument (specified ignore-count) is missing.")); set_ignore_count (num, longest_to_int (value_as_long (parse_and_eval (p))), @@ -7452,7 +7310,7 @@ map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *)) int match; if (p == 0) - error_no_arg ("one or more breakpoint numbers"); + error_no_arg (_("one or more breakpoint numbers")); while (*p) { @@ -7462,7 +7320,7 @@ map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *)) num = get_number_or_range (&p1); if (num == 0) { - warning ("bad breakpoint number at or near '%s'", p); + warning (_("bad breakpoint number at or near '%s'"), p); } else { @@ -7477,7 +7335,7 @@ map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *)) break; } if (match == 0) - printf_unfiltered ("No breakpoint number %d.\n", num); + printf_unfiltered (_("No breakpoint number %d.\n"), num); } p = p1; } @@ -7518,7 +7376,7 @@ disable_command (char *args, int from_tty) switch (bpt->type) { case bp_none: - warning ("attempted to disable apparently deleted breakpoint #%d?", + warning (_("attempted to disable apparently deleted breakpoint #%d?"), bpt->number); continue; case bp_breakpoint: @@ -7556,9 +7414,9 @@ do_enable_breakpoint (struct breakpoint *bpt, enum bpdisp disposition) TARGET_CAN_USE_HARDWARE_WATCHPOINT (bp_hardware_breakpoint, i + 1, 0); if (target_resources_ok == 0) - error ("No hardware breakpoint support in the target."); + error (_("No hardware breakpoint support in the target.")); else if (target_resources_ok < 0) - error ("Hardware breakpoints used exceeds limit."); + error (_("Hardware breakpoints used exceeds limit.")); } if (bpt->pending) @@ -7593,16 +7451,16 @@ do_enable_breakpoint (struct breakpoint *bpt, enum bpdisp disposition) { struct frame_id saved_frame_id; - saved_frame_id = get_frame_id (get_selected_frame ()); + saved_frame_id = get_frame_id (get_selected_frame (NULL)); if (bpt->exp_valid_block != NULL) { struct frame_info *fr = fr = frame_find_by_id (bpt->watchpoint_frame); if (fr == NULL) { - printf_filtered ("\ + printf_filtered (_("\ Cannot enable watchpoint %d because the block in which its expression\n\ -is valid is not currently in scope.\n", bpt->number); +is valid is not currently in scope.\n"), bpt->number); bpt->enable_state = bp_disabled; return; } @@ -7613,7 +7471,7 @@ is valid is not currently in scope.\n", bpt->number); mark = value_mark (); bpt->val = evaluate_expression (bpt->exp); release_value (bpt->val); - if (VALUE_LAZY (bpt->val)) + if (value_lazy (bpt->val)) value_fetch_lazy (bpt->val); if (bpt->type == bp_hardware_watchpoint || @@ -7631,9 +7489,9 @@ is valid is not currently in scope.\n", bpt->number); bp_watchpoint in the following condition */ if (target_resources_ok < 0) { - printf_filtered ("\ + printf_filtered (_("\ Cannot enable watchpoint %d because target watch resources\n\ -have been allocated for other watchpoints.\n", bpt->number); +have been allocated for other watchpoints.\n"), bpt->number); bpt->enable_state = bp_disabled; value_free_to_mark (mark); return; @@ -7658,7 +7516,7 @@ enable_breakpoint (struct breakpoint *bpt) /* The enable command enables the specified breakpoints (or all defined breakpoints) so they once again become (or continue to be) effective - in stopping the inferior. */ + in stopping the inferior. */ static void enable_command (char *args, int from_tty) @@ -7669,7 +7527,7 @@ enable_command (char *args, int from_tty) switch (bpt->type) { case bp_none: - warning ("attempted to enable apparently deleted breakpoint #%d?", + warning (_("attempted to enable apparently deleted breakpoint #%d?"), bpt->number); continue; case bp_breakpoint: @@ -7734,7 +7592,7 @@ decode_line_spec_1 (char *string, int funfirstline) { struct symtabs_and_lines sals; if (string == 0) - error ("Empty line specification."); + error (_("Empty line specification.")); if (default_breakpoint_valid) sals = decode_line_1 (&string, funfirstline, default_breakpoint_symtab, @@ -7744,7 +7602,7 @@ decode_line_spec_1 (char *string, int funfirstline) sals = decode_line_1 (&string, funfirstline, (struct symtab *) NULL, 0, (char ***) NULL, NULL); if (*string) - error ("Junk at end of line specification: %s", string); + error (_("Junk at end of line specification: %s"), string); return sals; } @@ -7755,6 +7613,10 @@ _initialize_breakpoint (void) static struct cmd_list_element *breakpoint_show_cmdlist; struct cmd_list_element *c; +#ifdef SOLIB_ADD + observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib); +#endif + breakpoint_chain = 0; /* Don't bother to call set_breakpoint_count. $bpnum isn't useful before a breakpoint is set. */ @@ -8068,7 +7930,7 @@ such is available. (However, any hardware watchpoints that were\n\ created before setting this to nonzero, will continue to use watchpoint\n\ hardware.)", &setlist); - add_show_from_set (c, &showlist); + deprecated_add_show_from_set (c, &showlist); can_use_hw_watchpoints = 1; @@ -8085,17 +7947,15 @@ pending breakpoint behavior", &breakpoint_show_cmdlist, "show breakpoint ", 0/*allow-unknown*/, &showlist); - add_setshow_auto_boolean_cmd ("pending", no_class, &pending_break_support, "\ -Set debugger's behavior regarding pending breakpoints.\n\ -If on, an unrecognized breakpoint location will cause gdb to create a\n\ -pending breakpoint. If off, an unrecognized breakpoint location results in\n\ -an error. If auto, an unrecognized breakpoint location results in a\n\ -user-query to see if a pending breakpoint should be created.","\ -Show debugger's behavior regarding pending breakpoints.\n\ + add_setshow_auto_boolean_cmd ("pending", no_class, + &pending_break_support, _("\ +Set debugger's behavior regarding pending breakpoints."), _("\ +Show debugger's behavior regarding pending breakpoints."), _("\ If on, an unrecognized breakpoint location will cause gdb to create a\n\ pending breakpoint. If off, an unrecognized breakpoint location results in\n\ an error. If auto, an unrecognized breakpoint location results in a\n\ -user-query to see if a pending breakpoint should be created.", +user-query to see if a pending breakpoint should be created."), + NULL, /* FIXME: i18n: Debugger's behavior regarding pending breakpoints is %s. */ NULL, NULL, &breakpoint_set_cmdlist, &breakpoint_show_cmdlist);