gdb/
[deliverable/binutils-gdb.git] / gdb / c-valprint.c
index 76579d2116c1a016fdb14f516ed2d57503c53629..3461b08b921b4a90705e3eb588c9ef3df3e7d6fa 100644 (file)
@@ -380,10 +380,19 @@ c_val_print (struct type *type, const gdb_byte *valaddr,
        {
          if (TYPE_CODE (elttype) != TYPE_CODE_UNDEF)
            {
-             struct value *deref_val =
-               value_at
-               (TYPE_TARGET_TYPE (type),
-                unpack_pointer (type, valaddr + embedded_offset));
+             struct value *deref_val;
+
+             deref_val = coerce_ref_if_computed (original_value);
+             if (deref_val != NULL)
+               {
+                 /* More complicated computed references are not supported.  */
+                 gdb_assert (embedded_offset == 0);
+               }
+             else
+               deref_val = value_at (TYPE_TARGET_TYPE (type),
+                                     unpack_pointer (type,
+                                                     (valaddr
+                                                      + embedded_offset)));
 
              common_val_print (deref_val, stream, recurse, options,
                                current_language);
This page took 0.032198 seconds and 4 git commands to generate.