Fix TestProcessAttach for Linux ptracer lock-down and llgs-local.
authorTodd Fiala <todd.fiala@gmail.com>
Mon, 27 Oct 2014 00:31:05 +0000 (00:31 +0000)
committerTodd Fiala <todd.fiala@gmail.com>
Mon, 27 Oct 2014 00:31:05 +0000 (00:31 +0000)
llvm-svn: 220660

lldb/test/functionalities/process_attach/main.c

index 8d30098..af4fdba 100644 (file)
@@ -1,9 +1,30 @@
 #include <stdio.h>
 #include <unistd.h>
 
+#if defined(__linux__)
+#include <sys/prctl.h>
+#endif
+
 int main(int argc, char const *argv[]) {
+    int temp;
+#if defined(__linux__)
+    // Immediately enable any ptracer so that we can allow the stub attach
+    // operation to succeed.  Some Linux kernels are locked down so that
+    // only an ancestor process can be a ptracer of a process.  This disables that
+    // restriction.  Without it, attach-related stub tests will fail.
+#if defined(PR_SET_PTRACER) && defined(PR_SET_PTRACER_ANY)
+    int prctl_result;
+
+    // For now we execute on best effort basis.  If this fails for
+    // some reason, so be it.
+    prctl_result = prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
+    (void) prctl_result;
+#endif
+#endif
+
     // Waiting to be attached by the debugger.
-    int temp = 0;
+    temp = 0;
+
     while (temp < 30) // Waiting to be attached...
     {
         sleep(1);