#include "NativeThreadLinux.h"
#include <csignal>
#include <sstream>
#include "NativeProcessLinux.h"
#include "NativeRegisterContextLinux.h"
#include "SingleStepCheck.h"
#include "lldb/Host/HostNativeThread.h"
#include "lldb/Host/linux/Ptrace.h"
#include "lldb/Host/linux/Support.h"
#include "lldb/Utility/LLDBAssert.h"
#include "lldb/Utility/LLDBLog.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/State.h"
#include "lldb/lldb-enumerations.h"
#include "llvm/ADT/SmallString.h"
#include "Plugins/Process/POSIX/CrashReason.h"
#include "Plugins/Process/Utility/MemoryTagManagerAArch64MTE.h"
#include <sys/syscall.h>
#define tgkill(pid, tid, sig) …
usingnamespacelldb;
usingnamespacelldb_private;
usingnamespacelldb_private::process_linux;
namespace {
void LogThreadStopInfo(Log &log, const ThreadStopInfo &stop_info,
const char *const header) { … }
}
NativeThreadLinux::NativeThreadLinux(NativeProcessLinux &process,
lldb::tid_t tid)
: … { … }
std::string NativeThreadLinux::GetName() { … }
lldb::StateType NativeThreadLinux::GetState() { … }
bool NativeThreadLinux::GetStopReason(ThreadStopInfo &stop_info,
std::string &description) { … }
Status NativeThreadLinux::SetWatchpoint(lldb::addr_t addr, size_t size,
uint32_t watch_flags, bool hardware) { … }
Status NativeThreadLinux::RemoveWatchpoint(lldb::addr_t addr) { … }
Status NativeThreadLinux::SetHardwareBreakpoint(lldb::addr_t addr,
size_t size) { … }
Status NativeThreadLinux::RemoveHardwareBreakpoint(lldb::addr_t addr) { … }
Status NativeThreadLinux::Resume(uint32_t signo) { … }
Status NativeThreadLinux::SingleStep(uint32_t signo) { … }
void NativeThreadLinux::SetStoppedBySignal(uint32_t signo,
const siginfo_t *info) { … }
void NativeThreadLinux::AnnotateSyncTagCheckFault(lldb::addr_t fault_addr) { … }
bool NativeThreadLinux::IsStopped(int *signo) { … }
void NativeThreadLinux::SetStopped() { … }
void NativeThreadLinux::SetStoppedByExec() { … }
void NativeThreadLinux::SetStoppedByBreakpoint() { … }
void NativeThreadLinux::SetStoppedByWatchpoint(uint32_t wp_index) { … }
bool NativeThreadLinux::IsStoppedAtBreakpoint() { … }
bool NativeThreadLinux::IsStoppedAtWatchpoint() { … }
void NativeThreadLinux::SetStoppedByTrace() { … }
void NativeThreadLinux::SetStoppedByFork(bool is_vfork, lldb::pid_t child_pid) { … }
void NativeThreadLinux::SetStoppedByVForkDone() { … }
void NativeThreadLinux::SetStoppedWithNoReason() { … }
void NativeThreadLinux::SetStoppedByProcessorTrace(
llvm::StringRef description) { … }
void NativeThreadLinux::SetExited() { … }
Status NativeThreadLinux::RequestStop() { … }
void NativeThreadLinux::MaybeLogStateChange(lldb::StateType new_state) { … }
NativeProcessLinux &NativeThreadLinux::GetProcess() { … }
const NativeProcessLinux &NativeThreadLinux::GetProcess() const { … }
llvm::Expected<std::unique_ptr<llvm::MemoryBuffer>>
NativeThreadLinux::GetSiginfo() const { … }