diff options
author | Todd Fiala <todd.fiala@gmail.com> | 2014-08-27 16:05:26 +0000 |
---|---|---|
committer | Todd Fiala <todd.fiala@gmail.com> | 2014-08-27 16:05:26 +0000 |
commit | 4207968d33f5dca9205e8b082cc7411baa355040 (patch) | |
tree | caa8fbe051c47892c54e51140e60ea7f156a50ad /lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp | |
parent | 49d8ce03ce104602740b975f4f2647512ec666fc (diff) | |
download | bcm5719-llvm-4207968d33f5dca9205e8b082cc7411baa355040.tar.gz bcm5719-llvm-4207968d33f5dca9205e8b082cc7411baa355040.zip |
Add Linux support for get thread area on ARM64 using ProcessMonitor debugging.
See http://reviews.llvm.org/D5073.
Change by Paul Osmialowski.
llvm-svn: 216553
Diffstat (limited to 'lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp')
-rw-r--r-- | lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp b/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp index 048a517d4f1..416d6a65da5 100644 --- a/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp +++ b/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp @@ -15,6 +15,7 @@ #include <string.h> #include <stdint.h> #include <unistd.h> +#include <elf.h> #include <sys/personality.h> #include <sys/ptrace.h> #include <sys/uio.h> @@ -24,11 +25,6 @@ #include <sys/user.h> #include <sys/wait.h> -#if defined (__arm64__) || defined (__aarch64__) -// NT_PRSTATUS and NT_FPREGSET definition -#include <elf.h> -#endif - // C++ Includes // Other libraries and framework includes #include "lldb/Core/Debugger.h" @@ -802,6 +798,19 @@ ReadThreadPointerOperation::Execute(ProcessMonitor *monitor) const ArchSpec& arch = monitor->GetProcess().GetTarget().GetArchitecture(); switch(arch.GetMachine()) { + case llvm::Triple::aarch64: + { + int regset = NT_ARM_TLS; + struct iovec ioVec; + + ioVec.iov_base = m_addr; + ioVec.iov_len = sizeof(lldb::addr_t); + if (PTRACE(PTRACE_GETREGSET, m_tid, ®set, &ioVec, ioVec.iov_len) < 0) + m_result = false; + else + m_result = true; + break; + } #if defined(__i386__) || defined(__x86_64__) // Note that struct user below has a field named i387 which is x86-specific. // Therefore, this case should be compiled only for x86-based systems. |