[arm] Cleanup: use hex for offsets
[binutils-gdb.git] / gdb / p-valprint.c
index c01685e8a0b12b4df67a9de71fd92760869b9912..43c286d6472705cd3bfdda9c27a3daaa660faef2 100644 (file)
@@ -1,6 +1,6 @@
 /* Support for printing Pascal values for GDB, the GNU debugger.
 
-   Copyright (C) 2000-2021 Free Software Foundation, Inc.
+   Copyright (C) 2000-2022 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -20,7 +20,7 @@
 /* This file is derived from c-valprint.c */
 
 #include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
 #include "symtab.h"
 #include "gdbtypes.h"
 #include "expression.h"
@@ -70,7 +70,7 @@ pascal_language::value_print_inner (struct value *val,
 
 {
   struct type *type = check_typedef (value_type (val));
-  struct gdbarch *gdbarch = get_type_arch (type);
+  struct gdbarch *gdbarch = type->arch ();
   enum bfd_endian byte_order = type_byte_order (type);
   unsigned int i = 0;  /* Number of characters printed */
   unsigned len;
@@ -80,7 +80,7 @@ pascal_language::value_print_inner (struct value *val,
   struct type *char_type;
   CORE_ADDR addr;
   int want_space = 0;
-  const gdb_byte *valaddr = value_contents_for_printing (val);
+  const gdb_byte *valaddr = value_contents_for_printing (val).data ();
 
   switch (type->code ())
     {
@@ -122,20 +122,20 @@ pascal_language::value_print_inner (struct value *val,
              }
            else
              {
-               fprintf_filtered (stream, "{");
+               gdb_printf (stream, "{");
                /* If this is a virtual function table, print the 0th
                   entry specially, and the rest of the members normally.  */
                if (pascal_object_is_vtbl_ptr_type (elttype))
                  {
                    i = 1;
-                   fprintf_filtered (stream, "%d vtable entries", len - 1);
+                   gdb_printf (stream, "%d vtable entries", len - 1);
                  }
                else
                  {
                    i = 0;
                  }
                value_print_array_elements (val, stream, recurse, options, i);
-               fprintf_filtered (stream, "}");
+               gdb_printf (stream, "}");
              }
            break;
          }
@@ -176,7 +176,7 @@ pascal_language::value_print_inner (struct value *val,
 
       if (options->addressprint && options->format != 's')
        {
-         fputs_filtered (paddress (gdbarch, addr), stream);
+         gdb_puts (paddress (gdbarch, addr), stream);
          want_space = 1;
        }
 
@@ -191,7 +191,7 @@ pascal_language::value_print_inner (struct value *val,
          && addr != 0)
        {
          if (want_space)
-           fputs_filtered (" ", stream);
+           gdb_puts (" ", stream);
          /* No wide string yet.  */
          i = val_print_string (elttype, NULL, addr, -1, stream, options);
        }
@@ -208,7 +208,7 @@ pascal_language::value_print_inner (struct value *val,
          gdb_byte *buffer;
 
          if (want_space)
-           fputs_filtered (" ", stream);
+           gdb_puts (" ", stream);
          buffer = (gdb_byte *) xmalloc (length_size);
          read_memory (addr + length_pos, buffer, length_size);
          string_length = extract_unsigned_integer (buffer, length_size,
@@ -228,13 +228,13 @@ pascal_language::value_print_inner (struct value *val,
          /* If 'symbol_print' is set, we did the work above.  */
          if (!options->symbol_print
              && (msymbol.minsym != NULL)
-             && (vt_address == BMSYMBOL_VALUE_ADDRESS (msymbol)))
+             && (vt_address == msymbol.value_address ()))
            {
              if (want_space)
-               fputs_filtered (" ", stream);
-             fputs_filtered ("<", stream);
-             fputs_filtered (msymbol.minsym->print_name (), stream);
-             fputs_filtered (">", stream);
+               gdb_puts (" ", stream);
+             gdb_puts ("<", stream);
+             gdb_puts (msymbol.minsym->print_name (), stream);
+             gdb_puts (">", stream);
              want_space = 1;
            }
          if (vt_address && options->vtblprint)
@@ -244,7 +244,7 @@ pascal_language::value_print_inner (struct value *val,
              struct type *wtype;
 
              if (want_space)
-               fputs_filtered (" ", stream);
+               gdb_puts (" ", stream);
 
              if (msymbol.minsym != NULL)
                {
@@ -255,7 +255,7 @@ pascal_language::value_print_inner (struct value *val,
 
              if (wsym)
                {
-                 wtype = SYMBOL_TYPE (wsym);
+                 wtype = wsym->type ();
                }
              else
                {
@@ -266,8 +266,8 @@ pascal_language::value_print_inner (struct value *val,
                                current_language);
              if (options->prettyformat)
                {
-                 fprintf_filtered (stream, "\n");
-                 print_spaces_filtered (2 + 2 * recurse, stream);
+                 gdb_printf (stream, "\n");
+                 print_spaces (2 + 2 * recurse, stream);
                }
            }
        }
@@ -292,7 +292,7 @@ pascal_language::value_print_inner (struct value *val,
     case TYPE_CODE_UNION:
       if (recurse && !options->unionprint)
        {
-         fprintf_filtered (stream, "{...}");
+         gdb_printf (stream, "{...}");
          break;
        }
       /* Fall through.  */
@@ -306,14 +306,14 @@ pascal_language::value_print_inner (struct value *val,
          print_address_demangle
            (options, gdbarch,
             extract_unsigned_integer
-              (valaddr + TYPE_FIELD_BITPOS (type, VTBL_FNADDR_OFFSET) / 8,
+              (valaddr + type->field (VTBL_FNADDR_OFFSET).loc_bitpos () / 8,
                TYPE_LENGTH (type->field (VTBL_FNADDR_OFFSET).type ()),
                byte_order),
             stream, demangle);
        }
       else
        {
-          if (pascal_is_string_type (type, &length_pos, &length_size,
+         if (pascal_is_string_type (type, &length_pos, &length_size,
                                     &string_pos, &char_type, NULL) > 0)
            {
              len = extract_unsigned_integer (valaddr + length_pos,
@@ -341,7 +341,7 @@ pascal_language::value_print_inner (struct value *val,
          LONGEST low_bound, high_bound;
          int need_comma = 0;
 
-         fputs_filtered ("[", stream);
+         gdb_puts ("[", stream);
 
          int bound_info = (get_discrete_bounds (range, &low_bound, &high_bound)
                            ? 0 : -1);
@@ -372,7 +372,7 @@ pascal_language::value_print_inner (struct value *val,
              if (element)
                {
                  if (need_comma)
-                   fputs_filtered (", ", stream);
+                   gdb_puts (", ", stream);
                  print_type_scalar (range, i, stream);
                  need_comma = 1;
 
@@ -381,7 +381,7 @@ pascal_language::value_print_inner (struct value *val,
                    {
                      int j = i;
 
-                     fputs_filtered ("..", stream);
+                     gdb_puts ("..", stream);
                      while (i + 1 <= high_bound
                             && value_bit_index (type, valaddr, ++i))
                        j = i;
@@ -390,7 +390,7 @@ pascal_language::value_print_inner (struct value *val,
                }
            }
        done:
-         fputs_filtered ("]", stream);
+         gdb_puts ("]", stream);
        }
       break;
 
@@ -430,9 +430,9 @@ pascal_language::value_print (struct value *val, struct ui_file *stream,
        }
       else
        {
-         fprintf_filtered (stream, "(");
+         gdb_printf (stream, "(");
          type_print (type, "", stream, -1);
-         fprintf_filtered (stream, ") ");
+         gdb_printf (stream, ") ");
        }
     }
   common_val_print (val, stream, 0, &opts, current_language);
@@ -443,8 +443,8 @@ static void
 show_pascal_static_field_print (struct ui_file *file, int from_tty,
                                struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("Printing of pascal static members is %s.\n"),
-                   value);
+  gdb_printf (file, _("Printing of pascal static members is %s.\n"),
+             value);
 }
 
 static struct obstack dont_print_vb_obstack;
@@ -520,7 +520,7 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream,
 
   struct type *type = check_typedef (value_type (val));
 
-  fprintf_filtered (stream, "{");
+  gdb_printf (stream, "{");
   len = type->num_fields ();
   n_baseclasses = TYPE_N_BASECLASSES (type);
 
@@ -536,7 +536,7 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream,
     {
       struct obstack tmp_obstack = dont_print_statmem_obstack;
       int fields_seen = 0;
-      const gdb_byte *valaddr = value_contents_for_printing (val);
+      const gdb_byte *valaddr = value_contents_for_printing (val).data ();
 
       if (dont_print_statmem == 0)
        {
@@ -553,45 +553,45 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream,
              && field_is_static (&type->field (i)))
            continue;
          if (fields_seen)
-           fprintf_filtered (stream, ", ");
+           gdb_printf (stream, ", ");
          else if (n_baseclasses > 0)
            {
              if (options->prettyformat)
                {
-                 fprintf_filtered (stream, "\n");
-                 print_spaces_filtered (2 + 2 * recurse, stream);
-                 fputs_filtered ("members of ", stream);
-                 fputs_filtered (type->name (), stream);
-                 fputs_filtered (": ", stream);
+                 gdb_printf (stream, "\n");
+                 print_spaces (2 + 2 * recurse, stream);
+                 gdb_puts ("members of ", stream);
+                 gdb_puts (type->name (), stream);
+                 gdb_puts (": ", stream);
                }
            }
          fields_seen = 1;
 
          if (options->prettyformat)
            {
-             fprintf_filtered (stream, "\n");
-             print_spaces_filtered (2 + 2 * recurse, stream);
+             gdb_printf (stream, "\n");
+             print_spaces (2 + 2 * recurse, stream);
            }
          else
            {
-             wrap_here (n_spaces (2 + 2 * recurse));
+             stream->wrap_here (2 + 2 * recurse);
            }
 
          annotate_field_begin (type->field (i).type ());
 
          if (field_is_static (&type->field (i)))
            {
-             fputs_filtered ("static ", stream);
-             fprintf_symbol_filtered (stream,
-                                      TYPE_FIELD_NAME (type, i),
-                                      current_language->la_language,
-                                      DMGL_PARAMS | DMGL_ANSI);
+             gdb_puts ("static ", stream);
+             fprintf_symbol (stream,
+                             type->field (i).name (),
+                             current_language->la_language,
+                             DMGL_PARAMS | DMGL_ANSI);
            }
          else
-           fputs_styled (TYPE_FIELD_NAME (type, i),
+           fputs_styled (type->field (i).name (),
                          variable_name_style.style (), stream);
          annotate_field_name_end ();
-         fputs_filtered (" = ", stream);
+         gdb_puts (" = ", stream);
          annotate_field_value ();
 
          if (!field_is_static (&type->field (i))
@@ -606,11 +606,9 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream,
                  fputs_styled ("<optimized out or zero length>",
                                metadata_style.style (), stream);
                }
-             else if (value_bits_synthetic_pointer (val,
-                                                    TYPE_FIELD_BITPOS (type,
-                                                                       i),
-                                                    TYPE_FIELD_BITSIZE (type,
-                                                                        i)))
+             else if (value_bits_synthetic_pointer
+                        (val, type->field (i).loc_bitpos (),
+                         TYPE_FIELD_BITSIZE (type, i)))
                {
                  fputs_styled (_("<synthetic pointer>"),
                                metadata_style.style (), stream);
@@ -672,11 +670,11 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream,
 
       if (options->prettyformat)
        {
-         fprintf_filtered (stream, "\n");
-         print_spaces_filtered (2 * recurse, stream);
+         gdb_printf (stream, "\n");
+         print_spaces (2 * recurse, stream);
        }
     }
-  fprintf_filtered (stream, "}");
+  gdb_printf (stream, "}");
 }
 
 /* Special val_print routine to avoid printing multiple copies of virtual
@@ -763,15 +761,15 @@ pascal_object_print_value (struct value *val, struct ui_file *stream,
 
       if (options->prettyformat)
        {
-         fprintf_filtered (stream, "\n");
-         print_spaces_filtered (2 * recurse, stream);
+         gdb_printf (stream, "\n");
+         print_spaces (2 * recurse, stream);
        }
-      fputs_filtered ("<", stream);
+      gdb_puts ("<", stream);
       /* Not sure what the best notation is in the case where there is no
         baseclass name.  */
 
-      fputs_filtered (basename ? basename : "", stream);
-      fputs_filtered ("> = ", stream);
+      gdb_puts (basename ? basename : "", stream);
+      gdb_puts ("> = ", stream);
 
       if (skip < 0)
        val_print_unavailable (stream);
@@ -782,7 +780,7 @@ pascal_object_print_value (struct value *val, struct ui_file *stream,
          (base_value, stream, recurse, options,
           (struct type **) obstack_base (&dont_print_vb_obstack),
           0);
-      fputs_filtered (", ", stream);
+      gdb_puts (", ", stream);
 
     flush_it:
       ;