X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fgnu-v2-abi.c;h=68b734c1b18fc0a1e0b633a2222c29186819e5d2;hb=32b40af94e919e235c21486110311647cbeecf2e;hp=c17955a8c70bdda172875c69c6b96cdfc783d3c2;hpb=1605ef261f0f8aae0203f70f484ecb1bed35c5d6;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/gnu-v2-abi.c b/gdb/gnu-v2-abi.c index c17955a8c7..68b734c1b1 100644 --- a/gdb/gnu-v2-abi.c +++ b/gdb/gnu-v2-abi.c @@ -1,6 +1,6 @@ /* Abstraction of GNU v2 abi. - Copyright (C) 2001-2013 Free Software Foundation, Inc. + Copyright (C) 2001-2015 Free Software Foundation, Inc. Contributed by Daniel Berlin @@ -20,7 +20,6 @@ along with this program. If not, see . */ #include "defs.h" -#include "gdb_string.h" #include "symtab.h" #include "gdbtypes.h" #include "value.h" @@ -28,8 +27,6 @@ #include "gdb-demangle.h" #include "cp-abi.h" #include "cp-support.h" -#include "exceptions.h" - #include struct cp_abi_ops gnu_v2_abi_ops; @@ -40,7 +37,7 @@ static enum dtor_kinds gnuv2_is_destructor_name (const char *name) { if ((name[0] == '_' && is_cplus_marker (name[1]) && name[2] == '_') - || strncmp (name, "__dt__", 6) == 0) + || startswith (name, "__dt__")) return complete_object_dtor; else return 0; @@ -51,7 +48,7 @@ gnuv2_is_constructor_name (const char *name) { if ((name[0] == '_' && name[1] == '_' && (isdigit (name[2]) || strchr ("Qt", name[2]))) - || strncmp (name, "__ct__", 6) == 0) + || startswith (name, "__ct__")) return complete_object_ctor; else return 0; @@ -71,7 +68,7 @@ gnuv2_is_vtable_name (const char *name) static int gnuv2_is_operator_name (const char *name) { - return strncmp (name, "operator", 8) == 0; + return startswith (name, "operator"); } @@ -191,7 +188,7 @@ gnuv2_value_rtti_type (struct value *v, int *full, int *top, int *using_enc) struct type *known_type; struct type *rtti_type; CORE_ADDR vtbl; - struct minimal_symbol *minsym; + struct bound_minimal_symbol minsym; char *demangled_name, *p; const char *linkage_name; struct type *btype; @@ -209,7 +206,7 @@ gnuv2_value_rtti_type (struct value *v, int *full, int *top, int *using_enc) known_type = value_type (v); CHECK_TYPEDEF (known_type); /* RTTI works only or class objects. */ - if (TYPE_CODE (known_type) != TYPE_CODE_CLASS) + if (TYPE_CODE (known_type) != TYPE_CODE_STRUCT) return NULL; /* Plan on this changing in the future as i get around to setting @@ -245,13 +242,13 @@ gnuv2_value_rtti_type (struct value *v, int *full, int *top, int *using_enc) /* Try to find a symbol that is the vtable. */ minsym=lookup_minimal_symbol_by_pc(vtbl); - if (minsym==NULL - || (linkage_name=SYMBOL_LINKAGE_NAME (minsym))==NULL + if (minsym.minsym==NULL + || (linkage_name=MSYMBOL_LINKAGE_NAME (minsym.minsym))==NULL || !is_vtable_name (linkage_name)) return NULL; /* If we just skip the prefix, we get screwed by namespaces. */ - demangled_name=cplus_demangle(linkage_name,DMGL_PARAMS|DMGL_ANSI); + demangled_name=gdb_demangle(linkage_name,DMGL_PARAMS|DMGL_ANSI); p = strchr (demangled_name, ' '); if (p) *p = '\0';