diff --git a/lldb/source/Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.cpp b/lldb/source/Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.cpp --- a/lldb/source/Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.cpp +++ b/lldb/source/Plugins/InstrumentationRuntime/TSan/InstrumentationRuntimeTSan.cpp @@ -87,6 +87,9 @@ void *dlsym(void* handle, const char* symbol); int (*ptr__tsan_get_report_loc_object_type)(void *report, unsigned long idx, const char **object_type); } +)"; + +const char *thread_sanitizer_retrieve_report_data_command = R"( const int REPORT_TRACE_SIZE = 128; const int REPORT_ARRAY_SIZE = 4; @@ -154,11 +157,7 @@ int idx; int tid; } unique_tids[REPORT_ARRAY_SIZE]; -}; -)"; - -const char *thread_sanitizer_retrieve_report_data_command = R"( -data t = {0}; +} t = {0}; ptr__tsan_get_report_loc_object_type = (typeof(ptr__tsan_get_report_loc_object_type))(void *)dlsym((void*)-2 /*RTLD_DEFAULT*/, "__tsan_get_report_loc_object_type"); diff --git a/lldb/source/Plugins/InstrumentationRuntime/UBSan/InstrumentationRuntimeUBSan.cpp b/lldb/source/Plugins/InstrumentationRuntime/UBSan/InstrumentationRuntimeUBSan.cpp --- a/lldb/source/Plugins/InstrumentationRuntime/UBSan/InstrumentationRuntimeUBSan.cpp +++ b/lldb/source/Plugins/InstrumentationRuntime/UBSan/InstrumentationRuntimeUBSan.cpp @@ -67,19 +67,18 @@ const char **OutMessage, const char **OutFilename, unsigned *OutLine, unsigned *OutCol, char **OutMemoryAddr); } +)"; -struct data { +static const char *ub_sanitizer_retrieve_report_data_command = R"( +struct { const char *issue_kind; const char *message; const char *filename; unsigned line; unsigned col; char *memory_addr; -}; -)"; +} t; -static const char *ub_sanitizer_retrieve_report_data_command = R"( -data t; __ubsan_get_current_report_data(&t.issue_kind, &t.message, &t.filename, &t.line, &t.col, &t.memory_addr); t; diff --git a/lldb/source/Plugins/MemoryHistory/asan/MemoryHistoryASan.cpp b/lldb/source/Plugins/MemoryHistory/asan/MemoryHistoryASan.cpp --- a/lldb/source/Plugins/MemoryHistory/asan/MemoryHistoryASan.cpp +++ b/lldb/source/Plugins/MemoryHistory/asan/MemoryHistoryASan.cpp @@ -67,8 +67,11 @@ size_t __asan_get_alloc_stack(void *addr, void **trace, size_t size, int *thread_id); size_t __asan_get_free_stack(void *addr, void **trace, size_t size, int *thread_id); } +)"; - struct data { +const char *memory_history_asan_command_format = + R"( + struct { void *alloc_trace[256]; size_t alloc_count; int alloc_tid; @@ -76,12 +79,7 @@ void *free_trace[256]; size_t free_count; int free_tid; - }; -)"; - -const char *memory_history_asan_command_format = - R"( - data t; + } t; t.alloc_count = __asan_get_alloc_stack((void *)0x%)" PRIx64 R"(, t.alloc_trace, 256, &t.alloc_tid);