source: general/prog/llvm.xml@ f332d22

12.2 lazarus trunk
Last change on this file since f332d22 was c8248449, checked in by Xi Ruoyao <xry111@…>, 5 weeks ago

llvm: Document test failures triggered by Glibc-2.40

  • Property mode set to 100644
File size: 63.2 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY llvm-url "https://github.com/llvm/llvm-project/releases/download/llvmorg-&llvm-version;">
8
9 <!ENTITY llvm-download-http "&llvm-url;/llvm-&llvm-version;.src.tar.xz">
10 <!ENTITY llvm-download-ftp " ">
11 <!ENTITY llvm-md5sum "ad39785449a878df1eed590339c3a8c4">
12 <!ENTITY llvm-size "60 MB">
13 <!ENTITY llvm-buildsize "3.5 GB (964 MB installed; add 20 GB for tests and 308 MB for documentation)">
14 <!ENTITY llvm-time "13 SBU (Add 8 SBU for tests; both using parallelism=8)">
15
16 <!ENTITY clang-download-http "&llvm-url;/clang-&llvm-version;.src.tar.xz">
17 <!ENTITY clang-md5sum "47e26237223d5ee0e6b674f028b56dae">
18 <!ENTITY clang-size "22 MB">
19
20 <!ENTITY compiler-rt-download-http "&llvm-url;/compiler-rt-&llvm-version;.src.tar.xz">
21 <!ENTITY compiler-rt-md5sum "31753c0ec6271a37c12a17cf84187098">
22 <!ENTITY compiler-rt-size "2.4 MB">
23
24 <!-- CMake modules and third party dependencies renamed and uploaded
25 onto anduin to avoid stupid file names. -->
26
27 <!ENTITY cmake-llvm-download-http "&sources-anduin-http;/llvm/llvm-cmake-&llvm-maj-version;.src.tar.xz">
28 <!ENTITY cmake-llvm-md5sum "bf2ad617d47ce40fe77c0e5c26b1fe43">
29 <!ENTITY cmake-llvm-size "12 KB">
30
31 <!ENTITY llvm-3rdparty-download-http "&sources-anduin-http;/llvm/llvm-third-party-&llvm-maj-version;.src.tar.xz">
32 <!ENTITY llvm-3rdparty-md5sum "5ebac19868c66cdac8b87077faefd38c">
33 <!ENTITY llvm-3rdparty-size "396 KB">
34]>
35
36<sect1 id="llvm" xreflabel="LLVM-&llvm-version;">
37 <?dbhtml filename="llvm.html" ?>
38
39
40 <title>LLVM-&llvm-version;</title>
41
42 <indexterm zone="llvm">
43 <primary sortas="a-LLVM">LLVM</primary>
44 </indexterm>
45
46 <sect2 role="package">
47 <title>Introduction to LLVM</title>
48
49 <para>
50 The <application>LLVM</application> package contains a collection of
51 modular and reusable compiler and toolchain technologies. The Low Level
52 Virtual Machine (LLVM) Core libraries provide a modern source and
53 target-independent optimizer, along with code generation support for many
54 popular CPUs (as well as some less common ones!). These libraries are
55 built around a well specified code representation known as the LLVM
56 intermediate representation ("LLVM IR").
57 </para>
58
59 <para>
60 <application>Clang</application> provides new C, C++, Objective C
61 and Objective C++ front-ends for <application>LLVM</application> and is
62 required by some desktop packages such as <application>firefox</application>
63 and for <application>rust</application> if that is built using the system
64 <application>LLVM</application>.
65 </para>
66
67 <para>
68 The <application>Compiler RT</application> package provides
69 runtime sanitizer and profiling libraries for developers who use
70 <application>Clang</application> and <application>LLVM</application>.
71 </para>
72
73 &lfs122_checked;
74
75 <bridgehead renderas="sect3">Package Information</bridgehead>
76 <itemizedlist spacing="compact">
77 <listitem>
78 <para>
79 Download (HTTP): <ulink url="&llvm-download-http;"/>
80 </para>
81 </listitem>
82 <listitem>
83 <para>
84 Download (FTP): <ulink url="&llvm-download-ftp;"/>
85 </para>
86 </listitem>
87 <listitem>
88 <para>
89 Download MD5 sum: &llvm-md5sum;
90 </para>
91 </listitem>
92 <listitem>
93 <para>
94 Download size: &llvm-size;
95 </para>
96 </listitem>
97 <listitem>
98 <para>
99 Estimated disk space required: &llvm-buildsize;
100 </para>
101 </listitem>
102 <listitem>
103 <para>
104 Estimated build time: &llvm-time;
105 </para>
106 </listitem>
107 </itemizedlist>
108
109 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
110 <para>
111 <emphasis role="strong">Cmake modules for LLVM</emphasis>
112 </para>
113 <itemizedlist spacing="compact">
114 <listitem>
115 <para>
116 Download: <ulink url="&cmake-llvm-download-http;"/>
117 </para>
118 </listitem>
119 <listitem>
120 <para>
121 Download MD5 sum: &cmake-llvm-md5sum;
122 </para>
123 </listitem>
124 <listitem>
125 <para>
126 Download size: &cmake-llvm-size;
127 </para>
128 </listitem>
129 </itemizedlist>
130
131 <para>
132 <emphasis role="strong">Third-party dependencies for LLVM build system</emphasis>
133 </para>
134 <itemizedlist spacing="compact">
135 <listitem>
136 <para>
137 Download: <ulink url="&llvm-3rdparty-download-http;"/>
138 </para>
139 </listitem>
140 <listitem>
141 <para>
142 Download MD5 sum: &llvm-3rdparty-md5sum;
143 </para>
144 </listitem>
145 <listitem>
146 <para>
147 Download size: &llvm-3rdparty-size;
148 </para>
149 </listitem>
150 </itemizedlist>
151
152
153 <bridgehead renderas="sect3">Recommended Download</bridgehead>
154 <para>
155 <emphasis role="strong">Clang</emphasis>
156 </para>
157 <itemizedlist spacing="compact">
158 <listitem>
159 <para>
160 Download: <ulink url="&clang-download-http;"/>
161 </para>
162 </listitem>
163 <listitem>
164 <para>
165 Download MD5 sum: &clang-md5sum;
166 </para>
167 </listitem>
168 <listitem>
169 <para>
170 Download size: &clang-size;
171 </para>
172 </listitem>
173 </itemizedlist>
174
175 <bridgehead renderas="sect3">Optional Download</bridgehead>
176 <para>
177 <emphasis role="strong">Compiler RT</emphasis>
178 </para>
179 <itemizedlist spacing="compact">
180 <listitem>
181 <para>
182 Download: <ulink url="&compiler-rt-download-http;"/>
183 </para>
184 </listitem>
185 <listitem>
186 <para>
187 Download MD5 sum: &compiler-rt-md5sum;
188 </para>
189 </listitem>
190 <listitem>
191 <para>
192 Download size: &compiler-rt-size;
193 </para>
194 </listitem>
195 </itemizedlist>
196 <bridgehead renderas="sect3">LLVM Dependencies</bridgehead>
197
198 <bridgehead renderas="sect4">Required</bridgehead>
199 <para role="required">
200 <xref linkend="cmake"/>
201 </para>
202
203 <bridgehead renderas="sect4">Optional</bridgehead>
204 <para role="optional">
205 <xref linkend="doxygen"/>,
206 <xref linkend="git"/>,
207 <xref linkend="graphviz"/>,
208 <xref linkend="libxml2"/>,
209 <xref linkend="psutil"/> (for tests),
210 <xref linkend="pygments"/>,
211 <xref linkend="PyYAML"/> (for tests),
212 <xref linkend="rsync"/> (for tests),
213 <phrase revision="systemd"><xref linkend="systemd"/>
214 (rebuilt with PAM, for tests),</phrase>
215 <xref linkend="texlive"/> (or <xref linkend="tl-installer"/>),
216 <xref linkend="valgrind"/>,
217 <xref linkend="zip"/>,
218 <ulink url="https://pypi.org/project/myst-parser">myst-parser</ulink>
219 (for building documentation),
220 <ulink url="https://ocaml.org/">OCaml</ulink>,
221 and <ulink url="https://github.com/Z3Prover/z3">Z3</ulink>
222 </para>
223
224 </sect2>
225
226 <sect2 role="installation">
227 <title>Installation of LLVM</title>
228
229 <para>
230 Two additional tarballs
231 <filename>llvm-cmake-&llvm-maj-version;.src.tar.xz</filename> and
232 <filename>llvm-third-party-&llvm-maj-version;.src.tar.xz</filename> are
233 needed by LLVM building system. The upstream expects them extracted
234 at the same level as the
235 <filename>llvm-&llvm-version;.src.tar.xz</filename> tarball,
236 and the extracted directories renamed to
237 <filename class="directory">cmake</filename> and
238 <filename class="directory">third-party</filename>. Extract them and
239 modify the build system to avoid creating ambiguously-named
240 directories outside the
241 <filename>llvm-&llvm-version;.src</filename> hierarchy:
242 </para>
243
244<screen><userinput>tar -xf ../llvm-cmake-&llvm-maj-version;.src.tar.xz &amp;&amp;
245tar -xf ../llvm-third-party-&llvm-maj-version;.src.tar.xz &amp;&amp;
246sed '/LLVM_COMMON_CMAKE_UTILS/s@../cmake@llvm-cmake-&llvm-maj-version;.src@' \
247 -i CMakeLists.txt &amp;&amp;
248sed '/LLVM_THIRD_PARTY_DIR/s@../third-party@llvm-third-party-&llvm-maj-version;.src@' \
249 -i cmake/modules/HandleLLVMOptions.cmake</userinput></screen>
250
251 <para>
252 Install <application>clang</application> into
253 the source tree by running the following commands:
254 </para>
255
256<screen><userinput>tar -xf ../clang-&llvm-version;.src.tar.xz -C tools &amp;&amp;
257mv tools/clang-&llvm-version;.src tools/clang</userinput></screen>
258
259 <para>
260 If you have downloaded <application>compiler-rt</application>,
261 install it into the source tree by running the following commands:
262 </para>
263
264<screen><userinput>tar -xf ../compiler-rt-&llvm-version;.src.tar.xz -C projects &amp;&amp;
265mv projects/compiler-rt-&llvm-version;.src projects/compiler-rt</userinput></screen>
266
267 <para>
268 There are many Python scripts in this package which use
269 <command>/usr/bin/env python</command> to access the system Python
270 which on LFS is <xref linkend="python3"/>. Use the following command
271 to fix these scripts:
272 </para>
273
274<screen><userinput>grep -rl '#!.*python' | xargs sed -i '1s/python$/python3/'</userinput></screen>
275
276 <para>
277 Ensure installing the <command>FileCheck</command> program which is
278 needed by the test suite of some packages (for example
279 <xref linkend='rust'/>):
280 </para>
281
282 <screen><userinput>sed 's/utility/tool/' -i utils/FileCheck/CMakeLists.txt</userinput></screen>
283
284 <para>
285 Install <application>LLVM</application> by running the following
286 commands:
287 </para>
288
289<screen><userinput>mkdir -v build &amp;&amp;
290cd build &amp;&amp;
291
292CC=gcc CXX=g++ \
293cmake -D CMAKE_INSTALL_PREFIX=/usr \
294 -D CMAKE_SKIP_INSTALL_RPATH=ON \
295 -D LLVM_ENABLE_FFI=ON \
296 -D CMAKE_BUILD_TYPE=Release \
297 -D LLVM_BUILD_LLVM_DYLIB=ON \
298 -D LLVM_LINK_LLVM_DYLIB=ON \
299 -D LLVM_ENABLE_RTTI=ON \
300 -D LLVM_TARGETS_TO_BUILD="host;AMDGPU" \
301 -D LLVM_BINUTILS_INCDIR=/usr/include \
302 -D LLVM_INCLUDE_BENCHMARKS=OFF \
303 -D CLANG_DEFAULT_PIE_ON_LINUX=ON \
304 -D CLANG_CONFIG_FILE_SYSTEM_DIR=/etc/clang \
305 -W no-dev -G Ninja .. &amp;&amp;
306ninja</userinput></screen>
307<!-- Commented out because myst-parser is not in BLFS and we cannot test
308 <para>
309 If you have installed myst-parser and its
310 dependencies, you can generate the html documentation and manual
311 pages with the following commands:
312 </para>
313
314<screen remap="doc"><userinput>cmake -D LLVM_BUILD_DOCS=ON \
315 -D LLVM_ENABLE_SPHINX=ON \
316 -D SPHINX_WARNINGS_AS_ERRORS=OFF \
317 -W no-dev -G Ninja .. &amp;&amp;
318ninja docs-llvm-html docs-llvm-man</userinput></screen>
319
320 <para>
321 The clang documentation can be built too:
322 </para>
323
324<screen remap="doc"><userinput>ninja docs-clang-html docs-clang-man</userinput></screen>
325-->
326 <!-- https://github.com/llvm/llvm-project/issues/39012 -->
327 <para>
328 If you wish to run the tests, remove a test case known to hang
329 indefinitely on some systems:
330 </para>
331
332 <screen remap='test'><userinput>rm -f ../projects/compiler-rt/test/tsan/getline_nohang.cpp</userinput></screen>
333
334 <!-- The excessive core dump made my system irresponsive. -->
335 <para>
336 LLVM test suite can produce many core dump files. They will occupy
337 a large amount of disk space, and the core dump process can
338 significantly slow down the testing. To test the results with core
339 dump disabled, <phrase revision='systemd'>ensure
340 <xref linkend='systemd'/> and <xref linkend='shadow'/> have
341 been rebuilt with <xref linkend='linux-pam'/> support (if you are
342 interacting via a SSH or graphical session, also ensure the
343 <xref linkend='openssh'/> server or the desktop manager has been
344 built with <xref linkend='linux-pam'/>) and the current login session
345 is started after updating the
346 <filename>/etc/pam.d/system-session</filename> file to include
347 <filename class='libraryfile'>pam_systemd.so</filename>,
348 then </phrase>issue:
349 </para>
350
351 <screen remap="test" revision="sysv"><userinput>sh -c 'ulimit -c 0 &amp;&amp; ninja check-all'</userinput></screen>
352
353 <!-- From core(5): "RLIMIT_CORE will be ignored if the system is
354 configured to pipe core dumps to a program". Here "the program"
355 is systemd-coredumpd. So we need some fancy systemd setting.
356 -&ndash;user: Run it under per-user systemd manager, avoiding
357 the necessity of root priviledge.
358 -&nash;pty: Run it in a pseudo-terminal, so we can monitor the
359 process or interrupt it with Ctrl-C if we want.
360 -d: Run it with $PWD as the working directory.
361 -G: Delete the transient service unit even if the command fails,
362 to prevent "systemctl -&ndash;user status" from reporting
363 "degraded".
364 -p LimitCORE=0: Disable core dump.
365 -->
366
367<screen remap="test" revision="systemd"><userinput>systemctl --user start dbus &amp;&amp;
368systemd-run --user --pty -d -G -p LimitCORE=0 ninja check-all</userinput></screen>
369
370 <para>
371 <!-- EDITORS - if you have more than 4 cores, use a cgroup to measure
372 the elapsed time for the tests. Also, libstdc++.a and perhaps libstdc++fs.a
373 are used by a couple of the link-static tests. -->
374 If <option>-jN</option> (N replaced with a number) is passed to
375 <command>ninja</command>, the tests will be built with N logical
376 cores, but run using all available logical cores.
377 Run the test command in a cgroup (<phrase revision='systemd'>pass
378 the <option>-p AllowedCPUs=...</option> option to the
379 <command>systemd-run</command> command,
380 </phrase>
381 read <xref linkend='build-in-cgroup'/> for details) to limit the
382 number of logical cores for running the tests.
383
384 <!-- https://github.com/llvm/llvm-project/issues/100877 -->
385 Two tests related to
386 <filename>TestCases/Linux/printf-fortify-5.c</filename> are known to
387 fail with Glibc-2.40 or newer.
388
389 One test named <filename>Linux/clone_setns.cpp</filename> will fail
390 if <option>CONFIG_USER_NS</option> is not enabled in kernel
391 configuration.
392 <!-- 18.1.6: 71637 Passed, 27461 Unsupported, 339 Skipped,
393 133 Expectedly Failed -->
394
395 <!-- To editors: it seems there is a more thorough test suite named
396 "test-suite-x.y.z.src.tar.xz" on the GitHub release download
397 page. The usage of it is on
398 https://llvm.org/docs/TestSuiteGuide.html. It looks like we've
399 never mentioned it in BLFS.
400
401 Let's let it go. llvm is complex enough as it is. Adding
402 the additional testsuite is IMO overkill. - bdubbs -->
403 </para>
404
405 <para>
406 Now, as the &root; user:
407 </para>
408
409<screen role="root"><userinput>ninja install</userinput></screen>
410<!-- as of version 13.0.0, the install process seems to install the html
411 documentation and the manual pages. The llvm html documentation
412 is installed into /usr/share/doc/LLVM/llvm, while the clang html
413 documentation is installed into /usr/share/doc/LLVM/clang. So we have
414 just to move it.
415
416 commented out because myst-parser is not in BLFS
417 <para>
418 If you have built the llvm documentation, it has been installed
419 by the above command, but it needs to be moved. As the
420 <systemitem class="username">root</systemitem> user:
421 </para>
422
423<screen role="root"
424 remap="doc"><userinput>install -v -d -m755 /usr/share/doc/llvm-&llvm-version; &amp;&amp;
425mv -v /usr/share/doc/LLVM/llvm /usr/share/doc/llvm-&llvm-version; &amp;&amp;
426rmdir -v - -ignore-fail-on-non-empty /usr/share/doc/LLVM</userinput></screen>
427
428 <para>
429 If you have built the clang documentation, it has been installed, but
430 needs to be moved too. Again as the
431 <systemitem class="username">root</systemitem> user:
432 </para>
433
434<screen role="root"
435 remap="doc"><userinput>install -v -d -m755 /usr/share/doc/llvm-&llvm-version; &amp;&amp;
436mv -v /usr/share/doc/LLVM/clang /usr/share/doc/llvm-&llvm-version; &amp;&amp;
437rmdir -v - -ignore-fail-on-non-empty /usr/share/doc/LLVM</userinput></screen>
438-->
439 </sect2>
440
441 <sect2 role="commands">
442 <title>Command Explanations</title>
443
444 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
445 href="../../xincludes/cmake-skip-install-rpath.xml"/>
446
447 <para>
448 <parameter>-D LLVM_ENABLE_FFI=ON</parameter>: This switch allows
449 <application>LLVM</application> to use
450 <application>libffi</application>.
451 </para>
452
453 <para>
454 <parameter>-D LLVM_BUILD_LLVM_DYLIB=ON</parameter>: This switch builds
455 the libraries as static and links all of them into an unique shared one.
456 This is the recommended way of building a shared library.
457 </para>
458
459 <para>
460 <parameter>-D CMAKE_BUILD_TYPE=Release</parameter>: This switch enables
461 compiler optimizations in order to speed up the code and reduce its size.
462 It also disables some compile checks which are not necessary on a
463 production system.
464 </para>
465
466 <para>
467 <parameter>-D LLVM_TARGETS_TO_BUILD="host;AMDGPU"</parameter>: This
468 switch enables building for the same target as the host, and also for
469 the r600 AMD GPU used by the Mesa r600 and radeonsi drivers.
470 The default is
471 all of the targets. You can use a semicolon separated list. Valid targets
472 are: host, AArch64, AMDGPU, ARM, AVR, BPF, Hexagon, Lanai, LoongArch,
473 Mips, MSP430, NVPTX, PowerPC, RISCV, Sparc, SystemZ, SystemZ, VE,
474 WebAssembly, X86, XCore, or all.
475 </para>
476
477 <para>
478 <parameter>-D LLVM_LINK_LLVM_DYLIB=ON</parameter>: Used in conjunction with
479 <parameter>-D LLVM_BUILD_LLVM_DYLIB=ON</parameter>, this switch enables
480 linking the tools against the shared library instead of the static ones.
481 It slightly reduces their size and also ensures that llvm-config
482 will correctly use libLLVM-&llvm-maj-version;.so.
483 </para>
484
485 <para>
486 <parameter>-D LLVM_ENABLE_RTTI=ON</parameter>: This switch is used to
487 build LLVM with run-time type information. This is required for building
488 <xref linkend="mesa"/>.
489 </para>
490
491 <para>
492 <parameter>-D LLVM_BINUTILS_INCDIR=/usr/include</parameter>: This switch
493 is used to tell the build system the location of binutils headers,
494 which were installed in LFS. This allows the building of
495 <filename class="libraryfile">LLVMgold.so</filename>, which is needed
496 for building programs with <command>clang</command> and Link Time
497 Optimization (LTO).
498 </para>
499
500 <para>
501 <parameter>-D LLVM_INCLUDE_BENCHMARKS=OFF</parameter>:
502 is used to disable generation build targets for the LLVM
503 benchmarks. This option requires additional code that
504 is not currently available.
505 </para>
506
507 <para>
508 <parameter>-D CLANG_DEFAULT_PIE_ON_LINUX=ON</parameter>: makes
509 <option>-fpie</option> option the default when compiling programs.
510 Together with the <xref linkend="gASLR"/> feature enabled in the kernel,
511 this defeats some kind of attacks based on known memory layouts.
512 </para>
513
514 <para>
515 <parameter>-D CLANG_CONFIG_FILE_SYSTEM_DIR=/etc/clang</parameter>:
516 makes <command>clang</command> and <command>clang++</command>
517 search <filename class='directory'>/etc/clang</filename> for
518 configuration files.
519 </para>
520
521 <para>
522 <option>-D BUILD_SHARED_LIBS=ON</option>: if used instead of
523 <parameter>-D LLVM_BUILD_LLVM_DYLIB=ON</parameter> and
524 <parameter>-D LLVM_LINK_LLVM_DYLIB=ON</parameter>, builds all the
525 <application>LLVM</application> libraries (about 60) as shared
526 libraries instead of static.
527 </para>
528
529 <para>
530 <option>-D LLVM_ENABLE_DOXYGEN</option>: Enables the generation of
531 browsable HTML documentation if you have installed <xref
532 linkend="doxygen"/>. You should run <command>make doxygen-html</command>
533 afterwards, and install the generated documentation manually.
534 </para>
535
536 </sect2>
537
538 <sect2 role="configuration">
539 <title>Configuring LLVM</title>
540
541 <sect3 id="llvm-config-info">
542 <title>Configuration Information</title>
543
544 <para>
545 If you've built Clang, as the &root; user create two configuration
546 files to make <xref linkend='gSSP'/> enabled by default for
547 <command>clang</command> and <command>clang++</command>, so
548 the default configuration of their SSP feature will be consistent
549 with <xref linkend='gcc'/>:
550 </para>
551
552<screen role='root'><userinput>mkdir -pv /etc/clang &amp;&amp;
553for i in clang clang++; do
554 echo -fstack-protector-strong &gt; /etc/clang/$i.cfg
555done</userinput></screen>
556 </sect3>
557 </sect2>
558
559 <sect2 role="content">
560 <title>Contents</title>
561
562 <segmentedlist>
563 <segtitle>Installed Programs</segtitle>
564 <segtitle>Installed Libraries</segtitle>
565 <segtitle>Installed Directories</segtitle>
566
567 <seglistitem>
568 <seg>
569 amdgpu-arch,
570 analyze-build, bugpoint, c-index-test, clang, clang++ (symlinks to
571 clang-&llvm-maj-version;), clang-&llvm-maj-version;, clang-check, clang-cl,
572 clang-cpp (last two symlinks to clang), clang-extdef-mapping, clang-format,
573 clang-linker-wrapper,
574 clang-offload-bundler, clang-offload-packager,
575 clang-refactor, clang-rename, clang-repl, clang-scan-deps,
576 clang-tblgen,
577 diagtool, dsymutil, FileCheck, git-clang-format, hmaptool, intercept-build, llc, lli,
578 llvm-addr2line (symlink to llvm-symbolizer),
579 llvm-ar, llvm-as, llvm-bcanalyzer,
580 llvm-bitcode-strip (symlink to llvm-objcopy), llvm-cat,
581 llvm-cfi-verify, llvm-config, llvm-cov, llvm-c-test, llvm-cvtres,
582 llvm-cxxdump, llvm-cxxfilt, llvm-cxxmap, llvm-debuginfo-analyzer,
583 llvm-debuginfod, llvm-debuginfod-find,
584 llvm-diff, llvm-dis, llvm-dlltool (symlink to llvm-ar),
585 llvm-dwarfdump, llvm-dwarfutil,
586 llvm-dwp, llvm-exegesis, llvm-extract, llvm-gsymutil, llvm-ifs,
587 llvm-install-name-tool (symlink to llvm-objcopy), llvm-jitlink,
588 llvm-lib (symlink to llvm-ar), llvm-libtool-darwin, llvm-link,
589 llvm-lipo, llvm-lto, llvm-lto2, llvm-mc, llvm-mca, llvm-ml,
590 llvm-modextract, llvm-mt, llvm-nm, llvm-objcopy, llvm-objdump,
591 llvm-opt-report, llvm-otool (symlink to llv-objdump),
592 llvm-pdbutil, llvm-profdata, llvm-profgen,
593 llvm-ranlib (symlink to llvm-ar), llvm-rc,
594 llvm-readelf (symlink to llvm-readobj), llvm-readobj,
595 llvm-readtapi, llvm-reduce,
596 llvm-remarkutil,
597 llvm-rtdyld, llvm-sim, llvm-size, llvm-split, llvm-stress,
598 llvm-strings, llvm-strip (symlink to llvm-objcopy), llvm-symbolizer,
599 llvm-tblgen, llvm-tli-checker, llvm-undname, llvm-windres (symlink to
600 llvm-rc), llvm-xray, nvptx-arch, opt, sancov, sanstats, scan-build,
601 scan-build-py, scan-view, and verify-uselistorder
602 </seg>
603 <seg>
604 libLLVM.so,
605 libLLVM*.a (100 libraries),
606 libLTO.so,
607 libRemarks.so,
608 libclang.so,
609 libclang-cpp.so,
610 libclang*.a (42 libraries),
611 and LLVMgold.so
612 </seg>
613 <seg>
614 /usr/include/{clang,clang-c,llvm,llvm-c},
615 /usr/lib/{clang,cmake/{clang,llvm},libear,libscanbuild},
616 /usr/share/{clang,opt-viewer,scan-build,scan-view},
617 <!--/usr/share/doc/llvm-&llvm-version;, -->and
618 /etc/clang
619 </seg>
620 </seglistitem>
621 </segmentedlist>
622
623 <variablelist>
624 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
625 <?dbfo list-presentation="list"?>
626 <?dbhtml list-presentation="table"?>
627
628 <varlistentry id="amdgpu-arch">
629 <term><command>amdgpu-arch</command></term>
630 <listitem>
631 <para>
632 lists AMD GPUs installed; at runtime it needs
633 <filename class='libraryfile'>libhsa-runtime64.so</filename>
634 which is not a part of BLFS
635 </para>
636 <indexterm zone="llvm amdgpu-arch">
637 <primary sortas="b-amdgpu-arch">amdgpu-arch</primary>
638 </indexterm>
639 </listitem>
640 </varlistentry>
641
642 <varlistentry id="analyze-build">
643 <term><command>analyze-build</command></term>
644 <listitem>
645 <para>
646 is a static analysis tool
647 </para>
648 <indexterm zone="llvm analyze-build">
649 <primary sortas="b-analyze-build">analyze-build</primary>
650 </indexterm>
651 </listitem>
652 </varlistentry>
653
654 <varlistentry id="bugpoint">
655 <term><command>bugpoint</command></term>
656 <listitem>
657 <para>
658 is the automatic test case reduction tool
659 </para>
660 <indexterm zone="llvm bugpoint">
661 <primary sortas="b-bugpoint">bugpoint</primary>
662 </indexterm>
663 </listitem>
664 </varlistentry>
665
666 <varlistentry id="c-index-test">
667 <term><command>c-index-test</command></term>
668 <listitem>
669 <para>
670 is used to test the libclang API and demonstrate its usage
671 </para>
672 <indexterm zone="llvm c-index-test">
673 <primary sortas="b-c-index-test">c-index-test</primary>
674 </indexterm>
675 </listitem>
676 </varlistentry>
677
678 <varlistentry id="clang">
679 <term><command>clang</command></term>
680 <listitem>
681 <para>
682 is the <application>Clang</application> C, C++,
683 and Objective-C compiler
684 </para>
685 <indexterm zone="llvm clang">
686 <primary sortas="b-clang">clang</primary>
687 </indexterm>
688 </listitem>
689 </varlistentry>
690
691 <varlistentry id="clang-check">
692 <term><command>clang-check</command></term>
693 <listitem>
694 <para>
695 is a tool to perform static code analysis and display Abstract
696 Syntax Trees (AST)
697 </para>
698 <indexterm zone="llvm clang-check">
699 <primary sortas="b-clang-check">clang-check</primary>
700 </indexterm>
701 </listitem>
702 </varlistentry>
703
704 <varlistentry id="clang-extdef-mapping">
705 <term><command>clang-extdef-mapping</command></term>
706 <listitem>
707 <para>
708 is a tool to collect the USR name and location of external
709 definitions in a source file
710 </para>
711 <indexterm zone="llvm clang-extdef-mapping">
712 <primary sortas="b-clang-extdef-mapping">clang-extdef-mapping</primary>
713 </indexterm>
714 </listitem>
715 </varlistentry>
716
717 <varlistentry id="clang-format">
718 <term><command>clang-format</command></term>
719 <listitem>
720 <para>
721 is a tool to format C/C++/Java/JavaScript/Objective-C/Protobuf
722 code
723 </para>
724 <indexterm zone="llvm clang-format">
725 <primary sortas="b-clang-format">clang-format</primary>
726 </indexterm>
727 </listitem>
728 </varlistentry>
729
730 <varlistentry id="clang-linker-wrapper">
731 <term><command>clang-linker-wrapper</command></term>
732 <listitem>
733 <para>
734 is a wrapper utility over the host linker
735 </para>
736 <indexterm zone="llvm clang-linker-wrapper">
737 <primary sortas="b-clang-linker-wrapper">clang-linker-wrapper</primary>
738 </indexterm>
739 </listitem>
740 </varlistentry>
741
742 <varlistentry id="clang-offload-bundler">
743 <term><command>clang-offload-bundler</command></term>
744 <listitem>
745 <para>
746 is a tool to bundle/unbundle OpenMP offloaded files associated with
747 a common source file
748 </para>
749 <indexterm zone="llvm clang-offload-bundler">
750 <primary sortas="b-clang-offload-bundler">clang-offload-bundler</primary>
751 </indexterm>
752 </listitem>
753 </varlistentry>
754
755 <varlistentry id="clang-offload-packager">
756 <term><command>clang-offload-packager</command></term>
757 <listitem>
758 <para>
759 is a tool to bundle several object files into a single binary,
760 which can then be used to create a fatbinary containing offloading
761 code
762 </para>
763 <indexterm zone="llvm clang-offload-packager">
764 <primary sortas="b-clang-offload-packager">clang-offload-packager</primary>
765 </indexterm>
766 </listitem>
767 </varlistentry>
768
769 <varlistentry id="clang-refactor">
770 <term><command>clang-refactor</command></term>
771 <listitem>
772 <para>
773 is a Clang-based refactoring tool for C, C++ and Objective-C
774 </para>
775 <indexterm zone="llvm clang-refactor">
776 <primary sortas="b-clang-refactor">clang-refactor</primary>
777 </indexterm>
778 </listitem>
779 </varlistentry>
780
781 <varlistentry id="clang-rename">
782 <term><command>clang-rename</command></term>
783 <listitem>
784 <para>
785 is a tool to rename symbols in C/C++ programs
786 </para>
787 <indexterm zone="llvm clang-rename">
788 <primary sortas="b-clang-rename">clang-rename</primary>
789 </indexterm>
790 </listitem>
791 </varlistentry>
792
793 <varlistentry id="clang-scan-deps">
794 <term><command>clang-scan-deps</command></term>
795 <listitem>
796 <para>
797 is a tool to scan for dependencies in a source file
798 </para>
799 <indexterm zone="llvm clang-scan-deps">
800 <primary sortas="b-clang-scan-deps">clang-scan-deps</primary>
801 </indexterm>
802 </listitem>
803 </varlistentry>
804
805 <varlistentry id="clang-tblgen">
806 <term><command>clang-tblgen</command></term>
807 <listitem>
808 <para>
809 is a program that translates compiler-related target
810 description (<filename class='extension'>.td</filename>) files
811 into C++ code and other output formats
812 </para>
813 <indexterm zone="llvm clang-tblgen">
814 <primary sortas="b-clang-tblgen">clang-tblgen</primary>
815 </indexterm>
816 </listitem>
817 </varlistentry>
818
819 <varlistentry id="diagtool">
820 <term><command>diagtool</command></term>
821 <listitem>
822 <para>
823 is a combination of tools for dealing with diagnostics in clang
824 </para>
825 <indexterm zone="llvm diagtool">
826 <primary sortas="b-diagtool">diagtool</primary>
827 </indexterm>
828 </listitem>
829 </varlistentry>
830
831 <varlistentry id="FileCheck">
832 <term><command>FileCheck</command></term>
833 <listitem>
834 <para>
835 is a tool that reads two files (one from standard input,
836 and one specified on the command line) and uses one to verify the other.
837 </para>
838 <indexterm zone="llvm FileCheck">
839 <primary sortas="b-FileCheck">FileCheck</primary>
840 </indexterm>
841 </listitem>
842 </varlistentry>
843
844 <varlistentry id="dsymutil">
845 <term><command>dsymutil</command></term>
846 <listitem>
847 <para>
848 is a tool used to manipulate archived DWARF debug symbol files,
849 compatible with the Darwin command <command>dsymutil</command>
850 </para>
851 <indexterm zone="llvm dsymutil">
852 <primary sortas="b-dsymutil">dsymutil</primary>
853 </indexterm>
854 </listitem>
855 </varlistentry>
856
857 <varlistentry id="git-clang-format">
858 <term><command>git-clang-format</command></term>
859 <listitem>
860 <para>
861 runs clang-format on git generated patches (requires
862 <xref linkend="git"/>)
863 </para>
864 <indexterm zone="llvm git-clang-format">
865 <primary sortas="b-git-clang-format">git-clang-format</primary>
866 </indexterm>
867 </listitem>
868 </varlistentry>
869
870 <varlistentry id="hmaptool">
871 <term><command>hmaptool</command></term>
872 <listitem>
873 <para>
874 is a Python tool to dump and construct header maps
875 </para>
876 <indexterm zone="llvm hmaptool">
877 <primary sortas="b-hmaptool">hmaptool</primary>
878 </indexterm>
879 </listitem>
880 </varlistentry>
881
882 <varlistentry id="intercept-build">
883 <term><command>intercept-build</command></term>
884 <listitem>
885 <para>
886 generates a database of build commands for a project
887 </para>
888 <indexterm zone="llvm intercept-build">
889 <primary sortas="b-intercept-build">intercept-build</primary>
890 </indexterm>
891 </listitem>
892 </varlistentry>
893
894 <varlistentry id="llc">
895 <term><command>llc</command></term>
896 <listitem>
897 <para>
898 is the <application>LLVM</application> static compiler
899 </para>
900 <indexterm zone="llvm llc">
901 <primary sortas="b-llc">llc</primary>
902 </indexterm>
903 </listitem>
904 </varlistentry>
905
906 <varlistentry id="lli">
907 <term><command>lli</command></term>
908 <listitem>
909 <para>
910 is used to directly execute programs from
911 <application>LLVM</application> bitcode
912 </para>
913 <indexterm zone="llvm lli">
914 <primary sortas="b-lli">lli</primary>
915 </indexterm>
916 </listitem>
917 </varlistentry>
918
919 <varlistentry id="llvm-addr2line">
920 <term><command>llvm-addr2line</command></term>
921 <listitem>
922 <para>
923 is a tool used to convert addresses into file names and line
924 numbers
925 </para>
926 <indexterm zone="llvm llvm-addr2line">
927 <primary sortas="b-llvm-addr2line">llvm-addr2line</primary>
928 </indexterm>
929 </listitem>
930 </varlistentry>
931
932 <varlistentry id="llvm-ar">
933 <term><command>llvm-ar</command></term>
934 <listitem>
935 <para>
936 is the <application>LLVM</application> archiver
937 </para>
938 <indexterm zone="llvm llvm-ar">
939 <primary sortas="b-llvm-ar">llvm-ar</primary>
940 </indexterm>
941 </listitem>
942 </varlistentry>
943
944 <varlistentry id="llvm-as">
945 <term><command>llvm-as</command></term>
946 <listitem>
947 <para>
948 is the <application>LLVM</application> assembler
949 </para>
950 <indexterm zone="llvm llvm-as">
951 <primary sortas="b-llvm-as">llvm-as</primary>
952 </indexterm>
953 </listitem>
954 </varlistentry>
955
956 <varlistentry id="llvm-bcanalyzer">
957 <term><command>llvm-bcanalyzer</command></term>
958 <listitem>
959 <para>
960 is the <application>LLVM</application> bitcode analyzer
961 </para>
962 <indexterm zone="llvm llvm-bcanalyzer">
963 <primary sortas="b-llvm-bcanalyzer">llvm-bcanalyzer</primary>
964 </indexterm>
965 </listitem>
966 </varlistentry>
967
968 <varlistentry id="llvm-bitcode-strip">
969 <term><command>llvm-bitcode-strip</command></term>
970 <listitem>
971 <para>
972 strips LLVM bitcode from an object
973 </para>
974 <indexterm zone="llvm llvm-bitcode-strip">
975 <primary sortas="b-llvm-bitcode-strip">llvm-bitcode-strip</primary>
976 </indexterm>
977 </listitem>
978 </varlistentry>
979
980 <varlistentry id="llvm-cat">
981 <term><command>llvm-cat</command></term>
982 <listitem>
983 <para>
984 is a tool to concatenate llvm modules
985 </para>
986 <indexterm zone="llvm llvm-cat">
987 <primary sortas="b-llvm-cat">llvm-cat</primary>
988 </indexterm>
989 </listitem>
990 </varlistentry>
991
992 <varlistentry id="llvm-cfi-verify">
993 <term><command>llvm-cfi-verify</command></term>
994 <listitem>
995 <para>
996 identifies whether Control Flow Integrity protects all indirect
997 control flow instructions in the provided object file, DSO, or
998 binary
999 </para>
1000 <indexterm zone="llvm llvm-cfi-verify">
1001 <primary sortas="b-llvm-cfi-verify">llvm-cfi-verify</primary>
1002 </indexterm>
1003 </listitem>
1004 </varlistentry>
1005
1006 <varlistentry id="llvm-config">
1007 <term><command>llvm-config</command></term>
1008 <listitem>
1009 <para>
1010 Prints <application>LLVM</application> compilation options
1011 </para>
1012 <indexterm zone="llvm llvm-config">
1013 <primary sortas="b-llvm-config">llvm-config</primary>
1014 </indexterm>
1015 </listitem>
1016 </varlistentry>
1017
1018 <varlistentry id="llvm-cov">
1019 <term><command>llvm-cov</command></term>
1020 <listitem>
1021 <para>
1022 is used to emit coverage information
1023 </para>
1024 <indexterm zone="llvm llvm-cov">
1025 <primary sortas="b-llvm-cov">llvm-cov</primary>
1026 </indexterm>
1027 </listitem>
1028 </varlistentry>
1029
1030 <varlistentry id="llvm-c-test">
1031 <term><command>llvm-c-test</command></term>
1032 <listitem>
1033 <para>
1034 is a bytecode disassembler
1035 </para>
1036 <indexterm zone="llvm llvm-c-test">
1037 <primary sortas="b-llvm-c-test">llvm-c-test</primary>
1038 </indexterm>
1039 </listitem>
1040 </varlistentry>
1041
1042 <varlistentry id="llvm-cvtres">
1043 <term><command>llvm-cvtres</command></term>
1044 <listitem>
1045 <para>
1046 is a tool to convert Microsoft resource files to COFF
1047 </para>
1048 <indexterm zone="llvm llvm-cvtres">
1049 <primary sortas="b-llvm-cvtres">llvm-cvtres</primary>
1050 </indexterm>
1051 </listitem>
1052 </varlistentry>
1053
1054 <varlistentry id="llvm-cxxdump">
1055 <term><command>llvm-cxxdump</command></term>
1056 <listitem>
1057 <para>
1058 is used as a C++ ABI Data Dumper
1059 </para>
1060 <indexterm zone="llvm llvm-cxxdump">
1061 <primary sortas="b-llvm-cxxdump">llvm-cxxdump</primary>
1062 </indexterm>
1063 </listitem>
1064 </varlistentry>
1065
1066 <varlistentry id="llvm-cxxfilt">
1067 <term><command>llvm-cxxfilt</command></term>
1068 <listitem>
1069 <para>
1070 is used to demangle C++ symbols in llvm code
1071 </para>
1072 <indexterm zone="llvm llvm-cxxfilt">
1073 <primary sortas="b-llvm-cxxfilt">llvm-cxxfilt</primary>
1074 </indexterm>
1075 </listitem>
1076 </varlistentry>
1077
1078 <varlistentry id="llvm-cxxmap">
1079 <term><command>llvm-cxxmap</command></term>
1080 <listitem>
1081 <para>
1082 is used to remap C++ mangled symbols
1083 </para>
1084 <indexterm zone="llvm llvm-cxxmap">
1085 <primary sortas="b-llvm-cxxmap">llvm-cxxmap</primary>
1086 </indexterm>
1087 </listitem>
1088 </varlistentry>
1089
1090 <varlistentry id="llvm-debuginfo-analyzer">
1091 <term><command>llvm-debuginfo-analyzer</command></term>
1092 <listitem>
1093 <para>
1094 prints a logical representation of low-level debug information
1095 </para>
1096 <indexterm zone="llvm llvm-debuginfo-analyzer">
1097 <primary sortas="b-llvm-debuginfo-analyzer">llvm-debuginfo-analyzer</primary>
1098 </indexterm>
1099 </listitem>
1100 </varlistentry>
1101
1102 <varlistentry id="llvm-debuginfod">
1103 <term><command>llvm-debuginfod</command></term>
1104 <listitem>
1105 <para>
1106 is a service providing debug information over an HTTP API for
1107 analyzing stripped binaries
1108 </para>
1109 <indexterm zone="llvm llvm-debuginfod">
1110 <primary sortas="b-llvm-debuginfod">llvm-debuginfod</primary>
1111 </indexterm>
1112 </listitem>
1113 </varlistentry>
1114
1115 <varlistentry id="llvm-debuginfod-find">
1116 <term><command>llvm-debuginfod-find</command></term>
1117 <listitem>
1118 <para>
1119 is an interface to the <command>llvm-debuginfod</command> daemon
1120 for finding debuginfod artifacts
1121 </para>
1122 <indexterm zone="llvm llvm-debuginfod-find">
1123 <primary sortas="b-llvm-debuginfod-find">llvm-debuginfod-find</primary>
1124 </indexterm>
1125 </listitem>
1126 </varlistentry>
1127
1128 <varlistentry id="llvm-diff">
1129 <term><command>llvm-diff</command></term>
1130 <listitem>
1131 <para>
1132 is the <application>LLVM</application> structural
1133 '<command>diff</command>'
1134 </para>
1135 <indexterm zone="llvm llvm-diff">
1136 <primary sortas="b-llvm-diff">llvm-diff</primary>
1137 </indexterm>
1138 </listitem>
1139 </varlistentry>
1140
1141 <varlistentry id="llvm-dis">
1142 <term><command>llvm-dis</command></term>
1143 <listitem>
1144 <para>
1145 is the <application>LLVM</application> disassembler
1146 </para>
1147 <indexterm zone="llvm llvm-dis">
1148 <primary sortas="b-llvm-dis">llvm-dis</primary>
1149 </indexterm>
1150 </listitem>
1151 </varlistentry>
1152
1153 <varlistentry id="llvm-dwarfdump">
1154 <term><command>llvm-dwarfdump</command></term>
1155 <listitem>
1156 <para>
1157 prints the content of DWARF sections in object files
1158 </para>
1159 <indexterm zone="llvm llvm-dwarfdump">
1160 <primary sortas="b-llvm-dwarfdump">llvm-dwarfdump</primary>
1161 </indexterm>
1162 </listitem>
1163 </varlistentry>
1164
1165 <varlistentry id="llvm-dwarfutil">
1166 <term><command>llvm-dwarfutil</command></term>
1167 <listitem>
1168 <para>
1169 is a tool to copy and manipulate debug info
1170 </para>
1171 <indexterm zone="llvm llvm-dwarfutil">
1172 <primary sortas="b-llvm-dwarfutil">llvm-dwarfutil</primary>
1173 </indexterm>
1174 </listitem>
1175 </varlistentry>
1176
1177 <varlistentry id="llvm-dwp">
1178 <term><command>llvm-dwp</command></term>
1179 <listitem>
1180 <para>
1181 merges split DWARF files
1182 </para>
1183 <indexterm zone="llvm llvm-dwp">
1184 <primary sortas="b-llvm-dwp">llvm-dwp</primary>
1185 </indexterm>
1186 </listitem>
1187 </varlistentry>
1188
1189 <varlistentry id="llvm-elfabi">
1190 <term><command>llvm-elfabi</command></term>
1191 <listitem>
1192 <para>
1193 is used to read information about an ELF binary's ABI
1194 </para>
1195 <indexterm zone="llvm llvm-elfabi">
1196 <primary sortas="b-llvm-elfabi">llvm-elfabi</primary>
1197 </indexterm>
1198 </listitem>
1199 </varlistentry>
1200
1201 <varlistentry id="llvm-exegesis">
1202 <term><command>llvm-exegesis</command></term>
1203 <listitem>
1204 <para>
1205 is a benchmarking tool that uses information available in LLVM to
1206 measure host machine instruction characteristics like latency or
1207 port decomposition
1208 </para>
1209 <indexterm zone="llvm llvm-exegesis">
1210 <primary sortas="b-llvm-exegesis">llvm-exegesis</primary>
1211 </indexterm>
1212 </listitem>
1213 </varlistentry>
1214
1215 <varlistentry id="llvm-extract">
1216 <term><command>llvm-extract</command></term>
1217 <listitem>
1218 <para>
1219 is used to extract a function from an
1220 <application>LLVM</application> module
1221 </para>
1222 <indexterm zone="llvm llvm-extract">
1223 <primary sortas="b-llvm-extract">llvm-extract</primary>
1224 </indexterm>
1225 </listitem>
1226 </varlistentry>
1227
1228 <varlistentry id="llvm-gsymutil">
1229 <term><command>llvm-gsymutil</command></term>
1230 <listitem>
1231 <para>
1232 is used to process GSYM Symbolication Format files which
1233 convert memory addresses to function name and source file
1234 line. These files are smaller than DWARF or Breakpad files
1235 </para>
1236 <indexterm zone="llvm llvm-gsymutil">
1237 <primary sortas="b-llvm-gsymutil">llvm-gsymutil</primary>
1238 </indexterm>
1239 </listitem>
1240 </varlistentry>
1241
1242 <varlistentry id="llvm-ifs">
1243 <term><command>llvm-ifs</command></term>
1244 <listitem>
1245 <para>
1246 is used to merge interface stubs with object files
1247 </para>
1248 <indexterm zone="llvm llvm-ifs">
1249 <primary sortas="b-llvm-ifs">llvm-ifs</primary>
1250 </indexterm>
1251 </listitem>
1252 </varlistentry>
1253
1254 <varlistentry id="llvm-install-name-tool">
1255 <term><command>llvm-install-name-tool</command></term>
1256 <listitem>
1257 <para>
1258 is used to rewrite load commands into MachO binary format
1259 </para>
1260 <indexterm zone="llvm llvm-install-name-tool">
1261 <primary sortas="b-llvm-install-name-tool">llvm-install-name-tool</primary>
1262 </indexterm>
1263 </listitem>
1264 </varlistentry>
1265
1266 <varlistentry id="llvm-jitlink">
1267 <term><command>llvm-jitlink</command></term>
1268 <listitem>
1269 <para>
1270 is used to parse relocatable object files to make their contents
1271 executable in a target process
1272 </para>
1273 <indexterm zone="llvm llvm-jitlink">
1274 <primary sortas="b-llvm-jitlink">llvm-jitlink</primary>
1275 </indexterm>
1276 </listitem>
1277 </varlistentry>
1278
1279 <varlistentry id="llvm-libtool-darwin">
1280 <term><command>llvm-libtool-darwin</command></term>
1281 <listitem>
1282 <para>
1283 provides basic libtool functionality on Darwin-based systems.
1284 This is mostly useful if you are generating binaries for macOS
1285 systems
1286 </para>
1287 <indexterm zone="llvm llvm-libtool-darwin">
1288 <primary sortas="b-llvm-libtool-darwin">llvm-libtool-darwin</primary>
1289 </indexterm>
1290 </listitem>
1291 </varlistentry>
1292
1293 <varlistentry id="llvm-link">
1294 <term><command>llvm-link</command></term>
1295 <listitem>
1296 <para>
1297 is the <application>LLVM</application> linker
1298 </para>
1299 <indexterm zone="llvm llvm-link">
1300 <primary sortas="b-llvm-link">llvm-link</primary>
1301 </indexterm>
1302 </listitem>
1303 </varlistentry>
1304
1305 <varlistentry id="llvm-lipo">
1306 <term><command>llvm-lipo</command></term>
1307 <listitem>
1308 <para>
1309 is used to create universal binaries from MachO files
1310 </para>
1311 <indexterm zone="llvm llvm-lipo">
1312 <primary sortas="b-llvm-lipo">llvm-lipo</primary>
1313 </indexterm>
1314 </listitem>
1315 </varlistentry>
1316
1317 <varlistentry id="llvm-lto">
1318 <term><command>llvm-lto</command></term>
1319 <listitem>
1320 <para>
1321 is the <application>LLVM</application> LTO (link time optimization)
1322 linker
1323 </para>
1324 <indexterm zone="llvm llvm-lto">
1325 <primary sortas="b-llvm-lto">llvm-lto</primary>
1326 </indexterm>
1327 </listitem>
1328 </varlistentry>
1329
1330 <varlistentry id="llvm-lto2">
1331 <term><command>llvm-lto2</command></term>
1332 <listitem>
1333 <para>
1334 is a test harness for the resolution based LTO interface
1335 </para>
1336 <indexterm zone="llvm llvm-lto2">
1337 <primary sortas="b-llvm-lto2">llvm-lto2</primary>
1338 </indexterm>
1339 </listitem>
1340 </varlistentry>
1341
1342 <varlistentry id="llvm-mc">
1343 <term><command>llvm-mc</command></term>
1344 <listitem>
1345 <para>
1346 is a standalone machine code assembler/disassembler
1347 </para>
1348 <indexterm zone="llvm llvm-mc">
1349 <primary sortas="b-llvm-mc">llvm-mc</primary>
1350 </indexterm>
1351 </listitem>
1352 </varlistentry>
1353
1354 <varlistentry id="llvm-mca">
1355 <term><command>llvm-mca</command></term>
1356 <listitem>
1357 <para>
1358 is a performance analysis tool to statically measure the
1359 performance of machine code
1360 </para>
1361 <indexterm zone="llvm llvm-mca">
1362 <primary sortas="b-llvm-mca">llvm-mca</primary>
1363 </indexterm>
1364 </listitem>
1365 </varlistentry>
1366
1367<!-- <varlistentry id="llvm-mcmarkup">
1368 <term><command>llvm-mcmarkup</command></term>
1369 <listitem>
1370 <para>
1371 is a parser for machine code markup.
1372 </para>
1373 <indexterm zone="llvm llvm-mcmarkup">
1374 <primary sortas="b-llvm-mcmarkup">llvm-mcmarkup</primary>
1375 </indexterm>
1376 </listitem>
1377 </varlistentry>-->
1378
1379 <varlistentry id="llvm-ml">
1380 <term><command>llvm-ml</command></term>
1381 <listitem>
1382 <para>
1383 is a playground for machine code provided by LLVM
1384 </para>
1385 <indexterm zone="llvm llvm-ml">
1386 <primary sortas="b-llvm-ml">llvm-ml</primary>
1387 </indexterm>
1388 </listitem>
1389 </varlistentry>
1390
1391 <varlistentry id="llvm-modextract">
1392 <term><command>llvm-modextract</command></term>
1393 <listitem>
1394 <para>
1395 is a tool to extract one module from multimodule bitcode files
1396 </para>
1397 <indexterm zone="llvm llvm-modextract">
1398 <primary sortas="b-llvm-modextract">llvm-modextract</primary>
1399 </indexterm>
1400 </listitem>
1401 </varlistentry>
1402
1403 <varlistentry id="llvm-mt">
1404 <term><command>llvm-mt</command></term>
1405 <listitem>
1406 <para>
1407 is a tool to generate signed files and catalogs from a
1408 side-by-side assembly manifest (used for Microsoft SDK)
1409 </para>
1410 <indexterm zone="llvm llvm-mt">
1411 <primary sortas="b-llvm-mt">llvm-mt</primary>
1412 </indexterm>
1413 </listitem>
1414 </varlistentry>
1415
1416 <varlistentry id="llvm-nm">
1417 <term><command>llvm-nm</command></term>
1418 <listitem>
1419 <para>
1420 is used to list <application>LLVM</application> bitcode
1421 and object file's symbol table
1422 </para>
1423 <indexterm zone="llvm llvm-nm">
1424 <primary sortas="b-llvm-nm">llvm-nm</primary>
1425 </indexterm>
1426 </listitem>
1427 </varlistentry>
1428
1429 <varlistentry id="llvm-objcopy">
1430 <term><command>llvm-objcopy</command></term>
1431 <listitem>
1432 <para>
1433 is LLVM's version of an objcopy tool
1434 </para>
1435 <indexterm zone="llvm llvm-objcopy">
1436 <primary sortas="b-llvm-objcopy">llvm-objcopy</primary>
1437 </indexterm>
1438 </listitem>
1439 </varlistentry>
1440
1441 <varlistentry id="llvm-objdump">
1442 <term><command>llvm-objdump</command></term>
1443 <listitem>
1444 <para>
1445 is an <application>LLVM</application> object file dumper
1446 </para>
1447 <indexterm zone="llvm llvm-objdump">
1448 <primary sortas="b-llvm-objdump">llvm-objdump</primary>
1449 </indexterm>
1450 </listitem>
1451 </varlistentry>
1452
1453 <varlistentry id="llvm-opt-report">
1454 <term><command>llvm-opt-report</command></term>
1455 <listitem>
1456 <para>
1457 is a tool to generate an optimization report from YAML optimization
1458 record files
1459 </para>
1460 <indexterm zone="llvm llvm-opt-report">
1461 <primary sortas="b-llvm-opt-report">llvm-opt-report</primary>
1462 </indexterm>
1463 </listitem>
1464 </varlistentry>
1465
1466 <varlistentry id="llvm-pdbutil">
1467 <term><command>llvm-pdbutil</command></term>
1468 <listitem>
1469 <para>
1470 is a PDB (Program Database) dumper. PDB is a Microsoft format
1471 </para>
1472 <indexterm zone="llvm llvm-pdbutil">
1473 <primary sortas="b-llvm-pdbutil">llvm-pdbutil</primary>
1474 </indexterm>
1475 </listitem>
1476 </varlistentry>
1477
1478 <varlistentry id="llvm-profdata">
1479 <term><command>llvm-profdata</command></term>
1480 <listitem>
1481 <para>
1482 is a small tool to manipulate and print profile data files
1483 </para>
1484 <indexterm zone="llvm llvm-profdata">
1485 <primary sortas="b-llvm-profdata">llvm-profdata</primary>
1486 </indexterm>
1487 </listitem>
1488 </varlistentry>
1489
1490 <varlistentry id="llvm-profgen">
1491 <term><command>llvm-profgen</command></term>
1492 <listitem>
1493 <para>
1494 generates LLVM SPGO profiling information
1495 </para>
1496 <indexterm zone="llvm llvm-profgen">
1497 <primary sortas="b-llvm-profgen">llvm-profgen</primary>
1498 </indexterm>
1499 </listitem>
1500 </varlistentry>
1501
1502 <varlistentry id="llvm-ranlib">
1503 <term><command>llvm-ranlib</command></term>
1504 <listitem>
1505 <para>
1506 is used to generate an index for a <application>LLVM</application>
1507 archive
1508 </para>
1509 <indexterm zone="llvm llvm-ranlib">
1510 <primary sortas="b-llvm-ranlib">llvm-ranlib</primary>
1511 </indexterm>
1512 </listitem>
1513 </varlistentry>
1514
1515 <varlistentry id="llvm-rc">
1516 <term><command>llvm-rc</command></term>
1517 <listitem>
1518 <para>
1519 is a platform-independent tool to compile resource scripts
1520 into binary resource files
1521 </para>
1522 <indexterm zone="llvm llvm-rc">
1523 <primary sortas="b-llvm-rc">llvm-rc</primary>
1524 </indexterm>
1525 </listitem>
1526 </varlistentry>
1527
1528 <varlistentry id="llvm-readobj">
1529 <term><command>llvm-readobj</command></term>
1530 <listitem>
1531 <para>
1532 displays low-level format-specific information about object files
1533 </para>
1534 <indexterm zone="llvm llvm-readobj">
1535 <primary sortas="b-llvm-readobj">llvm-readobj</primary>
1536 </indexterm>
1537 </listitem>
1538 </varlistentry>
1539
1540 <varlistentry id="llvm-readtapi">
1541 <term><command>llvm-readtapi</command></term>
1542 <listitem>
1543 <para>
1544 is the LLVM TAPI file reader and transformer
1545 </para>
1546 <indexterm zone="llvm llvm-readtapi">
1547 <primary sortas="b-llvm-readtapi">llvm-readtapi</primary>
1548 </indexterm>
1549 </listitem>
1550 </varlistentry>
1551
1552 <varlistentry id="llvm-reduce">
1553 <term><command>llvm-reduce</command></term>
1554 <listitem>
1555 <para>
1556 is used to automatically reduce testcases
1557 when running a test suite
1558 </para>
1559 <indexterm zone="llvm llvm-reduce">
1560 <primary sortas="b-llvm-reduce">llvm-reduce</primary>
1561 </indexterm>
1562 </listitem>
1563 </varlistentry>
1564
1565 <varlistentry id="llvm-remarkutil">
1566 <term><command>llvm-remarkutil</command></term>
1567 <listitem>
1568 <para>
1569 converts remark files between bitstream and YAML; or prints
1570 function instruction count information in remark files
1571 </para>
1572 <indexterm zone="llvm llvm-remarkutil">
1573 <primary sortas="b-llvm-remarkutil">llvm-remarkutil</primary>
1574 </indexterm>
1575 </listitem>
1576 </varlistentry>
1577
1578 <varlistentry id="llvm-rtdyld">
1579 <term><command>llvm-rtdyld</command></term>
1580 <listitem>
1581 <para>
1582 is the <application>LLVM</application> MC-JIT tool
1583 </para>
1584 <indexterm zone="llvm llvm-rtdyld">
1585 <primary sortas="b-llvm-rtdyld">llvm-rtdyld</primary>
1586 </indexterm>
1587 </listitem>
1588 </varlistentry>
1589
1590 <varlistentry id="llvm-size">
1591 <term><command>llvm-size</command></term>
1592 <listitem>
1593 <para>
1594 is the <application>LLVM</application> object size dumper
1595 </para>
1596 <indexterm zone="llvm llvm-size">
1597 <primary sortas="b-llvm-size">llvm-size</primary>
1598 </indexterm>
1599 </listitem>
1600 </varlistentry>
1601
1602 <varlistentry id="llvm-split">
1603 <term><command>llvm-split</command></term>
1604 <listitem>
1605 <para>
1606 is the <application>LLVM</application> module splitter
1607 </para>
1608 <indexterm zone="llvm llvm-split">
1609 <primary sortas="b-llvm-split">llvm-split</primary>
1610 </indexterm>
1611 </listitem>
1612 </varlistentry>
1613
1614 <varlistentry id="llvm-stress">
1615 <term><command>llvm-stress</command></term>
1616 <listitem>
1617 <para>
1618 is used to generate random
1619 <filename class="extension">.ll</filename> files
1620 </para>
1621 <indexterm zone="llvm llvm-stress">
1622 <primary sortas="b-llvm-stress">llvm-stress</primary>
1623 </indexterm>
1624 </listitem>
1625 </varlistentry>
1626
1627 <varlistentry id="llvm-strings">
1628 <term><command>llvm-strings</command></term>
1629 <listitem>
1630 <para>
1631 print strings found in a binary (object file, executable, or
1632 archive library)
1633 </para>
1634 <indexterm zone="llvm llvm-strings">
1635 <primary sortas="b-llvm-strings">llvm-strings</primary>
1636 </indexterm>
1637 </listitem>
1638 </varlistentry>
1639
1640 <varlistentry id="llvm-symbolizer">
1641 <term><command>llvm-symbolizer</command></term>
1642 <listitem>
1643 <para>
1644 converts addresses into source code locations
1645 </para>
1646 <indexterm zone="llvm llvm-symbolizer">
1647 <primary sortas="b-llvm-symbolizer">llvm-symbolizer</primary>
1648 </indexterm>
1649 </listitem>
1650 </varlistentry>
1651
1652 <varlistentry id="llvm-tblgen">
1653 <term><command>llvm-tblgen</command></term>
1654 <listitem>
1655 <para>
1656 is the <application>LLVM</application> Target Description
1657 To C++ Code Generator
1658 </para>
1659 <indexterm zone="llvm llvm-tblgen">
1660 <primary sortas="b-llvm-tblgen">llvm-tblgen</primary>
1661 </indexterm>
1662 </listitem>
1663 </varlistentry>
1664
1665 <varlistentry id="llvm-tli-checker">
1666 <term><command>llvm-tli-checker</command></term>
1667 <listitem>
1668 <para>
1669 is the <application>LLVM</application> TargetLibraryInfo
1670 versus SDK checker
1671 </para>
1672 <indexterm zone="llvm llvm-tli-checker">
1673 <primary sortas="b-llvm-tli-checker">llvm-tli-checker</primary>
1674 </indexterm>
1675 </listitem>
1676 </varlistentry>
1677
1678 <varlistentry id="llvm-undname">
1679 <term><command>llvm-undname</command></term>
1680 <listitem>
1681 <para>
1682 is a tool to demangle names
1683 </para>
1684 <indexterm zone="llvm llvm-undname">
1685 <primary sortas="b-llvm-undname">llvm-undname</primary>
1686 </indexterm>
1687 </listitem>
1688 </varlistentry>
1689
1690 <varlistentry id="llvm-xray">
1691 <term><command>llvm-xray</command></term>
1692 <listitem>
1693 <para>
1694 is an implementation of Google's XRay function call tracing system
1695 </para>
1696 <indexterm zone="llvm llvm-xray">
1697 <primary sortas="b-llvm-xray">llvm-xray</primary>
1698 </indexterm>
1699 </listitem>
1700 </varlistentry>
1701
1702 <varlistentry id="nvptx-arch">
1703 <term><command>nvptx-arch</command></term>
1704 <listitem>
1705 <para>
1706 lists NVIDIA GPUs installed; at runtime it needs
1707 <filename class='libraryfile'>libcuda.so</filename>
1708 which is not a part of BLFS
1709 </para>
1710 <indexterm zone="llvm nvptx-arch">
1711 <primary sortas="b-nvptx-arch">nvptx-arch</primary>
1712 </indexterm>
1713 </listitem>
1714 </varlistentry>
1715
1716 <varlistentry id="opt">
1717 <term><command>opt</command></term>
1718 <listitem>
1719 <para>
1720 is the <application>LLVM</application> optimizer
1721 </para>
1722 <indexterm zone="llvm opt">
1723 <primary sortas="b-opt">opt</primary>
1724 </indexterm>
1725 </listitem>
1726 </varlistentry>
1727
1728 <varlistentry id="sancov">
1729 <term><command>sancov</command></term>
1730 <listitem>
1731 <para>
1732 is the sanitizer coverage processing tool
1733 </para>
1734 <indexterm zone="llvm sancov">
1735 <primary sortas="b-sancov">sancov</primary>
1736 </indexterm>
1737 </listitem>
1738 </varlistentry>
1739
1740 <varlistentry id="sanstats">
1741 <term><command>sanstats</command></term>
1742 <listitem>
1743 <para>
1744 is the sanitizer statistics processing tool
1745 </para>
1746 <indexterm zone="llvm sanstats">
1747 <primary sortas="b-sanstats">sanstats</primary>
1748 </indexterm>
1749 </listitem>
1750 </varlistentry>
1751
1752 <varlistentry id="scan-build">
1753 <term><command>scan-build</command></term>
1754 <listitem>
1755 <para>
1756 is a <application>Perl</application> script that invokes the
1757 <application>Clang</application> static analyzer
1758 </para>
1759 <indexterm zone="llvm scan-build">
1760 <primary sortas="b-scan-build">scan-build</primary>
1761 </indexterm>
1762 </listitem>
1763 </varlistentry>
1764
1765 <varlistentry id="scan-build-py">
1766 <term><command>scan-build-py</command></term>
1767 <listitem>
1768 <para>
1769 is a <application>Python</application> script that invokes the
1770 <application>Clang</application> static analyzer
1771 </para>
1772 <indexterm zone="llvm scan-build-py">
1773 <primary sortas="b-scan-build-py">scan-build-py</primary>
1774 </indexterm>
1775 </listitem>
1776 </varlistentry>
1777
1778 <varlistentry id="scan-view">
1779 <term><command>scan-view</command></term>
1780 <listitem>
1781 <para>
1782 is a viewer for <application>Clang</application> static analyzer
1783 results
1784 </para>
1785 <indexterm zone="llvm scan-view">
1786 <primary sortas="b-scan-view">scan-view</primary>
1787 </indexterm>
1788 </listitem>
1789 </varlistentry>
1790
1791 <varlistentry id="verify-uselistorder">
1792 <term><command>verify-uselistorder</command></term>
1793 <listitem>
1794 <para>
1795 is the <application>LLVM</application> tool to verify use-list
1796 order
1797 </para>
1798 <indexterm zone="llvm verify-uselistorder">
1799 <primary sortas="b-verify-uselistorder">verify-uselistorder</primary>
1800 </indexterm>
1801 </listitem>
1802 </varlistentry>
1803
1804<!-- Removed in 12.0.0
1805 <varlistentry id="yaml2obj">
1806 <term><command>yaml2obj</command></term>
1807 <listitem>
1808 <para>
1809 takes a YAML representation of an object file and converts it
1810 to a binary file
1811 </para>
1812 <indexterm zone="llvm yaml2obj">
1813 <primary sortas="b-yaml2obj">yaml2obj</primary>
1814 </indexterm>
1815 </listitem>
1816 </varlistentry>
1817-->
1818<!--
1819 <varlistentry id="libllvm">
1820 <term><filename class="libraryfile">libLLVM-&llvm-version;.so</filename></term>
1821 <listitem>
1822 <para>
1823 contains the <application>LLVM</application> API functions.
1824 </para>
1825 <indexterm zone="llvm libllvm">
1826 <primary sortas="c-libllvm">libLLVM-&llvm-version;.so</primary>
1827 </indexterm>
1828 </listitem>
1829 </varlistentry>
1830
1831 <varlistentry id="libprofile_rt">
1832 <term><filename class="libraryfile">libprofile_rt.so</filename></term>
1833 <listitem>
1834 <para>
1835 is the C, C++ and Objective-C runtime library for
1836 <application>Clang</application>.
1837 </para>
1838 <indexterm zone="llvm libprofile_rt">
1839 <primary sortas="c-libprofile_rt">libprofile_rt.so</primary>
1840 </indexterm>
1841 </listitem>
1842 </varlistentry>-->
1843
1844 </variablelist>
1845
1846 </sect2>
1847
1848</sect1>
Note: See TracBrowser for help on using the repository browser.