source: chapter08/gcc.xml@ a4f63e4

11.2 11.2-rc1 multilib s6-init trunk xry111/arm64 xry111/clfs-ng xry111/lfs-next xry111/pip3 xry111/queue-11.3 xry111/rust-wip-20221008
Last change on this file since a4f63e4 was a4f63e4, checked in by Xi Ruoyao <xry111@…>, 10 months 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.4 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 x86_64, 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 x86_64)
57 sed -e '/m64=/s/lib64/lib/' \
58 -i.orig gcc/config/i386/t-linux64
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/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crt1.o succeeded
217/usr/lib/gcc/x86_64-pc-linux-gnu/&gcc-version;/../../../../lib/crti.o succeeded
218/usr/lib/gcc/x86_64-pc-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/x86_64-pc-linux-gnu/&gcc-version;/include
236 /usr/local/include
237 /usr/lib/gcc/x86_64-pc-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/x86_64-pc-linux-gnu/lib64")
251SEARCH_DIR("/usr/local/lib64")
252SEARCH_DIR("/lib64")
253SEARCH_DIR("/usr/lib64")
254SEARCH_DIR("/usr/x86_64-pc-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 an i686 machine:</para>
261
262<screen><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
263SEARCH_DIR("/usr/local/lib32")
264SEARCH_DIR("/lib32")
265SEARCH_DIR("/usr/lib32")
266SEARCH_DIR("/usr/i686-pc-linux-gnu/lib")
267SEARCH_DIR("/usr/local/lib")
268SEARCH_DIR("/lib")
269SEARCH_DIR("/usr/lib");</computeroutput></screen>
270
271 <para>Next make sure that we're using the correct libc:</para>
272
273<screen><userinput>grep "/lib.*/libc.so.6 " dummy.log</userinput></screen>
274
275 <para>The output of the last command should be:</para>
276
277<screen><computeroutput>attempt to open /usr/lib/libc.so.6 succeeded</computeroutput></screen>
278
279 <para>Make sure GCC is using the correct dynamic linker:</para>
280
281<screen><userinput>grep found dummy.log</userinput></screen>
282
283 <para>The output of the last command should be (allowing for
284 platform-specific differences in dynamic linker name):</para>
285
286<screen><computeroutput>found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2</computeroutput></screen>
287
288 <para>If the output does not appear as shown above or is not received
289 at all, then something is seriously wrong. Investigate and retrace the
290 steps to find out where the problem is and correct it. <!--The most likely
291 reason is that something went wrong with the specs file adjustment.--> Any
292 issues will need to be resolved before continuing with the process.</para>
293
294 <para>Once everything is working correctly, clean up the test files:</para>
295
296<screen><userinput>rm -v dummy.c a.out dummy.log</userinput></screen>
297
298 <para>Finally, move a misplaced file:</para>
299
300<screen><userinput remap="install">mkdir -pv /usr/share/gdb/auto-load/usr/lib
301mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
302
303 </sect2>
304
305 <sect2 id="contents-gcc" role="content">
306 <title>Contents of GCC</title>
307
308 <segmentedlist>
309 <segtitle>Installed programs</segtitle>
310 <segtitle>Installed libraries</segtitle>
311 <segtitle>Installed directories</segtitle>
312
313 <seglistitem>
314 <seg>c++, cc (link to gcc), cpp, g++, gcc,
315 gcc-ar, gcc-nm, gcc-ranlib, gcov, gcov-dump, gcov-tool,
316 and lto-dump</seg>
317
318 <seg>libasan.{a,so}, libatomic.{a,so}, libcc1.so, libgcc.a, libgcc_eh.a,
319 libgcc_s.so, libgcov.a, libgomp.{a,so}, libitm.{a,so},
320 liblsan.{a,so}, liblto_plugin.so,
321 libquadmath.{a,so}, libssp.{a,so}, libssp_nonshared.a,
322 libstdc++.{a,so}, libstdc++fs.a, libsupc++.a, libtsan.{a,so},
323 and libubsan.{a,so}</seg>
324
325 <seg>/usr/include/c++, /usr/lib/gcc, /usr/libexec/gcc, and
326 /usr/share/gcc-&gcc-version;</seg>
327 </seglistitem>
328 </segmentedlist>
329
330 <variablelist>
331 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
332 <?dbfo list-presentation="list"?>
333 <?dbhtml list-presentation="table"?>
334
335 <varlistentry id="c">
336 <term><command>c++</command></term>
337 <listitem>
338 <para>The C++ compiler</para>
339 <indexterm zone="ch-system-gcc c">
340 <primary sortas="b-c++">c++</primary>
341 </indexterm>
342 </listitem>
343 </varlistentry>
344
345 <varlistentry id="cc">
346 <term><command>cc</command></term>
347 <listitem>
348 <para>The C compiler</para>
349 <indexterm zone="ch-system-gcc cc">
350 <primary sortas="b-cc">cc</primary>
351 </indexterm>
352 </listitem>
353 </varlistentry>
354
355 <varlistentry id="cpp">
356 <term><command>cpp</command></term>
357 <listitem>
358 <para>The C preprocessor; it is used by the compiler to expand the
359 #include, #define, and similar statements in the source files</para>
360 <indexterm zone="ch-system-gcc cpp">
361 <primary sortas="b-cpp">cpp</primary>
362 </indexterm>
363 </listitem>
364 </varlistentry>
365
366 <varlistentry id="g">
367 <term><command>g++</command></term>
368 <listitem>
369 <para>The C++ compiler</para>
370 <indexterm zone="ch-system-gcc g">
371 <primary sortas="b-g++">g++</primary>
372 </indexterm>
373 </listitem>
374 </varlistentry>
375
376 <varlistentry id="gcc">
377 <term><command>gcc</command></term>
378 <listitem>
379 <para>The C compiler</para>
380 <indexterm zone="ch-system-gcc gcc">
381 <primary sortas="b-gcc">gcc</primary>
382 </indexterm>
383 </listitem>
384 </varlistentry>
385
386 <varlistentry id="gcc-ar">
387 <term><command>gcc-ar</command></term>
388 <listitem>
389 <para>A wrapper around <command>ar</command> that adds a
390 plugin to the command line. This program is only used
391 to add "link time optimization" and is not useful with the
392 default build options</para>
393 <indexterm zone="ch-system-gcc gcc-ar">
394 <primary sortas="b-gcc-ar">gc-ar</primary>
395 </indexterm>
396 </listitem>
397 </varlistentry>
398
399 <varlistentry id="gcc-nm">
400 <term><command>gcc-nm</command></term>
401 <listitem>
402 <para>A wrapper around <command>nm</command> that adds a
403 plugin to the command line. This program is only used
404 to add "link time optimization" and is not useful with the
405 default build options</para>
406 <indexterm zone="ch-system-gcc gcc-nm">
407 <primary sortas="b-gcc-nm">gc-nm</primary>
408 </indexterm>
409 </listitem>
410 </varlistentry>
411
412 <varlistentry id="gcc-ranlib">
413 <term><command>gcc-ranlib</command></term>
414 <listitem>
415 <para>A wrapper around <command>ranlib</command> that adds a
416 plugin to the command line. This program is only used
417 to add "link time optimization" and is not useful with the
418 default build options</para>
419 <indexterm zone="ch-system-gcc gcc-ranlib">
420 <primary sortas="b-gcc-ranlib">gc-ranlib</primary>
421 </indexterm>
422 </listitem>
423 </varlistentry>
424
425 <varlistentry id="gcov">
426 <term><command>gcov</command></term>
427 <listitem>
428 <para>A coverage testing tool; it is used to analyze programs to
429 determine where optimizations will have the most effect</para>
430 <indexterm zone="ch-system-gcc gcov">
431 <primary sortas="b-gcov">gcov</primary>
432 </indexterm>
433 </listitem>
434 </varlistentry>
435
436 <varlistentry id="gcov-dump">
437 <term><command>gcov-dump</command></term>
438 <listitem>
439 <para>Offline gcda and gcno profile dump tool</para>
440 <indexterm zone="ch-system-gcc gcov-dump">
441 <primary sortas="b-gcov-dump">gcov-dump</primary>
442 </indexterm>
443 </listitem>
444 </varlistentry>
445
446 <varlistentry id="gcov-tool">
447 <term><command>gcov-tool</command></term>
448 <listitem>
449 <para>Offline gcda profile processing tool</para>
450 <indexterm zone="ch-system-gcc gcov-tool">
451 <primary sortas="b-gcov-tool">gcov-tool</primary>
452 </indexterm>
453 </listitem>
454 </varlistentry>
455
456 <varlistentry id="lto-dump">
457 <term><command>lto-dump</command></term>
458 <listitem>
459 <para>Tool for dumping object files produced by GCC with LTO
460 enabled</para>
461 <indexterm zone="ch-system-gcc lto-dump">
462 <primary sortas="b-lto-dump">lto-dump</primary>
463 </indexterm>
464 </listitem>
465 </varlistentry>
466
467 <varlistentry id="libasan">
468 <term><filename class="libraryfile">libasan</filename></term>
469 <listitem>
470 <para>The Address Sanitizer runtime library</para>
471 <indexterm zone="ch-system-gcc libasan">
472 <primary sortas="b-libasan">libasan</primary>
473 </indexterm>
474 </listitem>
475 </varlistentry>
476
477 <varlistentry id="libatomic">
478 <term><filename class="libraryfile">libatomic</filename></term>
479 <listitem>
480 <para>GCC atomic built-in runtime library</para>
481 <indexterm zone="ch-system-gcc libatomic">
482 <primary sortas="b-libatomic">libatomic</primary>
483 </indexterm>
484 </listitem>
485 </varlistentry>
486
487 <varlistentry id="libcc1">
488 <term><filename class="libraryfile">libcc1</filename></term>
489 <listitem>
490 <para>The C preprocessing library</para>
491 <indexterm zone="ch-system-gcc libcc1">
492 <primary sortas="b-libcc1">libcc1</primary>
493 </indexterm>
494 </listitem>
495 </varlistentry>
496
497 <varlistentry id="libgcc">
498 <term><filename class="libraryfile">libgcc</filename></term>
499 <listitem>
500 <para>Contains run-time support for <command>gcc</command></para>
501 <indexterm zone="ch-system-gcc libgcc">
502 <primary sortas="c-libgcc">libgcc</primary>
503 </indexterm>
504 </listitem>
505 </varlistentry>
506
507 <varlistentry id="libgcov">
508 <term><filename class="libraryfile">libgcov</filename></term>
509 <listitem>
510 <para>This library is linked in to a program when GCC is instructed
511 to enable profiling</para>
512 <indexterm zone="ch-system-gcc libgcov">
513 <primary sortas="c-libgcov">libgcov</primary>
514 </indexterm>
515 </listitem>
516 </varlistentry>
517
518 <varlistentry id="libgomp">
519 <term><filename class="libraryfile">libgomp</filename></term>
520 <listitem>
521 <para>GNU implementation of the OpenMP API for multi-platform
522 shared-memory parallel programming in C/C++ and Fortran</para>
523 <indexterm zone="ch-system-gcc libgomp">
524 <primary sortas="c-libgomp">libgomp</primary>
525 </indexterm>
526 </listitem>
527 </varlistentry>
528
529 <varlistentry id="libitm">
530 <term><filename class="libraryfile">libitm</filename></term>
531 <listitem>
532 <para>The GNU transactional memory library</para>
533 <indexterm zone="ch-system-gcc libitm">
534 <primary sortas="c-libitm">libitm</primary>
535 </indexterm>
536 </listitem>
537 </varlistentry>
538
539 <varlistentry id="liblsan">
540 <term><filename class="libraryfile">liblsan</filename></term>
541 <listitem>
542 <para>The Leak Sanitizer runtime library</para>
543 <indexterm zone="ch-system-gcc liblsan">
544 <primary sortas="c-liblsan">liblsan</primary>
545 </indexterm>
546 </listitem>
547 </varlistentry>
548
549 <varlistentry id="liblto_plugin">
550 <term><filename class="libraryfile">liblto_plugin</filename></term>
551 <listitem>
552 <para>GCC's LTO plugin allows binutils to process object files
553 produced by GCC with LTO enabled</para>
554 <indexterm zone="ch-system-gcc liblto_plugin">
555 <primary sortas="c-liblto_plugin">liblto_plugin</primary>
556 </indexterm>
557 </listitem>
558 </varlistentry>
559
560 <varlistentry id="libquadmath">
561 <term><filename class="libraryfile">libquadmath</filename></term>
562 <listitem>
563 <para>GCC Quad Precision Math Library API</para>
564 <indexterm zone="ch-system-gcc libquadmath">
565 <primary sortas="c-libquadmath">libquadmath</primary>
566 </indexterm>
567 </listitem>
568 </varlistentry>
569
570 <varlistentry id="libssp">
571 <term><filename class="libraryfile">libssp</filename></term>
572 <listitem>
573 <para>Contains routines supporting GCC's stack-smashing protection
574 functionality</para>
575 <indexterm zone="ch-system-gcc libssp">
576 <primary sortas="c-libssp">libssp</primary>
577 </indexterm>
578 </listitem>
579 </varlistentry>
580
581 <varlistentry id="libstdc">
582 <term><filename class="libraryfile">libstdc++</filename></term>
583 <listitem>
584 <para>The standard C++ library</para>
585 <indexterm zone="ch-system-gcc libstdc">
586 <primary sortas="c-libstdc++">libstdc++</primary>
587 </indexterm>
588 </listitem>
589 </varlistentry>
590
591 <varlistentry id="libstdcfs">
592 <term><filename class="libraryfile">libstdc++fs</filename></term>
593 <listitem>
594 <para>ISO/IEC TS 18822:2015 Filesystem library</para>
595 <indexterm zone="ch-system-gcc libstdcfs">
596 <primary sortas="c-libstdc++fs">libstdc++fs</primary>
597 </indexterm>
598 </listitem>
599 </varlistentry>
600
601 <varlistentry id="libsupc">
602 <term><filename class="libraryfile">libsupc++</filename></term>
603 <listitem>
604 <para>Provides supporting routines for the C++ programming
605 language</para>
606 <indexterm zone="ch-system-gcc libsupc">
607 <primary sortas="c-libsupc++">libsupc++</primary>
608 </indexterm>
609 </listitem>
610 </varlistentry>
611
612 <varlistentry id="libtsan">
613 <term><filename class="libraryfile">libtsan</filename></term>
614 <listitem>
615 <para>The Thread Sanitizer runtime library</para>
616 <indexterm zone="ch-system-gcc libtsan">
617 <primary sortas="c-libtsan">libtsan</primary>
618 </indexterm>
619 </listitem>
620 </varlistentry>
621
622 <varlistentry id="libubsan">
623 <term><filename class="libraryfile">libubsan</filename></term>
624 <listitem>
625 <para>The Undefined Behavior Sanitizer runtime library</para>
626 <indexterm zone="ch-system-gcc libubsan">
627 <primary sortas="c-libubsan">libubsan</primary>
628 </indexterm>
629 </listitem>
630 </varlistentry>
631
632 </variablelist>
633
634 </sect2>
635
636</sect1>
Note: See TracBrowser for help on using the repository browser.