Document _FORTIFY_SOURCE, _REENTRANT, and _THREAD_SAFE.

This commit is contained in:
Michael Kerrisk 2007-01-28 19:30:54 +00:00
parent d6a7a7820e
commit d3bbf18d91
1 changed files with 61 additions and 1 deletions

View File

@ -121,6 +121,63 @@ and
.BR _XOPEN_SOURCE
with the value 600.
In addition, various GNU-specific extensions are also exposed.
.TP
.B _REENTRANT
Defining this macro exposes definitions of certain reentrant functions.
Avoid direct use of this macro; use
.I "cc -pthread"
instead.
.TP
.B _THREAD_SAFE
Synonym for
.BR _REENTRANT ,
provided for compatibility with some other implementations.
.TP
.B _FORTIFY_SOURCE
.\" For more detail, see:
.\" http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
.\" [PATCH] Object size checking to prevent (some) buffer overflows
.\" * From: Jakub Jelinek <jakub at redhat dot com>
.\" * To: gcc-patches at gcc dot gnu dot org
.\" * Date: Tue, 21 Sep 2004 04:16:40 -0400
Defining this macro causes some lightweight checks to be performed
to detect some buffer overflow errors when employing
various string and memory manipulation functions.
Not all buffer overflows are detected, just some common cases.
In the current implementation checks are added for
calls to
.BR memcpy (3),
.BR mempcpy (3),
.BR memmove (3),
.BR memset (3),
.BR stpcpy (3),
.BR strcpy (3),
.BR strncpy (3),
.BR strcat (3),
.BR strncat (3),
.BR sprintf (3),
.BR snprintf (3),
.BR vsprintf (3),
.BR vsnprintf (3),
and
.BR gets (3).
If
.B _FORTIFY_SOURCE
is set to 1, with compiler optimization level 1
.RI ( "gcc -O1" )
and above, checks that shouldn't change the behaviour of
conforming programs are performed.
With
.B _FORTIFY_SOURCE
set to 2 some more checking is added, but
some conforming programs might fail.
Some of the checks can be performed at compile time,
and result in compiler warnings;
other checks take place at run time,
and result in a run-time error if the check fails.
Use of this macro requires compiler support, available with
.BR gcc (1)
since version 4.0.
.PP
When
.BR gcc (1)
@ -154,8 +211,11 @@ is not specified by any standard,
but is employed on some other implementations.
.BR _BSD_SOURCE ,
.BR _SVID_SOURCE ,
.BR _GNU_SOURCE ,
.BR _FORTIFY_SOURCE ,
.BR _REENTRANT ,
and
.BR _GNU_SOURCE
.BR _THREAD_SAFE
are Linux (glibc) specific.
.SH NOTES
.I <features.h>