summaryrefslogtreecommitdiff
path: root/user/firefox-esr/fix-tools.patch
diff options
context:
space:
mode:
Diffstat (limited to 'user/firefox-esr/fix-tools.patch')
-rw-r--r--user/firefox-esr/fix-tools.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/user/firefox-esr/fix-tools.patch b/user/firefox-esr/fix-tools.patch
new file mode 100644
index 000000000..ea5a2cd78
--- /dev/null
+++ b/user/firefox-esr/fix-tools.patch
@@ -0,0 +1,50 @@
+diff --git a/tools/profiler/core/platform-linux.cc b/tools/profiler/core/platform-linux.cc
+index 0df1e8f..d868895 100644
+--- a/tools/profiler/core/platform-linux.cc
++++ b/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)
+diff --git a/tools/profiler/core/platform.h b/tools/profiler/core/platform.h
+index a38b3b5..170bd75 100644
+--- a/tools/profiler/core/platform.h
++++ b/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
+diff --git a/tools/profiler/lul/LulElf.cpp b/tools/profiler/lul/LulElf.cpp
+index a922137..d01dde1 100644
+--- a/tools/profiler/lul/LulElf.cpp
++++ b/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;
+ }
+