3dc755fb81
use throughout, in place of compile time constant CPLUS_MARKER. * cplus-dem.c (ARM_VTABLE_STRING, ARM_VTABLE_STRLEN): Add. * cplus-dem.c (cfront_special): New function, as suggested by pfieland@stratus.com. * cplus-dem.c (forget_types): New function. * cplus-dem.c (cplus_demangle): Call gnu_special, moved from demangle_prefix(). * cplus-dem.c (mop_up): Call forget_types(). * cplus-dem.c (AUTO_DEMANGLING, GNU_DEMANGLING, LUCID_DEMANGLING): Use throughout, instead of checking current_demangling_style. * cplus-dem.c (demangle_signature): When finding an explicit start of function args, forget all remembered types for lucid/cfront style demangling. * cplus-dem.c (demangle_prefix): In a sequence of two or more underbar characters, use last pair as the delimiter. Hoist gnu_special() call up to cplus_demangle(). Call cfront_special() when appropriate. * cplus-dem.c (cplus_special): Fix virtual table name demangling for inherited classes. * cplus-dem.c (demangle_args): Document quirks of numbered references to previously seen types. * dbxread.c (read_ofile_symtab, process_one_symbol): Use AUTO_DEMANGLING rather than explicitly checking current_demangling_style. * demangle.h: Add some comments. * demangle.h (AUTO_DEMANGLING, GNU_DEMANGLING, LUCID_DEMANGLING, CFRONT_DEMANGLING): New macros. * dwarfread.c (LCC_PRODUCER): Remove trailing space, which is not found in the actual producer string produced by lcc. * dwarfread.c (handle_producer): Use AUTO_DEMANGLING rather than explicitly checking current_demangling_style.
55 lines
2.0 KiB
C
55 lines
2.0 KiB
C
/* Defs for interface to demanglers.
|
|
Copyright 1992 Free Software Foundation, Inc.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2, or (at your option)
|
|
any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
|
|
|
|
|
#define DMGL_PARAMS (1 << 0) /* Include function args */
|
|
#define DMGL_ANSI (1 << 1) /* Include const, volatile, etc */
|
|
|
|
/* Enumeration of possible demangling styles.
|
|
|
|
Lucid and cfront styles are still kept logically distinct, even though
|
|
they now both behave identically. The resulting style is actual the
|
|
union of both. I.E. either style recognizes both "__pt__" and "__rf__"
|
|
for operator "->", even though the first is lucid style and the second
|
|
is cfront/ARM style. (FIXME?) */
|
|
|
|
extern enum demangling_styles
|
|
{
|
|
unknown_demangling = 0,
|
|
auto_demangling,
|
|
gnu_demangling,
|
|
lucid_demangling,
|
|
cfront_demangling
|
|
} current_demangling_style;
|
|
|
|
/* Define string names for the various demangling styles. */
|
|
|
|
#define AUTO_DEMANGLING_STYLE_STRING "auto"
|
|
#define GNU_DEMANGLING_STYLE_STRING "gnu"
|
|
#define LUCID_DEMANGLING_STYLE_STRING "lucid"
|
|
#define CFRONT_DEMANGLING_STYLE_STRING "cfront"
|
|
|
|
/* Some macros to test what demangling style is active. */
|
|
|
|
#define AUTO_DEMANGLING (current_demangling_style == auto_demangling)
|
|
#define GNU_DEMANGLING (current_demangling_style == gnu_demangling)
|
|
#define LUCID_DEMANGLING (current_demangling_style == lucid_demangling)
|
|
#define CFRONT_DEMANGLING (current_demangling_style == cfront_demangling)
|
|
|
|
extern void
|
|
set_demangling_style PARAMS ((char *));
|