From 4207968d33f5dca9205e8b082cc7411baa355040 Mon Sep 17 00:00:00 2001 From: Todd Fiala Date: Wed, 27 Aug 2014 16:05:26 +0000 Subject: 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 --- lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp') 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 #include #include +#include #include #include #include @@ -24,11 +25,6 @@ #include #include -#if defined (__arm64__) || defined (__aarch64__) -// NT_PRSTATUS and NT_FPREGSET definition -#include -#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. -- cgit v1.2.3