summaryrefslogtreecommitdiff
path: root/www/firefox/files/patch-bug1013675
diff options
context:
space:
mode:
Diffstat (limited to 'www/firefox/files/patch-bug1013675')
-rw-r--r--www/firefox/files/patch-bug101367588
1 files changed, 88 insertions, 0 deletions
diff --git a/www/firefox/files/patch-bug1013675 b/www/firefox/files/patch-bug1013675
new file mode 100644
index 000000000000..eac435acf3d0
--- /dev/null
+++ b/www/firefox/files/patch-bug1013675
@@ -0,0 +1,88 @@
+diff --git xpcom/base/nsDebugImpl.cpp xpcom/base/nsDebugImpl.cpp
+index 13a286f..293bd73 100644
+--- xpcom/base/nsDebugImpl.cpp
++++ 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