[Lldb-commits] [lldb] 3885483 - [lldb][unittest] Add call_once flag to initialize debugger (#80786)

via lldb-commits lldb-commits at lists.llvm.org
Tue Feb 6 08:17:28 PST 2024


Author: Chelsea Cassanova
Date: 2024-02-06T08:17:23-08:00
New Revision: 388548359f5049b88a9738d8a9e67691503fbdef

URL: https://github.com/llvm/llvm-project/commit/388548359f5049b88a9738d8a9e67691503fbdef
DIFF: https://github.com/llvm/llvm-project/commit/388548359f5049b88a9738d8a9e67691503fbdef.diff

LOG: [lldb][unittest] Add call_once flag to initialize debugger (#80786)

I tried adding a new unit test to the core test
suite (https://github.com/llvm/llvm-project/pull/79533) but it broke the
test suite on AArch64 Linux due to hitting an assertion for calling
`Debugger::Initialize` more than once. When the unit test suite is
invoked as a standalone binary the test suite state is shared, and
`Debugger::Initialize` gets called in `DiagnosticEventTest.cpp` before
being called in `ProgressReportTest.cpp`.

`DiagnosticEventTest.cpp` uses a call_once flag to initialize the
debugger but it's local to that test. This commit adds a once_flag to
`TestUtilities` so that `Debugger::Initialize` can be called once by the
tests that use it.

Added: 
    

Modified: 
    lldb/unittests/TestingSupport/TestUtilities.cpp
    lldb/unittests/TestingSupport/TestUtilities.h

Removed: 
    


################################################################################
diff  --git a/lldb/unittests/TestingSupport/TestUtilities.cpp b/lldb/unittests/TestingSupport/TestUtilities.cpp
index 9e5523e487547..efdc6c5eb234a 100644
--- a/lldb/unittests/TestingSupport/TestUtilities.cpp
+++ b/lldb/unittests/TestingSupport/TestUtilities.cpp
@@ -19,6 +19,7 @@ using namespace lldb_private;
 
 extern const char *TestMainArgv0;
 
+std::once_flag TestUtilities::g_debugger_initialize_flag;
 std::string lldb_private::GetInputFilePath(const llvm::Twine &name) {
   llvm::SmallString<128> result = llvm::sys::path::parent_path(TestMainArgv0);
   llvm::sys::fs::make_absolute(result);

diff  --git a/lldb/unittests/TestingSupport/TestUtilities.h b/lldb/unittests/TestingSupport/TestUtilities.h
index 811c4c1521269..7d040d64db8d8 100644
--- a/lldb/unittests/TestingSupport/TestUtilities.h
+++ b/lldb/unittests/TestingSupport/TestUtilities.h
@@ -31,6 +31,11 @@
 namespace lldb_private {
 std::string GetInputFilePath(const llvm::Twine &name);
 
+class TestUtilities {
+public:
+  static std::once_flag g_debugger_initialize_flag;
+};
+
 class TestFile {
 public:
   static llvm::Expected<TestFile> fromYaml(llvm::StringRef Yaml);
@@ -51,6 +56,6 @@ class TestFile {
 
   std::string Buffer;
 };
-}
+} // namespace lldb_private
 
 #endif


        


More information about the lldb-commits mailing list