diff options
| author | Pavel Labath <labath@google.com> | 2016-01-11 10:24:50 +0000 |
|---|---|---|
| committer | Pavel Labath <labath@google.com> | 2016-01-11 10:24:50 +0000 |
| commit | d0f89cd721df6943e36e4bbd9715317b08b7f578 (patch) | |
| tree | 2b05bfc3d26498b91b8e9c4af27612bab35cd1e8 /lldb/packages/Python/lldbsuite/test/functionalities | |
| parent | 054873b0be85583b0499d12fad58566ae5398e4e (diff) | |
| download | bcm5719-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')
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); |

