X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fjv-typeprint.c;h=18bfc32b385a91b56ca9ab392bd2b7e8235903f0;hb=f33e9acf1b9d497a366d072caee34548fcfdf1cb;hp=0bfe5595160c532ae099f730f357950df6ec2012;hpb=fba45db2faf619e71856ee38ec63949c0ef6903e;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/jv-typeprint.c b/gdb/jv-typeprint.c index 0bfe559516..18bfc32b38 100644 --- a/gdb/jv-typeprint.c +++ b/gdb/jv-typeprint.c @@ -1,5 +1,5 @@ /* Support for printing Java types for GDB, the GNU debugger. - Copyright 1997-2000 Free Software Foundation, Inc. + Copyright 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of GDB. @@ -28,6 +28,7 @@ #include "gdb_string.h" #include "typeprint.h" #include "c-lang.h" +#include "cp-abi.h" /* Local functions */ @@ -85,8 +86,8 @@ static void java_type_print_base (struct type *type, struct ui_file *stream, int show, int level) { - register int i; - register int len; + int i; + int len; char *mangled_name; char *demangled_name; QUIT; @@ -122,7 +123,7 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show, { /* array type */ char *name = java_demangle_type_signature (TYPE_TAG_NAME (type)); fputs_filtered (name, stream); - free (name); + xfree (name); break; } @@ -151,7 +152,7 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show, fprintf_filtered (stream, "{\n"); if ((TYPE_NFIELDS (type) == 0) && (TYPE_NFN_FIELDS (type) == 0)) { - if (TYPE_FLAGS (type) & TYPE_FLAG_STUB) + if (TYPE_STUB (type)) fprintfi_filtered (level + 4, stream, "\n"); else fprintfi_filtered (level + 4, stream, "\n"); @@ -165,12 +166,12 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show, { QUIT; /* Don't print out virtual function table. */ - if (STREQN (TYPE_FIELD_NAME (type, i), "_vptr", 5) + if (strncmp (TYPE_FIELD_NAME (type, i), "_vptr", 5) == 0 && is_cplus_marker ((TYPE_FIELD_NAME (type, i))[5])) continue; /* Don't print the dummy field "class". */ - if (STREQN (TYPE_FIELD_NAME (type, i), "class", 5)) + if (strncmp (TYPE_FIELD_NAME (type, i), "class", 5) == 0) continue; print_spaces_filtered (level + 4, stream); @@ -215,7 +216,7 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show, n_overloads = TYPE_FN_FIELDLIST_LENGTH (type, i); method_name = TYPE_FN_FIELDLIST_NAME (type, i); name = type_name_no_tag (type); - is_constructor = name && STREQ (method_name, name); + is_constructor = name && strcmp (method_name, name) == 0; for (j = 0; j < n_overloads; j++) { @@ -224,12 +225,9 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show, physname = TYPE_FN_FIELD_PHYSNAME (f, j); - is_full_physname_constructor = - ((physname[0] == '_' && physname[1] == '_' - && strchr ("0123456789Qt", physname[2])) - || STREQN (physname, "__ct__", 6) - || DESTRUCTOR_PREFIX_P (physname) - || STREQN (physname, "__dt__", 6)); + is_full_physname_constructor + = (is_constructor_name (physname) + || is_destructor_name (physname)); QUIT; @@ -299,11 +297,11 @@ java_type_print_base (struct type *type, struct ui_file *stream, int show, } fputs_filtered (demangled_no_class, stream); - free (demangled_name); + xfree (demangled_name); } if (TYPE_FN_FIELD_STUB (f, j)) - free (mangled_name); + xfree (mangled_name); fprintf_filtered (stream, ";\n"); }