source: chapter08/gcc.xml@ a3f7b43

arm
Last change on this file since a3f7b43 was a3f7b43, checked in by William Harrington <kb0iic@…>, 2 years ago

remove adjusting.xml

Now adjusting.xml only serves as a historical reference, and a "snip
library" for gcc.xml. Put all relevant content into gcc.xml directly
and remove adjusting.xml. If someone needs a historical reference, he
can always get adjusting.xml in Git history.

  • Property mode set to 100644
File size: 23.3 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
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
8<sect1 id="ch-system-gcc" role="wrap">
9 <?dbhtml filename="gcc.html"?>
10
11 <sect1info condition="script">
12 <productname>gcc</productname>
13 <productnumber>&gcc-version;</productnumber>
14 <address>&gcc-url;</address>
15 </sect1info>
16
17 <title>GCC-&gcc-version;</title>
18
19 <indexterm zone="ch-system-gcc">
20 <primary sortas="a-GCC">GCC</primary>
21 </indexterm>
22
23 <sect2 role="package">
24 <title/>
25
26 <para>The GCC package contains the GNU compiler collection, which includes
27 the C and C++ compilers.</para>
28
29 <segmentedlist>
30 <segtitle>&buildtime;</segtitle>
31 <segtitle>&diskspace;</segtitle>
32
33 <seglistitem>
34 <seg>&gcc-fin-sbu;</seg>
35 <seg>&gcc-fin-du;</seg>
36 </seglistitem>
37 </segmentedlist>
38
39 </sect2>
40
41 <sect2 role="installation">
42 <title>Installation of GCC</title>
43
44 <para>At first, fix an issue breaking
45 <filename class="libraryfile">libasan.a</filename> building this package
46 with Glibc-2.34 or later:</para>
47
48<screen><userinput remap="pre">sed -e '/static.*SIGSTKSZ/d' \
49 -e 's/return kAltStackSize/return SIGSTKSZ * 4/' \
50 -i libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp</userinput></screen>
51
52 <para>If building on aarch64, change the default directory name for 64-bit
53 libraries to <quote>lib</quote>:</para>
54
55<screen><userinput remap="pre">case $(uname -m) in
56 aarch64)
57 sed -e '/mabi.lp64=/s/lib64/lib/' \
58 -i.orig gcc/config/aarch64/t-aarch64-linux
59 ;;
60esac</userinput></screen>
61
62 <para>The GCC documentation recommends building GCC in a dedicated build directory:</para>
63
64<screen><userinput remap="pre">mkdir -v build
65cd build</userinput></screen>
66
67 <para>Prepare GCC for compilation:</para>
68
69<screen><userinput remap="configure">../configure --prefix=/usr \
70 LD=ld \
71 --enable-languages=c,c++ \
72 --disable-multilib \
73 --disable-bootstrap \
74 --with-system-zlib</userinput></screen>
75
76 <para>Note that for other programming languages there are some prerequisites that
77 are not yet available. See the
78 <ulink url="&blfs-book;general/gcc.html">BLFS Book GCC page</ulink>
79 for instructions on how to build all of GCC's supported languages.</para>
80
81 <variablelist>
82 <title>The meaning of the new configure parameters:</title>
83
84 <varlistentry>
85 <term><parameter>LD=ld</parameter></term>
86 <listitem>
87 <para>This parameter makes the configure script use the ld installed
88 by the binutils built earlier in this chapter, rather than
89 the cross-built version which would otherwise be used.</para>
90 </listitem>
91 </varlistentry>
92
93 <varlistentry>
94 <term><parameter>--with-system-zlib</parameter></term>
95 <listitem>
96 <para>This switch tells GCC to link to the system installed copy of
97 the zlib library, rather than its own internal copy.</para>
98 </listitem>
99 </varlistentry>
100 </variablelist>
101
102 <para>Compile the package:</para>
103
104<screen><userinput remap="make">make</userinput></screen>
105
106 <important>
107 <para>In this section, the test suite for GCC is considered
108 important, but it takes a long time. First time builders are
109 encouraged to not skip it. The time to run the tests can be
110 reduced significantly by adding -jx to the make command below
111 where x is the number of cores on your system.</para>
112 </important>
113
114 <para>One set of tests in the GCC test suite is known to exhaust the default
115 stack, so increase the stack size prior to running the tests:</para>
116
117<screen><userinput remap="test">ulimit -s 32768</userinput></screen>
118
119 <para>Test the results as a non-privileged user, but do not stop at errors:</para>
120
121<screen><userinput remap="test">chown -Rv tester .
122su tester -c "PATH=$PATH make -k check"</userinput></screen>
123
124 <para>To receive a summary of the test suite results, run:</para>
125
126<screen><userinput remap="test">../contrib/test_summary</userinput></screen>
127
128 <para>For only the summaries, pipe the output through
129 <userinput>grep -A7 Summ</userinput>.</para>
130
131 <para>Results can be compared with those located at <ulink
132 url="&test-results;"/> and
133 <ulink url="https://gcc.gnu.org/ml/gcc-testresults/"/>.</para>
134
135 <!-- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101081 -->
136 <para>Eight tests related to analyzer are known to fail.</para>
137
138 <!-- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101751 -->
139 <para>One test named <filename>asan_test.C</filename> is known to
140 fail.</para>
141
142 <!-- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100117 -->
143 <para>In libstdc++, one test named <filename>49745.cc</filename> is
144 known to fail because the header dependencies in glibc have
145 changed.</para>
146
147 <para>In libstdc++, one numpunct test and six tests related to get_time are
148 known to fail. These are all because the locale definitions in glibc have
149 changed but libstdc++ does not currently support those changes.</para>
150
151 <para>A few unexpected failures cannot always be avoided. The GCC developers
152 are usually aware of these issues, but have not resolved them yet.
153 Unless the test results are vastly different from those at the above URL,
154 it is safe to continue.</para>
155
156 <!--note><para>
157 On some combinations of kernel configuration and AMD processors
158 there may be more than 1100 failures in the gcc.target/i386/mpx
159 tests (which are designed to test the MPX option on recent
160 Intel processors). These can safely be ignored on AMD
161 processors. These tests will also fail on Intel processors if MPX support
162 is not enabled in the kernel even though it is present on the CPU.
163 </para></note-->
164
165 <!-- PR 91085, will be fixed in GCC 12. -->
166 <para>Install the package and remove an unneeded directory:</para>
167
168<screen><userinput remap="install">make install
169rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/&gcc-version;/include-fixed/bits/</userinput></screen>
170
171 <para>The GCC build directory is owned by <systemitem class="username">
172 tester</systemitem> now and the ownership of the installed header
173 directory (and its content) will be incorrect. Change the ownership to
174 <systemitem class="username">root</systemitem> user and group:</para>
175
176<screen><userinput remap="install">chown -v -R root:root \
177 /usr/lib/gcc/*linux-gnu/&gcc-version;/include{,-fixed}</userinput></screen>
178
179 <para>Create a symlink required by the <ulink
180 url="https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s09.html">FHS</ulink>
181 for "historical" reasons.</para>
182
183<screen><userinput remap="install">ln -svr /usr/bin/cpp /usr/lib</userinput></screen>
184 <!-- already done earlier
185 <para>Many packages use the name <command>cc</command> to call the C
186 compiler. To satisfy those packages, create a symlink:</para>
187
188<screen><userinput remap="install">ln -sv gcc /usr/bin/cc</userinput></screen>
189 -->
190 <para>Add a compatibility symlink to enable building programs with
191 Link Time Optimization (LTO):</para>
192
193<screen><userinput remap="install">ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/&gcc-version;/liblto_plugin.so \
194 /usr/lib/bfd-plugins/</userinput></screen>
195
196 <para>Now that our final toolchain is in place, it is important to again ensure
197 that compiling and linking will work as expected. We do this by performing
198 some sanity checks:</para>
199
200<screen><userinput>echo 'int main(){}' &gt; dummy.c
201cc dummy.c -v -Wl,--verbose &amp;&gt; dummy.log
202readelf -l a.out | grep ': /lib'</userinput></screen>
203
204 <para>There should be no errors,
205 and the output of the last command will be (allowing for
206 platform-specific differences in the dynamic linker name):</para>
207
208<screen><computeroutput>[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]</computeroutput></screen>
209
210 <para>Now make sure that we're setup to use the correct start files:</para>
211
212<screen><userinput>grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log</userinput></screen>
213
214 <para>The output of the last command should be:</para>
215
216<screen><computeroutput>/usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crt1.o succeeded
217/usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded
218/usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/../../../../lib/crtn.o succeeded</computeroutput></screen>
219
220 <para>Depending on your machine architecture, the above may differ slightly.
221 The difference will be the name of the directory
222 after <filename class="directory">/usr/lib/gcc</filename>. The important
223 thing to look for here is that <command>gcc</command> has found all three
224 <filename>crt*.o</filename> files under the
225 <filename class="directory">/usr/lib</filename> directory.</para>
226
227 <para>Verify that the compiler is searching for the correct header
228 files:</para>
229
230<screen><userinput>grep -B4 '^ /usr/include' dummy.log</userinput></screen>
231
232 <para>This command should return the following output:</para>
233
234<screen><computeroutput>#include &lt;...&gt; search starts here:
235 /usr/lib/gcc/aarch-64-unknown-linux-gnu/&gcc-version;/include
236 /usr/local/include
237 /usr/lib/gcc/aarch64-unknown-linux-gnu/&gcc-version;/include-fixed
238 /usr/include</computeroutput></screen>
239
240 <para>Again, the directory named after your target triplet may be
241 different than the above, depending on your system architecture.</para>
242
243 <para>Next, verify that the new linker is being used with the correct search paths:</para>
244
245<screen><userinput>grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</userinput></screen>
246
247 <para>References to paths that have components with '-linux-gnu' should
248 be ignored, but otherwise the output of the last command should be:</para>
249
250<screen><computeroutput>SEARCH_DIR("/usr/aarch64-unknown-linux-gnu/lib64")
251SEARCH_DIR("/usr/local/lib64")
252SEARCH_DIR("/lib64")
253SEARCH_DIR("/usr/lib64")
254SEARCH_DIR("/usr/aarch64-unknown-linux-gnu/lib")
255SEARCH_DIR("/usr/local/lib")
256SEARCH_DIR("/lib")
257SEARCH_DIR("/usr/lib");</computeroutput></screen>
258
259 <para>A 32-bit system may see a few different directories. For example, here
260 is the output from a 32bit ARM machine:</para>
261
262<screen><computeroutput>SEARCH_DIR("/usr/armv6l-unknown-linux-gnueabihf/lib")
263SEARCH_DIR("/usr/local/lib")
264SEARCH_DIR("/lib")
265SEARCH_DIR("/usr/lib");</computeroutput></screen>
266
267 <para>Next make sure that we're using the correct libc:</para>
268
269<screen><userinput>grep "/lib.*/libc.so.6 " dummy.log</userinput></screen>
270
271 <para>The output of the last command should be:</para>
272
273<screen><computeroutput>attempt to open /usr/lib/libc.so.6 succeeded</computeroutput></screen>
274
275 <para>Make sure GCC is using the correct dynamic linker:</para>
276
277<screen><userinput>grep found dummy.log</userinput></screen>
278
279 <para>The output of the last command should be (allowing for
280 platform-specific differences in dynamic linker name):</para>
281
282<screen><computeroutput>found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2</computeroutput></screen>
283
284 <para>If the output does not appear as shown above or is not received
285 at all, then something is seriously wrong. Investigate and retrace the
286 steps to find out where the problem is and correct it. <!--The most likely
287 reason is that something went wrong with the specs file adjustment.--> Any
288 issues will need to be resolved before continuing with the process.</para>
289
290 <para>Once everything is working correctly, clean up the test files:</para>
291
292<screen><userinput>rm -v dummy.c a.out dummy.log</userinput></screen>
293
294 <para>Finally, move a misplaced file:</para>
295
296<screen><userinput remap="install">mkdir -pv /usr/share/gdb/auto-load/usr/lib
297mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
298
299 </sect2>
300
301 <sect2 id="contents-gcc" role="content">
302 <title>Contents of GCC</title>
303
304 <segmentedlist>
305 <segtitle>Installed programs</segtitle>
306 <segtitle>Installed libraries</segtitle>
307 <segtitle>Installed directories</segtitle>
308
309 <seglistitem>
310 <seg>c++, cc (link to gcc), cpp, g++, gcc,
311 gcc-ar, gcc-nm, gcc-ranlib, gcov, gcov-dump, gcov-tool,
312 and lto-dump</seg>
313
314 <seg>libasan.{a,so}, libatomic.{a,so}, libcc1.so, libgcc.a, libgcc_eh.a,
315 libgcc_s.so, libgcov.a, libgomp.{a,so}, libitm.{a,so},
316 liblsan.{a,so}, liblto_plugin.so,
317 libssp.{a,so}, libssp_nonshared.a,
318 libstdc++.{a,so}, libstdc++fs.a, libsupc++.a, libtsan.{a,so},
319 and libubsan.{a,so}</seg>
320
321 <seg>/usr/include/c++, /usr/lib/gcc, /usr/libexec/gcc, and
322 /usr/share/gcc-&gcc-version;</seg>
323 </seglistitem>
324 </segmentedlist>
325
326 <variablelist>
327 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
328 <?dbfo list-presentation="list"?>
329 <?dbhtml list-presentation="table"?>
330
331 <varlistentry id="c">
332 <term><command>c++</command></term>
333 <listitem>
334 <para>The C++ compiler</para>
335 <indexterm zone="ch-system-gcc c">
336 <primary sortas="b-c++">c++</primary>
337 </indexterm>
338 </listitem>
339 </varlistentry>
340
341 <varlistentry id="cc">
342 <term><command>cc</command></term>
343 <listitem>
344 <para>The C compiler</para>
345 <indexterm zone="ch-system-gcc cc">
346 <primary sortas="b-cc">cc</primary>
347 </indexterm>
348 </listitem>
349 </varlistentry>
350
351 <varlistentry id="cpp">
352 <term><command>cpp</command></term>
353 <listitem>
354 <para>The C preprocessor; it is used by the compiler to expand the
355 #include, #define, and similar statements in the source files</para>
356 <indexterm zone="ch-system-gcc cpp">
357 <primary sortas="b-cpp">cpp</primary>
358 </indexterm>
359 </listitem>
360 </varlistentry>
361
362 <varlistentry id="g">
363 <term><command>g++</command></term>
364 <listitem>
365 <para>The C++ compiler</para>
366 <indexterm zone="ch-system-gcc g">
367 <primary sortas="b-g++">g++</primary>
368 </indexterm>
369 </listitem>
370 </varlistentry>
371
372 <varlistentry id="gcc">
373 <term><command>gcc</command></term>
374 <listitem>
375 <para>The C compiler</para>
376 <indexterm zone="ch-system-gcc gcc">
377 <primary sortas="b-gcc">gcc</primary>
378 </indexterm>
379 </listitem>
380 </varlistentry>
381
382 <varlistentry id="gcc-ar">
383 <term><command>gcc-ar</command></term>
384 <listitem>
385 <para>A wrapper around <command>ar</command> that adds a
386 plugin to the command line. This program is only used
387 to add "link time optimization" and is not useful with the
388 default build options</para>
389 <indexterm zone="ch-system-gcc gcc-ar">
390 <primary sortas="b-gcc-ar">gc-ar</primary>
391 </indexterm>
392 </listitem>
393 </varlistentry>
394
395 <varlistentry id="gcc-nm">
396 <term><command>gcc-nm</command></term>
397 <listitem>
398 <para>A wrapper around <command>nm</command> that adds a
399 plugin to the command line. This program is only used
400 to add "link time optimization" and is not useful with the
401 default build options</para>
402 <indexterm zone="ch-system-gcc gcc-nm">
403 <primary sortas="b-gcc-nm">gc-nm</primary>
404 </indexterm>
405 </listitem>
406 </varlistentry>
407
408 <varlistentry id="gcc-ranlib">
409 <term><command>gcc-ranlib</command></term>
410 <listitem>
411 <para>A wrapper around <command>ranlib</command> that adds a
412 plugin to the command line. This program is only used
413 to add "link time optimization" and is not useful with the
414 default build options</para>
415 <indexterm zone="ch-system-gcc gcc-ranlib">
416 <primary sortas="b-gcc-ranlib">gc-ranlib</primary>
417 </indexterm>
418 </listitem>
419 </varlistentry>
420
421 <varlistentry id="gcov">
422 <term><command>gcov</command></term>
423 <listitem>
424 <para>A coverage testing tool; it is used to analyze programs to
425 determine where optimizations will have the most effect</para>
426 <indexterm zone="ch-system-gcc gcov">
427 <primary sortas="b-gcov">gcov</primary>
428 </indexterm>
429 </listitem>
430 </varlistentry>
431
432 <varlistentry id="gcov-dump">
433 <term><command>gcov-dump</command></term>
434 <listitem>
435 <para>Offline gcda and gcno profile dump tool</para>
436 <indexterm zone="ch-system-gcc gcov-dump">
437 <primary sortas="b-gcov-dump">gcov-dump</primary>
438 </indexterm>
439 </listitem>
440 </varlistentry>
441
442 <varlistentry id="gcov-tool">
443 <term><command>gcov-tool</command></term>
444 <listitem>
445 <para>Offline gcda profile processing tool</para>
446 <indexterm zone="ch-system-gcc gcov-tool">
447 <primary sortas="b-gcov-tool">gcov-tool</primary>
448 </indexterm>
449 </listitem>
450 </varlistentry>
451
452 <varlistentry id="lto-dump">
453 <term><command>lto-dump</command></term>
454 <listitem>
455 <para>Tool for dumping object files produced by GCC with LTO
456 enabled</para>
457 <indexterm zone="ch-system-gcc lto-dump">
458 <primary sortas="b-lto-dump">lto-dump</primary>
459 </indexterm>
460 </listitem>
461 </varlistentry>
462
463 <varlistentry id="libasan">
464 <term><filename class="libraryfile">libasan</filename></term>
465 <listitem>
466 <para>The Address Sanitizer runtime library</para>
467 <indexterm zone="ch-system-gcc libasan">
468 <primary sortas="b-libasan">libasan</primary>
469 </indexterm>
470 </listitem>
471 </varlistentry>
472
473 <varlistentry id="libatomic">
474 <term><filename class="libraryfile">libatomic</filename></term>
475 <listitem>
476 <para>GCC atomic built-in runtime library</para>
477 <indexterm zone="ch-system-gcc libatomic">
478 <primary sortas="b-libatomic">libatomic</primary>
479 </indexterm>
480 </listitem>
481 </varlistentry>
482
483 <varlistentry id="libcc1">
484 <term><filename class="libraryfile">libcc1</filename></term>
485 <listitem>
486 <para>The C preprocessing library</para>
487 <indexterm zone="ch-system-gcc libcc1">
488 <primary sortas="b-libcc1">libcc1</primary>
489 </indexterm>
490 </listitem>
491 </varlistentry>
492
493 <varlistentry id="libgcc">
494 <term><filename class="libraryfile">libgcc</filename></term>
495 <listitem>
496 <para>Contains run-time support for <command>gcc</command></para>
497 <indexterm zone="ch-system-gcc libgcc">
498 <primary sortas="c-libgcc">libgcc</primary>
499 </indexterm>
500 </listitem>
501 </varlistentry>
502
503 <varlistentry id="libgcov">
504 <term><filename class="libraryfile">libgcov</filename></term>
505 <listitem>
506 <para>This library is linked in to a program when GCC is instructed
507 to enable profiling</para>
508 <indexterm zone="ch-system-gcc libgcov">
509 <primary sortas="c-libgcov">libgcov</primary>
510 </indexterm>
511 </listitem>
512 </varlistentry>
513
514 <varlistentry id="libgomp">
515 <term><filename class="libraryfile">libgomp</filename></term>
516 <listitem>
517 <para>GNU implementation of the OpenMP API for multi-platform
518 shared-memory parallel programming in C/C++ and Fortran</para>
519 <indexterm zone="ch-system-gcc libgomp">
520 <primary sortas="c-libgomp">libgomp</primary>
521 </indexterm>
522 </listitem>
523 </varlistentry>
524
525 <varlistentry id="libitm">
526 <term><filename class="libraryfile">libitm</filename></term>
527 <listitem>
528 <para>The GNU transactional memory library</para>
529 <indexterm zone="ch-system-gcc libitm">
530 <primary sortas="c-libitm">libitm</primary>
531 </indexterm>
532 </listitem>
533 </varlistentry>
534
535 <varlistentry id="liblsan">
536 <term><filename class="libraryfile">liblsan</filename></term>
537 <listitem>
538 <para>The Leak Sanitizer runtime library</para>
539 <indexterm zone="ch-system-gcc liblsan">
540 <primary sortas="c-liblsan">liblsan</primary>
541 </indexterm>
542 </listitem>
543 </varlistentry>
544
545 <varlistentry id="liblto_plugin">
546 <term><filename class="libraryfile">liblto_plugin</filename></term>
547 <listitem>
548 <para>GCC's LTO plugin allows binutils to process object files
549 produced by GCC with LTO enabled</para>
550 <indexterm zone="ch-system-gcc liblto_plugin">
551 <primary sortas="c-liblto_plugin">liblto_plugin</primary>
552 </indexterm>
553 </listitem>
554 </varlistentry>
555
556 <varlistentry id="libquadmath">
557 <term><filename class="libraryfile">libquadmath</filename></term>
558 <listitem>
559 <para>GCC Quad Precision Math Library API</para>
560 <indexterm zone="ch-system-gcc libquadmath">
561 <primary sortas="c-libquadmath">libquadmath</primary>
562 </indexterm>
563 </listitem>
564 </varlistentry>
565
566 <varlistentry id="libssp">
567 <term><filename class="libraryfile">libssp</filename></term>
568 <listitem>
569 <para>Contains routines supporting GCC's stack-smashing protection
570 functionality</para>
571 <indexterm zone="ch-system-gcc libssp">
572 <primary sortas="c-libssp">libssp</primary>
573 </indexterm>
574 </listitem>
575 </varlistentry>
576
577 <varlistentry id="libstdc">
578 <term><filename class="libraryfile">libstdc++</filename></term>
579 <listitem>
580 <para>The standard C++ library</para>
581 <indexterm zone="ch-system-gcc libstdc">
582 <primary sortas="c-libstdc++">libstdc++</primary>
583 </indexterm>
584 </listitem>
585 </varlistentry>
586
587 <varlistentry id="libstdcfs">
588 <term><filename class="libraryfile">libstdc++fs</filename></term>
589 <listitem>
590 <para>ISO/IEC TS 18822:2015 Filesystem library</para>
591 <indexterm zone="ch-system-gcc libstdcfs">
592 <primary sortas="c-libstdc++fs">libstdc++fs</primary>
593 </indexterm>
594 </listitem>
595 </varlistentry>
596
597 <varlistentry id="libsupc">
598 <term><filename class="libraryfile">libsupc++</filename></term>
599 <listitem>
600 <para>Provides supporting routines for the C++ programming
601 language</para>
602 <indexterm zone="ch-system-gcc libsupc">
603 <primary sortas="c-libsupc++">libsupc++</primary>
604 </indexterm>
605 </listitem>
606 </varlistentry>
607
608 <varlistentry id="libtsan">
609 <term><filename class="libraryfile">libtsan</filename></term>
610 <listitem>
611 <para>The Thread Sanitizer runtime library</para>
612 <indexterm zone="ch-system-gcc libtsan">
613 <primary sortas="c-libtsan">libtsan</primary>
614 </indexterm>
615 </listitem>
616 </varlistentry>
617
618 <varlistentry id="libubsan">
619 <term><filename class="libraryfile">libubsan</filename></term>
620 <listitem>
621 <para>The Undefined Behavior Sanitizer runtime library</para>
622 <indexterm zone="ch-system-gcc libubsan">
623 <primary sortas="c-libubsan">libubsan</primary>
624 </indexterm>
625 </listitem>
626 </varlistentry>
627
628 </variablelist>
629
630 </sect2>
631
632</sect1>
Note: See TracBrowser for help on using the repository browser.