diff options
author | Fred Fish <fnf@specifix.com> | 1996-02-16 06:14:15 +0000 |
---|---|---|
committer | Fred Fish <fnf@specifix.com> | 1996-02-16 06:14:15 +0000 |
commit | 81afee37d0a016cd3e671693c165916893ac3e60 (patch) | |
tree | 43af22fde990502fd3478fc11b354c1f2daaee04 /gdb/ch-lang.c | |
parent | 14b22711be24b3832e3282347207467471cb42ab (diff) | |
download | gdb-81afee37d0a016cd3e671693c165916893ac3e60.zip gdb-81afee37d0a016cd3e671693c165916893ac3e60.tar.gz gdb-81afee37d0a016cd3e671693c165916893ac3e60.tar.bz2 |
* demangle.c (is_cplus_marker): New function, checks if a
character is one of the commonly used C++ marker characters.
* defs.h (is_cplus_marker): Add prototype.
* c-typeprint.c (c_type_print_base), ch-lang.c (chill_demangle),
cp-valprint.c (cp_print_class_method), mdebugread.c (parse_symbol),
stabsread.c (define_symbol, read_member_functions, read_struct_fields),
symtab.h (OPNAME_PREFIX_P, VTBL_PREFIX_P, DESTRUCTOR_PREFIX_P),
values.c (vb_match): Use is_cplus_marker instead of comparison
with CPLUS_MARKER.
Diffstat (limited to 'gdb/ch-lang.c')
-rw-r--r-- | gdb/ch-lang.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/gdb/ch-lang.c b/gdb/ch-lang.c index 9988a3c..904dc6b 100644 --- a/gdb/ch-lang.c +++ b/gdb/ch-lang.c @@ -1,5 +1,5 @@ /* Chill language support routines for GDB, the GNU debugger. - Copyright 1992 Free Software Foundation, Inc. + Copyright 1992, 1995, 1996 Free Software Foundation, Inc. This file is part of GDB. @@ -35,11 +35,20 @@ char * chill_demangle (mangled) const char *mangled; { - char *joiner; + const char *joiner = NULL; char *demangled; + const char *cp = mangled; - joiner = strchr (mangled, CPLUS_MARKER); - if (joiner != NULL && *(joiner + 1) == CPLUS_MARKER) + while (*cp) + { + if (is_cplus_marker (*cp)) + { + joiner = cp; + break; + } + cp++; + } + if (joiner != NULL && *(joiner + 1) == *joiner) { demangled = savestring (mangled, joiner - mangled); } |