summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-editors/nvu/files/010_glibc-2.4.patch')
-rw-r--r--app-editors/nvu/files/010_glibc-2.4.patch84
1 files changed, 84 insertions, 0 deletions
diff --git a/app-editors/nvu/files/010_glibc-2.4.patch b/app-editors/nvu/files/010_glibc-2.4.patch
new file mode 100644
index 000000000000..e4b56d30dd48
--- /dev/null
+++ b/app-editors/nvu/files/010_glibc-2.4.patch
@@ -0,0 +1,84 @@
+diff -u -p -8 -r1.12 nsStackFrameUnix.cpp
+--- xpcom/base/nsStackFrameUnix.cpp 18 Apr 2004 14:18:12 -0000 1.12
++++ xpcom/base/nsStackFrameUnix.cpp 23 Jan 2006 09:23:04 -0000
+@@ -77,19 +77,30 @@ void DemangleSymbol(const char * aSymbol
+ if (demangled)
+ {
+ strncpy(aBuffer,demangled,aBufLen);
+ free(demangled);
+ }
+ #endif // MOZ_DEMANGLE_SYMBOLS
+ }
+
++#if defined(linux) // Linux
++#if (__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 3)) // use glibc backtrace()
++#include <execinfo.h>
++void DumpStackToFile(FILE* aStream)
++{
++ void *array[20];
++ size_t size;
+
+-#if defined(linux) && defined(__GLIBC__) && (defined(__i386) || defined(PPC)) // i386 or PPC Linux stackwalking code
++ fflush(aStream);
++ size = backtrace (array, 20);
++ backtrace_symbols_fd (array, size, fileno(aStream));
++}
+
++#elif defined(__GLIBC__) && (defined(__i386) || defined(PPC)) // old style i386 or PPC Linux stackwalking code
+ #include <setjmp.h>
+ //
+
+ void DumpStackToFile(FILE* aStream)
+ {
+ jmp_buf jb;
+ setjmp(jb);
+
+@@ -135,16 +146,23 @@ void DumpStackToFile(FILE* aStream)
+
+ PRUint32 off = (char*)pc - (char*)info.dli_saddr;
+ fprintf(aStream, "%s+0x%08X [%s +0x%08X]\n",
+ symbol, off, info.dli_fname, foff);
+ }
+ }
+ }
+
++#else // not implemented
++void DumpStackToFile(FILE* aStream)
++{
++ fprintf(aStream, "Info: Stacktrace not implemented for this Linux platform\n");
++}
++#endif // Linux
++
+ #elif defined(__sun) && (defined(__sparc) || defined(sparc) || defined(__i386) || defined(i386))
+
+ /*
+ * Stack walking code for Solaris courtesy of Bart Smaalder's "memtrak".
+ */
+
+ #include <synch.h>
+ #include <ucontext.h>
+
+diff -u -p -8 -r1.96 nsTraceRefcntImpl.cpp
+--- xpcom/base/nsTraceRefcntImpl.cpp 24 Jun 2005 00:24:41 -0000 1.96
++++ xpcom/base/nsTraceRefcntImpl.cpp 23 Jan 2006 09:24:05 -0000
+@@ -823,18 +823,18 @@ static void InitTraceLog(void)
+ #include "nsStackFrameWin.h"
+ void
+ nsTraceRefcntImpl::WalkTheStack(FILE* aStream)
+ {
+ DumpStackToFile(aStream);
+ }
+
+ // WIN32 x86 stack walking code
+-// i386 or PPC Linux stackwalking code or Solaris
+-#elif (defined(linux) && defined(__GLIBC__) && (defined(__i386) || defined(PPC))) || (defined(__sun) && (defined(__sparc) || defined(sparc) || defined(__i386) || defined(i386)))
++// Linux stackwalking code or Solaris
++#elif (defined(linux) && defined(__GLIBC__)) || (defined(__sun) && (defined(__sparc) || defined(sparc) || defined(__i386) || defined(i386)))
+ #include "nsStackFrameUnix.h"
+ void
+ nsTraceRefcntImpl::WalkTheStack(FILE* aStream)
+ {
+ DumpStackToFile(aStream);
+ }
+
+ #else // unsupported platform.