summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/main.c
diff options
context:
space:
mode:
authorKuba Brecka <kuba.brecka@gmail.com>2016-03-23 15:36:22 +0000
committerKuba Brecka <kuba.brecka@gmail.com>2016-03-23 15:36:22 +0000
commit6a83143650aeb02e9c53bd5f7b7b5253a6c8b157 (patch)
tree84b85e5d71064a4c24d0100811f7114f2143ab2f /lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/main.c
parentd68ed85401a5b1d40fb6065bcbd363e1bd78402d (diff)
downloadbcm5719-llvm-6a83143650aeb02e9c53bd5f7b7b5253a6c8b157.tar.gz
bcm5719-llvm-6a83143650aeb02e9c53bd5f7b7b5253a6c8b157.zip
Add ThreadSanitizer debugging support.
This patch adds ThreadSanitizer support into LLDB: - Adding a new InstrumentationRuntime plugin, ThreadSanitizerRuntime, in the same way ASan is implemented. - A breakpoint stops in `__tsan_on_report`, then we extract all sorts of information by evaluating an expression. We then populate this into StopReasonExtendedInfo. - SBThread gets a new API, SBThread::GetStopReasonExtendedBacktraces(), which returns TSan’s backtraces in the form of regular SBThreads. Non-TSan stop reasons return an empty collection. - Added some test cases. Reviewed by Greg Clayton. llvm-svn: 264162
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/main.c')
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/main.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/main.c b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/main.c
new file mode 100644
index 00000000000..c082b01a57c
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/tsan/basic/main.c
@@ -0,0 +1,37 @@
+//===-- main.c --------------------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+char *pointer;
+
+void *f1(void *p) {
+ pointer[0] = 'x'; // thread1 line
+ return NULL;
+}
+
+void *f2(void *p) {
+ pointer[0] = 'y'; // thread2 line
+ return NULL;
+}
+
+int main (int argc, char const *argv[])
+{
+ pointer = (char *)malloc(10); // malloc line
+
+ pthread_t t1, t2;
+ pthread_create(&t1, NULL, f1, NULL);
+ pthread_create(&t2, NULL, f2, NULL);
+
+ pthread_join(t1, NULL);
+ pthread_join(t2, NULL);
+
+ return 0;
+}
OpenPOWER on IntegriCloud