зеркало из https://github.com/mozilla/gecko-dev.git
Add MOZ_DEMANGLE_SYMBOLS to debug builds for demangling symbols.
This commit is contained in:
Родитель
eb5fb78483
Коммит
6f3fcfb2ba
|
@ -249,6 +249,8 @@ MDDEPDIR := @MDDEPDIR@
|
|||
|
||||
MOZ_DISABLE_DTD_DEBUG = @MOZ_DISABLE_DTD_DEBUG@
|
||||
|
||||
MOZ_DEMANGLE_SYMBOLS = @MOZ_DEMANGLE_SYMBOLS@
|
||||
|
||||
# For the use of the Fullcircle Talkback tool, if available.
|
||||
MOZ_FULLCIRCLE = @MOZ_FULLCIRCLE@
|
||||
FULLCIRCLE_LIBS = @FULLCIRCLE_LIBS@
|
||||
|
|
30
configure.in
30
configure.in
|
@ -2600,6 +2600,36 @@ MOZ_ARG_ENABLE_BOOL(efence,
|
|||
[ --enable-efence Link with Electric Fence if available (default=no) ],
|
||||
AC_CHECK_LIB(efence,malloc))
|
||||
|
||||
dnl ========================================================
|
||||
dnl =
|
||||
dnl = MOZ_DEMANGLE_UNDEFINED_SYMBOLS
|
||||
dnl =
|
||||
dnl = Support for demangling undefined symbols
|
||||
dnl =
|
||||
dnl ========================================================
|
||||
MOZ_DEMANGLE_SYMBOLS=
|
||||
|
||||
case "$target" in
|
||||
*-linux*)
|
||||
# Demangle only for debug builds
|
||||
if test "$MOZ_DEBUG"
|
||||
then
|
||||
MOZ_DEMANGLE_SYMBOLS=1
|
||||
AC_DEFINE(MOZ_DEMANGLE_SYMBOLS)
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SUBST(MOZ_DEMANGLE_SYMBOLS)
|
||||
|
||||
dnl ========================================================
|
||||
dnl =
|
||||
dnl = End MOZ_DEMANGLE_SYMBOLS
|
||||
dnl =
|
||||
dnl ========================================================
|
||||
|
||||
|
||||
|
||||
dnl ========================================================
|
||||
dnl =
|
||||
dnl = Misc. Options
|
||||
|
|
|
@ -499,10 +499,10 @@ nsTraceRefcnt::LogRelease(void* aPtr,
|
|||
|
||||
// This thing is exported by libiberty.a (-liberty)
|
||||
// Yes, this is a gcc only hack
|
||||
#if defined(MOZ_DEMANGLE_UNDEFINED_SYMBOLS)
|
||||
#if defined(MOZ_DEMANGLE_SYMBOLS)
|
||||
extern "C" char * cplus_demangle(const char *,int);
|
||||
#include <stdlib.h> // for free()
|
||||
#endif // MOZ_DEMANGLE_UNDEFINED_SYMBOLS
|
||||
#endif // MOZ_DEMANGLE_SYMBOLS
|
||||
|
||||
#ifdef __linux__
|
||||
NS_COM void
|
||||
|
@ -516,7 +516,7 @@ nsTraceRefcnt::DemangleSymbol(const char * aSymbol,
|
|||
|
||||
aBuffer[0] = '\0';
|
||||
|
||||
#if defined(MOZ_DEMANGLE_UNDEFINED_SYMBOLS)
|
||||
#if defined(MOZ_DEMANGLE_SYMBOLS)
|
||||
/* See demangle.h in the gcc source for the voodoo */
|
||||
char * demangled = cplus_demangle(aSymbol,3);
|
||||
|
||||
|
@ -526,7 +526,7 @@ nsTraceRefcnt::DemangleSymbol(const char * aSymbol,
|
|||
|
||||
free(demangled);
|
||||
}
|
||||
#endif // MOZ_DEMANGLE_UNDEFINED_SYMBOLS
|
||||
#endif // MOZ_DEMANGLE_SYMBOLS
|
||||
}
|
||||
#else // __linux__
|
||||
NS_COM void
|
||||
|
|
|
@ -499,10 +499,10 @@ nsTraceRefcnt::LogRelease(void* aPtr,
|
|||
|
||||
// This thing is exported by libiberty.a (-liberty)
|
||||
// Yes, this is a gcc only hack
|
||||
#if defined(MOZ_DEMANGLE_UNDEFINED_SYMBOLS)
|
||||
#if defined(MOZ_DEMANGLE_SYMBOLS)
|
||||
extern "C" char * cplus_demangle(const char *,int);
|
||||
#include <stdlib.h> // for free()
|
||||
#endif // MOZ_DEMANGLE_UNDEFINED_SYMBOLS
|
||||
#endif // MOZ_DEMANGLE_SYMBOLS
|
||||
|
||||
#ifdef __linux__
|
||||
NS_COM void
|
||||
|
@ -516,7 +516,7 @@ nsTraceRefcnt::DemangleSymbol(const char * aSymbol,
|
|||
|
||||
aBuffer[0] = '\0';
|
||||
|
||||
#if defined(MOZ_DEMANGLE_UNDEFINED_SYMBOLS)
|
||||
#if defined(MOZ_DEMANGLE_SYMBOLS)
|
||||
/* See demangle.h in the gcc source for the voodoo */
|
||||
char * demangled = cplus_demangle(aSymbol,3);
|
||||
|
||||
|
@ -526,7 +526,7 @@ nsTraceRefcnt::DemangleSymbol(const char * aSymbol,
|
|||
|
||||
free(demangled);
|
||||
}
|
||||
#endif // MOZ_DEMANGLE_UNDEFINED_SYMBOLS
|
||||
#endif // MOZ_DEMANGLE_SYMBOLS
|
||||
}
|
||||
#else // __linux__
|
||||
NS_COM void
|
||||
|
|
Загрузка…
Ссылка в новой задаче