- firefox 31.0 - firefox-esr 24.7.0 - libxul 24.7.0 - seamonkey 2.26.1 - thunderbird 31.0 Among changes: - add workaround for crash with openldap on thunderbird and seamonkey [1] - add crashfix for architectures with strict alignmentment - backport crashfix with system sqlite/nss on firefox-esr and thunderbird - restore hooking jemalloc in sqlite on freebsd 10+ - fix thunderbird build with -jN [2] - respect MAKE_JOBS_NUMBER regardless of kern.smp.cpus [2] - define CPE_URI for nspr/nss and firefox/thunderbird/seamonkey - require recent gstreamer1-libav i386 crashfix - add DTRACE option for use with DTraceToolkit (js_flowtime.d, js_who.d, etc) PR: 165263 [1] PR: 184630 [2] Submitted by: Jan Beich
88 lines
2.1 KiB
Text
88 lines
2.1 KiB
Text
diff --git xpcom/base/nsDebugImpl.cpp xpcom/base/nsDebugImpl.cpp
|
|
index 13a286f..293bd73 100644
|
|
--- mozilla/xpcom/base/nsDebugImpl.cpp
|
|
+++ mozilla/xpcom/base/nsDebugImpl.cpp
|
|
@@ -45,12 +45,43 @@
|
|
#endif
|
|
#endif
|
|
|
|
-#if defined(XP_MACOSX)
|
|
+#if defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \
|
|
+ || defined(__NetBSD__) || defined(__OpenBSD__)
|
|
#include <stdbool.h>
|
|
#include <unistd.h>
|
|
+#include <sys/param.h>
|
|
#include <sys/sysctl.h>
|
|
#endif
|
|
|
|
+#if defined(__OpenBSD__)
|
|
+#include <sys/proc.h>
|
|
+#endif
|
|
+
|
|
+#if defined(__DragonFly__) || defined(__FreeBSD__)
|
|
+#include <sys/user.h>
|
|
+#endif
|
|
+
|
|
+#if defined(__NetBSD__)
|
|
+#undef KERN_PROC
|
|
+#define KERN_PROC KERN_PROC2
|
|
+#define KINFO_PROC struct kinfo_proc2
|
|
+#else
|
|
+#define KINFO_PROC struct kinfo_proc
|
|
+#endif
|
|
+
|
|
+#if defined(XP_MACOSX)
|
|
+#define KP_FLAGS kp_proc.p_flag
|
|
+#elif defined(__DragonFly__)
|
|
+#define KP_FLAGS kp_flags
|
|
+#elif defined(__FreeBSD__)
|
|
+#define KP_FLAGS ki_flag
|
|
+#elif defined(__OpenBSD__) && !defined(_P_TRACED)
|
|
+#define KP_FLAGS p_psflags
|
|
+#define P_TRACED PS_TRACED
|
|
+#else
|
|
+#define KP_FLAGS p_flag
|
|
+#endif
|
|
+
|
|
#include "mozilla/mozalloc_abort.h"
|
|
|
|
static void
|
|
@@ -144,16 +175,22 @@ nsDebugImpl::GetIsDebuggerAttached(bool* aResult)
|
|
|
|
#if defined(XP_WIN)
|
|
*aResult = ::IsDebuggerPresent();
|
|
-#elif defined(XP_MACOSX)
|
|
+#elif defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \
|
|
+ || defined(__NetBSD__) || defined(__OpenBSD__)
|
|
// Specify the info we're looking for
|
|
- int mib[4];
|
|
- mib[0] = CTL_KERN;
|
|
- mib[1] = KERN_PROC;
|
|
- mib[2] = KERN_PROC_PID;
|
|
- mib[3] = getpid();
|
|
+ int mib[] = {
|
|
+ CTL_KERN,
|
|
+ KERN_PROC,
|
|
+ KERN_PROC_PID,
|
|
+ getpid(),
|
|
+#if defined(__NetBSD__) || defined(__OpenBSD__)
|
|
+ sizeof(KINFO_PROC),
|
|
+ 1,
|
|
+#endif
|
|
+ };
|
|
size_t mibSize = sizeof(mib) / sizeof(int);
|
|
|
|
- struct kinfo_proc info;
|
|
+ KINFO_PROC info;
|
|
size_t infoSize = sizeof(info);
|
|
memset(&info, 0, infoSize);
|
|
|
|
@@ -163,7 +200,7 @@ nsDebugImpl::GetIsDebuggerAttached(bool* aResult)
|
|
return NS_OK;
|
|
}
|
|
|
|
- if (info.kp_proc.p_flag & P_TRACED) {
|
|
+ if (info.KP_FLAGS & P_TRACED) {
|
|
*aResult = true;
|
|
}
|
|
#endif
|