Update .sanitize files
[deliverable/binutils-gdb.git] / gdb / breakpoint.c
index b2c5f35b4f4363218962c3a862c3ca53d4f0a188..6ae795bb2b8fab3440df5754d9d29f2ca7598e1d 100644 (file)
@@ -33,6 +33,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "target.h"
 #include "language.h"
 #include <string.h>
+#include "demangle.h"
 
 /* local function prototypes */
 
@@ -109,7 +110,7 @@ static void
 breakpoints_info PARAMS ((char *, int));
 
 static void
-breakpoint_1 PARAMS ((int, enum bptype, int));
+breakpoint_1 PARAMS ((int, int));
 
 static bpstat
 bpstat_alloc PARAMS ((struct breakpoint *, bpstat));
@@ -271,7 +272,7 @@ condition_command (arg, from_tty)
            b->cond = 0;
            b->cond_string = NULL;
            if (from_tty)
-             printf ("Breakpoint %d now unconditional.\n", bnum);
+             printf_filtered ("Breakpoint %d now unconditional.\n", bnum);
          }
        else
          {
@@ -316,11 +317,8 @@ commands_command (arg, from_tty)
     if (b->number == bnum)
       {
        if (from_tty && input_from_terminal_p ())
-         {
-           printf ("Type commands for when breakpoint %d is hit, one per line.\n\
+         printf_filtered ("Type commands for when breakpoint %d is hit, one per line.\n\
 End with a line saying just \"end\".\n", bnum);
-           fflush (stdout);
-         }
        l = read_command_lines ();
        free_command_lines (&b->commands);
        b->commands = l;
@@ -390,8 +388,8 @@ read_memory_nobpt (memaddr, myaddr, len)
              bptlen -= (membpt + bptlen) - (memaddr + len);
            }
 
-         bcopy (b->shadow_contents + bptoffset,
-                myaddr + membpt - memaddr, bptlen);
+         memcpy (myaddr + membpt - memaddr, 
+                 b->shadow_contents + bptoffset, bptlen);
 
          if (membpt > memaddr)
            {
@@ -576,7 +574,7 @@ bpstat_copy (bs)
   for (; bs != NULL; bs = bs->next)
     {
       tmp = (bpstat) xmalloc (sizeof (*tmp));
-      bcopy (bs, tmp, sizeof (*tmp));
+      memcpy (tmp, bs, sizeof (*tmp));
       if (p == NULL)
        /* This is the first thing in the chain.  */
        retval = tmp;
@@ -1030,9 +1028,9 @@ breakpoint_1 (bnum, allflag)
 
        printf_filtered ("%-3d %-14s %-4s %-3c ",
                         b->number,
-                        bptypes[b->type],
-                        bpdisps[b->disposition],
-                        bpenables[b->enable]);
+                        bptypes[(int)b->type],
+                        bpdisps[(int)b->disposition],
+                        bpenables[(int)b->enable]);
        switch (b->type)
          {
          case bp_watchpoint:
@@ -1053,7 +1051,8 @@ breakpoint_1 (bnum, allflag)
                if (sym)
                  {
                    fputs_filtered ("in ", stdout);
-                   fputs_demangled (SYMBOL_NAME (sym), stdout, 1);
+                   fputs_demangled (SYMBOL_NAME (sym), stdout, 
+                                    DMGL_ANSI | DMGL_PARAMS);
                    fputs_filtered (" at ", stdout);
                  }
                fputs_filtered (b->symtab->filename, stdout);
@@ -1110,9 +1109,11 @@ breakpoints_info (bnum_exp, from_tty)
   breakpoint_1 (bnum, 0);
 }
 
+#if MAINTENANCE_CMDS
+
 /* ARGSUSED */
 static void
-all_breakpoints_info (bnum_exp, from_tty)
+maintenance_info_breakpoints (bnum_exp, from_tty)
      char *bnum_exp;
      int from_tty;
 {
@@ -1124,6 +1125,8 @@ all_breakpoints_info (bnum_exp, from_tty)
   breakpoint_1 (bnum, 1);
 }
 
+#endif
+
 /* Print a message describing any breakpoints set at PC.  */
 
 static void
@@ -1207,7 +1210,7 @@ set_raw_breakpoint (sal)
   register struct breakpoint *b, *b1;
 
   b = (struct breakpoint *) xmalloc (sizeof (struct breakpoint));
-  bzero (b, sizeof *b);
+  memset (b, 0, sizeof (*b));
   b->address = sal.pc;
   b->symtab = sal.symtab;
   b->line_number = sal.line;
@@ -1284,7 +1287,10 @@ enable_longjmp_breakpoint()
 
   ALL_BREAKPOINTS (b)
     if (b->type == bp_longjmp)
-      b->enable = enabled;
+      {
+       b->enable = enabled;
+       check_duplicates (b->address);
+      }
 }
 
 void
@@ -1293,9 +1299,12 @@ disable_longjmp_breakpoint()
   register struct breakpoint *b;
 
   ALL_BREAKPOINTS (b)
-    if (b->type == bp_longjmp
+    if (   b->type == bp_longjmp
        || b->type == bp_longjmp_resume)
-      b->enable = disabled;
+      {
+       b->enable = disabled;
+       check_duplicates (b->address);
+      }
 }
 
 /* Call this after hitting the longjmp() breakpoint.  Use this to set a new
@@ -1321,6 +1330,7 @@ set_longjmp_resume_breakpoint(pc, frame)
          b->frame = FRAME_FP(frame);
        else
          b->frame = 0;
+       check_duplicates (b->address);
        return;
       }
 }
@@ -1375,6 +1385,12 @@ mention (b)
       if (b->symtab)
        printf_filtered (": file %s, line %d.",
                         b->symtab->filename, b->line_number);
+      break;
+    case bp_until:
+    case bp_finish:
+    case bp_longjmp:
+    case bp_longjmp_resume:
+      break;
     }
   printf_filtered ("\n");
 }
@@ -1794,7 +1810,7 @@ get_catch_sals (this_level_only)
 
   bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
   blocks_searched = (char *) alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
-  bzero (blocks_searched, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
+  memset (blocks_searched, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
 
   while (block != 0)
     {
@@ -2239,10 +2255,22 @@ breakpoint_re_set ()
   static char message1[] = "Error in re-setting breakpoint %d:\n";
   char message[sizeof (message1) + 30 /* slop */];
   
