Hello, when implicitly dereferencing a reference, the valprint routines manually construct a pointer type. This is superfluous, as the unpack_pointer routine already handles references fine. Bye, Ulrich ChangeLog: * ada-valprint.c (ada_val_print_1): When implicitly dereferencing a reference type, pass the reference type directly to unpack_pointer. * c-valprint.c (c_val_print): Likewise. * f-valprint.c (f_val_print): Likewise. * m2-valprint.c (print_variable_at_address, m2_val_print): Likewise. * p-valprint.c (pascal_val_print): Likewise. Index: gdb-head/gdb/ada-valprint.c =================================================================== --- gdb-head.orig/gdb/ada-valprint.c +++ gdb-head/gdb/ada-valprint.c @@ -891,9 +891,7 @@ ada_val_print_1 (struct type *type, cons if (TYPE_CODE (elttype) != TYPE_CODE_UNDEF) { - LONGEST deref_val_int = (LONGEST) - unpack_pointer (lookup_pointer_type (builtin_type_void), - valaddr); + LONGEST deref_val_int = (LONGEST) unpack_pointer (type, valaddr); if (deref_val_int != 0) { struct value *deref_val = Index: gdb-head/gdb/c-valprint.c =================================================================== --- gdb-head.orig/gdb/c-valprint.c +++ gdb-head/gdb/c-valprint.c @@ -310,8 +310,7 @@ c_val_print (struct type *type, const gd struct value *deref_val = value_at (TYPE_TARGET_TYPE (type), - unpack_pointer (lookup_pointer_type (builtin_type_void), - valaddr + embedded_offset)); + unpack_pointer (type, valaddr + embedded_offset)); common_val_print (deref_val, stream, format, deref_ref, recurse, pretty, current_language); } Index: gdb-head/gdb/f-valprint.c =================================================================== --- gdb-head.orig/gdb/f-valprint.c +++ gdb-head/gdb/f-valprint.c @@ -444,8 +444,7 @@ f_val_print (struct type *type, const gd struct value *deref_val = value_at (TYPE_TARGET_TYPE (type), - unpack_pointer (lookup_pointer_type (builtin_type_void), - valaddr + embedded_offset)); + unpack_pointer (type, valaddr + embedded_offset)); common_val_print (deref_val, stream, format, deref_ref, recurse, pretty, current_language); } Index: gdb-head/gdb/m2-valprint.c =================================================================== --- gdb-head.orig/gdb/m2-valprint.c +++ gdb-head/gdb/m2-valprint.c @@ -258,10 +258,7 @@ print_variable_at_address (struct type * if (TYPE_CODE (elttype) != TYPE_CODE_UNDEF) { struct value *deref_val = - value_at - (TYPE_TARGET_TYPE (type), - unpack_pointer (lookup_pointer_type (builtin_type_void), - valaddr)); + value_at (TYPE_TARGET_TYPE (type), unpack_pointer (type, valaddr)); common_val_print (deref_val, stream, format, deref_ref, recurse, pretty, current_language); } @@ -420,8 +417,7 @@ m2_val_print (struct type *type, const g struct value *deref_val = value_at (TYPE_TARGET_TYPE (type), - unpack_pointer (lookup_pointer_type (builtin_type_void), - valaddr + embedded_offset)); + unpack_pointer (type, valaddr + embedded_offset)); common_val_print (deref_val, stream, format, deref_ref, recurse, pretty, current_language); } Index: gdb-head/gdb/p-valprint.c =================================================================== --- gdb-head.orig/gdb/p-valprint.c +++ gdb-head/gdb/p-valprint.c @@ -267,8 +267,7 @@ pascal_val_print (struct type *type, con struct value *deref_val = value_at (TYPE_TARGET_TYPE (type), - unpack_pointer (lookup_pointer_type (builtin_type_void), - valaddr + embedded_offset)); + unpack_pointer (type, valaddr + embedded_offset)); common_val_print (deref_val, stream, format, deref_ref, recurse + 1, pretty, current_language); } -- Dr. Ulrich Weigand GNU Toolchain for Linux on System z and Cell BE Ulrich.Weigand@de.ibm.com