don't let bin2hex call strlen
[deliverable/binutils-gdb.git] / gdb / p-valprint.c
index b2287f2177d1a767f183304d61ccc4c39ed597b4..a87f1f4714afe5b29a62c176bd87d7e62bfa6926 100644 (file)
@@ -1,7 +1,6 @@
 /* Support for printing Pascal values for GDB, the GNU debugger.
 
-   Copyright (C) 2000-2001, 2003, 2005-2012 Free Software Foundation,
-   Inc.
+   Copyright (C) 2000-2014 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -84,7 +83,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
          len = high_bound - low_bound + 1;
          elttype = check_typedef (TYPE_TARGET_TYPE (type));
          eltlen = TYPE_LENGTH (elttype);
-         if (options->prettyprint_arrays)
+         if (options->prettyformat_arrays)
            {
              print_spaces_filtered (2 + 2 * recurse, stream);
            }
@@ -222,18 +221,18 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
          /* Print vtbl's nicely.  */
          CORE_ADDR vt_address = unpack_pointer (type,
                                                 valaddr + embedded_offset);
-         struct minimal_symbol *msymbol =
+         struct bound_minimal_symbol msymbol =
            lookup_minimal_symbol_by_pc (vt_address);
 
          /* If 'symbol_print' is set, we did the work above.  */
          if (!options->symbol_print
-             && (msymbol != NULL)
-             && (vt_address == SYMBOL_VALUE_ADDRESS (msymbol)))
+             && (msymbol.minsym != NULL)
+             && (vt_address == SYMBOL_VALUE_ADDRESS (msymbol.minsym)))
            {
              if (want_space)
                fputs_filtered (" ", stream);
              fputs_filtered ("<", stream);
-             fputs_filtered (SYMBOL_PRINT_NAME (msymbol), stream);
+             fputs_filtered (SYMBOL_PRINT_NAME (msymbol.minsym), stream);
              fputs_filtered (">", stream);
              want_space = 1;
            }
@@ -243,13 +242,14 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
              struct symbol *wsym = (struct symbol *) NULL;
              struct type *wtype;
              struct block *block = (struct block *) NULL;
-             int is_this_fld;
+             struct field_of_this_result is_this_fld;
 
              if (want_space)
                fputs_filtered (" ", stream);
 
-             if (msymbol != NULL)
-               wsym = lookup_symbol (SYMBOL_LINKAGE_NAME (msymbol), block,
+             if (msymbol.minsym != NULL)
+               wsym = lookup_symbol (SYMBOL_LINKAGE_NAME (msymbol.minsym),
+                                     block,
                                      VAR_DOMAIN, &is_this_fld);
 
              if (wsym)
@@ -263,7 +263,7 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr,
              vt_val = value_at (wtype, vt_address);
              common_val_print (vt_val, stream, recurse + 1, options,
                                current_language);
-             if (options->pretty)
+             if (options->prettyformat)
                {
                  fprintf_filtered (stream, "\n");
                  print_spaces_filtered (2 + 2 * recurse, stream);
@@ -575,7 +575,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
            fprintf_filtered (stream, ", ");
          else if (n_baseclasses > 0)
            {
-             if (options->pretty)
+             if (options->prettyformat)
                {
                  fprintf_filtered (stream, "\n");
                  print_spaces_filtered (2 + 2 * recurse, stream);
@@ -586,7 +586,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
            }
          fields_seen = 1;
 
-         if (options->pretty)
+         if (options->prettyformat)
            {
              fprintf_filtered (stream, "\n");
              print_spaces_filtered (2 + 2 * recurse, stream);
@@ -595,36 +595,17 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
            {
              wrap_here (n_spaces (2 + 2 * recurse));
            }
-         if (options->inspect_it)
-           {
-             if (TYPE_CODE (TYPE_FIELD_TYPE (type, i)) == TYPE_CODE_PTR)
-               fputs_filtered ("\"( ptr \"", stream);
-             else
-               fputs_filtered ("\"( nodef \"", stream);
-             if (field_is_static (&TYPE_FIELD (type, i)))
-               fputs_filtered ("static ", stream);
-             fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
-                                      language_cplus,
-                                      DMGL_PARAMS | DMGL_ANSI);
-             fputs_filtered ("\" \"", stream);
-             fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
-                                      language_cplus,
-                                      DMGL_PARAMS | DMGL_ANSI);
-             fputs_filtered ("\") \"", stream);
-           }
-         else
-           {
-             annotate_field_begin (TYPE_FIELD_TYPE (type, i));
-
-             if (field_is_static (&TYPE_FIELD (type, i)))
-               fputs_filtered ("static ", stream);
-             fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
-                                      language_cplus,
-                                      DMGL_PARAMS | DMGL_ANSI);
-             annotate_field_name_end ();
-             fputs_filtered (" = ", stream);
-             annotate_field_value ();
-           }
+
+         annotate_field_begin (TYPE_FIELD_TYPE (type, i));
+
+         if (field_is_static (&TYPE_FIELD (type, i)))
+           fputs_filtered ("static ", stream);
+         fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i),
+                                  language_cplus,
+                                  DMGL_PARAMS | DMGL_ANSI);
+         annotate_field_name_end ();
+         fputs_filtered (" = ", stream);
+         annotate_field_value ();
 
          if (!field_is_static (&TYPE_FIELD (type, i))
              && TYPE_FIELD_PACKED (type, i))
@@ -648,7 +629,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
              else if (!value_bits_valid (val, TYPE_FIELD_BITPOS (type, i),
                                          TYPE_FIELD_BITSIZE (type, i)))
                {
-                 val_print_optimized_out (stream);
+                 val_print_optimized_out (val, stream);
                }
              else
                {
@@ -676,7 +657,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
                  v = value_field_bitfield (type, i, valaddr, offset, val);
 
                  if (v == NULL)
-                   val_print_optimized_out (stream);
+                   val_print_optimized_out (NULL, stream);
                  else
                    pascal_object_print_static_field (v, stream, recurse + 1,
                                                      options);
@@ -707,7 +688,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
          dont_print_statmem_obstack = tmp_obstack;
        }
 
-      if (options->pretty)
+      if (options->prettyformat)
        {
          fprintf_filtered (stream, "\n");
          print_spaces_filtered (2 * recurse, stream);
@@ -806,7 +787,7 @@ pascal_object_print_value (struct type *type, const gdb_byte *valaddr,
            base_valaddr = valaddr;
        }
 
-      if (options->pretty)
+      if (options->prettyformat)
        {
          fprintf_filtered (stream, "\n");
          print_spaces_filtered (2 * recurse, stream);
@@ -863,6 +844,12 @@ pascal_object_print_static_field (struct value *val,
   struct type *type = value_type (val);
   struct value_print_options opts;
 
+  if (value_entirely_optimized_out (val))
+    {
+      val_print_optimized_out (val, stream);
+      return;
+    }
+
   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
     {
       CORE_ADDR *first_dont_print, addr;
This page took 0.043733 seconds and 4 git commands to generate.