https://github.com/ashgti updated https://github.com/llvm/llvm-project/pull/184647
>From 7620acc49f61ecdeb8248315e2469a5a57474182 Mon Sep 17 00:00:00 2001 From: John Harrison <[email protected]> Date: Wed, 4 Mar 2026 09:19:03 -0800 Subject: [PATCH 1/3] [lldb] Fixing the python_api/block tests. Renaming the file to be unique and updating the symbols for Windows. --- .../block/{TestBlocks.py => TestFrameBlocks.py} | 2 +- lldb/test/API/python_api/block/fn.c | 8 +++++++- lldb/test/API/python_api/block/main.c | 4 ++++ 3 files changed, 12 insertions(+), 2 deletions(-) rename lldb/test/API/python_api/block/{TestBlocks.py => TestFrameBlocks.py} (98%) diff --git a/lldb/test/API/python_api/block/TestBlocks.py b/lldb/test/API/python_api/block/TestFrameBlocks.py similarity index 98% rename from lldb/test/API/python_api/block/TestBlocks.py rename to lldb/test/API/python_api/block/TestFrameBlocks.py index d5e7a5eeef49e..923cc4a79462a 100644 --- a/lldb/test/API/python_api/block/TestBlocks.py +++ b/lldb/test/API/python_api/block/TestFrameBlocks.py @@ -8,7 +8,7 @@ from lldbsuite.test import lldbutil -class BlockAPITestCase(TestBase): +class FrameBlocksTestCase(TestBase): def test_block_equality(self): """Exercise SBBlock equality checks across frames and functions in different dylibs.""" self.build() diff --git a/lldb/test/API/python_api/block/fn.c b/lldb/test/API/python_api/block/fn.c index 80ea7e5baa11e..84716517bea29 100644 --- a/lldb/test/API/python_api/block/fn.c +++ b/lldb/test/API/python_api/block/fn.c @@ -1,4 +1,10 @@ -extern int fn(int a, int b) { +#ifdef _WIN32 +#define EXPORT __declspec(dllexport) +#else +#define EXPORT extern +#endif + +EXPORT int fn(int a, int b) { if (a < b) { int sum = a + b; return sum; // breakpoint 2 diff --git a/lldb/test/API/python_api/block/main.c b/lldb/test/API/python_api/block/main.c index 8200ecf5bdf4f..7e862f0e1a3c1 100644 --- a/lldb/test/API/python_api/block/main.c +++ b/lldb/test/API/python_api/block/main.c @@ -1,6 +1,10 @@ #include <stdio.h> +#ifdef _WIN32 +__declspec(dllimport) int fn(int a, int b); +#else extern int fn(int a, int b); +#endif int main(int argc, char const *argv[]) { int a = 3; >From d6d438d4b7c8d905ddaae909d99cbc5dec8df14c Mon Sep 17 00:00:00 2001 From: John Harrison <[email protected]> Date: Wed, 4 Mar 2026 10:06:52 -0800 Subject: [PATCH 2/3] [lldb] Consolidating platform support checks in tests. Moving the platform support check into `lldb/unittests/TestingSupport/TestUtilities.h` so it can be reused across tests. Also skipping 'VariablesTest' cases that load a core dump if the platform is not supported. --- lldb/unittests/DAP/Handler/DisconnectTest.cpp | 4 ---- lldb/unittests/DAP/TestBase.cpp | 17 +---------------- lldb/unittests/DAP/TestBase.h | 1 - lldb/unittests/DAP/VariablesTest.cpp | 5 ++++- .../TestingSupport/TestUtilities.cpp | 19 ++++++++++++++++++- lldb/unittests/TestingSupport/TestUtilities.h | 12 ++++++++++++ 6 files changed, 35 insertions(+), 23 deletions(-) diff --git a/lldb/unittests/DAP/Handler/DisconnectTest.cpp b/lldb/unittests/DAP/Handler/DisconnectTest.cpp index 212c5698feea8..1c19d35bd746d 100644 --- a/lldb/unittests/DAP/Handler/DisconnectTest.cpp +++ b/lldb/unittests/DAP/Handler/DisconnectTest.cpp @@ -38,10 +38,6 @@ TEST_F(DisconnectRequestHandlerTest, DisconnectTriggersTerminated) { #ifndef __linux__ TEST_F(DisconnectRequestHandlerTest, DisconnectTriggersTerminateCommands) { CreateDebugger(); - - if (!GetDebuggerSupportsTarget("X86")) - GTEST_SKIP() << "Unsupported platform"; - LoadCore(); DisconnectRequestHandler handler(*dap); diff --git a/lldb/unittests/DAP/TestBase.cpp b/lldb/unittests/DAP/TestBase.cpp index 6073aa82a8eb7..cee90caf9ff7b 100644 --- a/lldb/unittests/DAP/TestBase.cpp +++ b/lldb/unittests/DAP/TestBase.cpp @@ -72,25 +72,10 @@ void DAPTestBase::SetUpTestSuite() { } void DAPTestBase::TearDownTestSuite() { SBDebugger::Terminate(); } -bool DAPTestBase::GetDebuggerSupportsTarget(StringRef platform) { - EXPECT_TRUE(dap->debugger); - - lldb::SBStructuredData data = dap->debugger.GetBuildConfiguration() - .GetValueForKey("targets") - .GetValueForKey("value"); - for (size_t i = 0; i < data.GetSize(); i++) { - char buf[100] = {0}; - size_t size = data.GetItemAtIndex(i).GetStringValue(buf, sizeof(buf)); - if (StringRef(buf, size) == platform) - return true; - } - - return false; -} - void DAPTestBase::CreateDebugger() { dap->debugger = lldb::SBDebugger::Create(); ASSERT_TRUE(dap->debugger); + SKIP_UNLESS_PLATFORM_SUPPORTED(dap->debugger, "X86"); dap->target = dap->debugger.GetDummyTarget(); Expected<lldb::FileUP> dev_null = FileSystem::Instance().Open( diff --git a/lldb/unittests/DAP/TestBase.h b/lldb/unittests/DAP/TestBase.h index 7953e0fabfbe5..2a0febf298d63 100644 --- a/lldb/unittests/DAP/TestBase.h +++ b/lldb/unittests/DAP/TestBase.h @@ -112,7 +112,6 @@ class DAPTestBase : public TransportBase { void SetUp() override; void TearDown() override; - bool GetDebuggerSupportsTarget(llvm::StringRef platform); void CreateDebugger(); void LoadCore(); }; diff --git a/lldb/unittests/DAP/VariablesTest.cpp b/lldb/unittests/DAP/VariablesTest.cpp index fe85e92a7fee2..8f590253f3b7c 100644 --- a/lldb/unittests/DAP/VariablesTest.cpp +++ b/lldb/unittests/DAP/VariablesTest.cpp @@ -59,7 +59,10 @@ class VariablesTest : public ::testing::Test { std::optional<llvm::sys::fs::TempFile> core; std::optional<llvm::sys::fs::TempFile> binary; - void CreateDebugger() { debugger = lldb::SBDebugger::Create(); } + void CreateDebugger() { + debugger = lldb::SBDebugger::Create(); + SKIP_UNLESS_PLATFORM_SUPPORTED(debugger, "X86"); + } void LoadCore() { ASSERT_TRUE(debugger); diff --git a/lldb/unittests/TestingSupport/TestUtilities.cpp b/lldb/unittests/TestingSupport/TestUtilities.cpp index d164c227afb9e..8b65087065992 100644 --- a/lldb/unittests/TestingSupport/TestUtilities.cpp +++ b/lldb/unittests/TestingSupport/TestUtilities.cpp @@ -7,11 +7,11 @@ //===----------------------------------------------------------------------===// #include "TestUtilities.h" +#include "lldb/API/SBStructuredData.h" #include "llvm/ADT/SmallString.h" #include "llvm/ObjectYAML/yaml2obj.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" -#include "llvm/Support/Program.h" #include "llvm/Support/YAMLTraits.h" #include "gtest/gtest.h" @@ -61,3 +61,20 @@ llvm::Expected<llvm::sys::fs::TempFile> TestFile::writeToTemporaryFile() { llvm::raw_fd_ostream(Temp->FD, /*shouldClose=*/false) << Buffer; return std::move(*Temp); } + +bool lldb_private::DebuggerSupportsPlatform(lldb::SBDebugger &debugger, + llvm::StringRef platform) { + EXPECT_TRUE(debugger); + + lldb::SBStructuredData data = + debugger.GetBuildConfiguration().GetValueForKey("targets").GetValueForKey( + "value"); + for (size_t i = 0; i < data.GetSize(); i++) { + char buf[100] = {0}; + size_t size = data.GetItemAtIndex(i).GetStringValue(buf, sizeof(buf)); + if (llvm::StringRef(buf, size) == platform) + return true; + } + + return false; +} diff --git a/lldb/unittests/TestingSupport/TestUtilities.h b/lldb/unittests/TestingSupport/TestUtilities.h index 68b4dbc127a7d..e27577472f5b6 100644 --- a/lldb/unittests/TestingSupport/TestUtilities.h +++ b/lldb/unittests/TestingSupport/TestUtilities.h @@ -9,6 +9,7 @@ #ifndef LLDB_UNITTESTS_TESTINGSUPPORT_TESTUTILITIES_H #define LLDB_UNITTESTS_TESTINGSUPPORT_TESTUTILITIES_H +#include "lldb/API/SBDebugger.h" #include "lldb/Core/ModuleSpec.h" #include "lldb/Utility/DataBuffer.h" #include "llvm/ADT/Twine.h" @@ -16,6 +17,7 @@ #include "llvm/Support/FileSystem.h" #include "llvm/Support/JSON.h" #include "llvm/Support/raw_ostream.h" +#include "gtest/gtest.h" #include <string> #define ASSERT_NO_ERROR(x) \ @@ -65,12 +67,22 @@ class TestFile { std::string Buffer; }; +/// Check if the debugger supports the given platform. +bool DebuggerSupportsPlatform(lldb::SBDebugger &debugger, + llvm::StringRef platform); + +#define SKIP_UNLESS_PLATFORM_SUPPORTED(debugger, platform) \ + if (!::lldb_private::DebuggerSupportsPlatform(debugger, platform)) { \ + GTEST_SKIP() << "Unsupported platform"; \ + } + template <typename T> static llvm::Expected<T> roundtripJSON(const T &input) { std::string encoded; llvm::raw_string_ostream OS(encoded); OS << toJSON(input); return llvm::json::parse<T>(encoded); } + } // namespace lldb_private #endif >From 0e6b71d1100f91040b1e00c9f09728b832b6881b Mon Sep 17 00:00:00 2001 From: John Harrison <[email protected]> Date: Wed, 4 Mar 2026 13:56:22 -0800 Subject: [PATCH 3/3] Using `LLDB_DYLIB_EXPORT` and `LLDB_DYLIB_IMPORT` instead of a custom define. --- lldb/test/API/python_api/block/fn.c | 8 +------- lldb/test/API/python_api/block/main.c | 6 +----- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/lldb/test/API/python_api/block/fn.c b/lldb/test/API/python_api/block/fn.c index 84716517bea29..9534f8c2083ff 100644 --- a/lldb/test/API/python_api/block/fn.c +++ b/lldb/test/API/python_api/block/fn.c @@ -1,10 +1,4 @@ -#ifdef _WIN32 -#define EXPORT __declspec(dllexport) -#else -#define EXPORT extern -#endif - -EXPORT int fn(int a, int b) { +extern int LLDB_DYLIB_EXPORT fn(int a, int b) { if (a < b) { int sum = a + b; return sum; // breakpoint 2 diff --git a/lldb/test/API/python_api/block/main.c b/lldb/test/API/python_api/block/main.c index 7e862f0e1a3c1..7ce04f0b1ebe4 100644 --- a/lldb/test/API/python_api/block/main.c +++ b/lldb/test/API/python_api/block/main.c @@ -1,10 +1,6 @@ #include <stdio.h> -#ifdef _WIN32 -__declspec(dllimport) int fn(int a, int b); -#else -extern int fn(int a, int b); -#endif +extern LLDB_DYLIB_IMPORT int fn(int a, int b); int main(int argc, char const *argv[]) { int a = 3; _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
