https://github.com/labath created https://github.com/llvm/llvm-project/pull/144543
None >From 5ee87120100c146c2696e7869ebe424828df517b Mon Sep 17 00:00:00 2001 From: Pavel Labath <pa...@labath.sk> Date: Tue, 17 Jun 2025 16:54:53 +0200 Subject: [PATCH] [lldb/cmake][WIP] Plugin layering enforcement mechanism --- lldb/CMakeLists.txt | 3 + lldb/cmake/modules/LLDBLayeringCheck.cmake | 66 +++++++++++++++++++ lldb/source/Plugins/ABI/CMakeLists.txt | 5 ++ .../Plugins/Architecture/CMakeLists.txt | 2 + .../Plugins/Disassembler/CMakeLists.txt | 2 + .../Plugins/DynamicLoader/CMakeLists.txt | 3 + .../Plugins/ExpressionParser/CMakeLists.txt | 2 + .../source/Plugins/Instruction/CMakeLists.txt | 2 + .../InstrumentationRuntime/CMakeLists.txt | 2 + lldb/source/Plugins/JITLoader/CMakeLists.txt | 2 + lldb/source/Plugins/Language/CMakeLists.txt | 2 + .../Plugins/LanguageRuntime/CMakeLists.txt | 2 + .../Plugins/MemoryHistory/CMakeLists.txt | 2 + .../Plugins/ObjectContainer/CMakeLists.txt | 2 + lldb/source/Plugins/ObjectFile/CMakeLists.txt | 2 + .../Plugins/OperatingSystem/CMakeLists.txt | 2 + lldb/source/Plugins/Platform/CMakeLists.txt | 2 + lldb/source/Plugins/Process/CMakeLists.txt | 3 + .../Plugins/Process/Utility/CMakeLists.txt | 3 + lldb/source/Plugins/REPL/CMakeLists.txt | 2 + .../RegisterTypeBuilder/CMakeLists.txt | 2 + .../Plugins/ScriptInterpreter/CMakeLists.txt | 2 + .../Plugins/StructuredData/CMakeLists.txt | 2 + lldb/source/Plugins/SymbolFile/CMakeLists.txt | 8 +++ .../Plugins/SymbolLocator/CMakeLists.txt | 2 + .../Plugins/SymbolVendor/CMakeLists.txt | 3 + .../Plugins/SystemRuntime/CMakeLists.txt | 2 + lldb/source/Plugins/Trace/CMakeLists.txt | 2 + .../Plugins/TraceExporter/CMakeLists.txt | 2 + lldb/source/Plugins/TypeSystem/CMakeLists.txt | 5 ++ .../Plugins/UnwindAssembly/CMakeLists.txt | 2 + 31 files changed, 143 insertions(+) create mode 100644 lldb/cmake/modules/LLDBLayeringCheck.cmake diff --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt index 2aaf75dd87bc3..e3b72e94d4beb 100644 --- a/lldb/CMakeLists.txt +++ b/lldb/CMakeLists.txt @@ -37,6 +37,7 @@ endif() include(LLDBConfig) include(AddLLDB) +include(LLDBLayeringCheck) set(LLDB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) @@ -127,6 +128,8 @@ add_subdirectory(source) add_subdirectory(tools) add_subdirectory(docs) +check_lldb_plugin_layering() + if (LLDB_ENABLE_PYTHON) if(LLDB_BUILD_FRAMEWORK) set(lldb_python_target_dir "${LLDB_FRAMEWORK_ABSOLUTE_BUILD_DIR}/LLDB.framework/Resources/Python/lldb") diff --git a/lldb/cmake/modules/LLDBLayeringCheck.cmake b/lldb/cmake/modules/LLDBLayeringCheck.cmake new file mode 100644 index 0000000000000..2d7cb323ee9d4 --- /dev/null +++ b/lldb/cmake/modules/LLDBLayeringCheck.cmake @@ -0,0 +1,66 @@ +define_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND) +define_property(TARGET PROPERTY LLDB_PLUGIN_KIND INHERITED) +define_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES) +define_property(TARGET PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES INHERITED) + +option(LLDB_GENERATE_PLUGIN_DEP_GRAPH OFF) + +function(check_lldb_plugin_layering) + get_property(plugins GLOBAL PROPERTY LLDB_PLUGINS) + foreach(plugin ${plugins}) + get_property(plugin_kind TARGET ${plugin} PROPERTY LLDB_PLUGIN_KIND) + get_property(permitted_deps TARGET ${plugin} + PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES) + + # A plugin is always permitted to depend on its own kind for the purposes + # subclassing. Ideally the intra-kind dependencies should not form a loop, + # but we're not checking that here. + list(APPEND permitted_deps ${plugin_kind}) + + list(APPEND plugin_kinds ${plugin_kind}) + + get_property(link_libs TARGET ${plugin} PROPERTY LINK_LIBRARIES) + foreach(link_lib ${link_libs}) + if(link_lib IN_LIST plugins) + get_property(lib_kind TARGET ${link_lib} PROPERTY LLDB_PLUGIN_KIND) + if (lib_kind) + if (lib_kind IN_LIST permitted_deps) + list(APPEND dep_ok_${plugin_kind}_${lib_kind} ${plugin}) + else() + list(APPEND dep_bad_${plugin_kind}_${lib_kind} ${plugin}) + message(SEND_ERROR + "Plugin ${plugin} cannot depend on ${lib_kind} plugin ${link_lib} + (permitted deps are ${permitted_deps}") + endif() + endif() + endif() + endforeach() + endforeach() + + if (LLDB_GENERATE_PLUGIN_DEP_GRAPH) + set(dep_graph "digraph Plugins {\n") + list(REMOVE_DUPLICATES plugin_kinds) + foreach(from ${plugin_kinds}) + foreach(to ${plugin_kinds}) + if (dep_ok_${from}_${to}) + list(REMOVE_DUPLICATES dep_ok_${from}_${to}) + string(REGEX REPLACE "lldbPlugin|${from}" "" short_deps + "${dep_ok_${from}_${to}}") + string(JOIN "\n" plugins ${short_deps}) + string(APPEND dep_graph + " ${from}->${to}[color=\"green\" label=\"${plugins}\"];\n") + endif() + if (dep_bad_${from}_${to}) + list(REMOVE_DUPLICATES dep_bad_${from}_${to}) + string(REGEX REPLACE "lldbPlugin|${from}" "" short_deps + "${dep_bad_${from}_${to}}") + string(JOIN "\n" plugins ${short_deps}) + string(APPEND dep_graph + " ${from}->${to}[color=\"red\" label=\"${plugins}\"];\n") + endif() + endforeach() + endforeach() + string(APPEND dep_graph "}\n") + file(WRITE "${CMAKE_BINARY_DIR}/lldb-plugin-deps.dot" "${dep_graph}") + endif() +endfunction() diff --git a/lldb/source/Plugins/ABI/CMakeLists.txt b/lldb/source/Plugins/ABI/CMakeLists.txt index e33ac87354860..0ce510614b1a0 100644 --- a/lldb/source/Plugins/ABI/CMakeLists.txt +++ b/lldb/source/Plugins/ABI/CMakeLists.txt @@ -1,3 +1,8 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ABI) +set_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES + ProcessUtility +) + foreach(target AArch64 ARM ARC Hexagon LoongArch Mips MSP430 PowerPC RISCV SystemZ X86) if (${target} IN_LIST LLVM_TARGETS_TO_BUILD) add_subdirectory(${target}) diff --git a/lldb/source/Plugins/Architecture/CMakeLists.txt b/lldb/source/Plugins/Architecture/CMakeLists.txt index 9ed8edf70af3f..0f898ef5116e9 100644 --- a/lldb/source/Plugins/Architecture/CMakeLists.txt +++ b/lldb/source/Plugins/Architecture/CMakeLists.txt @@ -1,3 +1,5 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Architecture) + add_subdirectory(Arm) add_subdirectory(Mips) add_subdirectory(PPC64) diff --git a/lldb/source/Plugins/Disassembler/CMakeLists.txt b/lldb/source/Plugins/Disassembler/CMakeLists.txt index bec56765b60fd..1d1ea206e2774 100644 --- a/lldb/source/Plugins/Disassembler/CMakeLists.txt +++ b/lldb/source/Plugins/Disassembler/CMakeLists.txt @@ -1 +1,3 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Disassembler) + add_subdirectory(LLVMC) diff --git a/lldb/source/Plugins/DynamicLoader/CMakeLists.txt b/lldb/source/Plugins/DynamicLoader/CMakeLists.txt index 30607159acdc0..8eb35cf4237c8 100644 --- a/lldb/source/Plugins/DynamicLoader/CMakeLists.txt +++ b/lldb/source/Plugins/DynamicLoader/CMakeLists.txt @@ -1,3 +1,6 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND DynamicLoader) +set_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES ObjectFile) + add_subdirectory(Darwin-Kernel) add_subdirectory(FreeBSD-Kernel) add_subdirectory(MacOSX-DYLD) diff --git a/lldb/source/Plugins/ExpressionParser/CMakeLists.txt b/lldb/source/Plugins/ExpressionParser/CMakeLists.txt index 17c40aee44cc2..8a8089879bd9f 100644 --- a/lldb/source/Plugins/ExpressionParser/CMakeLists.txt +++ b/lldb/source/Plugins/ExpressionParser/CMakeLists.txt @@ -1 +1,3 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ExpressionParser) + add_subdirectory(Clang) diff --git a/lldb/source/Plugins/Instruction/CMakeLists.txt b/lldb/source/Plugins/Instruction/CMakeLists.txt index 46d610f261e0d..bf48a1c1cc11e 100644 --- a/lldb/source/Plugins/Instruction/CMakeLists.txt +++ b/lldb/source/Plugins/Instruction/CMakeLists.txt @@ -1,3 +1,5 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Instruction) + add_subdirectory(ARM) add_subdirectory(ARM64) add_subdirectory(LoongArch) diff --git a/lldb/source/Plugins/InstrumentationRuntime/CMakeLists.txt b/lldb/source/Plugins/InstrumentationRuntime/CMakeLists.txt index 7f301bca14a83..2a6cf930945d1 100644 --- a/lldb/source/Plugins/InstrumentationRuntime/CMakeLists.txt +++ b/lldb/source/Plugins/InstrumentationRuntime/CMakeLists.txt @@ -1,3 +1,5 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND InstrumentationRuntime) + add_subdirectory(ASan) add_subdirectory(ASanLibsanitizers) add_subdirectory(MainThreadChecker) diff --git a/lldb/source/Plugins/JITLoader/CMakeLists.txt b/lldb/source/Plugins/JITLoader/CMakeLists.txt index e52230199109f..71b85638b820f 100644 --- a/lldb/source/Plugins/JITLoader/CMakeLists.txt +++ b/lldb/source/Plugins/JITLoader/CMakeLists.txt @@ -1 +1,3 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND JITLoader) + add_subdirectory(GDB) diff --git a/lldb/source/Plugins/Language/CMakeLists.txt b/lldb/source/Plugins/Language/CMakeLists.txt index 7869074566d1e..f2b4e84b55ebf 100644 --- a/lldb/source/Plugins/Language/CMakeLists.txt +++ b/lldb/source/Plugins/Language/CMakeLists.txt @@ -1,3 +1,5 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Language) + add_subdirectory(ClangCommon) add_subdirectory(CPlusPlus) add_subdirectory(ObjC) diff --git a/lldb/source/Plugins/LanguageRuntime/CMakeLists.txt b/lldb/source/Plugins/LanguageRuntime/CMakeLists.txt index 034ae1545ae88..7dcc426702f96 100644 --- a/lldb/source/Plugins/LanguageRuntime/CMakeLists.txt +++ b/lldb/source/Plugins/LanguageRuntime/CMakeLists.txt @@ -1,2 +1,4 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND LanguageRuntime) + add_subdirectory(CPlusPlus) add_subdirectory(ObjC) diff --git a/lldb/source/Plugins/MemoryHistory/CMakeLists.txt b/lldb/source/Plugins/MemoryHistory/CMakeLists.txt index 113f063625789..50838bb8a0770 100644 --- a/lldb/source/Plugins/MemoryHistory/CMakeLists.txt +++ b/lldb/source/Plugins/MemoryHistory/CMakeLists.txt @@ -1 +1,3 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND MemoryHistory) + add_subdirectory(asan) diff --git a/lldb/source/Plugins/ObjectContainer/CMakeLists.txt b/lldb/source/Plugins/ObjectContainer/CMakeLists.txt index cda0c8151dd8a..4ae1bb138a9a4 100644 --- a/lldb/source/Plugins/ObjectContainer/CMakeLists.txt +++ b/lldb/source/Plugins/ObjectContainer/CMakeLists.txt @@ -1,3 +1,5 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ObjectContainer) + add_subdirectory(BSD-Archive) add_subdirectory(Universal-Mach-O) add_subdirectory(Mach-O-Fileset) diff --git a/lldb/source/Plugins/ObjectFile/CMakeLists.txt b/lldb/source/Plugins/ObjectFile/CMakeLists.txt index 7abd0c96f4fd7..6004b1f414d43 100644 --- a/lldb/source/Plugins/ObjectFile/CMakeLists.txt +++ b/lldb/source/Plugins/ObjectFile/CMakeLists.txt @@ -1,3 +1,5 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ObjectFile) + add_subdirectory(Breakpad) add_subdirectory(COFF) add_subdirectory(ELF) diff --git a/lldb/source/Plugins/OperatingSystem/CMakeLists.txt b/lldb/source/Plugins/OperatingSystem/CMakeLists.txt index 06d909b862a04..1a29f9ad3af4c 100644 --- a/lldb/source/Plugins/OperatingSystem/CMakeLists.txt +++ b/lldb/source/Plugins/OperatingSystem/CMakeLists.txt @@ -1,3 +1,5 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND OperatingSystem) + if (LLDB_ENABLE_PYTHON) add_subdirectory(Python) endif() diff --git a/lldb/source/Plugins/Platform/CMakeLists.txt b/lldb/source/Plugins/Platform/CMakeLists.txt index 0220e734b36d1..530243bb44345 100644 --- a/lldb/source/Plugins/Platform/CMakeLists.txt +++ b/lldb/source/Plugins/Platform/CMakeLists.txt @@ -1,3 +1,5 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Platform) + add_subdirectory(AIX) add_subdirectory(Android) add_subdirectory(FreeBSD) diff --git a/lldb/source/Plugins/Process/CMakeLists.txt b/lldb/source/Plugins/Process/CMakeLists.txt index 058b4b9ad2157..fb3d3a1a1beca 100644 --- a/lldb/source/Plugins/Process/CMakeLists.txt +++ b/lldb/source/Plugins/Process/CMakeLists.txt @@ -1,3 +1,6 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Process) +set_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES ObjectFile) + if (CMAKE_SYSTEM_NAME MATCHES "Linux|Android") add_subdirectory(Linux) add_subdirectory(POSIX) diff --git a/lldb/source/Plugins/Process/Utility/CMakeLists.txt b/lldb/source/Plugins/Process/Utility/CMakeLists.txt index fd3019613892a..48646b784f931 100644 --- a/lldb/source/Plugins/Process/Utility/CMakeLists.txt +++ b/lldb/source/Plugins/Process/Utility/CMakeLists.txt @@ -1,3 +1,6 @@ +# TODO: Clean up this directory and its dependencies +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ProcessUtility) + add_lldb_library(lldbPluginProcessUtility AuxVector.cpp FreeBSDSignals.cpp diff --git a/lldb/source/Plugins/REPL/CMakeLists.txt b/lldb/source/Plugins/REPL/CMakeLists.txt index 17c40aee44cc2..c0532ef0bb95f 100644 --- a/lldb/source/Plugins/REPL/CMakeLists.txt +++ b/lldb/source/Plugins/REPL/CMakeLists.txt @@ -1 +1,3 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND REPL) + add_subdirectory(Clang) diff --git a/lldb/source/Plugins/RegisterTypeBuilder/CMakeLists.txt b/lldb/source/Plugins/RegisterTypeBuilder/CMakeLists.txt index 336ae91058021..7411b24c86cbd 100644 --- a/lldb/source/Plugins/RegisterTypeBuilder/CMakeLists.txt +++ b/lldb/source/Plugins/RegisterTypeBuilder/CMakeLists.txt @@ -1,3 +1,5 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND RegisterTypeBuilder) + add_lldb_library(lldbPluginRegisterTypeBuilderClang PLUGIN RegisterTypeBuilderClang.cpp diff --git a/lldb/source/Plugins/ScriptInterpreter/CMakeLists.txt b/lldb/source/Plugins/ScriptInterpreter/CMakeLists.txt index fa1c72a32fe13..4429b006173a7 100644 --- a/lldb/source/Plugins/ScriptInterpreter/CMakeLists.txt +++ b/lldb/source/Plugins/ScriptInterpreter/CMakeLists.txt @@ -1,3 +1,5 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND ScriptInterpreter) + add_subdirectory(None) if (LLDB_ENABLE_PYTHON) add_subdirectory(Python) diff --git a/lldb/source/Plugins/StructuredData/CMakeLists.txt b/lldb/source/Plugins/StructuredData/CMakeLists.txt index 40d64558482db..a6caa233f2220 100644 --- a/lldb/source/Plugins/StructuredData/CMakeLists.txt +++ b/lldb/source/Plugins/StructuredData/CMakeLists.txt @@ -1,2 +1,4 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND StructuredData) + add_subdirectory(DarwinLog) diff --git a/lldb/source/Plugins/SymbolFile/CMakeLists.txt b/lldb/source/Plugins/SymbolFile/CMakeLists.txt index 106387b45ec1a..a146966479d23 100644 --- a/lldb/source/Plugins/SymbolFile/CMakeLists.txt +++ b/lldb/source/Plugins/SymbolFile/CMakeLists.txt @@ -1,3 +1,11 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND SymbolFile) +set_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES + ObjectFile + # TODO: This dependency is part of a loop (TypeSystem<->SymbolFile). We should + # find a way to remove it. + TypeSystem +) + add_subdirectory(Breakpad) add_subdirectory(CTF) add_subdirectory(DWARF) diff --git a/lldb/source/Plugins/SymbolLocator/CMakeLists.txt b/lldb/source/Plugins/SymbolLocator/CMakeLists.txt index 3367022639ab8..3b466f71dca58 100644 --- a/lldb/source/Plugins/SymbolLocator/CMakeLists.txt +++ b/lldb/source/Plugins/SymbolLocator/CMakeLists.txt @@ -1,3 +1,5 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND SymbolLocator) + # Order matters here: the first symbol locator prevents further searching. # For DWARF binaries that are both stripped and split, the Default plugin # will return the stripped binary when asked for the ObjectFile, which then diff --git a/lldb/source/Plugins/SymbolVendor/CMakeLists.txt b/lldb/source/Plugins/SymbolVendor/CMakeLists.txt index 1981706e06f4a..8b57313e10ea7 100644 --- a/lldb/source/Plugins/SymbolVendor/CMakeLists.txt +++ b/lldb/source/Plugins/SymbolVendor/CMakeLists.txt @@ -1,3 +1,6 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND SymbolVendor) +set_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES ObjectFile) + add_subdirectory(ELF) if (CMAKE_SYSTEM_NAME MATCHES "Darwin") diff --git a/lldb/source/Plugins/SystemRuntime/CMakeLists.txt b/lldb/source/Plugins/SystemRuntime/CMakeLists.txt index 0955a9eb74c2d..3d36b7eae839f 100644 --- a/lldb/source/Plugins/SystemRuntime/CMakeLists.txt +++ b/lldb/source/Plugins/SystemRuntime/CMakeLists.txt @@ -1 +1,3 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND SystemRuntime) + add_subdirectory(MacOSX) diff --git a/lldb/source/Plugins/Trace/CMakeLists.txt b/lldb/source/Plugins/Trace/CMakeLists.txt index 955f88cec3404..331b48f95f1a4 100644 --- a/lldb/source/Plugins/Trace/CMakeLists.txt +++ b/lldb/source/Plugins/Trace/CMakeLists.txt @@ -1,3 +1,5 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND Trace) + option(LLDB_BUILD_INTEL_PT "Enable Building of Intel(R) Processor Trace Tool" OFF) add_subdirectory(common) diff --git a/lldb/source/Plugins/TraceExporter/CMakeLists.txt b/lldb/source/Plugins/TraceExporter/CMakeLists.txt index e0252ee36720c..7130548d7a9f8 100644 --- a/lldb/source/Plugins/TraceExporter/CMakeLists.txt +++ b/lldb/source/Plugins/TraceExporter/CMakeLists.txt @@ -1,2 +1,4 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND TraceExporter) + add_subdirectory(common) add_subdirectory(ctf) diff --git a/lldb/source/Plugins/TypeSystem/CMakeLists.txt b/lldb/source/Plugins/TypeSystem/CMakeLists.txt index 17c40aee44cc2..52976fa4e9569 100644 --- a/lldb/source/Plugins/TypeSystem/CMakeLists.txt +++ b/lldb/source/Plugins/TypeSystem/CMakeLists.txt @@ -1 +1,6 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND TypeSystem) +# TODO: This dependency is part of a loop (TypeSystem<->SymbolFile). We should +# find a way to remove it. +set_property(DIRECTORY PROPERTY LLDB_PERMITTED_PLUGIN_DEPENDENCIES SymbolFile) + add_subdirectory(Clang) diff --git a/lldb/source/Plugins/UnwindAssembly/CMakeLists.txt b/lldb/source/Plugins/UnwindAssembly/CMakeLists.txt index 1723a06045804..1f505599c3fff 100644 --- a/lldb/source/Plugins/UnwindAssembly/CMakeLists.txt +++ b/lldb/source/Plugins/UnwindAssembly/CMakeLists.txt @@ -1,2 +1,4 @@ +set_property(DIRECTORY PROPERTY LLDB_PLUGIN_KIND UnwindAssembly) + add_subdirectory(InstEmulation) add_subdirectory(x86) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits