author Mike Hommey <>
Tue, 07 Nov 2017 15:07:30 +0900
changeset 694868 b2dd86a66344a2717f5cae026ac47247be525712
permissions -rw-r--r--
Bug 1409267 - Patch compiler-rt to always use prctl(PR_SET_PTRACER). r=froydnj

--- a/compiler-rt/lib/sanitizer_common/
+++ b/compiler-rt/lib/sanitizer_common/
@@ -57,6 +57,14 @@
 #include "sanitizer_mutex.h"
 #include "sanitizer_placement_new.h"
+// Sufficiently old kernel headers don't provide this value, but we can still
+// call prctl with it. If the runtime kernel is new enough, the prctl call will
+// have the desired effect; if the kernel is too old, the call will error and we
+// can ignore said error.
+#define PR_SET_PTRACER 0x59616d61
 // This module works by spawning a Linux task which then attaches to every
 // thread in the caller process with ptrace. This suspends the threads, and
 // PTRACE_GETREGS can then be used to obtain their register state. The callback
@@ -433,9 +441,7 @@
     ScopedSetTracerPID scoped_set_tracer_pid(tracer_pid);
     // On some systems we have to explicitly declare that we want to be traced
     // by the tracer thread.
     internal_prctl(PR_SET_PTRACER, tracer_pid, 0, 0, 0);
     // Allow the tracer thread to start.
     // NOTE: errno is shared between this thread and the tracer thread.