merge from gcc
This commit is contained in:
parent
bde52789b2
commit
c78d91b126
2 changed files with 13 additions and 8 deletions
|
@ -1,3 +1,7 @@
|
|||
2002-01-31 Phil Edwards <pme@gcc.gnu.org>
|
||||
|
||||
* cp-demangle.c: Revert yesterday's change.
|
||||
|
||||
2002-01-31 Adam Megacz <adam@xwt.org>
|
||||
|
||||
* gcc/libiberty/configure.in: Treat mingw the same as cywin
|
||||
|
|
|
@ -938,8 +938,10 @@ static status_t demangle_discriminator
|
|||
PARAMS ((demangling_t, int));
|
||||
static status_t cp_demangle
|
||||
PARAMS ((const char *, dyn_string_t, int));
|
||||
#ifdef IN_LIBGCC2
|
||||
static status_t cp_demangle_type
|
||||
PARAMS ((const char*, dyn_string_t));
|
||||
#endif
|
||||
|
||||
/* When passed to demangle_bare_function_type, indicates that the
|
||||
function's return type is not encoded before its parameter types. */
|
||||
|
@ -3531,13 +3533,14 @@ cp_demangle (name, result, style)
|
|||
dyn_string_t. On success, returns STATUS_OK. On failiure, returns
|
||||
an error message, and the contents of RESULT are unchanged. */
|
||||
|
||||
#ifdef IN_LIBGCC2
|
||||
static status_t
|
||||
cp_demangle_type (type_name, result)
|
||||
const char* type_name;
|
||||
dyn_string_t result;
|
||||
{
|
||||
status_t status;
|
||||
demangling_t dm = demangling_new (type_name, 0);
|
||||
demangling_t dm = demangling_new (type_name);
|
||||
|
||||
if (dm == NULL)
|
||||
return STATUS_ALLOCATION_FAILED;
|
||||
|
@ -3568,7 +3571,6 @@ cp_demangle_type (type_name, result)
|
|||
return status;
|
||||
}
|
||||
|
||||
#ifdef IN_LIBGCC2
|
||||
extern char *__cxa_demangle PARAMS ((const char *, char *, size_t *, int *));
|
||||
|
||||
/* ia64 ABI-mandated entry point in the C++ runtime library for performing
|
||||
|
@ -3691,15 +3693,14 @@ cplus_demangle_v3 (mangled)
|
|||
dyn_string_t demangled;
|
||||
status_t status;
|
||||
|
||||
/* If this isn't a mangled name, don't pretend to demangle it. */
|
||||
if (strncmp (mangled, "_Z", 2) != 0)
|
||||
return NULL;
|
||||
|
||||
/* Create a dyn_string to hold the demangled name. */
|
||||
demangled = dyn_string_new (0);
|
||||
/* Attempt the demangling. */
|
||||
if (mangled[0] == '_' && mangled[1] == 'Z')
|
||||
/* Appears to be a function or variable name. */
|
||||
status = cp_demangle (mangled, demangled, 0);
|
||||
else
|
||||
/* Try to demangle it as the name of a type. */
|
||||
status = cp_demangle_type (mangled, demangled);
|
||||
status = cp_demangle ((char *) mangled, demangled, 0);
|
||||
|
||||
if (STATUS_NO_ERROR (status))
|
||||
/* Demangling succeeded. */
|
||||
|
|
Loading…
Reference in a new issue