+  /* If we have no current source symtab, and we have any breakpoints,
+     go through the work of making a source context.  */
+  if (current_source_symtab == NULL)
+    {
+      ALL_BREAKPOINTS (b)
+      {
+       select_source_symtab (NULL);
+       break;                          /* We only care if there are any, and
+                                          don't need to do it N times.  */
+      }
+    }
+
   ALL_BREAKPOINTS_SAFE (b, temp)
     {
       sprintf (message, message1, b->number);  /* Format possible error msg */
-      (void) catch_errors (breakpoint_re_set_one, (char *) b, message);
+      catch_errors (breakpoint_re_set_one, (char *) b, message);
     }
 
   create_longjmp_breakpoint("longjmp");
@@ -2278,11 +2306,13 @@ set_ignore_count (bptnum, count, from_tty)
        if (!from_tty)
          return;
        else if (count == 0)
-         printf ("Will stop next time breakpoint %d is reached.", bptnum);
+         printf_filtered ("Will stop next time breakpoint %d is reached.",
+                          bptnum);
        else if (count == 1)
-         printf ("Will ignore next crossing of breakpoint %d.", bptnum);
+         printf_filtered ("Will ignore next crossing of breakpoint %d.",
+                          bptnum);
        else
-         printf ("Will ignore next %d crossings of breakpoint %d.",
+         printf_filtered ("Will ignore next %d crossings of breakpoint %d.",
                  count, bptnum);
        return;
       }
@@ -2321,7 +2351,7 @@ ignore_command (args, from_tty)
   set_ignore_count (num,
                    longest_to_int (value_as_long (parse_and_eval (p))),
                    from_tty);
