[lldb/Plugin] Rename TSanRuntime for consistency with plugin (NFC)

Renames TSanRuntime to InstrumentationRuntimeTSan to be
consistent with the directory structure and plugin name.
This commit is contained in:
Jonas Devlieghere 2020-01-21 14:50:36 -08:00
parent 0feedebf4f
commit 7745990dd9
5 changed files with 46 additions and 45 deletions

View File

@ -56,7 +56,7 @@
#include "Plugins/Instruction/PPC64/EmulateInstructionPPC64.h" #include "Plugins/Instruction/PPC64/EmulateInstructionPPC64.h"
#include "Plugins/InstrumentationRuntime/ASan/InstrumentationRuntimeASan.h" #include "Plugins/InstrumentationRuntime/ASan/InstrumentationRuntimeASan.h"
#include "Plugins/InstrumentationRuntime/MainThreadChecker/MainThreadCheckerRuntime.h" #include "Plugins/InstrumentationRuntime/MainThreadChecker/MainThreadCheckerRuntime.h"
#include "Plugins/InstrumentationRuntime/TSan/TSanRuntime.h" #include "Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.h"
#include "Plugins/InstrumentationRuntime/UBSan/UBSanRuntime.h" #include "Plugins/InstrumentationRuntime/UBSan/UBSanRuntime.h"
#include "Plugins/JITLoader/GDB/JITLoaderGDB.h" #include "Plugins/JITLoader/GDB/JITLoaderGDB.h"
#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h" #include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
@ -223,7 +223,7 @@ llvm::Error SystemInitializerFull::Initialize() {
minidump::ProcessMinidump::Initialize(); minidump::ProcessMinidump::Initialize();
MemoryHistoryASan::Initialize(); MemoryHistoryASan::Initialize();
InstrumentationRuntimeASan::Initialize(); InstrumentationRuntimeASan::Initialize();
ThreadSanitizerRuntime::Initialize(); InstrumentationRuntimeTSan::Initialize();
UndefinedBehaviorSanitizerRuntime::Initialize(); UndefinedBehaviorSanitizerRuntime::Initialize();
MainThreadCheckerRuntime::Initialize(); MainThreadCheckerRuntime::Initialize();
@ -317,7 +317,7 @@ void SystemInitializerFull::Terminate() {
minidump::ProcessMinidump::Terminate(); minidump::ProcessMinidump::Terminate();
MemoryHistoryASan::Terminate(); MemoryHistoryASan::Terminate();
InstrumentationRuntimeASan::Terminate(); InstrumentationRuntimeASan::Terminate();
ThreadSanitizerRuntime::Terminate(); InstrumentationRuntimeTSan::Terminate();
UndefinedBehaviorSanitizerRuntime::Terminate(); UndefinedBehaviorSanitizerRuntime::Terminate();
MainThreadCheckerRuntime::Terminate(); MainThreadCheckerRuntime::Terminate();
wasm::SymbolVendorWasm::Terminate(); wasm::SymbolVendorWasm::Terminate();

View File

@ -1,5 +1,5 @@
add_lldb_library(lldbPluginInstrumentationRuntimeTSan PLUGIN add_lldb_library(lldbPluginInstrumentationRuntimeTSan PLUGIN
TSanRuntime.cpp InstrumentationRuntimeTSan.cpp
LINK_LIBS LINK_LIBS
lldbBreakpoint lldbBreakpoint

View File

@ -1,4 +1,4 @@
//===-- TSanRuntime.cpp -----------------------------------------*- C++ -*-===// //===-- InstrumentationRuntimeTSan.cpp --------------------------*- C++ -*-===//
// //
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information. // See https://llvm.org/LICENSE.txt for license information.
@ -6,7 +6,7 @@
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "TSanRuntime.h" #include "InstrumentationRuntimeTSan.h"
#include "Plugins/Process/Utility/HistoryThread.h" #include "Plugins/Process/Utility/HistoryThread.h"
#include "lldb/Breakpoint/StoppointCallbackContext.h" #include "lldb/Breakpoint/StoppointCallbackContext.h"
@ -36,29 +36,29 @@ using namespace lldb;
using namespace lldb_private; using namespace lldb_private;
lldb::InstrumentationRuntimeSP lldb::InstrumentationRuntimeSP
ThreadSanitizerRuntime::CreateInstance(const lldb::ProcessSP &process_sp) { InstrumentationRuntimeTSan::CreateInstance(const lldb::ProcessSP &process_sp) {
return InstrumentationRuntimeSP(new ThreadSanitizerRuntime(process_sp)); return InstrumentationRuntimeSP(new InstrumentationRuntimeTSan(process_sp));
} }
void ThreadSanitizerRuntime::Initialize() { void InstrumentationRuntimeTSan::Initialize() {
PluginManager::RegisterPlugin( PluginManager::RegisterPlugin(
GetPluginNameStatic(), "ThreadSanitizer instrumentation runtime plugin.", GetPluginNameStatic(), "ThreadSanitizer instrumentation runtime plugin.",
CreateInstance, GetTypeStatic); CreateInstance, GetTypeStatic);
} }
void ThreadSanitizerRuntime::Terminate() { void InstrumentationRuntimeTSan::Terminate() {
PluginManager::UnregisterPlugin(CreateInstance); PluginManager::UnregisterPlugin(CreateInstance);
} }
lldb_private::ConstString ThreadSanitizerRuntime::GetPluginNameStatic() { lldb_private::ConstString InstrumentationRuntimeTSan::GetPluginNameStatic() {
return ConstString("ThreadSanitizer"); return ConstString("ThreadSanitizer");
} }
lldb::InstrumentationRuntimeType ThreadSanitizerRuntime::GetTypeStatic() { lldb::InstrumentationRuntimeType InstrumentationRuntimeTSan::GetTypeStatic() {
return eInstrumentationRuntimeTypeThreadSanitizer; return eInstrumentationRuntimeTypeThreadSanitizer;
} }
ThreadSanitizerRuntime::~ThreadSanitizerRuntime() { Deactivate(); } InstrumentationRuntimeTSan::~InstrumentationRuntimeTSan() { Deactivate(); }
const char *thread_sanitizer_retrieve_report_data_prefix = R"( const char *thread_sanitizer_retrieve_report_data_prefix = R"(
extern "C" extern "C"
@ -84,7 +84,7 @@ extern "C"
int *running, const char **name, int *parent_tid, int *running, const char **name, int *parent_tid,
void **trace, unsigned long trace_size); void **trace, unsigned long trace_size);
int __tsan_get_report_unique_tid(void *report, unsigned long idx, int *tid); int __tsan_get_report_unique_tid(void *report, unsigned long idx, int *tid);
// TODO: dlsym won't work on Windows. // TODO: dlsym won't work on Windows.
void *dlsym(void* handle, const char* symbol); void *dlsym(void* handle, const char* symbol);
int (*ptr__tsan_get_report_loc_object_type)(void *report, unsigned long idx, const char **object_type); int (*ptr__tsan_get_report_loc_object_type)(void *report, unsigned long idx, const char **object_type);
@ -97,15 +97,15 @@ struct data {
void *report; void *report;
const char *description; const char *description;
int report_count; int report_count;
void *sleep_trace[REPORT_TRACE_SIZE]; void *sleep_trace[REPORT_TRACE_SIZE];
int stack_count; int stack_count;
struct { struct {
int idx; int idx;
void *trace[REPORT_TRACE_SIZE]; void *trace[REPORT_TRACE_SIZE];
} stacks[REPORT_ARRAY_SIZE]; } stacks[REPORT_ARRAY_SIZE];
int mop_count; int mop_count;
struct { struct {
int idx; int idx;
@ -116,7 +116,7 @@ struct data {
void *addr; void *addr;
void *trace[REPORT_TRACE_SIZE]; void *trace[REPORT_TRACE_SIZE];
} mops[REPORT_ARRAY_SIZE]; } mops[REPORT_ARRAY_SIZE];
int loc_count; int loc_count;
struct { struct {
int idx; int idx;
@ -130,7 +130,7 @@ struct data {
void *trace[REPORT_TRACE_SIZE]; void *trace[REPORT_TRACE_SIZE];
const char *object_type; const char *object_type;
} locs[REPORT_ARRAY_SIZE]; } locs[REPORT_ARRAY_SIZE];
int mutex_count; int mutex_count;
struct { struct {
int idx; int idx;
@ -139,7 +139,7 @@ struct data {
int destroyed; int destroyed;
void *trace[REPORT_TRACE_SIZE]; void *trace[REPORT_TRACE_SIZE];
} mutexes[REPORT_ARRAY_SIZE]; } mutexes[REPORT_ARRAY_SIZE];
int thread_count; int thread_count;
struct { struct {
int idx; int idx;
@ -150,7 +150,7 @@ struct data {
int parent_tid; int parent_tid;
void *trace[REPORT_TRACE_SIZE]; void *trace[REPORT_TRACE_SIZE];
} threads[REPORT_ARRAY_SIZE]; } threads[REPORT_ARRAY_SIZE];
int unique_tid_count; int unique_tid_count;
struct { struct {
int idx; int idx;
@ -299,8 +299,8 @@ static user_id_t Renumber(uint64_t id,
return IT->second; return IT->second;
} }
StructuredData::ObjectSP StructuredData::ObjectSP InstrumentationRuntimeTSan::RetrieveReportData(
ThreadSanitizerRuntime::RetrieveReportData(ExecutionContextRef exe_ctx_ref) { ExecutionContextRef exe_ctx_ref) {
ProcessSP process_sp = GetProcessSP(); ProcessSP process_sp = GetProcessSP();
if (!process_sp) if (!process_sp)
return StructuredData::ObjectSP(); return StructuredData::ObjectSP();
@ -486,7 +486,7 @@ ThreadSanitizerRuntime::RetrieveReportData(ExecutionContextRef exe_ctx_ref) {
} }
std::string std::string
ThreadSanitizerRuntime::FormatDescription(StructuredData::ObjectSP report) { InstrumentationRuntimeTSan::FormatDescription(StructuredData::ObjectSP report) {
std::string description = report->GetAsDictionary() std::string description = report->GetAsDictionary()
->GetValueForKey("issue_type") ->GetValueForKey("issue_type")
->GetAsString() ->GetAsString()
@ -580,7 +580,7 @@ static void GetSymbolDeclarationFromAddress(ProcessSP process_sp, addr_t addr,
decl = var->GetDeclaration(); decl = var->GetDeclaration();
} }
addr_t ThreadSanitizerRuntime::GetFirstNonInternalFramePc( addr_t InstrumentationRuntimeTSan::GetFirstNonInternalFramePc(
StructuredData::ObjectSP trace, bool skip_one_frame) { StructuredData::ObjectSP trace, bool skip_one_frame) {
ProcessSP process_sp = GetProcessSP(); ProcessSP process_sp = GetProcessSP();
ModuleSP runtime_module_sp = GetRuntimeModuleSP(); ModuleSP runtime_module_sp = GetRuntimeModuleSP();
@ -609,7 +609,7 @@ addr_t ThreadSanitizerRuntime::GetFirstNonInternalFramePc(
} }
std::string std::string
ThreadSanitizerRuntime::GenerateSummary(StructuredData::ObjectSP report) { InstrumentationRuntimeTSan::GenerateSummary(StructuredData::ObjectSP report) {
ProcessSP process_sp = GetProcessSP(); ProcessSP process_sp = GetProcessSP();
std::string summary = report->GetAsDictionary() std::string summary = report->GetAsDictionary()
@ -695,8 +695,8 @@ ThreadSanitizerRuntime::GenerateSummary(StructuredData::ObjectSP report) {
return summary; return summary;
} }
addr_t addr_t InstrumentationRuntimeTSan::GetMainRacyAddress(
ThreadSanitizerRuntime::GetMainRacyAddress(StructuredData::ObjectSP report) { StructuredData::ObjectSP report) {
addr_t result = (addr_t)-1; addr_t result = (addr_t)-1;
report->GetObjectForDotSeparatedPath("mops")->GetAsArray()->ForEach( report->GetObjectForDotSeparatedPath("mops")->GetAsArray()->ForEach(
@ -711,7 +711,7 @@ ThreadSanitizerRuntime::GetMainRacyAddress(StructuredData::ObjectSP report) {
return (result == (addr_t)-1) ? 0 : result; return (result == (addr_t)-1) ? 0 : result;
} }
std::string ThreadSanitizerRuntime::GetLocationDescription( std::string InstrumentationRuntimeTSan::GetLocationDescription(
StructuredData::ObjectSP report, addr_t &global_addr, StructuredData::ObjectSP report, addr_t &global_addr,
std::string &global_name, std::string &filename, uint32_t &line) { std::string &global_name, std::string &filename, uint32_t &line) {
std::string result = ""; std::string result = "";
@ -791,15 +791,15 @@ std::string ThreadSanitizerRuntime::GetLocationDescription(
return result; return result;
} }
bool ThreadSanitizerRuntime::NotifyBreakpointHit( bool InstrumentationRuntimeTSan::NotifyBreakpointHit(
void *baton, StoppointCallbackContext *context, user_id_t break_id, void *baton, StoppointCallbackContext *context, user_id_t break_id,
user_id_t break_loc_id) { user_id_t break_loc_id) {
assert(baton && "null baton"); assert(baton && "null baton");
if (!baton) if (!baton)
return false; return false;
ThreadSanitizerRuntime *const instance = InstrumentationRuntimeTSan *const instance =
static_cast<ThreadSanitizerRuntime *>(baton); static_cast<InstrumentationRuntimeTSan *>(baton);
ProcessSP process_sp = instance->GetProcessSP(); ProcessSP process_sp = instance->GetProcessSP();
@ -873,12 +873,13 @@ bool ThreadSanitizerRuntime::NotifyBreakpointHit(
return false; // Let target run return false; // Let target run
} }
const RegularExpression &ThreadSanitizerRuntime::GetPatternForRuntimeLibrary() { const RegularExpression &
InstrumentationRuntimeTSan::GetPatternForRuntimeLibrary() {
static RegularExpression regex(llvm::StringRef("libclang_rt.tsan_")); static RegularExpression regex(llvm::StringRef("libclang_rt.tsan_"));
return regex; return regex;
} }
bool ThreadSanitizerRuntime::CheckIfRuntimeIsValid( bool InstrumentationRuntimeTSan::CheckIfRuntimeIsValid(
const lldb::ModuleSP module_sp) { const lldb::ModuleSP module_sp) {
static ConstString g_tsan_get_current_report("__tsan_get_current_report"); static ConstString g_tsan_get_current_report("__tsan_get_current_report");
const Symbol *symbol = module_sp->FindFirstSymbolWithNameAndType( const Symbol *symbol = module_sp->FindFirstSymbolWithNameAndType(
@ -886,7 +887,7 @@ bool ThreadSanitizerRuntime::CheckIfRuntimeIsValid(
return symbol != nullptr; return symbol != nullptr;
} }
void ThreadSanitizerRuntime::Activate() { void InstrumentationRuntimeTSan::Activate() {
if (IsActive()) if (IsActive())
return; return;
@ -916,7 +917,7 @@ void ThreadSanitizerRuntime::Activate() {
process_sp->GetTarget() process_sp->GetTarget()
.CreateBreakpoint(symbol_address, internal, hardware) .CreateBreakpoint(symbol_address, internal, hardware)
.get(); .get();
breakpoint->SetCallback(ThreadSanitizerRuntime::NotifyBreakpointHit, this, breakpoint->SetCallback(InstrumentationRuntimeTSan::NotifyBreakpointHit, this,
true); true);
breakpoint->SetBreakpointKind("thread-sanitizer-report"); breakpoint->SetBreakpointKind("thread-sanitizer-report");
SetBreakpointID(breakpoint->GetID()); SetBreakpointID(breakpoint->GetID());
@ -924,7 +925,7 @@ void ThreadSanitizerRuntime::Activate() {
SetActive(true); SetActive(true);
} }
void ThreadSanitizerRuntime::Deactivate() { void InstrumentationRuntimeTSan::Deactivate() {
if (GetBreakpointID() != LLDB_INVALID_BREAK_ID) { if (GetBreakpointID() != LLDB_INVALID_BREAK_ID) {
ProcessSP process_sp = GetProcessSP(); ProcessSP process_sp = GetProcessSP();
if (process_sp) { if (process_sp) {
@ -1043,7 +1044,7 @@ static void AddThreadsForPath(const std::string &path,
} }
lldb::ThreadCollectionSP lldb::ThreadCollectionSP
ThreadSanitizerRuntime::GetBacktracesFromExtendedStopInfo( InstrumentationRuntimeTSan::GetBacktracesFromExtendedStopInfo(
StructuredData::ObjectSP info) { StructuredData::ObjectSP info) {
ThreadCollectionSP threads; ThreadCollectionSP threads;
threads = std::make_shared<ThreadCollection>(); threads = std::make_shared<ThreadCollection>();

View File

@ -1,4 +1,4 @@
//===-- TSanRuntime.h -------------------------------------------*- C++ -*-===// //===-- InstrumentationRuntimeTSan.h ----------------------------*- C++ -*-===//
// //
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information. // See https://llvm.org/LICENSE.txt for license information.
@ -16,9 +16,9 @@
namespace lldb_private { namespace lldb_private {
class ThreadSanitizerRuntime : public lldb_private::InstrumentationRuntime { class InstrumentationRuntimeTSan : public lldb_private::InstrumentationRuntime {
public: public:
~ThreadSanitizerRuntime() override; ~InstrumentationRuntimeTSan() override;
static lldb::InstrumentationRuntimeSP static lldb::InstrumentationRuntimeSP
CreateInstance(const lldb::ProcessSP &process_sp); CreateInstance(const lldb::ProcessSP &process_sp);
@ -43,7 +43,7 @@ public:
GetBacktracesFromExtendedStopInfo(StructuredData::ObjectSP info) override; GetBacktracesFromExtendedStopInfo(StructuredData::ObjectSP info) override;
private: private:
ThreadSanitizerRuntime(const lldb::ProcessSP &process_sp) InstrumentationRuntimeTSan(const lldb::ProcessSP &process_sp)
: lldb_private::InstrumentationRuntime(process_sp) {} : lldb_private::InstrumentationRuntime(process_sp) {}
const RegularExpression &GetPatternForRuntimeLibrary() override; const RegularExpression &GetPatternForRuntimeLibrary() override;

View File

@ -46,7 +46,7 @@
#include "Plugins/Instruction/PPC64/EmulateInstructionPPC64.h" #include "Plugins/Instruction/PPC64/EmulateInstructionPPC64.h"
#include "Plugins/InstrumentationRuntime/ASan/InstrumentationRuntimeASan.h" #include "Plugins/InstrumentationRuntime/ASan/InstrumentationRuntimeASan.h"
#include "Plugins/InstrumentationRuntime/MainThreadChecker/MainThreadCheckerRuntime.h" #include "Plugins/InstrumentationRuntime/MainThreadChecker/MainThreadCheckerRuntime.h"
#include "Plugins/InstrumentationRuntime/TSan/TSanRuntime.h" #include "Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.h"
#include "Plugins/InstrumentationRuntime/UBSan/UBSanRuntime.h" #include "Plugins/InstrumentationRuntime/UBSan/UBSanRuntime.h"
#include "Plugins/JITLoader/GDB/JITLoaderGDB.h" #include "Plugins/JITLoader/GDB/JITLoaderGDB.h"
#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h" #include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
@ -194,7 +194,7 @@ llvm::Error SystemInitializerTest::Initialize() {
minidump::ProcessMinidump::Initialize(); minidump::ProcessMinidump::Initialize();
MemoryHistoryASan::Initialize(); MemoryHistoryASan::Initialize();
InstrumentationRuntimeASan::Initialize(); InstrumentationRuntimeASan::Initialize();
ThreadSanitizerRuntime::Initialize(); InstrumentationRuntimeTSan::Initialize();
UndefinedBehaviorSanitizerRuntime::Initialize(); UndefinedBehaviorSanitizerRuntime::Initialize();
MainThreadCheckerRuntime::Initialize(); MainThreadCheckerRuntime::Initialize();
@ -287,7 +287,7 @@ void SystemInitializerTest::Terminate() {
minidump::ProcessMinidump::Terminate(); minidump::ProcessMinidump::Terminate();
MemoryHistoryASan::Terminate(); MemoryHistoryASan::Terminate();
InstrumentationRuntimeASan::Terminate(); InstrumentationRuntimeASan::Terminate();
ThreadSanitizerRuntime::Terminate(); InstrumentationRuntimeTSan::Terminate();
UndefinedBehaviorSanitizerRuntime::Terminate(); UndefinedBehaviorSanitizerRuntime::Terminate();
MainThreadCheckerRuntime::Terminate(); MainThreadCheckerRuntime::Terminate();
wasm::SymbolVendorWasm::Terminate(); wasm::SymbolVendorWasm::Terminate();