LLDB mainline
InstrumentationRuntimeTSan.cpp File Reference

Go to the source code of this file.

Functions

static StructuredData::ArraySP CreateStackTrace (ValueObjectSP o, const std::string &trace_item_name=".trace")
static StructuredData::ArraySP ConvertToStructuredArray (ValueObjectSP return_value_sp, const std::string &items_name, const std::string &count_name, std::function< void(const ValueObjectSP &o, const StructuredData::DictionarySP &dict)> const &callback)
static std::string RetrieveString (ValueObjectSP return_value_sp, ProcessSP process_sp, const std::string &expression_path)
static void GetRenumberedThreadIds (ProcessSP process_sp, ValueObjectSP data, std::map< uint64_t, user_id_t > &thread_id_map)
static user_id_t Renumber (uint64_t id, std::map< uint64_t, user_id_t > &thread_id_map)
static std::string Sprintf (const char *format,...)
static std::string GetSymbolNameFromAddress (ProcessSP process_sp, addr_t addr)
static void GetSymbolDeclarationFromAddress (ProcessSP process_sp, addr_t addr, Declaration &decl)
static std::string GenerateThreadName (const std::string &path, StructuredData::Object *o, StructuredData::ObjectSP main_info)
static void AddThreadsForPath (const std::string &path, ThreadCollectionSP threads, ProcessSP process_sp, StructuredData::ObjectSP info)

Variables

const char * thread_sanitizer_retrieve_report_data_prefix
const char * thread_sanitizer_retrieve_report_data_command

Function Documentation

◆ AddThreadsForPath()

void AddThreadsForPath ( const std::string & path,
ThreadCollectionSP threads,
ProcessSP process_sp,
StructuredData::ObjectSP info )
static

◆ ConvertToStructuredArray()

StructuredData::ArraySP ConvertToStructuredArray ( ValueObjectSP return_value_sp,
const std::string & items_name,
const std::string & count_name,
std::function< void(const ValueObjectSP &o, const StructuredData::DictionarySP &dict)> const & callback )
static

◆ CreateStackTrace()

StructuredData::ArraySP CreateStackTrace ( ValueObjectSP o,
const std::string & trace_item_name = ".trace" )
static

◆ GenerateThreadName()

std::string GenerateThreadName ( const std::string & path,
StructuredData::Object * o,
StructuredData::ObjectSP main_info )
static

◆ GetRenumberedThreadIds()

void GetRenumberedThreadIds ( ProcessSP process_sp,
ValueObjectSP data,
std::map< uint64_t, user_id_t > & thread_id_map )
static

◆ GetSymbolDeclarationFromAddress()

◆ GetSymbolNameFromAddress()

◆ Renumber()

user_id_t Renumber ( uint64_t id,
std::map< uint64_t, user_id_t > & thread_id_map )
static

◆ RetrieveString()

std::string RetrieveString ( ValueObjectSP return_value_sp,
ProcessSP process_sp,
const std::string & expression_path )
static

◆ Sprintf()

Variable Documentation

◆ thread_sanitizer_retrieve_report_data_command

const char* thread_sanitizer_retrieve_report_data_command

◆ thread_sanitizer_retrieve_report_data_prefix

const char* thread_sanitizer_retrieve_report_data_prefix
Initial value:
= R"(
extern "C"
{
void *__tsan_get_current_report();
int __tsan_get_report_data(void *report, const char **description, int *count,
int *stack_count, int *mop_count, int *loc_count,
int *mutex_count, int *thread_count,
int *unique_tid_count, void **sleep_trace,
unsigned long trace_size);
int __tsan_get_report_stack(void *report, unsigned long idx, void **trace,
unsigned long trace_size);
int __tsan_get_report_mop(void *report, unsigned long idx, int *tid, void **addr,
int *size, int *write, int *atomic, void **trace,
unsigned long trace_size);
int __tsan_get_report_loc(void *report, unsigned long idx, const char **type,
void **addr, unsigned long *start, unsigned long *size, int *tid,
int *fd, int *suppressable, void **trace,
unsigned long trace_size);
int __tsan_get_report_mutex(void *report, unsigned long idx, unsigned long *mutex_id, void **addr,
int *destroyed, void **trace, unsigned long trace_size);
int __tsan_get_report_thread(void *report, unsigned long idx, int *tid, unsigned long *os_id,
int *running, const char **name, int *parent_tid,
void **trace, unsigned long trace_size);
int __tsan_get_report_unique_tid(void *report, unsigned long idx, int *tid);
// TODO: dlsym won't work on Windows.
void *dlsym(void* handle, const char* symbol);
int (*ptr__tsan_get_report_loc_object_type)(void *report, unsigned long idx, const char **object_type);
}
)"

Definition at line 63 of file InstrumentationRuntimeTSan.cpp.

Referenced by lldb_private::InstrumentationRuntimeTSan::RetrieveReportData().