[Lldb-commits] [lldb] 71db787 - [lldb/testsuite] Rewrite TestThreadLocal.py
Fred Riss via lldb-commits
lldb-commits at lists.llvm.org
Wed Mar 18 20:54:27 PDT 2020
Author: Fred Riss
Date: 2020-03-18T20:52:28-07:00
New Revision: 71db787c4583b5b05b9066509c36eb996924aeda
URL: https://github.com/llvm/llvm-project/commit/71db787c4583b5b05b9066509c36eb996924aeda
DIFF: https://github.com/llvm/llvm-project/commit/71db787c4583b5b05b9066509c36eb996924aeda.diff
LOG: [lldb/testsuite] Rewrite TestThreadLocal.py
It was an inline test before. Clang stopped emitting line information
for the TLS initialization and the inline test didn't have a way to
break before it anymore.
This rewrites the test as a full-fldeged python test and improves the
checking of the error case to verify that the failure we are looking
for is related to the TLS setup not being complete.
Added:
Modified:
lldb/test/API/lang/cpp/thread_local/TestThreadLocal.py
lldb/test/API/lang/cpp/thread_local/main.cpp
Removed:
################################################################################
diff --git a/lldb/test/API/lang/cpp/thread_local/TestThreadLocal.py b/lldb/test/API/lang/cpp/thread_local/TestThreadLocal.py
index 5152c0010d10..e7cfa1ca14f2 100644
--- a/lldb/test/API/lang/cpp/thread_local/TestThreadLocal.py
+++ b/lldb/test/API/lang/cpp/thread_local/TestThreadLocal.py
@@ -1,6 +1,49 @@
-from lldbsuite.test import lldbinline
from lldbsuite.test import decorators
-lldbinline.MakeInlineTest(__file__, globals(),
- lldbinline.expectedFailureAll(oslist=[
- "windows", "linux", "netbsd"]))
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+from lldbsuite.test import lldbtest
+
+
+class PlatformProcessCrashInfoTestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @expectedFailureAll(oslist=["windows", "linux", "netbsd"])
+ def test_thread_local(self):
+ # Set a breakpoint on the first instruction of the main function,
+ # before the TLS initialization has run.
+ self.build()
+ exe = self.getBuildArtifact("a.out")
+
+ (target, process, _, _) = \
+ lldbutil.run_to_source_breakpoint(self, "Set breakpoint here",
+ lldb.SBFileSpec("main.cpp"))
+ self.expect_expr("tl_local_int + 1",
+ result_type="int", result_value="323")
+ self.expect_expr("*tl_local_ptr + 2",
+ result_type="int", result_value="324")
+ self.expect_expr("tl_global_int",
+ result_type="int", result_value="123")
+ self.expect_expr("*tl_global_ptr",
+ result_type="int", result_value="45")
+
+ # Now see if we emit the correct error when the TLS is not yet
+ # initialized. Let's set a breakpoint on the first instruction
+ # of main.
+ main_module = target.FindModule(lldb.SBFileSpec(exe))
+ main_address = main_module.FindSymbol("main").GetStartAddress()
+ main_bkpt = target.BreakpointCreateBySBAddress(main_address)
+
+ process.Kill()
+ lldbutil.run_to_breakpoint_do_run(self, target, main_bkpt)
+
+ self.expect("expr tl_local_int", error=True,
+ substrs=["couldn't get the value of variable tl_local_int",
+ "No TLS data currently exists for this thread"])
+ self.expect("expr *tl_local_ptr", error=True,
+ substrs=["couldn't get the value of variable tl_local_ptr",
+ "No TLS data currently exists for this thread"])
+
diff --git a/lldb/test/API/lang/cpp/thread_local/main.cpp b/lldb/test/API/lang/cpp/thread_local/main.cpp
index 1855b7c5f344..04c7fc0ed74d 100644
--- a/lldb/test/API/lang/cpp/thread_local/main.cpp
+++ b/lldb/test/API/lang/cpp/thread_local/main.cpp
@@ -3,15 +3,9 @@ thread_local int tl_global_int = 123;
thread_local int *tl_global_ptr = &storage;
int main(int argc, char **argv) {
- //% self.expect("expr tl_local_int", error=True, substrs=["couldn't get the value of variable tl_local_int"])
- //% self.expect("expr *tl_local_ptr", error=True, substrs=["couldn't get the value of variable tl_local_ptr"])
thread_local int tl_local_int = 321;
thread_local int *tl_local_ptr = nullptr;
tl_local_ptr = &tl_local_int;
tl_local_int++;
- //% self.expect("expr tl_local_int + 1", substrs=["int", "= 323"])
- //% self.expect("expr *tl_local_ptr + 2", substrs=["int", "= 324"])
- //% self.expect("expr tl_global_int", substrs=["int", "= 123"])
- //% self.expect("expr *tl_global_ptr", substrs=["int", "= 45"])
- return 0;
+ return 0; // Set breakpoint here
}
More information about the lldb-commits
mailing list