Backing out previous changes.

Missed a cplus_demangle call and it turns out that all of trace-malloc needs to be tweaked to use c++ instead of C.
Bug #232763


git-svn-id: svn://10.0.0.236/trunk@152605 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
cls%seawood.org
2004-02-10 18:55:04 +00:00
parent 9d201fcd6d
commit 3cf0350971
8 changed files with 764 additions and 602 deletions

View File

@@ -52,13 +52,14 @@
// This thing is exported by libstdc++
// This thing is exported by libiberty.a (-liberty)
// Yes, this is a gcc only hack
#if defined(MOZ_DEMANGLE_SYMBOLS)
#include <cxxabi.h>
extern "C" char * cplus_demangle(const char *,int);
#include <stdlib.h> // for free()
#endif // MOZ_DEMANGLE_SYMBOLS
#if (defined(__linux__) || defined(__sun)) && defined(__GNUC__)
void DemangleSymbol(const char * aSymbol,
char * aBuffer,
int aBufLen)
@@ -66,13 +67,10 @@ void DemangleSymbol(const char * aSymbol,
aBuffer[0] = '\0';
#if defined(MOZ_DEMANGLE_SYMBOLS)
char outBuffer[4096];
size_t outBufLen = sizeof(outBuffer);
int status;
/* See demangle.h in the gcc source for the voodoo */
char * demangled = abi::__cxa_demangle(aSymbol,outBuffer,&outBufLen,&status);
char * demangled = cplus_demangle(aSymbol,3);
if (demangled && !status)
if (demangled)
{
strncpy(aBuffer,demangled,aBufLen);
free(demangled);
@@ -80,6 +78,17 @@ void DemangleSymbol(const char * aSymbol,
#endif // MOZ_DEMANGLE_SYMBOLS
}
#else
void DemangleSymbol(const char * aSymbol,
char * aBuffer,
int aBufLen)
{
// lose
aBuffer[0] = '\0';
}
#endif
#if defined(linux) && defined(__GLIBC__) && (defined(__i386) || defined(PPC)) // i386 or PPC Linux stackwalking code