-  printf ("\n");
+  printf_filtered ("\n");
 }
 \f
 /* Call FUNCTION on each of the breakpoints
@@ -2395,7 +2425,14 @@ enable_command (args, from_tty)
   struct breakpoint *bpt;
   if (args == 0)
     ALL_BREAKPOINTS (bpt)
-      enable_breakpoint (bpt);
+      switch (bpt->type)
+       {
+       case bp_breakpoint:
+       case bp_watchpoint:
+         enable_breakpoint (bpt);
+       default:
+         continue;
+       }
   else
     map_breakpoint_numbers (args, enable_breakpoint);
 }
@@ -2407,7 +2444,7 @@ disable_breakpoint (bpt)
   bpt->enable = disabled;
 
   if (xgdb_verbose && bpt->type == bp_breakpoint)
-    printf ("breakpoint #%d disabled\n", bpt->number);
+    printf_filtered ("breakpoint #%d disabled\n", bpt->number);
 
   check_duplicates (bpt->address);
 }
@@ -2421,7 +2458,14 @@ disable_command (args, from_tty)
   register struct breakpoint *bpt;
   if (args == 0)
     ALL_BREAKPOINTS (bpt)
-      disable_breakpoint (bpt);
+      switch (bpt->type)
+       {
+       case bp_breakpoint:
+       case bp_watchpoint:
+         disable_breakpoint (bpt);
+       default:
+         continue;
+       }
   else
     map_breakpoint_numbers (args, disable_breakpoint);
 }
@@ -2485,15 +2529,6 @@ decode_line_spec_1 (string, funfirstline)
   return sals;
 }
 \f
-
-/* Chain containing all defined enable commands.  */
-
-extern struct cmd_list_element 
-  *enablelist, *disablelist,
-  *deletelist, *enablebreaklist;
-
-extern struct cmd_list_element *cmdlist;
-
 void
 _initialize_breakpoint ()
 {
@@ -2627,8 +2662,8 @@ Do \"help breakpoints\" for info on other commands dealing with breakpoints.");
   add_info ("breakpoints", breakpoints_info,
            "Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
 The \"Type\" column indicates one of:\n\
-\tbreakpoint     - for normal breakpoints\n\
-\twatchpoint     - for watchpoints\n\
+\tbreakpoint     - normal breakpoint\n\
+\twatchpoint     - watchpoint\n\
 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
@@ -2638,15 +2673,17 @@ are set to the address of the last breakpoint listed.\n\n\
 Convenience variable \"$bpnum\" contains the number of the last\n\
 breakpoint set.");
 
-  add_info ("all-breakpoints", all_breakpoints_info,
+#if MAINTENANCE_CMDS
+
+  add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints,
            "Status of all breakpoints, or breakpoint number NUMBER.\n\
 The \"Type\" column indicates one of:\n\
-\tbreakpoint     - for normal breakpoints\n\
-\twatchpoint     - for watchpoints\n\
-\tlongjmp        - for internal breakpoints to handle stepping through longjmp()\n\
-\tlongjmp resume - for internal breakpoints at the target of longjmp()\n\
-\tuntil          - for internal breakpoints used by the \"until\" command\n\
-\tfinish         - for internal breakpoints used by the \"finish\" command\n\
+\tbreakpoint     - normal breakpoint\n\
+\twatchpoint     - watchpoint\n\
+\tlongjmp        - internal breakpoint used to step through longjmp()\n\
+\tlongjmp resume - internal breakpoint at the target of longjmp()\n\
+\tuntil          - internal breakpoint used by the \"until\" command\n\
+\tfinish         - internal breakpoint used by the \"finish\" command\n\
 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
@@ -2654,7 +2691,10 @@ address and file/line number respectively.\n\n\
 Convenience variable \"$_\" and default examine address for \"x\"\n\
 are set to the address of the last breakpoint listed.\n\n\
 Convenience variable \"$bpnum\" contains the number of the last\n\
-breakpoint set.");
+breakpoint set.",
+          &maintenanceinfolist);
+
+#endif /* MAINTENANCE_CMDS */
 
   add_com ("catch", class_breakpoint, catch_command,
          "Set breakpoints to catch exceptions that are raised.\n\
@@ -2677,7 +2717,7 @@ an expression changes.");
            "Synonym for ``info breakpoints''.");
 }
 
-#ifdef IBM6000_HOST
+#ifdef IBM6000_TARGET
 /* Where should this function go? It is used by AIX only. FIXME. */
 
 /* Breakpoint address relocation used to be done in breakpoint_re_set(). That
@@ -2699,7 +2739,6 @@ fixup_breakpoints (low, high, delta)
   CORE_ADDR delta;
 {
   struct breakpoint *b;
-  extern struct breakpoint *breakpoint_chain;
 
   ALL_BREAKPOINTS (b)
     {
This page took 0.027958 seconds and 4 git commands to generate.