Index: include/lldb/API/SBDebugger.h =================================================================== --- include/lldb/API/SBDebugger.h +++ include/lldb/API/SBDebugger.h @@ -181,6 +181,8 @@ static const char *StateAsCString(lldb::StateType state); + static SBStructuredData GetBuildConfiguration(); + static bool StateIsRunningState(lldb::StateType state); static bool StateIsStoppedState(lldb::StateType state); Index: packages/Python/lldbsuite/test/decorators.py =================================================================== --- packages/Python/lldbsuite/test/decorators.py +++ packages/Python/lldbsuite/test/decorators.py @@ -763,3 +763,9 @@ return "Compiler cannot compile with -fsanitize=address" return None return skipTestIfFn(is_compiler_with_address_sanitizer)(func) + +def skipIfXmlSupportMissing(func): + config = lldb.SBDebugger.GetBuildConfiguration() + fail_value = True # More likely to notice if something goes wrong + have_xml = config.GetValueForKey("xml").GetBooleanValue(fail_value) + return unittest2.skipIf(not have_xml, "requires xml support")(func) Index: packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestTargetXMLArch.py =================================================================== --- packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestTargetXMLArch.py +++ packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestTargetXMLArch.py @@ -6,7 +6,7 @@ class TestTargetXMLArch(GDBRemoteTestBase): - @skipIf(hostoslist=no_match(lldbplatformutil.getDarwinOSTriples())) + @skipIfXmlSupportMissing @expectedFailureAll(archs=["i386"]) def test(self): """ Index: scripts/interface/SBDebugger.i =================================================================== --- scripts/interface/SBDebugger.i +++ scripts/interface/SBDebugger.i @@ -320,6 +320,8 @@ static const char * StateAsCString (lldb::StateType state); + static SBStructuredData GetBuildConfiguration(); + static bool StateIsRunningState (lldb::StateType state); Index: source/API/SBDebugger.cpp =================================================================== --- source/API/SBDebugger.cpp +++ source/API/SBDebugger.cpp @@ -43,6 +43,7 @@ #include "lldb/Core/StreamFile.h" #include "lldb/Core/StructuredDataImpl.h" #include "lldb/DataFormatters/DataVisualization.h" +#include "lldb/Host/XML.h" #include "lldb/Initialization/SystemLifetimeManager.h" #include "lldb/Interpreter/Args.h" #include "lldb/Interpreter/CommandInterpreter.h" @@ -491,6 +492,15 @@ return lldb_private::StateAsCString(state); } +SBStructuredData SBDebugger::GetBuildConfiguration() { + auto config_up = llvm::make_unique(); + config_up->AddBooleanItem("xml", XMLDocument::XMLEnabled()); + + SBStructuredData data; + data.m_impl_up->SetObjectSP(std::move(config_up)); + return data; +} + bool SBDebugger::StateIsRunningState(StateType state) { Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));