summaryrefslogtreecommitdiff
path: root/user/thunderbird/profiler.patch
diff options
context:
space:
mode:
Diffstat (limited to 'user/thunderbird/profiler.patch')
-rw-r--r--user/thunderbird/profiler.patch44
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;
+ }
+