aboutsummaryrefslogtreecommitdiff
path: root/gdb/symtab.c
diff options
context:
space:
mode:
authorElena Zannoni <ezannoni@kwikemart.cygnus.com>2000-10-12 19:34:27 +0000
committerElena Zannoni <ezannoni@kwikemart.cygnus.com>2000-10-12 19:34:27 +0000
commit235d1e032292b26ef7f9e66bab679edc8455f535 (patch)
treee5edb7a50332073dc34dc7dae258ca59012f2462 /gdb/symtab.c
parent627427debc29d3c6758a637edc47d6b6fa2860fd (diff)
downloadgdb-235d1e032292b26ef7f9e66bab679edc8455f535.zip
gdb-235d1e032292b26ef7f9e66bab679edc8455f535.tar.gz
gdb-235d1e032292b26ef7f9e66bab679edc8455f535.tar.bz2
2000-10-12 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
From Daniel Berlin <dberlin@redhat.com> : * symtab.h (SYMBOL_INIT_DEMANGLED_NAME): Initialize the symbol language to auto instead of unknown, so it will try to demangle the symbol. * symtab.h (OPNAME_PREFIX_P): Change operator prefix to correct value. * symtab.c (gdb_mangle_name): Properly handle C++ operators.
Diffstat (limited to 'gdb/symtab.c')
-rw-r--r--gdb/symtab.c22
1 files changed, 4 insertions, 18 deletions
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 3a97e10..56a1795 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -303,6 +303,9 @@ gdb_mangle_name (struct type *type, int method_id, int signature_id)
char buf[20];
int len = (newname == NULL ? 0 : strlen (newname));
+ if (OPNAME_PREFIX_P (field_name))
+ return xstrdup (physname);
+
is_full_physname_constructor =
((physname[0] == '_' && physname[1] == '_' &&
(isdigit (physname[2]) || physname[2] == 'Q' || physname[2] == 't'))
@@ -338,25 +341,8 @@ gdb_mangle_name (struct type *type, int method_id, int signature_id)
sprintf (buf, "__%s%s%d", const_prefix, volatile_prefix, len);
}
mangled_name_len = ((is_constructor ? 0 : strlen (field_name))
- + strlen (buf) + len
- + strlen (physname)
- + 1);
-
- /* Only needed for GNU-mangled names. ANSI-mangled names
- work with the normal mechanisms. */
- if (OPNAME_PREFIX_P (field_name))
- {
- const char *opname = cplus_mangle_opname (field_name + 3, 0);
- if (opname == NULL)
- error ("No mangling for \"%s\"", field_name);
- mangled_name_len += strlen (opname);
- mangled_name = (char *) xmalloc (mangled_name_len);
+ + strlen (buf) + len + strlen (physname) + 1);
- strncpy (mangled_name, field_name, 3);
- mangled_name[3] = '\0';
- strcat (mangled_name, opname);
- }
- else
{
mangled_name = (char *) xmalloc (mangled_name_len);
if (is_constructor)