|
LLDB mainline
|
#include <InstrumentationRuntimeTSan.h>
Public Member Functions | |
| ~InstrumentationRuntimeTSan () override | |
| llvm::StringRef | GetPluginName () override |
| virtual lldb::InstrumentationRuntimeType | GetType () |
| lldb::ThreadCollectionSP | GetBacktracesFromExtendedStopInfo (StructuredData::ObjectSP info) override |
| Public Member Functions inherited from lldb_private::InstrumentationRuntime | |
| void | ModulesDidLoad (lldb_private::ModuleList &module_list) |
Look for the instrumentation runtime in module_list. | |
| bool | IsActive () const |
| Public Member Functions inherited from lldb_private::PluginInterface | |
| PluginInterface ()=default | |
| virtual | ~PluginInterface ()=default |
| PluginInterface (const PluginInterface &)=delete | |
| PluginInterface & | operator= (const PluginInterface &)=delete |
Static Public Member Functions | |
| static lldb::InstrumentationRuntimeSP | CreateInstance (const lldb::ProcessSP &process_sp) |
| static void | Initialize () |
| static void | Terminate () |
| static llvm::StringRef | GetPluginNameStatic () |
| static lldb::InstrumentationRuntimeType | GetTypeStatic () |
| Static Public Member Functions inherited from lldb_private::InstrumentationRuntime | |
| static void | ModulesDidLoad (lldb_private::ModuleList &module_list, Process *process, InstrumentationRuntimeCollection &runtimes) |
Private Member Functions | |
| InstrumentationRuntimeTSan (const lldb::ProcessSP &process_sp) | |
| const RegularExpression & | GetPatternForRuntimeLibrary () override |
| Return a regular expression which can be used to identify a valid version of the runtime library. | |
| bool | CheckIfRuntimeIsValid (const lldb::ModuleSP module_sp) override |
Check whether module_sp corresponds to a valid runtime library. | |
| void | Activate () override |
| Register a breakpoint in the runtime library and perform any other necessary initialization. | |
| void | Deactivate () |
| StructuredData::ObjectSP | RetrieveReportData (ExecutionContextRef exe_ctx_ref) |
| std::string | FormatDescription (StructuredData::ObjectSP report) |
| std::string | GenerateSummary (StructuredData::ObjectSP report) |
| lldb::addr_t | GetMainRacyAddress (StructuredData::ObjectSP report) |
| std::string | GetLocationDescription (StructuredData::ObjectSP report, lldb::addr_t &global_addr, std::string &global_name, std::string &filename, uint32_t &line) |
| lldb::addr_t | GetFirstNonInternalFramePc (StructuredData::ObjectSP trace, bool skip_one_frame=false) |
Static Private Member Functions | |
| static bool | NotifyBreakpointHit (void *baton, StoppointCallbackContext *context, lldb::user_id_t break_id, lldb::user_id_t break_loc_id) |
Additional Inherited Members | |
| Protected Member Functions inherited from lldb_private::InstrumentationRuntime | |
| InstrumentationRuntime (const lldb::ProcessSP &process_sp) | |
| lldb::ProcessSP | GetProcessSP () |
| lldb::ModuleSP | GetRuntimeModuleSP () |
| void | SetRuntimeModuleSP (lldb::ModuleSP module_sp) |
| lldb::user_id_t | GetBreakpointID () const |
| void | SetBreakpointID (lldb::user_id_t ID) |
| void | SetActive (bool IsActive) |
| virtual bool | MatchAllModules () |
Definition at line 19 of file InstrumentationRuntimeTSan.h.
|
override |
Definition at line 61 of file InstrumentationRuntimeTSan.cpp.
References Deactivate().
|
inlineprivate |
Definition at line 42 of file InstrumentationRuntimeTSan.h.
References lldb_private::InstrumentationRuntime::InstrumentationRuntime().
Referenced by CreateInstance(), and NotifyBreakpointHit().
|
overrideprivatevirtual |
Register a breakpoint in the runtime library and perform any other necessary initialization.
The runtime library is guaranteed to be loaded.
Implements lldb_private::InstrumentationRuntime.
Definition at line 892 of file InstrumentationRuntimeTSan.cpp.
References lldb_private::Target::CreateBreakpoint(), lldb::eSymbolTypeCode, lldb_private::Symbol::GetAddressRef(), lldb_private::Stoppoint::GetID(), lldb_private::Address::GetOpcodeLoadAddress(), lldb_private::InstrumentationRuntime::GetProcessSP(), lldb_private::InstrumentationRuntime::GetRuntimeModuleSP(), lldb_private::Breakpoint::GetTarget(), lldb_private::InstrumentationRuntime::IsActive(), lldb_private::Address::IsValid(), LLDB_INVALID_ADDRESS, NotifyBreakpointHit(), lldb_private::InstrumentationRuntime::SetActive(), lldb_private::InstrumentationRuntime::SetBreakpointID(), lldb_private::Breakpoint::SetBreakpointKind(), lldb_private::Breakpoint::SetCallback(), and lldb_private::Symbol::ValueIsAddress().
|
overrideprivatevirtual |
Check whether module_sp corresponds to a valid runtime library.
Implements lldb_private::InstrumentationRuntime.
Definition at line 884 of file InstrumentationRuntimeTSan.cpp.
References lldb::eSymbolTypeAny.
|
static |
Definition at line 43 of file InstrumentationRuntimeTSan.cpp.
References InstrumentationRuntimeTSan().
Referenced by Initialize(), and Terminate().
|
private |
Definition at line 931 of file InstrumentationRuntimeTSan.cpp.
References lldb_private::InstrumentationRuntime::GetBreakpointID(), lldb_private::InstrumentationRuntime::GetProcessSP(), LLDB_INVALID_BREAK_ID, lldb_private::InstrumentationRuntime::SetActive(), and lldb_private::InstrumentationRuntime::SetBreakpointID().
Referenced by ~InstrumentationRuntimeTSan().
|
private |
Definition at line 494 of file InstrumentationRuntimeTSan.cpp.
Referenced by NotifyBreakpointHit().
|
private |
Definition at line 614 of file InstrumentationRuntimeTSan.cpp.
References GetFirstNonInternalFramePc(), lldb_private::InstrumentationRuntime::GetProcessSP(), GetSymbolNameFromAddress(), pc, and Sprintf().
Referenced by NotifyBreakpointHit().
|
overridevirtual |
Reimplemented from lldb_private::InstrumentationRuntime.
Definition at line 1052 of file InstrumentationRuntimeTSan.cpp.
References AddThreadsForPath(), and lldb_private::InstrumentationRuntime::GetProcessSP().
|
private |
Definition at line 585 of file InstrumentationRuntimeTSan.cpp.
References lldb_private::StructuredData::Object::GetAsArray(), lldb_private::StructuredData::Array::GetItemAtIndexAsInteger(), lldb_private::Address::GetModule(), lldb_private::InstrumentationRuntime::GetProcessSP(), lldb_private::InstrumentationRuntime::GetRuntimeModuleSP(), and lldb_private::StructuredData::Array::GetSize().
Referenced by GenerateSummary().
|
private |
Definition at line 713 of file InstrumentationRuntimeTSan.cpp.
References lldb_private::Declaration::GetFile(), lldb_private::Declaration::GetLine(), lldb_private::FileSpec::GetPath(), lldb_private::InstrumentationRuntime::GetProcessSP(), GetSymbolDeclarationFromAddress(), GetSymbolNameFromAddress(), and Sprintf().
Referenced by NotifyBreakpointHit().
|
private |
Definition at line 697 of file InstrumentationRuntimeTSan.cpp.
References lldb_private::StructuredData::Object::GetObjectForDotSeparatedPath().
Referenced by NotifyBreakpointHit().
|
overrideprivatevirtual |
Return a regular expression which can be used to identify a valid version of the runtime library.
Implements lldb_private::InstrumentationRuntime.
Definition at line 879 of file InstrumentationRuntimeTSan.cpp.
|
inlineoverridevirtual |
Implements lldb_private::PluginInterface.
Definition at line 34 of file InstrumentationRuntimeTSan.h.
References GetPluginNameStatic().
|
inlinestatic |
Definition at line 30 of file InstrumentationRuntimeTSan.h.
Referenced by GetPluginName(), and Initialize().
|
inlinevirtual |
Definition at line 36 of file InstrumentationRuntimeTSan.h.
References GetTypeStatic().
|
static |
Definition at line 57 of file InstrumentationRuntimeTSan.cpp.
References lldb::eInstrumentationRuntimeTypeThreadSanitizer.
Referenced by GetType(), and Initialize().
|
static |
Definition at line 47 of file InstrumentationRuntimeTSan.cpp.
References CreateInstance(), GetPluginNameStatic(), GetTypeStatic(), and lldb_private::PluginManager::RegisterPlugin().
|
staticprivate |
Definition at line 793 of file InstrumentationRuntimeTSan.cpp.
References lldb_private::StoppointCallbackContext::exe_ctx_ref, FormatDescription(), GenerateSummary(), GetLocationDescription(), GetMainRacyAddress(), lldb_private::StructuredData::Object::GetObjectForDotSeparatedPath(), lldb_private::ExecutionContextRef::GetProcessSP(), lldb_private::InstrumentationRuntime::GetProcessSP(), lldb_private::ExecutionContextRef::GetThreadSP(), InstrumentationRuntimeTSan(), and RetrieveReportData().
Referenced by Activate().
|
private |
Definition at line 301 of file InstrumentationRuntimeTSan.cpp.
References ConvertToStructuredArray(), CreateStackTrace(), DoNoSelectMostRelevantFrame, lldb::eExpressionCompleted, lldb::eLanguageTypeObjC_plus_plus, lldb_private::UserExpression::Evaluate(), lldb_private::InstrumentationRuntime::GetProcessSP(), GetRenumberedThreadIds(), lldb_private::StreamString::GetString(), lldb_private::ExecutionContextRef::GetThreadSP(), Renumber(), lldb_private::Debugger::ReportWarning(), RetrieveString(), lldb_private::EvaluateExpressionOptions::SetAutoApplyFixIts(), lldb_private::EvaluateExpressionOptions::SetIgnoreBreakpoints(), lldb_private::EvaluateExpressionOptions::SetLanguage(), lldb_private::EvaluateExpressionOptions::SetPrefix(), lldb_private::EvaluateExpressionOptions::SetStopOthers(), lldb_private::EvaluateExpressionOptions::SetTimeout(), lldb_private::EvaluateExpressionOptions::SetTryAllThreads(), lldb_private::EvaluateExpressionOptions::SetUnwindOnError(), thread_sanitizer_retrieve_report_data_command, and thread_sanitizer_retrieve_report_data_prefix.
Referenced by NotifyBreakpointHit().
|
static |
Definition at line 53 of file InstrumentationRuntimeTSan.cpp.
References CreateInstance(), and lldb_private::PluginManager::UnregisterPlugin().