From: Kung Hsu Date: Wed, 29 Sep 1993 17:02:10 +0000 (+0000) Subject: Modified Files: X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1bd97ba80a3adb42650e5d30b67b36964ca62d94;p=binutils-gdb.git Modified Files: c-valprint.c Log messages: * c-valprint.c: to fix virtual table print bug (pr2695) --- diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c index 2d5a8265898..bcf0a287673 100644 --- a/gdb/c-valprint.c +++ b/gdb/c-valprint.c @@ -200,8 +200,25 @@ c_val_print (type, valaddr, address, stream, format, deref_ref, recurse, if (vtblprint) { value vt_val; + struct symbol *wsym = (struct symbol *)NULL; + struct type *wtype; + struct symtab *s; + struct block *block = (struct block *)NULL; + int is_this_fld; - vt_val = value_at (TYPE_TARGET_TYPE (type), vt_address); + + wsym = lookup_symbol (SYMBOL_NAME(msymbol), block, + VAR_NAMESPACE, &is_this_fld, &s); + + if (wsym) + { + wtype = SYMBOL_TYPE(wsym); + } + else + { + wtype = TYPE_TARGET_TYPE(type); + } + vt_val = value_at (wtype, vt_address); val_print (VALUE_TYPE (vt_val), VALUE_CONTENTS (vt_val), VALUE_ADDRESS (vt_val), stream, format, deref_ref, recurse + 1, pretty);