source: chapter08/gcc.xml@ 2469049

xry111/mips64el
Last change on this file since 2469049 was 2469049, checked in by Xi Ruoyao <xry111@…>, 7 months ago

mips64el: gcc: Add --with-nan=2008 if needed

  • Property mode set to 100644
File size: 25.7 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
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<!--
53 <para>First fix a problem with the latest version of glibc:</para>
54
55 <screen><userinput remap="pre">patch -Np1 -i ../&gcc-upstream-fixes-patch;</userinput></screen>
56-->
57 <para>For building on 64-bit MIPS, change the default directory name for
58 64-bit libraries to <quote>lib</quote>:</para>
59
60<screen><userinput remap="pre">sed -e 's/lib64/lib/' \
61 -i.orig gcc/config/mips/{mips.h,t-linux64}</userinput></screen>
62
63 <para>The GCC documentation recommends building GCC in a dedicated build directory:</para>
64
65<screen><userinput remap="pre">mkdir -v build
66cd build</userinput></screen>
67
68 <para>Prepare GCC for compilation:</para>
69
70<screen><userinput remap="configure">../configure --prefix=/usr \
71 LD=ld \
72 --enable-languages=c,c++ \
73 --enable-default-pie \
74 --enable-default-ssp \
75 --disable-multilib \
76 --disable-bootstrap \
77 --disable-fixincludes \
78 --with-arch=mips64r2 \
79 --with-system-zlib \
80 $(cc -v 2>&amp;1 | grep -o .-with-nan=2008)</userinput></screen>
81
82 <para>GCC supports seven different computer languages, but the
83 prerequisites for most of them have not yet been installed. See the
84 <ulink url="&blfs-book;general/gcc.html">BLFS Book GCC page</ulink>
85 for instructions on how to build all of GCC's supported languages.</para>
86
87 <variablelist>
88 <title>The meaning of the new configure parameters:</title>
89
90 <varlistentry>
91 <term><parameter>LD=ld</parameter></term>
92 <listitem>
93 <para>This parameter makes the configure script use the ld program installed
94 by the Binutils package built earlier in this chapter, rather than
95 the cross-built version which would otherwise be used.</para>
96 </listitem>
97 </varlistentry>
98
99 <varlistentry>
100 <term><parameter>--disable-fixincludes</parameter></term>
101 <listitem>
102 <para>By default, during the installation of GCC some system
103 headers would be <quote>fixed</quote> to be used with GCC. This
104 is not necessary for a modern Linux system, and potentially
105 harmful if a package is reinstalled after installing GCC. This
106 switch prevents GCC from <quote>fixing</quote> the headers.</para>
107 </listitem>
108 </varlistentry>
109
110 <varlistentry>
111 <term><parameter>--with-system-zlib</parameter></term>
112 <listitem>
113 <para>This switch tells GCC to link to the system installed copy of
114 the Zlib library, rather than its own internal copy.</para>
115 </listitem>
116 </varlistentry>
117 </variablelist>
118
119 <note>
120 <anchor id="pie-ssp-info" xreflabel="note on PIE and SSP"/>
121 <para>
122 PIE (position-independent executables) are
123 binary programs that can be loaded anywhere in memory. Without PIE,
124 the security feature named ASLR (Address Space Layout Randomization)
125 can be applied for the shared libraries, but not for the executables
126 themselves. Enabling PIE allows ASLR for the executables in addition to
127 the shared libraries, and mitigates some attacks based on fixed
128 addresses of sensitive code or data in the executables.
129 </para>
130 <para>
131 SSP (Stack Smashing Protection) is a technique to ensure
132 that the parameter stack is not corrupted. Stack corruption can,
133 for example, alter the return address of a subroutine,
134 thus transferring control to some dangerous code
135 (existing in the program or shared libraries, or injected by the
136 attacker somehow).
137 </para>
138 </note>
139
140 <para>Compile the package:</para>
141
142<screen><userinput remap="make">make</userinput></screen>
143
144 <important>
145 <para>In this section, the test suite for GCC is considered
146 important, but it takes a long time. First-time builders are
147 encouraged to run the test suite. The time to run the tests can be
148 reduced significantly by adding -jx to the <command>make -k check</command> command below,
149 where x is the number of CPU cores on your system.</para>
150 </important>
151
152 <para>One set of tests in the GCC test suite is known to exhaust the default
153 stack, so increase the stack size prior to running the tests:</para>
154
155<screen><userinput remap="test">ulimit -s 32768</userinput></screen>
156
157 <para>Test the results as a non-privileged user, but do not stop at errors:</para>
158
159<screen><userinput remap="test">chown -R tester .
160su tester -c "PATH=$PATH make -k check"</userinput></screen>
161
162 <para>To extract a summary of the test suite results, run:</para>
163
164<screen><userinput remap="test">../contrib/test_summary</userinput></screen>
165
166 <para>To filter out only the summaries, pipe the output through
167 <userinput>grep -A7 Summ</userinput>.</para>
168
169 <para>Results can be compared with those located at <ulink
170 url="&test-results;"/> and
171 <ulink url="https://gcc.gnu.org/ml/gcc-testresults/"/>.</para>
172
173 <para>
174 Eight gcc tests (out of over 185,000):
175 <!-- https://gcc.gnu.org/PR106375 --><filename>pr56837.c</filename>
176 and seven tests in the <filename class='directory'>analyzer</filename>
177 directory are known to fail.
178
179 <!-- https://gcc.gnu.org/PR109353 -->
180 One libstdc++ test (out of over 15000), <filename>copy.cc</filename>, is
181 known to fail.
182
183 For g++, 21 tests (out of approximately 250,000): 14
184 <quote>AddressSanitizer*</quote>
185 tests and 7 <filename>interception-malloc-test-1.C</filename> tests, are
186 known to fail.
187
188 Additionally, several tests in the
189 <filename class='directory'>vect</filename> directory are known to fail
190 if the hardware does not support AVX.</para>
191
192 <para>A few unexpected failures cannot always be avoided. The GCC developers
193 are usually aware of these issues, but have not resolved them yet.
194 Unless the test results are vastly different from those at the above URL,
195 it is safe to continue.</para>
196
197 <para>Install the package:</para>
198
199<screen><userinput remap="install">make install</userinput></screen>
200
201 <para>The GCC build directory is owned by <systemitem class="username">
202 tester</systemitem> now, and the ownership of the installed header
203 directory (and its content) is incorrect. Change the ownership to the
204 <systemitem class="username">root</systemitem> user and group:</para>
205
206<screen><userinput remap="install">chown -v -R root:root \
207 /usr/lib/gcc/$(gcc -dumpmachine)/&gcc-version;/include{,-fixed}</userinput></screen>
208
209 <para>Create a symlink required by the <ulink
210 url="https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s09.html">FHS</ulink>
211 for "historical" reasons.</para>
212
213<screen><userinput remap="install">ln -svr /usr/bin/cpp /usr/lib</userinput></screen>
214
215 <para>Many packages use the name <command>cc</command> to call the C
216 compiler. We've already created <command>cc</command> as a symlink in
217 <xref linkend='ch-tools-gcc-pass2'/>, create its man page as a symlink
218 as well:</para>
219
220<screen><userinput remap="install">ln -sv gcc.1 /usr/share/man/man1/cc.1</userinput></screen>
221
222 <para>Add a compatibility symlink to enable building programs with
223 Link Time Optimization (LTO):</para>
224
225<screen><userinput remap="install">ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/&gcc-version;/liblto_plugin.so \
226 /usr/lib/bfd-plugins/</userinput></screen>
227
228 <para>Now that our final toolchain is in place, it is important to again ensure
229 that compiling and linking will work as expected. We do this by performing
230 some sanity checks:</para>
231
232<screen><userinput>echo 'int main(){}' &gt; dummy.c
233cc dummy.c -v -Wl,--verbose &amp;&gt; dummy.log
234readelf -l a.out | grep ': /lib'</userinput></screen>
235
236 <para>There should be no errors,
237 and the output of the last command will be (allowing for
238 platform-specific differences in the dynamic linker name):</para>
239
240<screen><computeroutput>[Requesting program interpreter: /lib64/ld.so.1]</computeroutput></screen>
241
242 <para>Now make sure that we're set up to use the correct start files:</para>
243
244<screen><userinput>grep -E -o '/usr/lib.*/S?crt[1in].*succeeded' dummy.log</userinput></screen>
245
246 <para>The output of the last command should be:</para>
247
248<screen><computeroutput>/usr/lib/gcc/mips64el-unknown-linux-gnuabi64/&gcc-version;/../../../../lib/Scrt1.o succeeded
249/usr/lib/gcc/mips64el-unknown-linux-gnuabi64/&gcc-version;/../../../../lib/crti.o succeeded
250/usr/lib/gcc/mips64el-unknown-linux-gnuabi64/&gcc-version;/../../../../lib/crtn.o succeeded</computeroutput></screen>
251
252 <para>Depending on your machine architecture, the above may differ slightly.
253 The difference will be the name of the directory
254 after <filename class="directory">/usr/lib/gcc</filename>. The important
255 thing to look for here is that <command>gcc</command> has found all three
256 <filename>crt*.o</filename> files under the
257 <filename class="directory">/usr/lib</filename> directory.</para>
258
259 <para>Verify that the compiler is searching for the correct header
260 files:</para>
261
262<screen><userinput>grep -B4 '^ /usr/include' dummy.log</userinput></screen>
263
264 <para>This command should return the following output:</para>
265
266<screen><computeroutput>#include &lt;...&gt; search starts here:
267 /usr/lib/gcc/mips64el-unknown-linux-gnuabi64/&gcc-version;/include
268 /usr/local/include
269 /usr/lib/gcc/mips64el-unknown-linux-gnuabi64/&gcc-version;/include-fixed
270 /usr/include</computeroutput></screen>
271
272 <para>Again, the directory named after your target triplet may be
273 different than the above, depending on your system architecture.</para>
274
275 <para>Next, verify that the new linker is being used with the correct search paths:</para>
276
277<screen><userinput>grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</userinput></screen>
278
279 <para>References to paths that have components with '-linux-gnu' should
280 be ignored, but otherwise the output of the last command should be:</para>
281
282<screen><computeroutput>SEARCH_DIR("/usr/mips64el-unknown-linux-gnuabi64/lib64")
283SEARCH_DIR("/usr/local/lib64")
284SEARCH_DIR("/lib64")
285SEARCH_DIR("/usr/lib64")
286SEARCH_DIR("/usr/mips64el-unknown-linux-gnuabi64/lib")
287SEARCH_DIR("/usr/local/lib")
288SEARCH_DIR("/lib")
289SEARCH_DIR("/usr/lib");</computeroutput></screen>
290<!--
291 <para>A 32-bit system may use a few other directories. For example, here
292 is the output from an i686 machine:</para>
293
294<screen><computeroutput>SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
295SEARCH_DIR("/usr/local/lib32")
296SEARCH_DIR("/lib32")
297SEARCH_DIR("/usr/lib32")
298SEARCH_DIR("/usr/i686-pc-linux-gnu/lib")
299SEARCH_DIR("/usr/local/lib")
300SEARCH_DIR("/lib")
301SEARCH_DIR("/usr/lib");</computeroutput></screen>
302-->
303 <para>Next make sure that we're using the correct libc:</para>
304
305<screen><userinput>grep "/lib.*/libc.so.6 " dummy.log</userinput></screen>
306
307 <para>The output of the last command should be:</para>
308
309<screen><computeroutput>attempt to open /usr/lib/libc.so.6 succeeded</computeroutput></screen>
310
311 <para>Make sure GCC is using the correct dynamic linker:</para>
312
313<screen><userinput>grep found dummy.log</userinput></screen>
314
315 <para>The output of the last command should be (allowing for
316 platform-specific differences in dynamic linker name):</para>
317
318<screen><computeroutput>found ld.so.1 at /usr/lib/ld.so.1</computeroutput></screen>
319
320 <para>If the output does not appear as shown above or is not received
321 at all, then something is seriously wrong. Investigate and retrace the
322 steps to find out where the problem is and correct it. <!--The most likely
323 reason is that something went wrong with the specs file adjustment.--> Any
324 issues should be resolved before continuing with the process.</para>
325
326 <para>Once everything is working correctly, clean up the test files:</para>
327
328<screen><userinput>rm -v dummy.c a.out dummy.log</userinput></screen>
329
330 <para>Finally, move a misplaced file:</para>
331
332<screen><userinput remap="install">mkdir -pv /usr/share/gdb/auto-load/usr/lib
333mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib</userinput></screen>
334
335 </sect2>
336
337 <sect2 id="contents-gcc" role="content">
338 <title>Contents of GCC</title>
339
340 <segmentedlist>
341 <segtitle>Installed programs</segtitle>
342 <segtitle>Installed libraries</segtitle>
343 <segtitle>Installed directories</segtitle>
344
345 <seglistitem>
346 <seg>c++, cc (link to gcc), cpp, g++, gcc,
347 gcc-ar, gcc-nm, gcc-ranlib, gcov, gcov-dump, gcov-tool,
348 and lto-dump</seg>
349
350 <seg>libasan.{a,so}, libatomic.{a,so}, libcc1.so, libgcc.a, libgcc_eh.a,
351 libgcc_s.so, libgcov.a, libgomp.{a,so}, libhwasan.{a,so}, libitm.{a,so},
352 liblsan.{a,so}, liblto_plugin.so,
353 libquadmath.{a,so}, libssp.{a,so}, libssp_nonshared.a,
354 libstdc++.{a,so}, libstdc++exp.a, libstdc++fs.a, libsupc++.a, libtsan.{a,so},
355 and libubsan.{a,so}</seg>
356
357 <seg>/usr/include/c++, /usr/lib/gcc, /usr/libexec/gcc, and
358 /usr/share/gcc-&gcc-version;</seg>
359 </seglistitem>
360 </segmentedlist>
361
362 <variablelist>
363 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
364 <?dbfo list-presentation="list"?>
365 <?dbhtml list-presentation="table"?>
366
367 <varlistentry id="c">
368 <term><command>c++</command></term>
369 <listitem>
370 <para>The C++ compiler</para>
371 <indexterm zone="ch-system-gcc c">
372 <primary sortas="b-c++">c++</primary>
373 </indexterm>
374 </listitem>
375 </varlistentry>
376
377 <varlistentry id="cc">
378 <term><command>cc</command></term>
379 <listitem>
380 <para>The C compiler</para>
381 <indexterm zone="ch-system-gcc cc">
382 <primary sortas="b-cc">cc</primary>
383 </indexterm>
384 </listitem>
385 </varlistentry>
386
387 <varlistentry id="cpp">
388 <term><command>cpp</command></term>
389 <listitem>
390 <para>The C preprocessor; it is used by the compiler to expand the
391 #include, #define, and similar directives in the source files</para>
392 <indexterm zone="ch-system-gcc cpp">
393 <primary sortas="b-cpp">cpp</primary>
394 </indexterm>
395 </listitem>
396 </varlistentry>
397
398 <varlistentry id="g">
399 <term><command>g++</command></term>
400 <listitem>
401 <para>The C++ compiler</para>
402 <indexterm zone="ch-system-gcc g">
403 <primary sortas="b-g++">g++</primary>
404 </indexterm>
405 </listitem>
406 </varlistentry>
407
408 <varlistentry id="gcc">
409 <term><command>gcc</command></term>
410 <listitem>
411 <para>The C compiler</para>
412 <indexterm zone="ch-system-gcc gcc">
413 <primary sortas="b-gcc">gcc</primary>
414 </indexterm>
415 </listitem>
416 </varlistentry>
417
418 <varlistentry id="gcc-ar">
419 <term><command>gcc-ar</command></term>
420 <listitem>
421 <para>A wrapper around <command>ar</command> that adds a
422 plugin to the command line. This program is only used
423 to add "link time optimization" and is not useful with the
424 default build options.</para>
425 <indexterm zone="ch-system-gcc gcc-ar">
426 <primary sortas="b-gcc-ar">gc-ar</primary>
427 </indexterm>
428 </listitem>
429 </varlistentry>
430
431 <varlistentry id="gcc-nm">
432 <term><command>gcc-nm</command></term>
433 <listitem>
434 <para>A wrapper around <command>nm</command> that adds a
435 plugin to the command line. This program is only used
436 to add "link time optimization" and is not useful with the
437 default build options.</para>
438 <indexterm zone="ch-system-gcc gcc-nm">
439 <primary sortas="b-gcc-nm">gc-nm</primary>
440 </indexterm>
441 </listitem>
442 </varlistentry>
443
444 <varlistentry id="gcc-ranlib">
445 <term><command>gcc-ranlib</command></term>
446 <listitem>
447 <para>A wrapper around <command>ranlib</command> that adds a
448 plugin to the command line. This program is only used
449 to add "link time optimization" and is not useful with the
450 default build options.</para>
451 <indexterm zone="ch-system-gcc gcc-ranlib">
452 <primary sortas="b-gcc-ranlib">gc-ranlib</primary>
453 </indexterm>
454 </listitem>
455 </varlistentry>
456
457 <varlistentry id="gcov">
458 <term><command>gcov</command></term>
459 <listitem>
460 <para>A coverage testing tool; it is used to analyze programs to
461 determine where optimizations will have the greatest effect</para>
462 <indexterm zone="ch-system-gcc gcov">
463 <primary sortas="b-gcov">gcov</primary>
464 </indexterm>
465 </listitem>
466 </varlistentry>
467
468 <varlistentry id="gcov-dump">
469 <term><command>gcov-dump</command></term>
470 <listitem>
471 <para>Offline gcda and gcno profile dump tool</para>
472 <indexterm zone="ch-system-gcc gcov-dump">
473 <primary sortas="b-gcov-dump">gcov-dump</primary>
474 </indexterm>
475 </listitem>
476 </varlistentry>
477
478 <varlistentry id="gcov-tool">
479 <term><command>gcov-tool</command></term>
480 <listitem>
481 <para>Offline gcda profile processing tool</para>
482 <indexterm zone="ch-system-gcc gcov-tool">
483 <primary sortas="b-gcov-tool">gcov-tool</primary>
484 </indexterm>
485 </listitem>
486 </varlistentry>
487
488 <varlistentry id="lto-dump">
489 <term><command>lto-dump</command></term>
490 <listitem>
491 <para>Tool for dumping object files produced by GCC with LTO
492 enabled</para>
493 <indexterm zone="ch-system-gcc lto-dump">
494 <primary sortas="b-lto-dump">lto-dump</primary>
495 </indexterm>
496 </listitem>
497 </varlistentry>
498
499 <varlistentry id="libasan">
500 <term><filename class="libraryfile">libasan</filename></term>
501 <listitem>
502 <para>The Address Sanitizer runtime library</para>
503 <indexterm zone="ch-system-gcc libasan">
504 <primary sortas="b-libasan">libasan</primary>
505 </indexterm>
506 </listitem>
507 </varlistentry>
508
509 <varlistentry id="libatomic">
510 <term><filename class="libraryfile">libatomic</filename></term>
511 <listitem>
512 <para>GCC atomic built-in runtime library</para>
513 <indexterm zone="ch-system-gcc libatomic">
514 <primary sortas="b-libatomic">libatomic</primary>
515 </indexterm>
516 </listitem>
517 </varlistentry>
518
519 <varlistentry id="libcc1">
520 <term><filename class="libraryfile">libcc1</filename></term>
521 <listitem>
522 <para>A library that allows GDB to make use of GCC</para>
523 <indexterm zone="ch-system-gcc libcc1">
524 <primary sortas="b-libcc1">libcc1</primary>
525 </indexterm>
526 </listitem>
527 </varlistentry>
528
529 <varlistentry id="libgcc">
530 <term><filename class="libraryfile">libgcc</filename></term>
531 <listitem>
532 <para>Contains run-time support for <command>gcc</command></para>
533 <indexterm zone="ch-system-gcc libgcc">
534 <primary sortas="c-libgcc">libgcc</primary>
535 </indexterm>
536 </listitem>
537 </varlistentry>
538
539 <varlistentry id="libgcov">
540 <term><filename class="libraryfile">libgcov</filename></term>
541 <listitem>
542 <para>This library is linked into a program when GCC is instructed
543 to enable profiling</para>
544 <indexterm zone="ch-system-gcc libgcov">
545 <primary sortas="c-libgcov">libgcov</primary>
546 </indexterm>
547 </listitem>
548 </varlistentry>
549
550 <varlistentry id="libgomp">
551 <term><filename class="libraryfile">libgomp</filename></term>
552 <listitem>
553 <para>GNU implementation of the OpenMP API for multi-platform
554 shared-memory parallel programming in C/C++ and Fortran</para>
555 <indexterm zone="ch-system-gcc libgomp">
556 <primary sortas="c-libgomp">libgomp</primary>
557 </indexterm>
558 </listitem>
559 </varlistentry>
560
561 <varlistentry id="libhwasan">
562 <term><filename class="libraryfile">libhwasan</filename></term>
563 <listitem>
564 <para>The Hardware-assisted Address Sanitizer runtime library</para>
565 <indexterm zone="ch-system-gcc libhwasan">
566 <primary sortas="c-libhwasan">libhwasan</primary>
567 </indexterm>
568 </listitem>
569 </varlistentry>
570
571 <varlistentry id="libitm">
572 <term><filename class="libraryfile">libitm</filename></term>
573 <listitem>
574 <para>The GNU transactional memory library</para>
575 <indexterm zone="ch-system-gcc libitm">
576 <primary sortas="c-libitm">libitm</primary>
577 </indexterm>
578 </listitem>
579 </varlistentry>
580
581 <varlistentry id="liblsan">
582 <term><filename class="libraryfile">liblsan</filename></term>
583 <listitem>
584 <para>The Leak Sanitizer runtime library</para>
585 <indexterm zone="ch-system-gcc liblsan">
586 <primary sortas="c-liblsan">liblsan</primary>
587 </indexterm>
588 </listitem>
589 </varlistentry>
590
591 <varlistentry id="liblto_plugin">
592 <term><filename class="libraryfile">liblto_plugin</filename></term>
593 <listitem>
594 <para>GCC's LTO plugin allows Binutils to process object files
595 produced by GCC with LTO enabled</para>
596 <indexterm zone="ch-system-gcc liblto_plugin">
597 <primary sortas="c-liblto_plugin">liblto_plugin</primary>
598 </indexterm>
599 </listitem>
600 </varlistentry>
601
602 <varlistentry id="libquadmath">
603 <term><filename class="libraryfile">libquadmath</filename></term>
604 <listitem>
605 <para>GCC Quad Precision Math Library API</para>
606 <indexterm zone="ch-system-gcc libquadmath">
607 <primary sortas="c-libquadmath">libquadmath</primary>
608 </indexterm>
609 </listitem>
610 </varlistentry>
611
612 <varlistentry id="libssp">
613 <term><filename class="libraryfile">libssp</filename></term>
614 <listitem>
615 <para>Contains routines supporting GCC's stack-smashing protection
616 functionality. Normally it is not used, because Glibc also provides
617 those routines.</para>
618 <indexterm zone="ch-system-gcc libssp">
619 <primary sortas="c-libssp">libssp</primary>
620 </indexterm>
621 </listitem>
622 </varlistentry>
623
624 <varlistentry id="libstdc">
625 <term><filename class="libraryfile">libstdc++</filename></term>
626 <listitem>
627 <para>The standard C++ library</para>
628 <indexterm zone="ch-system-gcc libstdc">
629 <primary sortas="c-libstdc++">libstdc++</primary>
630 </indexterm>
631 </listitem>
632 </varlistentry>
633
634 <varlistentry id="libstdcexp">
635 <term><filename class="libraryfile">libstdc++exp</filename></term>
636 <listitem>
637 <para>Experimental C++ Contracts library</para>
638 <indexterm zone="ch-system-gcc libstdcexp">
639 <primary sortas="c-libstdc++exp">libstdc++exp</primary>
640 </indexterm>
641 </listitem>
642 </varlistentry>
643
644 <varlistentry id="libstdcfs">
645 <term><filename class="libraryfile">libstdc++fs</filename></term>
646 <listitem>
647 <para>ISO/IEC TS 18822:2015 Filesystem library</para>
648 <indexterm zone="ch-system-gcc libstdcfs">
649 <primary sortas="c-libstdc++fs">libstdc++fs</primary>
650 </indexterm>
651 </listitem>
652 </varlistentry>
653
654 <varlistentry id="libsupc">
655 <term><filename class="libraryfile">libsupc++</filename></term>
656 <listitem>
657 <para>Provides supporting routines for the C++ programming
658 language</para>
659 <indexterm zone="ch-system-gcc libsupc">
660 <primary sortas="c-libsupc++">libsupc++</primary>
661 </indexterm>
662 </listitem>
663 </varlistentry>
664
665 <varlistentry id="libtsan">
666 <term><filename class="libraryfile">libtsan</filename></term>
667 <listitem>
668 <para>The Thread Sanitizer runtime library</para>
669 <indexterm zone="ch-system-gcc libtsan">
670 <primary sortas="c-libtsan">libtsan</primary>
671 </indexterm>
672 </listitem>
673 </varlistentry>
674
675 <varlistentry id="libubsan">
676 <term><filename class="libraryfile">libubsan</filename></term>
677 <listitem>
678 <para>The Undefined Behavior Sanitizer runtime library</para>
679 <indexterm zone="ch-system-gcc libubsan">
680 <primary sortas="c-libubsan">libubsan</primary>
681 </indexterm>
682 </listitem>
683 </varlistentry>
684
685 </variablelist>
686
687 </sect2>
688
689</sect1>
Note: See TracBrowser for help on using the repository browser.