summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/functionalities
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2016-01-11 10:24:50 +0000
committerPavel Labath <labath@google.com>2016-01-11 10:24:50 +0000
commitd0f89cd721df6943e36e4bbd9715317b08b7f578 (patch)
tree2b05bfc3d26498b91b8e9c4af27612bab35cd1e8 /lldb/packages/Python/lldbsuite/test/functionalities
parent054873b0be85583b0499d12fad58566ae5398e4e (diff)
downloadbcm5719-llvm-d0f89cd721df6943e36e4bbd9715317b08b7f578.tar.gz
bcm5719-llvm-d0f89cd721df6943e36e4bbd9715317b08b7f578.zip
Centralize the handling of attach permissions on linux in tests
Summary: On linux we need the process to give us special permissions before we can attach to it. Previously, the code for this was copied into every file that needed it. This moves the code to a central place to reduce code duplication. Reviewers: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D15992 llvm-svn: 257319
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/functionalities')
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/main.cpp17
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/process_attach/main.cpp19
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/process_group/main.c17
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/register/main.cpp17
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/main.cpp19
5 files changed, 5 insertions, 84 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/main.cpp
index 7cf36025854..82aad70eed5 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/main.cpp
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/attach_resume/main.cpp
@@ -4,10 +4,6 @@
#include <chrono>
#include <thread>
-#if defined(__linux__)
-#include <sys/prctl.h>
-#endif
-
volatile bool debugger_flag = true; // The debugger will flip this to false
void *start(void *data)
@@ -25,18 +21,7 @@ void *start(void *data)
int main(int argc, char const *argv[])
{
-#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)
- // For now we execute on best effort basis. If this fails for
- // some reason, so be it.
- const int prctl_result = prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
- static_cast<void> (prctl_result);
-#endif
-#endif
+ lldb_enable_attach();
static const size_t nthreads = 16;
std::thread threads[nthreads];
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/main.cpp
index 8021feac5c7..46ffacc0a84 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/main.cpp
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/process_attach/main.cpp
@@ -1,28 +1,11 @@
#include <stdio.h>
-#if defined(__linux__)
-#include <sys/prctl.h>
-#endif
-
#include <chrono>
#include <thread>
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
+ lldb_enable_attach();
// Waiting to be attached by the debugger.
temp = 0;
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/process_group/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/process_group/main.c
index c730c629e8b..7e986bbac65 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/process_group/main.c
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/process_group/main.c
@@ -2,10 +2,6 @@
#include <unistd.h>
#include <sys/wait.h>
-#if defined(__linux__)
-#include <sys/prctl.h>
-#endif
-
volatile int release_child_flag = 0;
int main(int argc, char const *argv[])
@@ -61,18 +57,7 @@ int main(int argc, char const *argv[])
}
else
{ // child
-#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)
- // For now we execute on best effort basis. If this fails for
- // some reason, so be it.
- const int prctl_result = prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
- (void) prctl_result;
-#endif
-#endif
+ lldb_enable_attach();
while (! release_child_flag) // Wait for debugger to attach
sleep(1);
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/register/main.cpp
index 876dd0833e5..156515768dd 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/register/main.cpp
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/register/main.cpp
@@ -8,10 +8,6 @@
//===----------------------------------------------------------------------===//
#include <stdio.h>
-#if defined(__linux__)
-#include <sys/prctl.h>
-#endif
-
#include <chrono>
#include <thread>
@@ -19,18 +15,7 @@ long double outermost_return_long_double (long double my_long_double);
int main (int argc, char const *argv[])
{
-#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)
- // For now we execute on best effort basis. If this fails for
- // some reason, so be it.
- const int prctl_result = prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
- static_cast<void> (prctl_result);
-#endif
-#endif
+ lldb_enable_attach();
char my_string[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 0};
double my_double = 1234.5678;
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/main.cpp
index 8434458f064..d8f06e55a2d 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/main.cpp
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/thread/create_after_attach/main.cpp
@@ -4,10 +4,6 @@
using std::chrono::microseconds;
-#if defined(__linux__)
-#include <sys/prctl.h>
-#endif
-
volatile int g_thread_2_continuing = 0;
void *
@@ -42,20 +38,7 @@ thread_2_func (void *input)
int main(int argc, char const *argv[])
{
-#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
+ lldb_enable_attach();
// Create a new thread
std::thread thread_1(thread_1_func, nullptr);
OpenPOWER on IntegriCloud