diff options
Diffstat (limited to 'user/thunderbird/profiler.patch')
-rw-r--r-- | user/thunderbird/profiler.patch | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/user/thunderbird/profiler.patch b/user/thunderbird/profiler.patch new file mode 100644 index 000000000..1b502a243 --- /dev/null +++ b/user/thunderbird/profiler.patch @@ -0,0 +1,44 @@ +--- a/mozilla/tools/profiler/core/platform-linux.cc ++++ b/mozilla/tools/profiler/core/platform-linux.cc +@@ -711,11 +711,13 @@ void OS::Startup() { + void TickSample::PopulateContext(void* aContext) + { + MOZ_ASSERT(aContext); ++#if defined(__GLIBC__) + ucontext_t* pContext = reinterpret_cast<ucontext_t*>(aContext); + if (!getcontext(pContext)) { + context = pContext; + SetSampleContext(this, aContext); + } ++#endif + } + + void OS::SleepMicro(int microseconds) +--- a/mozilla/tools/profiler/core/platform.h ++++ b/mozilla/tools/profiler/core/platform.h +@@ -34,6 +34,8 @@ + #define MOZ_COUNT_DTOR(name) + #endif + ++#include <sys/types.h> ++ + #ifdef ANDROID + #include <android/log.h> + #else +--- a/mozilla/tools/profiler/lul/LulElf.cpp ++++ b/mozilla/tools/profiler/lul/LulElf.cpp +@@ -483,10 +483,10 @@ string FormatIdentifier(unsigned char identifier[16]) { + // Return the non-directory portion of FILENAME: the portion after the + // last slash, or the whole filename if there are no slashes. + string BaseFileName(const string &filename) { +- // Lots of copies! basename's behavior is less than ideal. +- char *c_filename = strdup(filename.c_str()); +- string base = basename(c_filename); +- free(c_filename); ++ // basename's behavior is less than ideal so avoid it ++ const char *c_filename = filename.c_str(); ++ const char *p = strrchr(c_filename, '/'); ++ string base = p ? p+1 : c_filename; + return base; + } + |