ELF: Have __rela_iplt_{start,end} surround .rela.iplt with --pack-dyn-relocs=android.
[llvm-project.git] / llvm / utils / gn / secondary / lldb / source / Plugins / BUILD.gn
blob06dde7c0aa5287e62ea93b5201d208189e019aa1
1 import("//llvm/lib/Target/targets.gni")
2 import("//llvm/utils/gn/build/write_cmake_config.gni")
4 # In the CMake build, each plugin calls `add_lldb_library(name PLUGIN ...)`,
5 # which implicitly adds the plugin name to the LLDB_PLUGINS list.
6 # A few places then query that list and add dependencies on it.
7 # lldb/source/Plugins/CMakeList.txt then does string munging on the list of
8 # plugin names to generate Plugins.def.
9 # In the GN build, we instead have an explicit list of all plugins here.
10 # Every entry in this list is a (GN target, LLDB_PLUGIN Plugins.def name) pair.
11 lldb_plugins = []
12 if (llvm_build_X86) {
13   lldb_plugins += [ [
14         "//lldb/source/Plugins/ABI/X86",
15         "ABIX86",
16       ] ]
18 lldb_plugins += [
19   [
20     "//lldb/source/Plugins/Architecture/PPC64",
21     "ArchitecturePPC64",
22   ],
23   [
24     "//lldb/source/Plugins/Disassembler/LLVMC",
25     "DisassemblerLLVMC",
26   ],
27   [
28     "//lldb/source/Plugins/DynamicLoader/Darwin-Kernel",
29     "DynamicLoaderDarwinKernel",
30   ],
31   [
32     "//lldb/source/Plugins/DynamicLoader/MacOSX-DYLD",
33     "DynamicLoaderMacOSXDYLD",
34   ],
35   [
36     "//lldb/source/Plugins/DynamicLoader/POSIX-DYLD",
37     "DynamicLoaderPosixDYLD",
38   ],
39   [
40     "//lldb/source/Plugins/DynamicLoader/Static",
41     "DynamicLoaderStatic",
42   ],
43   [
44     "//lldb/source/Plugins/DynamicLoader/Windows-DYLD",
45     "DynamicLoaderWindowsDYLD",
46   ],
47   [
48     "//lldb/source/Plugins/Instruction/ARM",
49     "InstructionARM",
50   ],
51   [
52     "//lldb/source/Plugins/JITLoader/GDB",
53     "JITLoaderGDB",
54   ],
55   [
56     "//lldb/source/Plugins/Language/CPlusPlus",
57     "CPlusPlusLanguage",
58   ],
59   [
60     "//lldb/source/Plugins/Language/ObjC",
61     "ObjCLanguage",
62   ],
63   [
64     "//lldb/source/Plugins/Language/ObjCPlusPlus",
65     "ObjCPlusPlusLanguage",
66   ],
67   [
68     "//lldb/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI",
69     "CXXItaniumABI",
70   ],
71   [
72     "//lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime",
73     "AppleObjCRuntime",
74   ],
75   [
76     "//lldb/source/Plugins/ObjectContainer/BSD-Archive",
77     "ObjectContainerBSDArchive",
78   ],
79   [
80     "//lldb/source/Plugins/ObjectContainer/Universal-Mach-O",
81     "ObjectContainerMachOArchive",
82   ],
83   [
84     "//lldb/source/Plugins/ObjectFile/Breakpad",
85     "ObjectFileBreakpad",
86   ],
87   [
88     "//lldb/source/Plugins/ObjectFile/ELF",
89     "ObjectFileELF",
90   ],
91   [
92     "//lldb/source/Plugins/ObjectFile/Mach-O",
93     "ObjectFileMachO",
94   ],
95   [
96     "//lldb/source/Plugins/ObjectFile/PDB",
97     "ObjectFilePDB",
98   ],
99   [
100     "//lldb/source/Plugins/ObjectFile/PECOFF",
101     "ObjectFilePECOFF",
102   ],
103   [
104     "//lldb/source/Plugins/ObjectFile/Placeholder",
105     "ObjectFilePlaceholder",
106   ],
107   [
108     "//lldb/source/Plugins/ObjectFile/wasm",
109     "ObjectFileWasm",
110   ],
111   [
112     "//lldb/source/Plugins/Platform/Linux",
113     "PlatformLinux",
114   ],
115   [
116     "//lldb/source/Plugins/Platform/MacOSX",
117     "PlatformMacOSX",
118   ],
119   [
120     "//lldb/source/Plugins/Platform/Windows",
121     "PlatformWindows",
122   ],
123   [
124     "//lldb/source/Plugins/Process/elf-core",
125     "ProcessElfCore",
126   ],
127   [
128     "//lldb/source/Plugins/Process/gdb-remote",
129     "",  # Uses LLDB_PROCESS_GDB_PLUGIN instead.
130   ],
131   [
132     "//lldb/source/Plugins/Process/mach-core",
133     "ProcessMachCore",
134   ],
135   [
136     "//lldb/source/Plugins/Process/minidump",
137     "ProcessMinidump",
138   ],
139   [
140     "//lldb/source/Plugins/REPL/Clang",
141     "ClangREPL",
142   ],
143   [
144     "//lldb/source/Plugins/ScriptInterpreter/None",
145     "",  # Uses LLDB_SCRIPT_PLUGIN instead.
146   ],
147   [
148     "//lldb/source/Plugins/SymbolFile/Breakpad",
149     "SymbolFileBreakpad",
150   ],
151   [
152     "//lldb/source/Plugins/SymbolFile/DWARF",
153     "SymbolFileDWARF",
154   ],
155   [
156     "//lldb/source/Plugins/SymbolFile/PDB",
157     "SymbolFilePDB",
158   ],
159   [
160     "//lldb/source/Plugins/SymbolFile/Symtab",
161     "SymbolFileSymtab",
162   ],
163   [
164     "//lldb/source/Plugins/SymbolLocator/Default",
165     "SymbolLocatorDefault",
166   ],
168 if (current_os == "mac") {
169   lldb_plugins += [
170     [
171       "//lldb/source/Plugins/SymbolLocator/DebugSymbols",
172       "SymbolLocatorDebugSymbols",
173     ],
174     [
175       "//lldb/source/Plugins/SymbolVendor/MacOSX",
176       "SymbolVendorMacOSX",
177     ],
178   ]
180 lldb_plugins += [
181   [
182     "//lldb/source/Plugins/SymbolVendor/ELF",
183     "SymbolVendorELF",
184   ],
186   [
187     "//lldb/source/Plugins/SymbolVendor/wasm",
188     "SymbolVendorWasm",
189   ],
191   [
192     "//lldb/source/Plugins/SymbolVendor/PECOFF",
193     "SymbolVendorPECOFF",
194   ],
196   [
197     "//lldb/source/Plugins/TypeSystem/Clang",
198     "TypeSystemClang",
199   ],
201   [
202     "//lldb/source/Plugins/UnwindAssembly/InstEmulation",
203     "UnwindAssemblyInstEmulation",
204   ],
205   [
206     "//lldb/source/Plugins/UnwindAssembly/x86",
207     "UnwindAssemblyX86",
208   ],
211 write_cmake_config("Plugins.def") {
212   input = "Plugins.def.in"
213   output = "$target_gen_dir/Plugins.def"
215   enum_plugins = ""
216   foreach(plugin, lldb_plugins) {
217     plugin_id = plugin[1]
218     if (plugin_id != "") {
219       # \n is a literal '\' followed by a literal 'n', not a newline character.
220       # write_cmake_config.py replaces it with a real newline.
221       enum_plugins += "LLDB_PLUGIN(" + plugin_id + ")\n"
222     }
223   }
225   deps = [ "//lldb/source/Plugins/ScriptInterpreter/None" ]
226   enum_plugins += "LLDB_SCRIPT_PLUGIN(ScriptInterpreterNone)"
228   values = [ "LLDB_ENUM_PLUGINS=" + enum_plugins ]
230   # These are in separate variables to make sure ProcessWindowsCommon is
231   # initalized after all plugins, but before ProcessGDBRemote.
232   if (current_os == "win") {
233     values +=
234         [ "LLDB_PROCESS_WINDOWS_PLUGIN=LLDB_PLUGIN(ProcessWindowsCommon)" ]
235   } else {
236     values += [ "LLDB_PROCESS_WINDOWS_PLUGIN=" ]
237   }
238   values += [ "LLDB_PROCESS_GDB_PLUGIN=LLDB_PLUGIN(ProcessGDBRemote)" ]
241 config("AllLldbPlugins_config") {
242   visibility = [ ":LldbAllPlugins" ]
244   # To pick up Plugins.def.
245   include_dirs = [ "$root_gen_dir/lldb/source" ]
248 group("LldbAllPlugins") {
249   deps = [ ":Plugins.def" ]
250   foreach(plugin, lldb_plugins) {
251     deps += [ plugin[0] ]
252   }
253   public_configs = [ ":AllLldbPlugins_config" ]