From 44354ae183cc7d12c559514506b506cbed4d9d31 Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Tue, 5 Feb 2002 17:53:17 +0000 Subject: [PATCH] merge from gcc --- include/ChangeLog | 7 +++++++ include/demangle.h | 9 +++------ libiberty/ChangeLog | 9 +++++++++ libiberty/cp-demangle.c | 23 +++++------------------ libiberty/cplus-dem.c | 11 ++++------- 5 files changed, 28 insertions(+), 31 deletions(-) diff --git a/include/ChangeLog b/include/ChangeLog index 59561b8a660..9ac65a039bc 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,10 @@ +2002-02-05 Jason Merrill + + * demangle.h (cplus_demangle_v3): Add "options" parm. + (cplus_demangle_v3_type): Remove prototype. + (DMGL_VERBOSE): New macro. + (DMGL_TYPES): New macro. + 2002-02-02 H.J. Lu (hjl@gnu.org) * demangle.h (cplus_demangle_v3_type): New prototype. diff --git a/include/demangle.h b/include/demangle.h index cbe28041301..ad0569a0d57 100644 --- a/include/demangle.h +++ b/include/demangle.h @@ -29,6 +29,8 @@ #define DMGL_PARAMS (1 << 0) /* Include function args */ #define DMGL_ANSI (1 << 1) /* Include const, volatile, etc */ #define DMGL_JAVA (1 << 2) /* Demangle as Java rather than C++. */ +#define DMGL_VERBOSE (1 << 3) /* Include implementation details. */ +#define DMGL_TYPES (1 << 4) /* Also try to demangle type encodings. */ #define DMGL_AUTO (1 << 8) #define DMGL_GNU (1 << 9) @@ -125,12 +127,7 @@ cplus_demangle_name_to_style PARAMS ((const char *name)); /* V3 ABI demangling entry points, defined in cp-demangle.c. */ extern char* -cplus_demangle_v3 PARAMS ((const char* mangled)); - -/* V3 ABI demangling entry points, defined in cp-demangle.c. Also - demagle types. */ -extern char* -cplus_demangle_v3_type PARAMS ((const char* mangled)); +cplus_demangle_v3 PARAMS ((const char* mangled, int options)); extern char* java_demangle_v3 PARAMS ((const char* mangled)); diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index a2638236e75..08cf00d048c 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,12 @@ +2002-02-05 Jason Merrill + + * cplus-dem.c (flags): Add DMGL_VERBOSE + (cplus_demangle_v3_p): Remove. + (demangle_it): Add DMGL_TYPES to passed flags. + * cp-demangle.c (cplus_demangle_v3_all): Remove. + (cplus_demangle_v3_type): Remove. + (cplus_demangle_v3): Add options parm. + 2002-02-02 H.J. Lu (hjl@gnu.org) * cp-demangle.c (cp_demangle_type): Do not protect with diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index 26e20107b19..136dc723d2e 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -940,8 +940,6 @@ static status_t cp_demangle PARAMS ((const char *, dyn_string_t, int)); static status_t cp_demangle_type PARAMS ((const char*, dyn_string_t)); -static char* cplus_demangle_v3_all - PARAMS ((const char*, int)); /* When passed to demangle_bare_function_type, indicates that the function's return type is not encoded before its parameter types. */ @@ -3687,26 +3685,13 @@ __cxa_demangle (mangled_name, output_buffer, length, status) If the demangling failes, returns NULL. */ char * -cplus_demangle_v3 (mangled) +cplus_demangle_v3 (mangled, options) const char* mangled; -{ - return cplus_demangle_v3_all (mangled, 0); -} - -char * -cplus_demangle_v3_type (mangled) - const char* mangled; -{ - return cplus_demangle_v3_all (mangled, 1); -} - -static char * -cplus_demangle_v3_all (mangled, type) - const char* mangled; - int type; + int options; { dyn_string_t demangled; status_t status; + int type = !!(options & DMGL_TYPES); if (mangled[0] == '_' && mangled[1] == 'Z') /* It is not a type. */ @@ -3718,6 +3703,8 @@ cplus_demangle_v3_all (mangled, type) return NULL; } + flag_verbose = !!(options & DMGL_VERBOSE); + /* Create a dyn_string to hold the demangled name. */ demangled = dyn_string_new (0); /* Attempt the demangling. */ diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index b66d26de6a1..4e60b2cfcbd 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -478,9 +478,6 @@ do_hpacc_template_literal PARAMS ((struct work_stuff *, const char **, string *) static int snarf_numeric_literal PARAMS ((const char **, string *)); -static char* (*cplus_demangle_v3_p) PARAMS ((const char* mangled)) - = cplus_demangle_v3; - /* There is a TYPE_QUAL value for each type qualifier. They can be combined by bitwise-or to form the complete set of qualifiers for a type. */ @@ -914,7 +911,7 @@ cplus_demangle (mangled, options) /* The V3 ABI demangling is implemented elsewhere. */ if (GNU_V3_DEMANGLING || AUTO_DEMANGLING) { - ret = cplus_demangle_v3_p (mangled); + ret = cplus_demangle_v3 (mangled, work->options); if (ret || GNU_V3_DEMANGLING) return ret; } @@ -4877,7 +4874,7 @@ string_append_template_idx (s, idx) static const char *program_name; static const char *program_version = VERSION; -static int flags = DMGL_PARAMS | DMGL_ANSI; +static int flags = DMGL_PARAMS | DMGL_ANSI | DMGL_VERBOSE; static void demangle_it PARAMS ((char *)); static void usage PARAMS ((FILE *, int)) ATTRIBUTE_NORETURN; @@ -4890,7 +4887,8 @@ demangle_it (mangled_name) { char *result; - result = cplus_demangle (mangled_name, flags); + /* For command line args, also try to demangle type encodings. */ + result = cplus_demangle (mangled_name, flags | DMGL_TYPES); if (result == NULL) { printf ("%s\n", mangled_name); @@ -5089,7 +5087,6 @@ main (argc, argv) if (optind < argc) { - cplus_demangle_v3_p = cplus_demangle_v3_type; for ( ; optind < argc; optind++) { demangle_it (argv[optind]); -- 2.30.2