gdb/
[deliverable/binutils-gdb.git] / gdb / infcmd.c
index 500bdd783471d2235697b1fc5e6c0606d96c7c0d..2755fd0c4acaca225434c46f5bd95c910a89d064 100644 (file)
@@ -1545,7 +1545,7 @@ finish_backward (struct symbol *function)
                                  bp_breakpoint);
       /* Tell the breakpoint to keep quiet.  We won't be done
          until we've done another reverse single-step.  */
-      make_breakpoint_silent (breakpoint);
+      breakpoint_set_silent (breakpoint, 1);
       old_chain = make_cleanup_delete_breakpoint (breakpoint);
       proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
       /* We will be stopped when proceed returns.  */
@@ -1942,10 +1942,12 @@ default_print_registers_info (struct gdbarch *gdbarch,
   int i;
   const int numregs = gdbarch_num_regs (gdbarch)
                      + gdbarch_num_pseudo_regs (gdbarch);
-  gdb_byte buffer[MAX_REGISTER_SIZE];
 
   for (i = 0; i < numregs; i++)
     {
+      struct type *regtype;
+      struct value *val;
+
       /* Decide between printing all regs, non-float / vector regs, or
          specific reg.  */
       if (regnum == -1)
@@ -1977,8 +1979,11 @@ default_print_registers_info (struct gdbarch *gdbarch,
       print_spaces_filtered (15 - strlen (gdbarch_register_name
                                          (gdbarch, i)), file);
 
+      regtype = register_type (gdbarch, i);
+      val = allocate_value (regtype);
+
       /* Get the data in raw format.  */
-      if (! frame_register_read (frame, i, buffer))
+      if (! frame_register_read (frame, i, value_contents_raw (val)))
        {
          fprintf_filtered (file, "*value not available*\n");
          continue;
@@ -1986,16 +1991,20 @@ default_print_registers_info (struct gdbarch *gdbarch,
 
       /* If virtual format is floating, print it that way, and in raw
          hex.  */
-      if (TYPE_CODE (register_type (gdbarch, i)) == TYPE_CODE_FLT
-         || TYPE_CODE (register_type (gdbarch, i)) == TYPE_CODE_DECFLOAT)
+      if (TYPE_CODE (regtype) == TYPE_CODE_FLT
+         || TYPE_CODE (regtype) == TYPE_CODE_DECFLOAT)
        {
          int j;
          struct value_print_options opts;
+         const gdb_byte *valaddr = value_contents_for_printing (val);
 
          get_user_print_options (&opts);
          opts.deref_ref = 1;
-         val_print (register_type (gdbarch, i), buffer, 0, 0,
-                    file, 0, NULL, &opts, current_language);
+
+         val_print (regtype,
+                    value_contents_for_printing (val),
+                    value_embedded_offset (val), 0,
+                    file, 0, val, &opts, current_language);
 
          fprintf_filtered (file, "\t(raw 0x");
          for (j = 0; j < register_size (gdbarch, i); j++)
@@ -2006,7 +2015,7 @@ default_print_registers_info (struct gdbarch *gdbarch,
                idx = j;
              else
                idx = register_size (gdbarch, i) - 1 - j;
-             fprintf_filtered (file, "%02x", (unsigned char) buffer[idx]);
+             fprintf_filtered (file, "%02x", (unsigned char) valaddr[idx]);
            }
          fprintf_filtered (file, ")");
        }
@@ -2017,17 +2026,21 @@ default_print_registers_info (struct gdbarch *gdbarch,
          /* Print the register in hex.  */
          get_formatted_print_options (&opts, 'x');
          opts.deref_ref = 1;
-         val_print (register_type (gdbarch, i), buffer, 0, 0,
-                    file, 0, NULL, &opts, current_language);
+         val_print (regtype,
+                    value_contents_for_printing (val),
+                    value_embedded_offset (val), 0,
+                    file, 0, val, &opts, current_language);
           /* If not a vector register, print it also according to its
              natural format.  */
-         if (TYPE_VECTOR (register_type (gdbarch, i)) == 0)
+         if (TYPE_VECTOR (regtype) == 0)
            {
              get_user_print_options (&opts);
              opts.deref_ref = 1;
              fprintf_filtered (file, "\t");
-             val_print (register_type (gdbarch, i), buffer, 0, 0,
-                        file, 0, NULL, &opts, current_language);
+             val_print (regtype,
+                        value_contents_for_printing (val),
+                        value_embedded_offset (val), 0,
+                        file, 0, val, &opts, current_language);
            }
        }
 
@@ -2097,9 +2110,11 @@ registers_info (char *addr_exp, int fpregs)
 
                printf_filtered ("%s: ", start);
                get_formatted_print_options (&opts, 'x');
-               print_scalar_formatted (value_contents (val),
-                                       check_typedef (value_type (val)),
-                                       &opts, 0, gdb_stdout);
+               val_print_scalar_formatted (check_typedef (value_type (val)),
+                                           value_contents_for_printing (val),
+                                           value_embedded_offset (val),
+                                           val,
+                                           &opts, 0, gdb_stdout);
                printf_filtered ("\n");
              }
            else
This page took 0.026306 seconds and 4 git commands to generate.