From e49a569c10c744e822a610735928f1e975ecade7 Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Tue, 5 Dec 2000 16:51:29 +0000 Subject: [PATCH] * cp-demangle.c: s/new_abi/v3/. * cplus-dem.c: Likewise. (current_demangling_style): Now auto_demangling. (cplus_demangle): Try v3 demangling if AUTO_DEMANGLING. (main): Use standard symbol chars for auto_demangling. --- libiberty/ChangeLog | 8 ++++++++ libiberty/cp-demangle.c | 8 ++++---- libiberty/cplus-dem.c | 29 +++++++++++++++++------------ 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 2bb71c6..33f39fe 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,11 @@ +2000-12-05 Jason Merrill + + * cp-demangle.c: s/new_abi/v3/. + * cplus-dem.c: Likewise. + (current_demangling_style): Now auto_demangling. + (cplus_demangle): Try v3 demangling if AUTO_DEMANGLING. + (main): Use standard symbol chars for auto_demangling. + 2000-11-29 Mark Mitchell * hashtab.c (higher_prime_number): Use a table, rather than a diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index a5e5ded..5787f74 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -1,4 +1,4 @@ -/* Demangler for IA64 / g++ standard C++ ABI. +/* Demangler for IA64 / g++ V3 ABI. Copyright (C) 2000 Free Software Foundation, Inc. Written by Alex Samuel . @@ -20,7 +20,7 @@ */ /* This file implements demangling of C++ names mangled according to - the IA64 / g++ standard C++ ABI. Use the cp_demangle function to + the IA64 / g++ V3 ABI. Use the cp_demangle function to demangle a mangled name, or compile with the preprocessor macro STANDALONE_DEMANGLER defined to create a demangling filter executable (functionally similar to c++filt, but includes this @@ -3483,7 +3483,7 @@ cp_demangle_type (type_name, result) extern char *__cxa_demangle PARAMS ((const char *, char *, size_t *, int *)); -/* ABI-mandated entry point in the C++ runtime library for performing +/* ia64 ABI-mandated entry point in the C++ runtime library for performing demangling. MANGLED_NAME is a NUL-terminated character string containing the name to be demangled. @@ -3597,7 +3597,7 @@ __cxa_demangle (mangled_name, output_buffer, length, status) If the demangling failes, returns NULL. */ char * -cplus_demangle_new_abi (mangled) +cplus_demangle_v3 (mangled) const char* mangled; { /* Create a dyn_string to hold the demangled name. */ diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index 06df338..b889445 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -101,7 +101,7 @@ mystrstr (s1, s2) #define CPLUS_MARKER '$' #endif -enum demangling_styles current_demangling_style = gnu_demangling; +enum demangling_styles current_demangling_style = auto_demangling; static char cplus_markers[] = { CPLUS_MARKER, '.', '$', '\0' }; @@ -294,9 +294,9 @@ struct demangler_engine libiberty_demanglers[] = } , { - GNU_NEW_ABI_DEMANGLING_STYLE_STRING, - gnu_new_abi_demangling, - "GNU (g++) new-ABI-style demangling" + GNU_V3_DEMANGLING_STYLE_STRING, + gnu_v3_demangling, + "GNU (g++) V3 ABI-style demangling" } , { @@ -913,9 +913,13 @@ cplus_demangle (mangled, options) if ((work->options & DMGL_STYLE_MASK) == 0) work->options |= (int) current_demangling_style & DMGL_STYLE_MASK; - /* The new-ABI demangling is implemented elsewhere. */ - if (GNU_NEW_ABI_DEMANGLING) - return cplus_demangle_new_abi (mangled); + /* The V3 ABI demangling is implemented elsewhere. */ + if (GNU_V3_DEMANGLING || AUTO_DEMANGLING) + { + ret = cplus_demangle_v3 (mangled); + if (ret || GNU_V3_DEMANGLING) + return ret; + } if (GNAT_DEMANGLING) return ada_demangle(mangled,options); @@ -4968,7 +4972,7 @@ static const char * hp_symbol_characters PARAMS ((void)); static const char * -gnu_new_abi_symbol_characters PARAMS ((void)); +gnu_v3_symbol_characters PARAMS ((void)); /* Return the string of non-alnum characters that may occur as a valid symbol component, in the standard assembler symbol @@ -5019,11 +5023,11 @@ hp_symbol_characters () /* Return the string of non-alnum characters that may occur - as a valid symbol component in the GNU standard C++ ABI mangling + as a valid symbol component in the GNU C++ V3 ABI mangling scheme. */ static const char * -gnu_new_abi_symbol_characters () +gnu_v3_symbol_characters () { return "_$."; } @@ -5100,13 +5104,14 @@ main (argc, argv) case java_demangling: case edg_demangling: case gnat_demangling: + case auto_demangling: valid_symbols = standard_symbol_characters (); break; case hp_demangling: valid_symbols = hp_symbol_characters (); break; - case gnu_new_abi_demangling: - valid_symbols = gnu_new_abi_symbol_characters (); + case gnu_v3_demangling: + valid_symbols = gnu_v3_symbol_characters (); break; default: /* Folks should explicitly indicate the appropriate alphabet for -- 2.7.4