Blob Blame History Raw
From d53057a3dcef8ee2f889fc0cedcc84477b3e3a29 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nikola=20Forr=C3=B3?= <nforro@redhat.com>
Date: Wed, 23 Mar 2016 10:40:40 +0100
Subject: [PATCH] Backport changes in FTM requirements from 4.05 to 4.04

Backported upstream commits:
368bbfa9296943106077375096c3f5b683efebc0
0509285e2ca42446f79267a8977b39e41b537a93
57f79036a40b88ca53609ea6d5c2c6612612d387
405180660c8a7aacf4e9ecf279bf1202d22f5c07
efc626f8f5026861e9c6b54b6a137020d947541c
119cb943f0e9aacc2e87256f06fb318fcf189e5f
b1052524611342c538f84d78c5caab86c1c4b130
344c74c02aaabd775259f0b794f1b2366fa789b9
d05445341998d5099f4868caaa6b959da47faed6
eb15868c65796a75ecb6b7681446f05ff67996ad
a446ac0c685c0f52550cb1e5acb24c3f9b09d8af
e464f0546d0eca9c513e12809737e448ec759b42
a7d7000f592974031fe03b4c98a77cc6917cf877
d1473a830fa2bee5a615c4681fa98b37af5e7a55
b0da7b8b76a0ba459967f1e8d29eb7051efdc937
f125c76932e00adcde009741fa2e1770775832cc
e1d0532862ac1cbf764225c38831a4a81fa416cd
38e3518901069623800ac153a2b40ad5e0eba343
7f0ec8eed6b67f0dab1cc7ca86defe9f73fb010c
cf7fa0a1792a2e37930ed75cf45007cf365a9f64
49d2e094565e3a9177739dbf12695fd82e4767da
1e92200fa9c01858081eba76dc02c8e7b416b697
52d1e2b24763f4b8f241165f4816727ba61a36d4
b40ec4cbf85bebdd768fce6f624d30247c5531d3
3dd87b7c99fb5dec43959c3f379f82b2299b907c
51c612fb9fdfd41d14913d58fee24ca24c4051fd
aa573adabf1dbd7977ad214c600cdba0d4219c36
b68a13bc33870133f0bd000490ece0375656536a
a48088b0e627d37a9109bc18ef71f703dd03afde
c8fab0f00eb39899f0f00013336ae148fccd3c6f
16347c676c7f9387295a915d5b71dd4dde6e08e2
e9d91bcf4c15696e4f2009785f821b0ec26f24ad
f04d68ba16f9a1f650ab75b3514c3436c6c8b794
636ed4d58d2d8531e0d59e6c162674a5c3e3401f
cd2d5ec163267ae1b98c6f8cc6a52dbc7fe876d6
50d844a9f16f1604a1bc209d6a4d3af58079c331
827cdae3f186787ff119ed82739eb75ae8497b9a
e0a68e13d94d8ca155f7127eda7b0c101ca031dd
4f71ba5dbd55f118fc8128aff917e3ce6b23dfa4
7943641180dfc2e0d77ddd7d8fa0a777e7868196
bc3e200eb34b785862f006e52716af6ab33bf42f
1b5de130aaa942c61fb825f1efc810192c8fafa9
6b0f5f5c4c3496df4ee41bfe2a6379b97cce59aa
f8e7625cad44a87d2277b018ed79fa04fa74d660
f8619b6a26b37064a72e29fba5c3d127ea55682f
6e0869f758f67b256f6593adac0652c45f183365
2b1b04248762a6d9d2b0f277b8c6ba92c8d120a8
a30128b4cc3ff82cceebe21c6cb8823ddfe0382f
c1016e876793ff896798624011e5bc1f2362990b
9db90c7cc98c4630a7682895643f119c575a494e
38d9e98ea32b698b24681b94ccd60a24185d3ac1
97ff735155d92be46a23cfcf52137add5ee9d101
d59161f912ed74a9c187478d7c8315d67f65fbb3
cff459dea22fb845de6bfa8e241eaf4c09e67bb8
0c52f6d623636a61eacd0f7b7a3bb942793a2a05
c48f13805c8c4a68343d9daae257f1ec0c499b86
6550b8275b72b79a7054119c81d3ece949990a92
5358a2546dbbb97484003456fd382ba1eb8a5c61
852d92f7ae5e533bfc2de49aab151f540fdfa937
1d229d9f728afa0a21613bc89b6af9bdfbbd6efd
---
 man2/_exit.2                 |   6 +-
 man2/access.2                |   2 +-
 man2/acct.2                  |  10 +-
 man2/adjtimex.2              |   1 -
 man2/brk.2                   |  24 ++--
 man2/chdir.2                 |   8 +-
 man2/chmod.2                 |  12 +-
 man2/chown.2                 |  10 +-
 man2/chroot.2                |   7 +-
 man2/clock_nanosleep.2       |   2 +-
 man2/clone.2                 |  22 +---
 man2/fcntl.2                 |   4 +-
 man2/fsync.2                 |  11 +-
 man2/getdomainname.2         |  12 +-
 man2/getgroups.2             |   5 +-
 man2/gethostname.2           |  12 +-
 man2/getpagesize.2           |  14 ++-
 man2/getsid.2                |   6 +-
 man2/gettimeofday.2          |   5 +-
 man2/kill.2                  |   2 +-
 man2/killpg.2                |   6 +-
 man2/link.2                  |   2 +-
 man2/madvise.2               |   9 ++
 man2/mincore.2               |   5 +-
 man2/mkdir.2                 |   2 +-
 man2/mknod.2                 |   6 +-
 man2/mmap.2                  |   8 +-
 man2/nice.2                  |   4 +-
 man2/open.2                  |   2 +-
 man2/posix_fadvise.2         |   2 +-
 man2/readlink.2              |   7 +-
 man2/readv.2                 |   5 +-
 man2/rename.2                |   2 +-
 man2/select.2                |   2 +-
 man2/select_tut.2            |   2 +-
 man2/seteuid.2               |   3 +-
 man2/setpgid.2               |  19 +--
 man2/setreuid.2              |   6 +-
 man2/sigaction.2             |   2 +-
 man2/sigaltstack.2           |   8 +-
 man2/signal.2                |  38 +++---
 man2/sigpending.2            |   2 +-
 man2/sigprocmask.2           |   2 +-
 man2/sigsuspend.2            |   2 +-
 man2/stat.2                  |  12 +-
 man2/stime.2                 |   5 +-
 man2/symlink.2               |   7 +-
 man2/sync.2                  |   6 +-
 man2/truncate.2              |  15 +--
 man2/unlink.2                |   2 +-
 man2/unshare.2               |  22 +---
 man2/utimensat.2             |   4 +-
 man2/vfork.2                 |  11 +-
 man2/vhangup.2               |  10 +-
 man2/wait.2                  |   8 +-
 man2/wait4.2                 |  16 +--
 man3/a64l.3                  |   6 +-
 man3/abs.3                   |   6 +-
 man3/acos.3                  |   8 +-
 man3/acosh.3                 |  19 ++-
 man3/addseverity.3           |   5 +-
 man3/adjtime.3               |   5 +-
 man3/asin.3                  |   8 +-
 man3/asinh.3                 |  21 ++--
 man3/atan.3                  |   8 +-
 man3/atan2.3                 |   8 +-
 man3/atanh.3                 |  21 ++--
 man3/atoi.3                  |   7 +-
 man3/cbrt.3                  |  19 ++-
 man3/ceil.3                  |   8 +-
 man3/cfree.3                 |   5 +-
 man3/clearenv.3              |   3 +-
 man3/clock_getcpuclockid.3   |   2 +-
 man3/copysign.3              |   8 +-
 man3/cos.3                   |   8 +-
 man3/cosh.3                  |   8 +-
 man3/ctermid.3               |   3 +-
 man3/ctime.3                 |   4 +-
 man3/daemon.3                |  10 +-
 man3/dirfd.3                 |   8 +-
 man3/div.3                   |   6 +-
 man3/drand48.3               |   4 +-
 man3/drand48_r.3             |   3 +-
 man3/dysize.3                |   5 +-
 man3/ecvt.3                  |  11 +-
 man3/ecvt_r.3                |   3 +-
 man3/endian.3                |  25 +++-
 man3/erf.3                   |  16 +--
 man3/erfc.3                  |  16 +--
 man3/exp.3                   |   8 +-
 man3/exp2.3                  |   5 +-
 man3/expm1.3                 |  19 ++-
 man3/fabs.3                  |   8 +-
 man3/fdim.3                  |   6 +-
 man3/ferror.3                |   2 +-
 man3/fexecve.3               |   2 +-
 man3/ffs.3                   |   5 +-
 man3/fgetgrent.3             |   5 +-
 man3/fgetpwent.3             |   5 +-
 man3/finite.3                |  24 ++--
 man3/flockfile.3             |   4 +-
 man3/floor.3                 |   8 +-
 man3/fma.3                   |   6 +-
 man3/fmax.3                  |   6 +-
 man3/fmemopen.3              |   2 +-
 man3/fmin.3                  |   6 +-
 man3/fmod.3                  |   8 +-
 man3/fopen.3                 |   2 +-
 man3/fpclassify.3            |  23 ++--
 man3/frexp.3                 |   8 +-
 man3/fseeko.3                |   3 +-
 man3/futimes.3               |   5 +-
 man3/fwide.3                 |   5 +-
 man3/gamma.3                 |   9 +-
 man3/gcvt.3                  |  11 +-
 man3/getaddrinfo.3           |   5 +-
 man3/getcwd.3                |  11 +-
 man3/getdate.3               |   4 +-
 man3/getdirentries.3         |   5 +-
 man3/getdtablesize.3         |   9 +-
 man3/getgrent.3              |  14 ++-
 man3/getgrent_r.3            |   5 +-
 man3/getgrnam.3              |   4 +-
 man3/getgrouplist.3          |   5 +-
 man3/gethostbyname.3         |  18 ++-
 man3/gethostid.3             |  16 ++-
 man3/getline.3               |   2 +-
 man3/getloadavg.3            |  14 ++-
 man3/getmntent.3             |   5 +-
 man3/getnameinfo.3           |  16 ++-
 man3/getnetent_r.3           |   7 +-
 man3/getpass.3               |   7 +-
 man3/getprotoent_r.3         |   7 +-
 man3/getpwent.3              |   6 +-
 man3/getpwent_r.3            |  10 +-
 man3/getpwnam.3              |   4 +-
 man3/getrpcent_r.3           |   7 +-
 man3/getservent_r.3          |   7 +-
 man3/getspnam.3              |   7 +-
 man3/getsubopt.3             |   6 +-
 man3/getusershell.3          |  12 +-
 man3/getutent.3              |  16 ++-
 man3/getw.3                  |   7 +-
 man3/gsignal.3               |   5 +-
 man3/hypot.3                 |  17 ++-
 man3/ilogb.3                 |  20 ++--
 man3/inet.3                  |   7 +-
 man3/initgroups.3            |   5 +-
 man3/insque.3                |   6 +-
 man3/isalpha.3               |  11 +-
 man3/isgreater.3             |   6 +-
 man3/iswblank.3              |   6 +-
 man3/j0.3                    |  10 +-
 man3/ldexp.3                 |   8 +-
 man3/lgamma.3                |  23 ++--
 man3/lockf.3                 |   6 +-
 man3/log.3                   |   8 +-
 man3/log10.3                 |   8 +-
 man3/log1p.3                 |  19 ++-
 man3/log2.3                  |   5 +-
 man3/logb.3                  |  19 ++-
 man3/lrint.3                 |   6 +-
 man3/lround.3                |   6 +-
 man3/makedev.3               |  11 +-
 man3/matherr.3               |  16 ++-
 man3/mbsnrtowcs.3            |   2 +-
 man3/mkdtemp.3               |   8 +-
 man3/mkfifo.3                |   2 +-
 man3/mkstemp.3               |  11 +-
 man3/mktemp.3                |  11 +-
 man3/modf.3                  |   8 +-
 man3/mq_receive.3            |   2 +-
 man3/mq_send.3               |   2 +-
 man3/nan.3                   |   6 +-
 man3/nextafter.3             |  25 ++--
 man3/on_exit.3               |   5 +-
 man3/opendir.3               |   2 +-
 man3/perror.3                |   5 +-
 man3/popen.3                 |   3 +-
 man3/posix_fallocate.3       |   2 +-
 man3/posix_madvise.3         |   2 +-
 man3/posix_memalign.3        |  13 +--
 man3/pow.3                   |   8 +-
 man3/printf.3                |   9 +-
 man3/profil.3                |  10 +-
 man3/psignal.3               |  12 +-
 man3/pthread_attr_setstack.3 |   2 +-
 man3/putenv.3                |   4 +-
 man3/putpwent.3              |   5 +-
 man3/qecvt.3                 |   2 +-
 man3/rand.3                  |   2 +-
 man3/random.3                |   6 +-
 man3/random_r.3              |   3 +-
 man3/rcmd.3                  |   5 +-
 man3/readdir.3               | 268 ++++++++++++++++++++++++++-----------------
 man3/realpath.3              |   6 +-
 man3/remainder.3             |  23 ++--
 man3/remquo.3                |   6 +-
 man3/rexec.3                 |  10 +-
 man3/rint.3                  |  24 ++--
 man3/round.3                 |   6 +-
 man3/rpmatch.3               |   5 +-
 man3/scalb.3                 |  10 +-
 man3/scalbln.3               |  15 +--
 man3/scandir.3               |  10 +-
 man3/scanf.3                 |   6 +-
 man3/seekdir.3               |   4 +-
 man3/sem_wait.3              |   2 +-
 man3/setbuf.3                |   5 +-
 man3/setenv.3                |   3 +-
 man3/setjmp.3                | 223 ++++++++++++++++++++++++++++-------
 man3/setnetgrent.3           |   5 +-
 man3/siginterrupt.3          |   8 +-
 man3/signbit.3               |   6 +-
 man3/significand.3           |   3 +-
 man3/sigset.3                |   4 +-
 man3/sigsetops.3             |   2 +-
 man3/sigvec.3                |   5 +-
 man3/sigwait.3               |   2 +-
 man3/sin.3                   |   8 +-
 man3/sinh.3                  |   8 +-
 man3/sockatmark.3            |   2 +-
 man3/sqrt.3                  |   8 +-
 man3/stpcpy.3                |   2 +-
 man3/stpncpy.3               |   2 +-
 man3/strdup.3                |  10 +-
 man3/strerror.3              |   2 +-
 man3/strnlen.3               |   2 +-
 man3/strsep.3                |   5 +-
 man3/strsignal.3             |   2 +-
 man3/strtod.3                |   6 +-
 man3/strtok.3                |   4 +-
 man3/strtol.3                |   7 +-
 man3/strtoul.3               |   7 +-
 man3/syslog.3                |   5 +-
 man3/tan.3                   |   8 +-
 man3/tanh.3                  |   8 +-
 man3/telldir.3               |   4 +-
 man3/tempnam.3               |   5 +-
 man3/termios.3               |   5 +-
 man3/tgamma.3                |   7 +-
 man3/timegm.3                |   5 +-
 man3/timeradd.3              |   5 +-
 man3/tmpnam.3                |  11 +-
 man3/toascii.3               |   4 +-
 man3/trunc.3                 |   6 +-
 man3/ttyslot.3               |   8 +-
 man3/tzset.3                 |  12 +-
 man3/ualarm.3                |  11 +-
 man3/unlocked_stdio.3        |   7 +-
 man3/usleep.3                |  11 +-
 man3/wcpcpy.3                |   2 +-
 man3/wcpncpy.3               |   2 +-
 man3/wcscasecmp.3            |   2 +-
 man3/wcsdup.3                |   2 +-
 man3/wcsncasecmp.3           |   2 +-
 man3/wcsnlen.3               |   2 +-
 man3/wcsnrtombs.3            |   2 +-
 man3/wprintf.3               |   5 +-
 man3/y0.3                    |  10 +-
 man7/feature_test_macros.7   | 119 +++++++++++++++++--
 261 files changed, 1467 insertions(+), 1111 deletions(-)

diff --git a/man2/_exit.2 b/man2/_exit.2
index b0213ac..3f9b6a1 100644
--- a/man2/_exit.2
+++ b/man2/_exit.2
@@ -46,11 +46,7 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR _Exit ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man2/access.2 b/man2/access.2
index 47101d7..75a9c9b 100644
--- a/man2/access.2
+++ b/man2/access.2
@@ -67,7 +67,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
diff --git a/man2/acct.2 b/man2/acct.2
index 37266c4..237ab6d 100644
--- a/man2/acct.2
+++ b/man2/acct.2
@@ -46,7 +46,15 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR acct ():
-_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.nf
+    Since glibc 2.21:
+.\"		commit 266865c0e7b79d4196e2cc393693463f03c90bd8
+        _DEFAULT_SOURCE
+    In glibc 2.19 and 2.20:
+        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+    Up to and including glibc 2.19:
+        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.fi
 .SH DESCRIPTION
 The
 .BR acct ()
diff --git a/man2/adjtimex.2 b/man2/adjtimex.2
index e378b6b..e9ffb4f 100644
--- a/man2/adjtimex.2
+++ b/man2/adjtimex.2
@@ -31,7 +31,6 @@
 adjtimex \- tune kernel clock
 .SH SYNOPSIS
 .nf
-.BR "#define _BSD_SOURCE" "      /* See feature_test_macros(7) */"
 .B #include <sys/timex.h>
 
 .BI "int adjtimex(struct timex *" "buf" );
diff --git a/man2/brk.2 b/man2/brk.2
index 3aec7a5..33bfbb1 100644
--- a/man2/brk.2
+++ b/man2/brk.2
@@ -47,17 +47,27 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .PD 0
 .TP 4
-Since glibc 2.12:
+Since glibc 2.19:
 .nf
-_BSD_SOURCE || _SVID_SOURCE ||
-    (_XOPEN_SOURCE\ >=\ 500 ||
-        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
-    !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600)
+_DEFAULT_SOURCE ||
+    (_XOPEN_SOURCE\ >=\ 500) &&
+.\"    (_XOPEN_SOURCE\ >=\ 500 ||
+.\"        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
+    ! (_POSIX_C_SOURCE\ >=\ 200112L)
+.fi
 .TP 4
+From glibc 2.12 to 2.19:
+.nf
+_BSD_SOURCE || _SVID_SOURCE ||
+    (_XOPEN_SOURCE\ >=\ 500) &&
+.\"    (_XOPEN_SOURCE\ >=\ 500 ||
+.\"        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
+    ! (_POSIX_C_SOURCE\ >=\ 200112L)
 .fi
+.TP 4
 Before glibc 2.12:
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .PD
 .RE
 .ad b
diff --git a/man2/chdir.2 b/man2/chdir.2
index 0fdd718..4659af2 100644
--- a/man2/chdir.2
+++ b/man2/chdir.2
@@ -49,10 +49,10 @@ Feature Test Macro Requirements for glibc (see
 .PD 0
 .ad l
 .RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
-.br
-|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Glibc up to and including 2.19: */ _BSD_SOURCE
 .RE
 .ad
 .PD
diff --git a/man2/chmod.2 b/man2/chmod.2
index e05a4cf..de10913 100644
--- a/man2/chmod.2
+++ b/man2/chmod.2
@@ -56,11 +56,11 @@ Feature Test Macro Requirements for glibc (see
 .PD 0
 .BR fchmod ():
 .RS 4
-_BSD_SOURCE ||
-_XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
-.br
-|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+/* Since glibc 2.16: */ _POSIX_C_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
+    || /* Glibc versions <= 2.15: */ _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Glibc 2.12 to 2.15: */ _POSIX_C_SOURCE\ >=\ 200809L
 .RE
 .PD
 .sp
@@ -70,7 +70,7 @@ _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
diff --git a/man2/chown.2 b/man2/chown.2
index 1e040d4..f3c591d 100644
--- a/man2/chown.2
+++ b/man2/chown.2
@@ -66,10 +66,10 @@ Feature Test Macro Requirements for glibc (see
 .PD 0
 .ad l
 .RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
-.br
-|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+/* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .sp
 .BR fchownat ():
@@ -78,7 +78,7 @@ _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
diff --git a/man2/chroot.2 b/man2/chroot.2
index 1a128a5..fa2655e 100644
--- a/man2/chroot.2
+++ b/man2/chroot.2
@@ -50,10 +50,9 @@ Feature Test Macro Requirements for glibc (see
 .TP 4
 Since glibc 2.2.2:
 .nf
-_BSD_SOURCE ||
-    (_XOPEN_SOURCE\ >=\ 500 ||
-        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
-    !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600)
+_XOPEN_SOURCE && ! (_POSIX_C_SOURCE\ >=\ 200112L)
+    || /* Since glibc 2.20: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .TP 4
 .fi
 Before glibc 2.2.2: none
diff --git a/man2/clock_nanosleep.2 b/man2/clock_nanosleep.2
index 95041e4..e0ef91a 100644
--- a/man2/clock_nanosleep.2
+++ b/man2/clock_nanosleep.2
@@ -45,7 +45,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR clock_nanosleep ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L
+_POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man2/clone.2 b/man2/clone.2
index 70488ac..1d0cb92 100644
--- a/man2/clone.2
+++ b/man2/clone.2
@@ -46,6 +46,7 @@ clone, __clone2 \- create a child process
 .nf
 /* Prototype for the glibc wrapper function */
 
+.B #define _GNU_SOURCE
 .B #include <sched.h>
 
 .BI "int clone(int (*" "fn" ")(void *), void *" child_stack ,
@@ -59,27 +60,6 @@ clone, __clone2 \- create a child process
 .BI "          void *" ptid ", void *" ctid ,
 .BI "          struct pt_regs *" regs );
 .fi
-.sp
-.in -4n
-Feature Test Macro Requirements for glibc wrapper function (see
-.BR feature_test_macros (7)):
-.in
-.sp
-.BR clone ():
-.ad l
-.RS 4
-.PD 0
-.TP 4
-Since glibc 2.14:
-_GNU_SOURCE
-.TP 4
-.\" See http://sources.redhat.com/bugzilla/show_bug.cgi?id=4749
-Before glibc 2.14:
-_BSD_SOURCE || _SVID_SOURCE
-    /* _GNU_SOURCE also suffices */
-.PD
-.RE
-.ad b
 .SH DESCRIPTION
 .BR clone ()
 creates a new process, in a manner similar to
diff --git a/man2/fcntl.2 b/man2/fcntl.2
index 36ca667..9ed867d 100644
--- a/man2/fcntl.2
+++ b/man2/fcntl.2
@@ -1677,8 +1677,8 @@ and
 .B F_SETOWN
 are specified in POSIX.1-2001.
 (To get their definitions, define either
-.BR _BSD_SOURCE ,
-or
+.\" .BR _BSD_SOURCE ,
+.\" or
 .BR _XOPEN_SOURCE
 with the value 500 or greater, or
 .BR _POSIX_C_SOURCE
diff --git a/man2/fsync.2 b/man2/fsync.2
index ea54b2f..ad40e89 100644
--- a/man2/fsync.2
+++ b/man2/fsync.2
@@ -51,13 +51,14 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR fsync ():
-_BSD_SOURCE || _XOPEN_SOURCE
-.br
-         || /* since glibc 2.8: */ _POSIX_C_SOURCE\ >=\ 200112L
-.\" _POSIX_C_SOURCE\ >=\ 200112L only since glibc 2.8
+    Glibc 2.16 and later:
+        No feature test macros need be defined
+    Glibc up to and including 2.15:
+        _BSD_SOURCE || _XOPEN_SOURCE
+            || /* since glibc 2.8: */ _POSIX_C_SOURCE\ >=\ 200112L
 .br
 .BR fdatasync ():
-_POSIX_C_SOURCE\ >=\ 199309L || _XOPEN_SOURCE\ >=\ 500
+    _POSIX_C_SOURCE\ >=\ 199309L || _XOPEN_SOURCE\ >=\ 500
 .SH DESCRIPTION
 .BR fsync ()
 transfers ("flushes") all modified in-core data of
diff --git a/man2/getdomainname.2 b/man2/getdomainname.2
index e44ba28..88bd254 100644
--- a/man2/getdomainname.2
+++ b/man2/getdomainname.2
@@ -44,9 +44,15 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR getdomainname (),
 .BR setdomainname ():
-.RS 4
-_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
-.RE
+.nf
+    Since glibc 2.21:
+.\"		commit 266865c0e7b79d4196e2cc393693463f03c90bd8
+        _DEFAULT_SOURCE
+    In glibc 2.19 and 2.20:
+        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+    Up to and including glibc 2.19:
+        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.fi
 .ad
 .SH DESCRIPTION
 These functions are used to access or to change the NIS domain name of the
diff --git a/man2/getgroups.2 b/man2/getgroups.2
index 23faa77..7b2bd47 100644
--- a/man2/getgroups.2
+++ b/man2/getgroups.2
@@ -49,7 +49,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR setgroups ():
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _SVID_SOURCE
 .SH DESCRIPTION
 .PP
 .BR getgroups ()
diff --git a/man2/gethostname.2 b/man2/gethostname.2
index a1dd35b..5a1bc63 100644
--- a/man2/gethostname.2
+++ b/man2/gethostname.2
@@ -55,9 +55,15 @@ _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
 .RE
 .br
 .BR sethostname ():
-.RS 4
-_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
-.RE
+.nf
+    Since glibc 2.21:
+.\"		commit 266865c0e7b79d4196e2cc393693463f03c90bd8
+        _DEFAULT_SOURCE
+    In glibc 2.19 and 2.20:
+        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+    Up to and including glibc 2.19:
+        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.fi
 .PD
 .ad
 .SH DESCRIPTION
diff --git a/man2/getpagesize.2 b/man2/getpagesize.2
index 59da2b3..03edb9b 100644
--- a/man2/getpagesize.2
+++ b/man2/getpagesize.2
@@ -40,15 +40,19 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .PD 0
 .TP 4
-Since glibc 2.12:
+Since glibc 2.19:
 .nf
-_BSD_SOURCE ||
-    !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600)
+_DEFAULT_SOURCE || ! (_POSIX_C_SOURCE\ >=\ 200112L)
+.TP 4
+.fi
+From glibc 2.12 to 2.19:
+.nf
+_BSD_SOURCE || ! (_POSIX_C_SOURCE\ >=\ 200112L)
 .TP 4
 .fi
 Before glibc 2.12:
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .PD
 .RE
 .ad b
diff --git a/man2/getsid.2 b/man2/getsid.2
index f5022be..378c5bd 100644
--- a/man2/getsid.2
+++ b/man2/getsid.2
@@ -40,10 +40,10 @@ Feature Test Macro Requirements for glibc (see
 .PD 0
 .BR getsid ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .br
-|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
 .RE
 .PD
 .ad
diff --git a/man2/gettimeofday.2 b/man2/gettimeofday.2
index 57f8822..92d96d9 100644
--- a/man2/gettimeofday.2
+++ b/man2/gettimeofday.2
@@ -56,7 +56,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR settimeofday ():
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 The functions
 .BR gettimeofday ()
diff --git a/man2/kill.2 b/man2/kill.2
index 350b6e1..a733f5f 100644
--- a/man2/kill.2
+++ b/man2/kill.2
@@ -60,7 +60,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .ad l
 .BR kill ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
 .ad b
 .SH DESCRIPTION
 The
diff --git a/man2/killpg.2 b/man2/killpg.2
index c5f1885..d5da6c0 100644
--- a/man2/killpg.2
+++ b/man2/killpg.2
@@ -54,8 +54,10 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .TP 4
 .BR killpg ():
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .ad
 .SH DESCRIPTION
 .BR killpg ()
diff --git a/man2/link.2 b/man2/link.2
index 0f2239b..dad97b1 100644
--- a/man2/link.2
+++ b/man2/link.2
@@ -56,7 +56,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
diff --git a/man2/madvise.2 b/man2/madvise.2
index f448fc0..18cfec2 100644
--- a/man2/madvise.2
+++ b/man2/madvise.2
@@ -46,7 +46,16 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR madvise ():
+.PD 0
+.RS 4
+.TP 4
+Since glibc 2.19:
+_DEFAULT_SOURCE
+.TP
+Up to and including glibc 2.19:
 _BSD_SOURCE
+.RE
+.PD
 .SH DESCRIPTION
 The
 .BR madvise ()
diff --git a/man2/mincore.2 b/man2/mincore.2
index cd1d12a..b3903e0 100644
--- a/man2/mincore.2
+++ b/man2/mincore.2
@@ -47,7 +47,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR mincore ():
-_BSD_SOURCE || _SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .SH DESCRIPTION
 .BR mincore ()
 returns a vector that indicates whether pages
diff --git a/man2/mkdir.2 b/man2/mkdir.2
index 1a7b040..d26268b 100644
--- a/man2/mkdir.2
+++ b/man2/mkdir.2
@@ -36,7 +36,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
diff --git a/man2/mknod.2 b/man2/mknod.2
index ef7da2a..4116ccb 100644
--- a/man2/mknod.2
+++ b/man2/mknod.2
@@ -39,8 +39,10 @@ Feature Test Macro Requirements for glibc (see
 .BR mknod ():
 .ad l
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE 
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man2/mmap.2 b/man2/mmap.2
index fae1c6d..ad9f0e6 100644
--- a/man2/mmap.2
+++ b/man2/mmap.2
@@ -585,11 +585,15 @@ is 0 (NULL), then the mapped address will be 0 (NULL).
 
 Certain
 .I flags
-constants are defined only if either
+constants are defined only if suitable feature test macros are defined
+(possibly by default):
+.BR _DEFAULT_SOURCE
+with glibc 2.19 or later;
+or
 .BR _BSD_SOURCE
 or
 .BR _SVID_SOURCE
-is defined.
+in glibc 2.19 and earlier.
 (Requiring
 .BR _GNU_SOURCE
 also suffices,
diff --git a/man2/nice.2 b/man2/nice.2
index 649f2a5..84e4448 100644
--- a/man2/nice.2
+++ b/man2/nice.2
@@ -42,7 +42,9 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR nice ():
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE
+_XOPEN_SOURCE
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE 
 .SH DESCRIPTION
 .BR nice ()
 adds
diff --git a/man2/open.2 b/man2/open.2
index 4587b7d..29ca274 100644
--- a/man2/open.2
+++ b/man2/open.2
@@ -78,7 +78,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
diff --git a/man2/posix_fadvise.2 b/man2/posix_fadvise.2
index 11b0dcc..8a314a2 100644
--- a/man2/posix_fadvise.2
+++ b/man2/posix_fadvise.2
@@ -44,7 +44,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR posix_fadvise ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L
+_POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man2/readlink.2 b/man2/readlink.2
index e81db53..52fd150 100644
--- a/man2/readlink.2
+++ b/man2/readlink.2
@@ -66,8 +66,9 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR readlink ():
 .RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _POSIX_C_SOURCE\ >=\ 200112L
+_XOPEN_SOURCE\ >=\ 500 || _POSIX_C_SOURCE\ >=\ 200112L
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED 
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .sp
 .BR readlinkat ():
@@ -76,7 +77,7 @@ _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _POSIX_C_SOURCE\ >=\ 200112L
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
diff --git a/man2/readv.2 b/man2/readv.2
index 3aa3d77..9736957 100644
--- a/man2/readv.2
+++ b/man2/readv.2
@@ -54,7 +54,10 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR preadv (),
 .BR pwritev ():
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 The
 .BR readv ()
diff --git a/man2/rename.2 b/man2/rename.2
index 56a6f38..9fbf78f 100644
--- a/man2/rename.2
+++ b/man2/rename.2
@@ -61,7 +61,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
diff --git a/man2/select.2 b/man2/select.2
index 2c84880..e019333 100644
--- a/man2/select.2
+++ b/man2/select.2
@@ -77,7 +77,7 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR pselect ():
-_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600
+_POSIX_C_SOURCE\ >=\ 200112L
 .SH DESCRIPTION
 .BR select ()
 and
diff --git a/man2/select_tut.2 b/man2/select_tut.2
index c89832f..185dfb1 100644
--- a/man2/select_tut.2
+++ b/man2/select_tut.2
@@ -71,7 +71,7 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR pselect ():
-_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600
+_POSIX_C_SOURCE\ >=\ 200112L
 .SH DESCRIPTION
 .BR select ()
 (or
diff --git a/man2/seteuid.2 b/man2/seteuid.2
index 1817efb..307adbd 100644
--- a/man2/seteuid.2
+++ b/man2/seteuid.2
@@ -47,7 +47,8 @@ Feature Test Macro Requirements for glibc (see
 .BR seteuid (),
 .BR setegid ():
 .RS 4
-_BSD_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600
+_POSIX_C_SOURCE\ >=\ 200112L
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man2/setpgid.2 b/man2/setpgid.2
index b24fb40..1aeb9c3 100644
--- a/man2/setpgid.2
+++ b/man2/setpgid.2
@@ -74,26 +74,27 @@ Feature Test Macro Requirements for glibc (see
 .PD 0
 .BR getpgid ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .br
-|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
 .RE
 .sp
 .BR setpgrp "() (POSIX.1):"
 .nf
-    _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-    _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
-.br
-    || /* Since glibc 2.19: */ _BSD_SOURCE
+    _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+        || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+        || /* Glibc versions <= 2.19: */ _SVID_SOURCE
 .fi
 .sp
 .BR setpgrp "()\ (BSD),"
-.BR getpgrp "()\ (BSD) [before glibc 2.19]:"
+.BR getpgrp "()\ (BSD):"
 .nf
+    [These are available only before glibc 2.19]
     _BSD_SOURCE &&
         !\ (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE ||
-           _XOPEN_SOURCE_EXTENDED || _GNU_SOURCE || _SVID_SOURCE)
+            _GNU_SOURCE || _SVID_SOURCE)
 .fi
 .PD
 .ad
diff --git a/man2/setreuid.2 b/man2/setreuid.2
index ede24ae..2f48b56 100644
--- a/man2/setreuid.2
+++ b/man2/setreuid.2
@@ -64,8 +64,10 @@ Feature Test Macro Requirements for glibc (see
 .BR setregid ():
 .RS 4
 .ad l
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .ad
 .RE
 .SH DESCRIPTION
diff --git a/man2/sigaction.2 b/man2/sigaction.2
index 803da6b..3db4ff7 100644
--- a/man2/sigaction.2
+++ b/man2/sigaction.2
@@ -64,7 +64,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .ad l
 .BR sigaction ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
 
 .IR siginfo_t :
 _POSIX_C_SOURCE >= 199309L
diff --git a/man2/sigaltstack.2 b/man2/sigaltstack.2
index 122b4b8..d79d054 100644
--- a/man2/sigaltstack.2
+++ b/man2/sigaltstack.2
@@ -41,10 +41,10 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .RS 4
 .PD 0
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
-.br
-|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .PD
 .RE
 .ad
diff --git a/man2/signal.2 b/man2/signal.2
index 0f1c2b0..9803c87 100644
--- a/man2/signal.2
+++ b/man2/signal.2
@@ -155,6 +155,10 @@ glibc also defines (the BSD-derived)
 .I sig_t
 if
 .B _BSD_SOURCE
+(glibc 2.19 and earlier)
+or
+.BR _DEFAULT_SOURCE
+(glibc 2.19 and later)
 is defined.
 Without use of such a type, the declaration of
 .BR signal ()
@@ -232,34 +236,18 @@ wrapper function does not invoke the kernel system call.
 Instead, it calls
 .BR sigaction (2)
 using flags that supply BSD semantics.
-This default behavior is provided as long as the
-.B _BSD_SOURCE
-feature test macro is defined.
-By default,
+This default behavior is provided as long as a suitable
+feature test macro is defined:
 .B _BSD_SOURCE
-is defined;
-it is also implicitly defined if one defines
-.BR _GNU_SOURCE ,
-and can of course be explicitly defined.
-.IP *
-On glibc 2 and later, if the
-.B _BSD_SOURCE
-feature test macro is not defined, then
+on glibc 2.19 and earlier or
+.BR _DEFAULT_SOURCE
+in glibc 2.19 and later.
+(By default, these macros are defined; see
+.BR feature_test_macros (7)
+for details.)
+If such a feature test macro is not defined, then
 .BR signal ()
 provides System\ V semantics.
-(The default implicit definition of
-.B _BSD_SOURCE
-is not provided if one invokes
-.BR gcc (1)
-in one of its standard modes
-.RI ( -std=xxx " or " -ansi )
-or defines various other feature test macros such as
-.BR _POSIX_SOURCE ,
-.BR _XOPEN_SOURCE ,
-or
-.BR _SVID_SOURCE ;
-see
-.BR feature_test_macros (7).)
 .\"
 .\" System V semantics are also provided if one uses the separate
 .\" .BR sysv_signal (3)
diff --git a/man2/sigpending.2 b/man2/sigpending.2
index 6e29d30..7aeae54 100644
--- a/man2/sigpending.2
+++ b/man2/sigpending.2
@@ -41,7 +41,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .ad l
 .BR sigpending ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
 .ad b
 .SH DESCRIPTION
 .PP
diff --git a/man2/sigprocmask.2 b/man2/sigprocmask.2
index ef4d910..e81a9f5 100644
--- a/man2/sigprocmask.2
+++ b/man2/sigprocmask.2
@@ -42,7 +42,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .ad l
 .BR sigprocmask ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
 .ad b
 .SH DESCRIPTION
 .BR sigprocmask ()
diff --git a/man2/sigsuspend.2 b/man2/sigsuspend.2
index caa8882..bbfaaed 100644
--- a/man2/sigsuspend.2
+++ b/man2/sigsuspend.2
@@ -41,7 +41,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .ad l
 .BR sigsuspend ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
 .ad b
 .SH DESCRIPTION
 .BR sigsuspend ()
diff --git a/man2/stat.2 b/man2/stat.2
index 6f6c7ce..f816ae5 100644
--- a/man2/stat.2
+++ b/man2/stat.2
@@ -71,14 +71,14 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR lstat ():
 .RS 4
-/* glibc 2.19 and earlier */ _BSD_SOURCE ||
+/* glibc 2.19 and earlier */ _BSD_SOURCE
 .br
-/* Since glibc 2.20 */_DEFAULT_SOURCE ||
+    || /* Since glibc 2.20 */ _DEFAULT_SOURCE
 .br
-_XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || _XOPEN_SOURCE\ >=\ 500
+.\"   _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .br
-|| /* Since glibc 2.10: */ _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.10: */ _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .sp
 .BR fstatat ():
@@ -87,7 +87,7 @@ _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
diff --git a/man2/stime.2 b/man2/stime.2
index d00090d..8fa5934 100644
--- a/man2/stime.2
+++ b/man2/stime.2
@@ -41,7 +41,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR stime ():
-_SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _SVID_SOURCE
 .SH DESCRIPTION
 .BR stime ()
 sets the system's idea of the time and date.
diff --git a/man2/symlink.2 b/man2/symlink.2
index 28d541b..4d4d1ac 100644
--- a/man2/symlink.2
+++ b/man2/symlink.2
@@ -54,8 +54,9 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR symlink ():
 .RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _POSIX_C_SOURCE\ >=\ 200112L
+_XOPEN_SOURCE\ >=\ 500 || _POSIX_C_SOURCE\ >=\ 200112L
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .sp
 .BR symlinkat ():
@@ -64,7 +65,7 @@ _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _POSIX_C_SOURCE\ >=\ 200112L
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
diff --git a/man2/sync.2 b/man2/sync.2
index ae065cf..e9a6fd0 100644
--- a/man2/sync.2
+++ b/man2/sync.2
@@ -51,8 +51,10 @@ Feature Test Macro Requirements for glibc (see
 .BR sync ():
 .ad l
 .RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .ad
 .sp
diff --git a/man2/truncate.2 b/man2/truncate.2
index 3962a65..78fb6c8 100644
--- a/man2/truncate.2
+++ b/man2/truncate.2
@@ -61,18 +61,19 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR truncate ():
 .RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .br
-|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .sp
 .BR ftruncate ():
 .RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
-.br
-|| /* Since glibc 2.3.5: */ _POSIX_C_SOURCE\ >=\ 200112L
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.3.5: */ _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .PD
 .ad b
diff --git a/man2/unlink.2 b/man2/unlink.2
index d9559ab..b6fcd4d 100644
--- a/man2/unlink.2
+++ b/man2/unlink.2
@@ -56,7 +56,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
diff --git a/man2/unshare.2 b/man2/unshare.2
index aecfd14..81cfd64 100644
--- a/man2/unshare.2
+++ b/man2/unshare.2
@@ -22,31 +22,11 @@
 unshare \- disassociate parts of the process execution context
 .SH SYNOPSIS
 .nf
+.B #define _GNU_SOURCE
 .B #include <sched.h>
 .sp
 .BI "int unshare(int " flags );
 .fi
-.sp
-.in -4n
-Feature Test Macro Requirements for glibc (see
-.BR feature_test_macros (7)):
-.in
-.sp
-.BR unshare ():
-.ad l
-.RS 4
-.PD 0
-.TP 4
-Since glibc 2.14:
-_GNU_SOURCE
-.TP 4
-.\" See http://sources.redhat.com/bugzilla/show_bug.cgi?id=4749
-Before glibc 2.14:
-_BSD_SOURCE || _SVID_SOURCE
-    /* _GNU_SOURCE also suffices */
-.PD
-.RE
-.ad b
 .SH DESCRIPTION
 .BR unshare ()
 allows a process (or thread) to disassociate parts of its execution
diff --git a/man2/utimensat.2 b/man2/utimensat.2
index 99fa614..3785318 100644
--- a/man2/utimensat.2
+++ b/man2/utimensat.2
@@ -48,7 +48,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
@@ -58,7 +58,7 @@ _ATFILE_SOURCE
 .RS 4
 .TP
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man2/vfork.2 b/man2/vfork.2
index 3bd209e..fba6f78 100644
--- a/man2/vfork.2
+++ b/man2/vfork.2
@@ -47,15 +47,14 @@ Feature Test Macro Requirements for glibc (see
 .TP 4
 Since glibc 2.12:
 .nf
-_BSD_SOURCE ||
-    (_XOPEN_SOURCE\ >=\ 500 ||
-        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
-    !(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700)
+(_XOPEN_SOURCE\ >=\ 500) && ! (_POSIX_C_SOURCE\ >=\ 200809L)
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .TP 4
 .fi
 Before glibc 2.12:
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"     || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .PD
 .RE
 .ad b
diff --git a/man2/vhangup.2 b/man2/vhangup.2
index ea5a5ff..5b786ba 100644
--- a/man2/vhangup.2
+++ b/man2/vhangup.2
@@ -40,7 +40,15 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .ad l
 .BR vhangup ():
-_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.nf
+    Since glibc 2.21:
+.\"		commit 266865c0e7b79d4196e2cc393693463f03c90bd8
+        _DEFAULT_SOURCE
+    In glibc 2.19 and 2.20:
+        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+    Up to and including glibc 2.19:
+        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.fi
 .ad b
 .SH DESCRIPTION
 .BR vhangup ()
diff --git a/man2/wait.2 b/man2/wait.2
index a01eeb2..a99b9ee 100644
--- a/man2/wait.2
+++ b/man2/wait.2
@@ -72,11 +72,9 @@ Feature Test Macro Requirements for glibc (see
 .PD 0
 .BR waitid ():
 .RS 4
-_SVID_SOURCE ||
-_XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
-.br
-|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+_XOPEN_SOURCE
+    || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .PD
 .ad
diff --git a/man2/wait4.2 b/man2/wait4.2
index 4a7e2a0..834671a 100644
--- a/man2/wait4.2
+++ b/man2/wait4.2
@@ -54,15 +54,17 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .ad l
 .BR wait3 ():
-.RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
-.RE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE || _XOPEN_SOURCE\ >=\ 500
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"          || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .br
 .BR wait4 ():
-.RS 4
-_BSD_SOURCE
-.RE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .ad
 .SH DESCRIPTION
 These functions are obsolete; use
diff --git a/man3/a64l.3 b/man3/a64l.3
index 548a9c5..275d1d4 100644
--- a/man3/a64l.3
+++ b/man3/a64l.3
@@ -27,8 +27,10 @@ Feature Test Macro Requirements for glibc (see
 .br
 .RS 4
 .ad l
-_SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/abs.3 b/man3/abs.3
index 070e86e..1b7155b 100644
--- a/man3/abs.3
+++ b/man3/abs.3
@@ -57,11 +57,7 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR llabs ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/acos.3 b/man3/acos.3
index 8d49b80..587e3bc 100644
--- a/man3/acos.3
+++ b/man3/acos.3
@@ -55,11 +55,9 @@ Feature Test Macro Requirements for glibc (see
 .BR acosf (),
 .BR acosl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/acosh.3 b/man3/acosh.3
index 2741cfb..316bf4e 100644
--- a/man3/acosh.3
+++ b/man3/acosh.3
@@ -56,22 +56,19 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR acosh ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR acoshf (),
 .BR acoshl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/addseverity.3 b/man3/addseverity.3
index 8687082..17b09a4 100644
--- a/man3/addseverity.3
+++ b/man3/addseverity.3
@@ -23,7 +23,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR addseverity ():
-_SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _SVID_SOURCE
 .SH DESCRIPTION
 This function allows the introduction of new severity classes
 which can be addressed by the
diff --git a/man3/adjtime.3 b/man3/adjtime.3
index c3abb91..d495366 100644
--- a/man3/adjtime.3
+++ b/man3/adjtime.3
@@ -38,7 +38,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR adjtime ():
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 The
 .BR adjtime ()
diff --git a/man3/asin.3 b/man3/asin.3
index c2064a7..a05834c 100644
--- a/man3/asin.3
+++ b/man3/asin.3
@@ -57,11 +57,9 @@ Feature Test Macro Requirements for glibc (see
 .BR asinf (),
 .BR asinl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/asinh.3 b/man3/asinh.3
index af4a559..5060e65 100644
--- a/man3/asinh.3
+++ b/man3/asinh.3
@@ -56,22 +56,19 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR asinh ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
-.br
+
 .BR asinhf (),
 .BR asinhl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/atan.3 b/man3/atan.3
index 928cefb..fb7a029 100644
--- a/man3/atan.3
+++ b/man3/atan.3
@@ -57,11 +57,9 @@ Feature Test Macro Requirements for glibc (see
 .BR atanf (),
 .BR atanl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/atan2.3 b/man3/atan2.3
index 485acd3..7b4d990 100644
--- a/man3/atan2.3
+++ b/man3/atan2.3
@@ -55,11 +55,9 @@ Feature Test Macro Requirements for glibc (see
 .BR atan2f (),
 .BR atan2l ():
 .RS
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/atanh.3 b/man3/atanh.3
index 8488387..b9ed7f4 100644
--- a/man3/atanh.3
+++ b/man3/atanh.3
@@ -56,22 +56,19 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR atanh ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
-.br
+
 .BR atanhf (),
 .BR atanhl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/atoi.3 b/man3/atoi.3
index 180bf28..c0fd2c5 100644
--- a/man3/atoi.3
+++ b/man3/atoi.3
@@ -52,11 +52,8 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR atoll ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+__ISOC99_SOURCE ||
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/cbrt.3 b/man3/cbrt.3
index 4b5549d..93c6681 100644
--- a/man3/cbrt.3
+++ b/man3/cbrt.3
@@ -52,21 +52,18 @@ Feature Test Macro Requirements for glibc (see
 .BR cbrt ():
 .br
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .BR cbrtf (),
 .BR cbrtl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/ceil.3 b/man3/ceil.3
index 64362e4..7cd87bf 100644
--- a/man3/ceil.3
+++ b/man3/ceil.3
@@ -50,11 +50,9 @@ Feature Test Macro Requirements for glibc (see
 .BR ceilf (),
 .BR ceill ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/cfree.3 b/man3/cfree.3
index 6f470a2..9e2c918 100644
--- a/man3/cfree.3
+++ b/man3/cfree.3
@@ -48,7 +48,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR cfree ():
-_BSD_SOURCE || _SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .SH DESCRIPTION
 This function should never be used.
 Use
diff --git a/man3/clearenv.3 b/man3/clearenv.3
index 83e5a01..72d3a7f 100644
--- a/man3/clearenv.3
+++ b/man3/clearenv.3
@@ -39,7 +39,8 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR clearenv ():
-_SVID_SOURCE || _BSD_SOURCE
+    /* Glibc since 2.19: */ _DEFAULT_SOURCE
+        || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .SH DESCRIPTION
 The
 .BR clearenv ()
diff --git a/man3/clock_getcpuclockid.3 b/man3/clock_getcpuclockid.3
index cbcdae8..4a77888 100644
--- a/man3/clock_getcpuclockid.3
+++ b/man3/clock_getcpuclockid.3
@@ -43,7 +43,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR clock_getcpuclockid ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L
+_POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/copysign.3 b/man3/copysign.3
index 239d46b..10ce8a0 100644
--- a/man3/copysign.3
+++ b/man3/copysign.3
@@ -54,11 +54,9 @@ Feature Test Macro Requirements for glibc (see
 .BR copysignf (),
 .BR copysignl ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/cos.3 b/man3/cos.3
index 0efa361..7eaf19a 100644
--- a/man3/cos.3
+++ b/man3/cos.3
@@ -56,11 +56,9 @@ Feature Test Macro Requirements for glibc (see
 .BR cosf (),
 .BR cosl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/cosh.3 b/man3/cosh.3
index 0624f1b..da98cc1 100644
--- a/man3/cosh.3
+++ b/man3/cosh.3
@@ -58,11 +58,9 @@ Feature Test Macro Requirements for glibc (see
 .BR coshf (),
 .BR coshl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/ctermid.3 b/man3/ctermid.3
index a8cce8c..891dbd6 100644
--- a/man3/ctermid.3
+++ b/man3/ctermid.3
@@ -41,8 +41,7 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR ctermid ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
-.\" From <unistd.h>: _XOPEN_SOURCE
+_POSIX_C_SOURCE
 .SH DESCRIPTION
 .BR ctermid ()
 returns a string which is the pathname for the current
diff --git a/man3/ctime.3 b/man3/ctime.3
index 7bf93a9..beedbc3 100644
--- a/man3/ctime.3
+++ b/man3/ctime.3
@@ -70,8 +70,8 @@ Feature Test Macro Requirements for glibc (see
 .BR gmtime_r (),
 .BR localtime_r ():
 .RS
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _BSD_SOURCE ||
-_SVID_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/daemon.3 b/man3/daemon.3
index 65af7f3..50802f3 100644
--- a/man3/daemon.3
+++ b/man3/daemon.3
@@ -47,7 +47,15 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR daemon ():
-_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.nf 
+    Since glibc 2.21:
+.\"             commit 266865c0e7b79d4196e2cc393693463f03c90bd8
+        _DEFAULT_SOURCE
+    In glibc 2.19 and 2.20:
+        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+    Up to and including glibc 2.19:
+        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.fi
 .SH DESCRIPTION
 The
 .BR daemon ()
diff --git a/man3/dirfd.3 b/man3/dirfd.3
index 545a428..7318f76 100644
--- a/man3/dirfd.3
+++ b/man3/dirfd.3
@@ -42,12 +42,8 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .PD 0
 .ad l
-_BSD_SOURCE || _SVID_SOURCE
-.br
-|| /* Since glibc 2.10: */
-.RS 4
-(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700)
-.RE
+/* Since glibc 2.10: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .PD
 .RE
 .ad
diff --git a/man3/div.3 b/man3/div.3
index 5f46334..d5e0f8a 100644
--- a/man3/div.3
+++ b/man3/div.3
@@ -58,11 +58,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR lldiv ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/drand48.3 b/man3/drand48.3
index b288239..8824b0f 100644
--- a/man3/drand48.3
+++ b/man3/drand48.3
@@ -70,7 +70,9 @@ All functions shown above:
 .\" .BR srand48 (),
 .\" .BR seed48 (),
 .\" .BR lcong48 ():
-_SVID_SOURCE || _XOPEN_SOURCE
+_XOPEN_SOURCE
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE
 .ad b
 .SH DESCRIPTION
 These functions generate pseudo-random numbers using the linear congruential
diff --git a/man3/drand48_r.3 b/man3/drand48_r.3
index ab1a5a2..2e7b366 100644
--- a/man3/drand48_r.3
+++ b/man3/drand48_r.3
@@ -78,7 +78,8 @@ All functions shown above:
 .\" .BR srand48_r (),
 .\" .BR seed48_r (),
 .\" .BR lcong48_r ():
-_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE
+    /* Glibc since 2.19: */ _DEFAULT_SOURCE
+        || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .ad b
 .SH DESCRIPTION
 These functions are the reentrant analogs of the functions described in
diff --git a/man3/dysize.3 b/man3/dysize.3
index 1cdda5c..32a1a03 100644
--- a/man3/dysize.3
+++ b/man3/dysize.3
@@ -37,7 +37,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR dysize ():
-_BSD_SOURCE || _SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .SH DESCRIPTION
 The function returns 365 for a normal year and 366 for a leap year.
 The calculation for leap year is based on:
diff --git a/man3/ecvt.3 b/man3/ecvt.3
index 4388497..60cf6e3 100644
--- a/man3/ecvt.3
+++ b/man3/ecvt.3
@@ -54,15 +54,14 @@ Feature Test Macro Requirements for glibc (see
 .TP 4
 Since glibc 2.12:
 .nf
-_SVID_SOURCE ||
-    (_XOPEN_SOURCE\ >=\ 500 ||
-        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
-    !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600)
+(_XOPEN_SOURCE\ >=\ 500) ! (_POSIX_C_SOURCE\ >=\ 200112L)
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE
 .fi
 .TP 4
 Before glibc 2.12:
-_SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .PD
 .RE
 .ad b
diff --git a/man3/ecvt_r.3 b/man3/ecvt_r.3
index 6a36673..834930b 100644
--- a/man3/ecvt_r.3
+++ b/man3/ecvt_r.3
@@ -58,7 +58,8 @@ Feature Test Macro Requirements for glibc (see
 .BR qecvt_r (),
 .BR qfcvt_r ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
+/* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/endian.3 b/man3/endian.3
index a57357d..00310f1 100644
--- a/man3/endian.3
+++ b/man3/endian.3
@@ -32,7 +32,6 @@ htobe64, htole64, be64toh, le64toh \-
 convert values between host and big-/little-endian byte order
 .SH SYNOPSIS
 .nf
-.BR "#define _BSD_SOURCE" "             /* See feature_test_macros(7) */"
 .B #include <endian.h>
 
 .BI "uint16_t htobe16(uint16_t " host_16bits );
@@ -50,6 +49,30 @@ convert values between host and big-/little-endian byte order
 .BI "uint64_t be64toh(uint64_t " big_endian_64bits );
 .BI "uint64_t le64toh(uint64_t " little_endian_64bits );
 .fi
+.sp
+.in -4n
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.in
+.sp
+.BR htobe16 (),
+.BR htole16 (),
+.BR be16toh (),
+.BR le16toh (),
+.BR htobe32 (),
+.BR htole32 (),
+.BR be32toh (),
+.BR le32toh (),
+.BR htobe64 (),
+.BR htole64 (),
+.BR be64toh (),
+.BR le64toh ():
+.nf
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    In glibc up to and including 2.19:
+        _BSD_SOURCE
+.fi
 .SH DESCRIPTION
 These functions convert the byte encoding of integer values from
 the byte order that the current CPU (the "host") uses,
diff --git a/man3/erf.3 b/man3/erf.3
index 8dd70e4..bd547f1 100644
--- a/man3/erf.3
+++ b/man3/erf.3
@@ -54,21 +54,17 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR erf ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR erff (),
 .BR erfl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/erfc.3 b/man3/erfc.3
index ae132ae..150bb62 100644
--- a/man3/erfc.3
+++ b/man3/erfc.3
@@ -45,21 +45,17 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR erfc ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR erfcf (),
 .BR erfcl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600|| _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/exp.3 b/man3/exp.3
index 3c68cc0..d9f7321 100644
--- a/man3/exp.3
+++ b/man3/exp.3
@@ -58,11 +58,9 @@ Feature Test Macro Requirements for glibc (see
 .BR expf (),
 .BR expl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/exp2.3 b/man3/exp2.3
index b2053ce..b5a93d0 100644
--- a/man3/exp2.3
+++ b/man3/exp2.3
@@ -59,10 +59,7 @@ Feature Test Macro Requirements for glibc (see
 .BR exp2f (),
 .BR exp2l ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/expm1.3 b/man3/expm1.3
index f62fcc7..74213a1 100644
--- a/man3/expm1.3
+++ b/man3/expm1.3
@@ -51,22 +51,19 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR expm1 ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR expm1f (),
 .BR expm1l ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/fabs.3 b/man3/fabs.3
index a9d1bea..ce8fa83 100644
--- a/man3/fabs.3
+++ b/man3/fabs.3
@@ -54,11 +54,9 @@ Feature Test Macro Requirements for glibc (see
 .BR fabsf (),
 .BR fabsl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/fdim.3 b/man3/fdim.3
index 1cf0c6d..ed9738d 100644
--- a/man3/fdim.3
+++ b/man3/fdim.3
@@ -29,11 +29,7 @@ Feature Test Macro Requirements for glibc (see
 .BR fdimf (),
 .BR fdiml ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/ferror.3 b/man3/ferror.3
index 3ed8efb..295e379 100644
--- a/man3/ferror.3
+++ b/man3/ferror.3
@@ -61,7 +61,7 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR fileno ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
 .SH DESCRIPTION
 The function
 .BR clearerr ()
diff --git a/man3/fexecve.3 b/man3/fexecve.3
index cb2540c..4dd0d86 100644
--- a/man3/fexecve.3
+++ b/man3/fexecve.3
@@ -43,7 +43,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/ffs.3 b/man3/ffs.3
index 07d6fb1..35d8e21 100644
--- a/man3/ffs.3
+++ b/man3/ffs.3
@@ -57,8 +57,9 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.12:
-_SVID_SOURCE || _BSD_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700 ||
+_POSIX_C_SOURCE\ >=\ 200809L
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .TP
 Before glibc 2.12:
 none
diff --git a/man3/fgetgrent.3 b/man3/fgetgrent.3
index 525f867..3a2a118 100644
--- a/man3/fgetgrent.3
+++ b/man3/fgetgrent.3
@@ -45,7 +45,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR fgetgrent ():
-_SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _SVID_SOURCE
 .SH DESCRIPTION
 The
 .BR fgetgrent ()
diff --git a/man3/fgetpwent.3 b/man3/fgetpwent.3
index e73db75..91e23dd 100644
--- a/man3/fgetpwent.3
+++ b/man3/fgetpwent.3
@@ -48,7 +48,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR fgetpwent ():
-_SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _SVID_SOURCE
 .SH DESCRIPTION
 The
 .BR fgetpwent ()
diff --git a/man3/finite.3 b/man3/finite.3
index aa32756..1327ef2 100644
--- a/man3/finite.3
+++ b/man3/finite.3
@@ -59,32 +59,34 @@ Feature Test Macro Requirements for glibc (see
 .BR finitef (),
 .BR finitel ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE
+/* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .BR isinf ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE;
-.br
-or
-.I cc\ -std=c99
+_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR isinff (),
 .BR isinfl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE
+/* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .BR isnan ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE;
-.br
-or
-.I cc\ -std=c99
+_XOPEN_SOURCE || _ISOC99_SOURCE
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .BR isnanf (),
 .BR isnanl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600
+_XOPEN_SOURCE\ >=\ 600
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/flockfile.3 b/man3/flockfile.3
index 3fd7752..951798f 100644
--- a/man3/flockfile.3
+++ b/man3/flockfile.3
@@ -44,8 +44,8 @@ Feature Test Macro Requirements for glibc (see
 .sp
 All functions shown above:
 .RS 4
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _BSD_SOURCE ||
-_SVID_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/floor.3 b/man3/floor.3
index d99f9df..0d998c8 100644
--- a/man3/floor.3
+++ b/man3/floor.3
@@ -49,11 +49,9 @@ Feature Test Macro Requirements for glibc (see
 .BR floorf (),
 .BR floorl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/fma.3 b/man3/fma.3
index 390ff66..1cc9fdd 100644
--- a/man3/fma.3
+++ b/man3/fma.3
@@ -35,11 +35,7 @@ Feature Test Macro Requirements for glibc (see
 .BR fmaf (),
 .BR fmal ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/fmax.3 b/man3/fmax.3
index 51f22e5..8b2b253 100644
--- a/man3/fmax.3
+++ b/man3/fmax.3
@@ -30,11 +30,7 @@ Feature Test Macro Requirements for glibc (see
 .BR fmaxf (),
 .BR fmaxl ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/fmemopen.3 b/man3/fmemopen.3
index 4f8c13c..475e91d 100644
--- a/man3/fmemopen.3
+++ b/man3/fmemopen.3
@@ -36,7 +36,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/fmin.3 b/man3/fmin.3
index b80098e..bd44843 100644
--- a/man3/fmin.3
+++ b/man3/fmin.3
@@ -30,11 +30,7 @@ Feature Test Macro Requirements for glibc (see
 .BR fminf (),
 .BR fminl ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/fmod.3 b/man3/fmod.3
index d48a14d..f204133 100644
--- a/man3/fmod.3
+++ b/man3/fmod.3
@@ -57,11 +57,9 @@ Feature Test Macro Requirements for glibc (see
 .BR fmodf (),
 .BR fmodl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/fopen.3 b/man3/fopen.3
index 07d37ee..cf04709 100644
--- a/man3/fopen.3
+++ b/man3/fopen.3
@@ -61,7 +61,7 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR fdopen ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
 .SH DESCRIPTION
 The
 .BR fopen ()
diff --git a/man3/fpclassify.3 b/man3/fpclassify.3
index 527f5f9..937f31e 100644
--- a/man3/fpclassify.3
+++ b/man3/fpclassify.3
@@ -40,27 +40,20 @@ Feature Test Macro Requirements for glibc (see
 .BR isfinite (),
 .BR isnormal ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .BR isnan ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .BR isinf ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/frexp.3 b/man3/frexp.3
index c34c78f..d72adba 100644
--- a/man3/frexp.3
+++ b/man3/frexp.3
@@ -56,11 +56,9 @@ Feature Test Macro Requirements for glibc (see
 .BR frexpf (),
 .BR frexpl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/fseeko.3 b/man3/fseeko.3
index 2e28b4a..73f3a39 100644
--- a/man3/fseeko.3
+++ b/man3/fseeko.3
@@ -45,8 +45,7 @@ Feature Test Macro Requirements for glibc (see
 .br
 .RS 4
 .ad l
-_FILE_OFFSET_BITS\ ==\ 64 ||
-_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600
+_FILE_OFFSET_BITS\ ==\ 64 || _POSIX_C_SOURCE\ >=\ 200112L
 .br
 (defining the obsolete _LARGEFILE_SOURCE macro also works)
 .RE
diff --git a/man3/futimes.3 b/man3/futimes.3
index 1ca7e50..df23cf5 100644
--- a/man3/futimes.3
+++ b/man3/futimes.3
@@ -41,7 +41,10 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR futimes (),
 .BR lutimes ():
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 .BR futimes ()
 changes the access and modification times of a file in the same way as
diff --git a/man3/fwide.3 b/man3/fwide.3
index 1f5c076..a672f8d 100644
--- a/man3/fwide.3
+++ b/man3/fwide.3
@@ -33,10 +33,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 _XOPEN_SOURCE\ >=\ 500 || _ISOC99_SOURCE ||
 .br
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/gamma.3 b/man3/gamma.3
index 9fc2232..a41394e 100644
--- a/man3/gamma.3
+++ b/man3/gamma.3
@@ -28,13 +28,16 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR gamma ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE
+_XOPEN_SOURCE
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .BR gammaf (),
 .BR gammal ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600
-.\" Also seems to work: -std=c99 -D_XOPEN_SOURCE
+_XOPEN_SOURCE >= 600 || (_XOPEN_SOURCE && _ISOC99_SOURCE)
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/gcvt.3 b/man3/gcvt.3
index ec9d3ec..5812063 100644
--- a/man3/gcvt.3
+++ b/man3/gcvt.3
@@ -49,15 +49,14 @@ Feature Test Macro Requirements for glibc (see
 .TP 4
 Since glibc 2.12:
 .nf
-_SVID_SOURCE ||
-    (_XOPEN_SOURCE\ >=\ 500 ||
-        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
-    !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600)
+(_XOPEN_SOURCE\ >=\ 500) ! (_POSIX_C_SOURCE\ >=\ 200112L)
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE
 .fi
 .TP 4
 Before glibc 2.12:
-_SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
+_SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
 .RE
 .PD
 .ad b
diff --git a/man3/getaddrinfo.3 b/man3/getaddrinfo.3
index 2fa7dee..e39fe40 100644
--- a/man3/getaddrinfo.3
+++ b/man3/getaddrinfo.3
@@ -69,9 +69,8 @@ Feature Test Macro Requirements for glibc (see
 .BR getaddrinfo (),
 .BR freeaddrinfo (),
 .BR gai_strerror ():
-.RS 4
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
-.RE
+    Since glibc 2.22: _POSIX_C_SOURCE >= 201112L
+    Glibc 2.21 and earlier: _POSIX_C_SOURCE
 .ad b
 .SH DESCRIPTION
 Given
diff --git a/man3/getcwd.3 b/man3/getcwd.3
index b7b2114..f4c0473 100644
--- a/man3/getcwd.3
+++ b/man3/getcwd.3
@@ -60,15 +60,14 @@ _GNU_SOURCE
 .TP 4
 Since glibc 2.12:
 .nf
-_BSD_SOURCE ||
-    (_XOPEN_SOURCE\ >=\ 500 ||
-        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
-    !(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700)
+(_XOPEN_SOURCE\ >=\ 500) && ! (_POSIX_C_SOURCE\ >=\ 200809L)
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .TP 4
 .fi
 Before glibc 2.12:
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .PD
 .RE
 .ad b
diff --git a/man3/getdate.3 b/man3/getdate.3
index 848deb0..817cc65 100644
--- a/man3/getdate.3
+++ b/man3/getdate.3
@@ -49,8 +49,8 @@ Feature Test Macro Requirements for glibc (see
 .BR getdate ():
 .ad l
 .RS 4
-_XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .RE
 .br
 .BR getdate_r ():
diff --git a/man3/getdirentries.3 b/man3/getdirentries.3
index ef11fec..495c88e 100644
--- a/man3/getdirentries.3
+++ b/man3/getdirentries.3
@@ -39,7 +39,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR getdirentries ():
-_BSD_SOURCE || _SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .SH DESCRIPTION
 Read directory entries from the directory specified by
 .I fd
diff --git a/man3/getdtablesize.3 b/man3/getdtablesize.3
index eb6ec4c..67caba5 100644
--- a/man3/getdtablesize.3
+++ b/man3/getdtablesize.3
@@ -44,13 +44,14 @@ Feature Test Macro Requirements for glibc (see
 .TP 4
 Since glibc 2.12:
 .nf
-_BSD_SOURCE ||
-    !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600)
+/* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
+    || ! (_POSIX_C_SOURCE\ >=\ 200112L)
 .TP 4
 .fi
 Before glibc 2.12:
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .PD
 .RE
 .ad b
diff --git a/man3/getgrent.3 b/man3/getgrent.3
index f748ea4..b855d86 100644
--- a/man3/getgrent.3
+++ b/man3/getgrent.3
@@ -51,17 +51,19 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR setgrent ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED ||
-.br
-/* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .sp
 .BR getgrent (),
 .BR endgrent ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .PD
 .ad b
diff --git a/man3/getgrent_r.3 b/man3/getgrent_r.3
index a5aa898..e6c0b53 100644
--- a/man3/getgrent_r.3
+++ b/man3/getgrent_r.3
@@ -47,7 +47,10 @@ _GNU_SOURCE
 .\" FIXME . The FTM requirements seem inconsistent here.  File a glibc bug?
 .br
 .BR fgetgrent_r ():
-_SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _SVID_SOURCE
 .SH DESCRIPTION
 The functions
 .BR getgrent_r ()
diff --git a/man3/getgrnam.3 b/man3/getgrnam.3
index e91b49a..7501890 100644
--- a/man3/getgrnam.3
+++ b/man3/getgrnam.3
@@ -60,8 +60,8 @@ Feature Test Macro Requirements for glibc (see
 .BR getgrnam_r (),
 .BR getgrgid_r ():
 .RS 4
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _BSD_SOURCE ||
-_SVID_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/getgrouplist.3 b/man3/getgrouplist.3
index 83e29dc..bb0299f 100644
--- a/man3/getgrouplist.3
+++ b/man3/getgrouplist.3
@@ -42,7 +42,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR getgrouplist ():
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 The
 .BR getgrouplist ()
diff --git a/man3/gethostbyname.3 b/man3/gethostbyname.3
index 8faadd9..bfedfc6 100644
--- a/man3/gethostbyname.3
+++ b/man3/gethostbyname.3
@@ -100,6 +100,11 @@ Feature Test Macro Requirements for glibc (see
 .BR gethostbyname_r (),
 .BR gethostbyname2_r ():
 .RS 4
+.TP 4
+Since glibc 2.19:
+_DEFAULT_SOURCE
+.TP 4
+Glibc versions up to and including 2.19:
 _BSD_SOURCE || _SVID_SOURCE
 .RE
 
@@ -107,7 +112,10 @@ _BSD_SOURCE || _SVID_SOURCE
 .BR hstrerror ():
 .RS 4
 .TP 4
-Since glibc 2.8:
+Since glibc 2.19:
+_DEFAULT_SOURCE
+.TP 4
+Glibc 2.8 to 2.19:
 _BSD_SOURCE || _SVID_SOURCE
 .TP
 Before glibc 2.8:
@@ -117,9 +125,11 @@ none
 .BR h_errno :
 .RS 4
 .TP 4
-Since glibc 2.12:
-_BSD_SOURCE || _SVID_SOURCE ||
-    (_POSIX_C_SOURCE < 200809L && _XOPEN_SOURCE < 700)
+Since glibc 2.19
+_DEFAULT_SOURCE || _POSIX_C_SOURCE < 200809L
+.TP 4
+Glibc 2.12 to 2.19:
+_BSD_SOURCE || _SVID_SOURCE || _POSIX_C_SOURCE < 200809L
 .TP
 Before glibc 2.12:
 none
diff --git a/man3/gethostid.3 b/man3/gethostid.3
index 985c76d..1a41029 100644
--- a/man3/gethostid.3
+++ b/man3/gethostid.3
@@ -45,13 +45,19 @@ Feature Test Macro Requirements for glibc (see
 .br
 .BR gethostid ():
 .RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .RE
 .BR sethostid ():
-.RS 4
-_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
-.RE
+.nf 
+    Since glibc 2.21:
+.\"             commit 266865c0e7b79d4196e2cc393693463f03c90bd8
+        _DEFAULT_SOURCE
+    In glibc 2.19 and 2.20:
+        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+    Up to and including glibc 2.19:
+        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.fi
 .ad b
 .SH DESCRIPTION
 .BR gethostid ()
diff --git a/man3/getline.3 b/man3/getline.3
index bbc755d..6e0c92e 100644
--- a/man3/getline.3
+++ b/man3/getline.3
@@ -48,7 +48,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/getloadavg.3 b/man3/getloadavg.3
index 85a9bef..803ae1d 100644
--- a/man3/getloadavg.3
+++ b/man3/getloadavg.3
@@ -36,11 +36,23 @@
 getloadavg \- get system load averages
 .SH SYNOPSIS
 .nf
-.BR "#define _BSD_SOURCE" "         /* See feature_test_macros(7) */"
 .B #include <stdlib.h>
 .sp
 .BI "int getloadavg(double " loadavg[] ", int " nelem );
 .fi
+.sp
+.in -4n
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.in
+.sp
+.BR getloadavg ():
+.nf
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    In glibc up to and including 2.19:
+        _BSD_SOURCE
+.fi
 .SH DESCRIPTION
 The
 .BR getloadavg ()
diff --git a/man3/getmntent.3 b/man3/getmntent.3
index 83f8843..f09d754 100644
--- a/man3/getmntent.3
+++ b/man3/getmntent.3
@@ -61,7 +61,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR getmntent_r ():
-_BSD_SOURCE || _SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .SH DESCRIPTION
 These routines are used to access the filesystem description file
 .I /etc/fstab
diff --git a/man3/getnameinfo.3 b/man3/getnameinfo.3
index a5c8cf3..680db94 100644
--- a/man3/getnameinfo.3
+++ b/man3/getnameinfo.3
@@ -27,7 +27,8 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR getnameinfo ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+    Since glibc 2.22: _POSIX_C_SOURCE >= 201112L
+    Glibc 2.21 and earlier: _POSIX_C_SOURCE
 .ad b
 .SH DESCRIPTION
 The
@@ -232,12 +233,15 @@ defines the constants
 .in
 
 Since glibc 2.8,
-these definitions are exposed only if one of the feature test macros
-.BR _BSD_SOURCE ,
-.BR _SVID_SOURCE ,
+these definitions are exposed only if suitable
+feature test macros are defined, namely:
+.BR _GNU_SOURCE ,
+.BR _DEFAULT_SOURCE
+(since glibc 2.19),
+or (in glibc versions up to and including 2.19)
+.BR _BSD_SOURCE
 or
-.BR _GNU_SOURCE
-is defined.
+.BR _SVID_SOURCE .
 .PP
 The former is the constant
 .B MAXDNAME
diff --git a/man3/getnetent_r.3 b/man3/getnetent_r.3
index 62ee6c7..1579472 100644
--- a/man3/getnetent_r.3
+++ b/man3/getnetent_r.3
@@ -55,9 +55,10 @@ Feature Test Macro Requirements for glibc (see
 .BR getnetent_r (),
 .BR getnetbyname_r (),
 .BR getnetbyaddr_r ():
-.RS 4
-_BSD_SOURCE || _SVID_SOURCE
-.RE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .ad b
 .SH DESCRIPTION
 The
diff --git a/man3/getpass.3 b/man3/getpass.3
index 91f85b2..b7a9b64 100644
--- a/man3/getpass.3
+++ b/man3/getpass.3
@@ -41,10 +41,9 @@ Feature Test Macro Requirements for glibc (see
 .TP 4
 Since glibc 2.2.2:
 .nf
-_BSD_SOURCE ||
-    (_XOPEN_SOURCE\ >=\ 500 ||
-        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
-    !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600)
+_XOPEN_SOURCE && ! (_POSIX_C_SOURCE\ >=\ 200112L)
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .fi
 .TP 4
 Before glibc 2.2.2:
diff --git a/man3/getprotoent_r.3 b/man3/getprotoent_r.3
index 224cf33..534c982 100644
--- a/man3/getprotoent_r.3
+++ b/man3/getprotoent_r.3
@@ -52,9 +52,10 @@ Feature Test Macro Requirements for glibc (see
 .BR getprotoent_r (),
 .BR getprotobyname_r (),
 .BR getprotobynumber_r ():
-.RS 4
-_BSD_SOURCE || _SVID_SOURCE
-.RE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .ad b
 .SH DESCRIPTION
 The
diff --git a/man3/getpwent.3 b/man3/getpwent.3
index 63f9ced..32da890 100644
--- a/man3/getpwent.3
+++ b/man3/getpwent.3
@@ -55,8 +55,10 @@ Feature Test Macro Requirements for glibc (see
 .BR setpwent (),
 .BR endpwent ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/getpwent_r.3 b/man3/getpwent_r.3
index 69f4eb7..fd7c754 100644
--- a/man3/getpwent_r.3
+++ b/man3/getpwent_r.3
@@ -43,10 +43,16 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR getpwent_r (),
-_BSD_SOURCE || _SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .br
 .BR fgetpwent_r ():
-_SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _SVID_SOURCE
 .SH DESCRIPTION
 The functions
 .BR getpwent_r ()
diff --git a/man3/getpwnam.3 b/man3/getpwnam.3
index 8e4ab7e..ec4c5ec 100644
--- a/man3/getpwnam.3
+++ b/man3/getpwnam.3
@@ -64,8 +64,8 @@ Feature Test Macro Requirements for glibc (see
 .BR getpwnam_r (),
 .BR getpwuid_r ():
 .RS 4
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _BSD_SOURCE ||
-_SVID_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/getrpcent_r.3 b/man3/getrpcent_r.3
index ff5e963..53a8669 100644
--- a/man3/getrpcent_r.3
+++ b/man3/getrpcent_r.3
@@ -52,9 +52,10 @@ Feature Test Macro Requirements for glibc (see
 .BR getrpcent_r (),
 .BR getrpcbyname_r (),
 .BR getrpcbynumber_r ():
-.RS 4
-_BSD_SOURCE || _SVID_SOURCE
-.RE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .ad b
 .SH DESCRIPTION
 The
diff --git a/man3/getservent_r.3 b/man3/getservent_r.3
index 58caf45..4587cb5 100644
--- a/man3/getservent_r.3
+++ b/man3/getservent_r.3
@@ -52,9 +52,10 @@ Feature Test Macro Requirements for glibc (see
 .BR getservent_r (),
 .BR getservbyname_r (),
 .BR getservbyport_r ():
-.RS 4
-_BSD_SOURCE || _SVID_SOURCE
-.RE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .ad b
 .SH DESCRIPTION
 The
diff --git a/man3/getspnam.3 b/man3/getspnam.3
index 01fc361..e1e9382 100644
--- a/man3/getspnam.3
+++ b/man3/getspnam.3
@@ -65,9 +65,10 @@ Feature Test Macro Requirements for glibc (see
 .BR getspnam_r (),
 .BR fgetspent_r (),
 .BR sgetspent_r ():
-.RS 4
-_BSD_SOURCE || _SVID_SOURCE
-.RE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .ad b
 .SH DESCRIPTION
 Long ago it was considered safe to have encrypted passwords openly
diff --git a/man3/getsubopt.3 b/man3/getsubopt.3
index 2915f2a..5dcb289 100644
--- a/man3/getsubopt.3
+++ b/man3/getsubopt.3
@@ -40,10 +40,10 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .RS 4
 .PD 0
-_XOPEN_SOURCE\ >= 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >= 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .br
-|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
 .PD
 .RE
 .ad
diff --git a/man3/getusershell.3 b/man3/getusershell.3
index c0cc023..c7fcc66 100644
--- a/man3/getusershell.3
+++ b/man3/getusershell.3
@@ -50,9 +50,15 @@ Feature Test Macro Requirements for glibc (see
 .BR getusershell (),
 .BR setusershell (),
 .BR endusershell ():
-.RS 4
-_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
-.RE
+.nf 
+    Since glibc 2.21:
+.\"             commit 266865c0e7b79d4196e2cc393693463f03c90bd8
+        _DEFAULT_SOURCE
+    In glibc 2.19 and 2.20:
+        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+    Up to and including glibc 2.19:
+        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.fi
 .ad b
 .SH DESCRIPTION
 The
diff --git a/man3/getutent.3 b/man3/getutent.3
index ef1ed2b..5c1b828 100644
--- a/man3/getutent.3
+++ b/man3/getutent.3
@@ -270,8 +270,6 @@ The above functions are not thread-safe.
 Glibc adds reentrant versions
 .sp
 .nf
-.BR "#define _GNU_SOURCE" "    /* or _SVID_SOURCE or _BSD_SOURCE;
-.RB "\&                          see " feature_test_macros "(7) */"
 .B #include <utmp.h>
 .sp
 .BI "int getutent_r(struct utmp *" ubuf ", struct utmp **" ubufp );
@@ -283,6 +281,20 @@ Glibc adds reentrant versions
 .BI "                struct utmp *" ubuf ", struct utmp **" ubufp );
 .fi
 .sp
+.in -4n
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.in
+.sp
+.BR getutent_r (),
+.BR getutid_r (),
+.BR getutline_r ():
+.nf
+    _GNU_SOURCE
+    || /* since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* glibc <= 2.19: */    _SVID_SOURCE || _BSD_SOURCE
+.fi
+.sp
 These functions are GNU extensions, analogs of the functions of the
 same name without the _r suffix.
 The
diff --git a/man3/getw.3 b/man3/getw.3
index 64a9180..ca36b0c 100644
--- a/man3/getw.3
+++ b/man3/getw.3
@@ -46,10 +46,9 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.3.3:
-_SVID_SOURCE || _BSD_SOURCE ||
-.br
-(_XOPEN_SOURCE &&
-    !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600))
+_XOPEN_SOURCE && ! (_POSIX_C_SOURCE\ >=\ 200112L)
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .TP
 Before glibc 2.3.3:
 _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE
diff --git a/man3/gsignal.3 b/man3/gsignal.3
index 4e9171e..082a52e 100644
--- a/man3/gsignal.3
+++ b/man3/gsignal.3
@@ -45,7 +45,10 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR gsignal (),
 .BR ssignal ():
-_SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _SVID_SOURCE
 .SH DESCRIPTION
 Don't use these functions under Linux.
 Due to a historical mistake, under Linux these functions are
diff --git a/man3/hypot.3 b/man3/hypot.3
index cfccaee..fed86b8 100644
--- a/man3/hypot.3
+++ b/man3/hypot.3
@@ -54,21 +54,18 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR hypot ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR hypotf (),
 .BR hypotl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/ilogb.3 b/man3/ilogb.3
index aa94305..fccf39c 100644
--- a/man3/ilogb.3
+++ b/man3/ilogb.3
@@ -48,23 +48,19 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR ilogb ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED ||
-_ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR ilogbf (),
 .BR ilogbl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/inet.3 b/man3/inet.3
index e1eec78..1fcaea5 100644
--- a/man3/inet.3
+++ b/man3/inet.3
@@ -71,7 +71,12 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR inet_aton (),
 .BR inet_ntoa ():
-_BSD_SOURCE || _SVID_SOURCE
+.nf
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    In glibc up to and including 2.19:
+        _BSD_SOURCE || _BSD_SOURCE
+.fi
 .SH DESCRIPTION
 .BR inet_aton ()
 converts the Internet host address \fIcp\fP from the
diff --git a/man3/initgroups.3 b/man3/initgroups.3
index 8862595..2c98a99 100644
--- a/man3/initgroups.3
+++ b/man3/initgroups.3
@@ -46,7 +46,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR initgroups ():
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 The
 .BR initgroups ()
diff --git a/man3/insque.3 b/man3/insque.3
index 73c61ef..0dd9dc3 100644
--- a/man3/insque.3
+++ b/man3/insque.3
@@ -54,8 +54,10 @@ Feature Test Macro Requirements for glibc (see
 .BR insque (),
 .BR remque ():
 .RS 4
-_SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/isalpha.3 b/man3/isalpha.3
index 9d3e8cd..e839fef 100644
--- a/man3/isalpha.3
+++ b/man3/isalpha.3
@@ -78,17 +78,14 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR isascii ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE
-.br
+_XOPEN_SOURCE
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE
 .RE
 
 .BR isblank ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 
 .BR isalnum_l (),
diff --git a/man3/isgreater.3 b/man3/isgreater.3
index ae356f0..6eeb09f 100644
--- a/man3/isgreater.3
+++ b/man3/isgreater.3
@@ -38,11 +38,7 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 All functions described here:
 .RS
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/iswblank.3 b/man3/iswblank.3
index 25bc719..6e02199 100644
--- a/man3/iswblank.3
+++ b/man3/iswblank.3
@@ -31,11 +31,7 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR iswblank ():
 .RS
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/j0.3 b/man3/j0.3
index a66bb25..333243d 100644
--- a/man3/j0.3
+++ b/man3/j0.3
@@ -72,7 +72,9 @@ Feature Test Macro Requirements for glibc (see
 .BR j1 (),
 .BR jn ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE
+_XOPEN_SOURCE
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .RE
 .br
 .BR j0f (),
@@ -82,8 +84,10 @@ _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE
 .BR jnf (),
 .BR jnl ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 600
-.\" Also seems to work: -std=c99 -D_XOPEN_SOURCE
+_XOPEN_SOURCE \ >=\ 600
+    || (_ISOC99_SOURCE && _XOPEN_SOURCE)
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/ldexp.3 b/man3/ldexp.3
index 2468edd..dfd1943 100644
--- a/man3/ldexp.3
+++ b/man3/ldexp.3
@@ -56,11 +56,9 @@ Feature Test Macro Requirements for glibc (see
 .BR ldexpf (),
 .BR ldexpl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/lgamma.3 b/man3/lgamma.3
index 1a9c795..2ca2360 100644
--- a/man3/lgamma.3
+++ b/man3/lgamma.3
@@ -41,31 +41,30 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR lgamma ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR lgammaf (),
 .BR lgammal ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .BR lgamma_r (),
 .BR lgammaf_r (),
 .BR lgammal_r ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE
+/* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .IR signgam :
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE
+_XOPEN_SOURCE
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/lockf.3 b/man3/lockf.3
index 0a2b1b5..28a6c64 100644
--- a/man3/lockf.3
+++ b/man3/lockf.3
@@ -41,8 +41,10 @@ Feature Test Macro Requirements for glibc (see
 .BR lockf ():
 .ad l
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/log.3 b/man3/log.3
index 4a3c270..2c6358a 100644
--- a/man3/log.3
+++ b/man3/log.3
@@ -58,11 +58,9 @@ Feature Test Macro Requirements for glibc (see
 .BR logf (),
 .BR logl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/log10.3 b/man3/log10.3
index de54552..db12387 100644
--- a/man3/log10.3
+++ b/man3/log10.3
@@ -58,11 +58,9 @@ Feature Test Macro Requirements for glibc (see
 .BR log10f (),
 .BR log10l ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/log1p.3 b/man3/log1p.3
index f64cd42..2fe81bc 100644
--- a/man3/log1p.3
+++ b/man3/log1p.3
@@ -50,22 +50,19 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR log1p ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR log1pf (),
 .BR log1pl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/log2.3 b/man3/log2.3
index 1949d0b..c15ad00 100644
--- a/man3/log2.3
+++ b/man3/log2.3
@@ -59,10 +59,7 @@ Feature Test Macro Requirements for glibc (see
 .BR log2f (),
 .BR log2l ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/logb.3 b/man3/logb.3
index 667154d..3053a24 100644
--- a/man3/logb.3
+++ b/man3/logb.3
@@ -48,22 +48,19 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR logb ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR logbf (),
 .BR logbl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/lrint.3 b/man3/lrint.3
index 0b312c8..079c77c 100644
--- a/man3/lrint.3
+++ b/man3/lrint.3
@@ -54,11 +54,7 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 All functions shown above:
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/lround.3 b/man3/lround.3
index 48d6895..7b4c094 100644
--- a/man3/lround.3
+++ b/man3/lround.3
@@ -55,11 +55,7 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 All functions shown above:
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/makedev.3 b/man3/makedev.3
index 4494852..98f9334 100644
--- a/man3/makedev.3
+++ b/man3/makedev.3
@@ -28,7 +28,6 @@
 makedev, major, minor \- manage a device number
 .SH SYNOPSIS
 .nf
-.BR "#define _BSD_SOURCE" "             /* See feature_test_macros(7) */"
 .B #include <sys/types.h>
 
 .BI "dev_t makedev(unsigned int " maj ", unsigned int " min );
@@ -36,6 +35,16 @@ makedev, major, minor \- manage a device number
 .BI "unsigned int major(dev_t " dev );
 .BI "unsigned int minor(dev_t " dev );
 .fi
+.sp
+.BR makedev (),
+.BR major (),
+.BR minor ():
+.nf
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    In glibc up to and including 2.19:
+        _BSD_SOURCE
+.fi
 .SH DESCRIPTION
 A device ID consists of two parts:
 a major ID, identifying the class of the device,
diff --git a/man3/matherr.3 b/man3/matherr.3
index a3390bb..c1fcccc 100644
--- a/man3/matherr.3
+++ b/man3/matherr.3
@@ -29,7 +29,6 @@
 matherr \- SVID math library exception handling
 .SH SYNOPSIS
 .nf
-.BR "#define _SVID_SOURCE" "             /* See feature_test_macros(7) */"
 .B #include <math.h>
 
 .BI "int matherr(struct exception *" exc );
@@ -37,6 +36,21 @@ matherr \- SVID math library exception handling
 .B extern _LIB_VERSION_TYPE _LIB_VERSION;
 .fi
 .sp
+.in -4n
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+
+.in
+.ad l
+.BR significand (),
+.BR significandf (),
+.BR significandl ():
+.RS 4
+/* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE
+.RE
+.ad b
+.sp
 Link with \fI\-lm\fP.
 .SH DESCRIPTION
 The System V Interface Definition (SVID) specifies that various
diff --git a/man3/mbsnrtowcs.3 b/man3/mbsnrtowcs.3
index 172b46b..8b9d9da 100644
--- a/man3/mbsnrtowcs.3
+++ b/man3/mbsnrtowcs.3
@@ -34,7 +34,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/mkdtemp.3 b/man3/mkdtemp.3
index 1fdbe22..139b767 100644
--- a/man3/mkdtemp.3
+++ b/man3/mkdtemp.3
@@ -43,15 +43,15 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .RS 4
 .PD 0
-_BSD_SOURCE
+/* Since glibc 2.19: */ _DEFAULT_SOURCE
+.br
+|| /* Glibc 2.19 and earlier: */ _BSD_SOURCE
 .br
 || /* Since glibc 2.10: */
-.RS 4
-(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700)
+_POSIX_C_SOURCE\ >=\ 200809L
 .ad
 .PD
 .RE
-.RE
 .SH DESCRIPTION
 The
 .BR mkdtemp ()
diff --git a/man3/mkfifo.3 b/man3/mkfifo.3
index 872f64f..6851dbc 100644
--- a/man3/mkfifo.3
+++ b/man3/mkfifo.3
@@ -52,7 +52,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _ATFILE_SOURCE
diff --git a/man3/mkstemp.3 b/man3/mkstemp.3
index b7aed0d..56c5a2e 100644
--- a/man3/mkstemp.3
+++ b/man3/mkstemp.3
@@ -57,10 +57,10 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .RS 4
 .PD 0
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
-.br
-|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200112L
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .PD
 .RE
 .ad b
@@ -69,7 +69,8 @@ _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 _GNU_SOURCE
 .br
 .BR mkstemps ():
-_BSD_SOURCE || _SVID_SOURCE
+    /* Glibc since 2.19: */ _DEFAULT_SOURCE
+        || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .br
 .BR mkostemps ():
 _GNU_SOURCE
diff --git a/man3/mktemp.3 b/man3/mktemp.3
index 7329cb7..894de95 100644
--- a/man3/mktemp.3
+++ b/man3/mktemp.3
@@ -52,14 +52,13 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.12:
-_BSD_SOURCE || _SVID_SOURCE ||
-    (_XOPEN_SOURCE\ >=\ 500 ||
-         _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
-    !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600)
+(_XOPEN_SOURCE\ >=\ 500) && ! (_POSIX_C_SOURCE\ >=\ 200112L)
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .TP
 Before glibc 2.12:
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .RE
 .PD
 .ad b
diff --git a/man3/modf.3 b/man3/modf.3
index c248146..1bda48f 100644
--- a/man3/modf.3
+++ b/man3/modf.3
@@ -56,11 +56,9 @@ Feature Test Macro Requirements for glibc (see
 .BR modf (),
 .BR modfl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/mq_receive.3 b/man3/mq_receive.3
index 1ce6cd3..5fdcc7c 100644
--- a/man3/mq_receive.3
+++ b/man3/mq_receive.3
@@ -51,7 +51,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR mq_timedreceive ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L
+_POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/mq_send.3 b/man3/mq_send.3
index ace933a..8fbea0b 100644
--- a/man3/mq_send.3
+++ b/man3/mq_send.3
@@ -51,7 +51,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR mq_timedsend ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L
+_POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/nan.3 b/man3/nan.3
index 723b282..b79fd50 100644
--- a/man3/nan.3
+++ b/man3/nan.3
@@ -32,11 +32,7 @@ Feature Test Macro Requirements for glibc (see
 .BR nanf (),
 .BR nanl ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/nextafter.3 b/man3/nextafter.3
index 78617f1..bbfbf8c 100644
--- a/man3/nextafter.3
+++ b/man3/nextafter.3
@@ -37,23 +37,19 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR nextafter ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED ||
-_ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR nextafterf (),
 .BR nextafterl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR nexttoward (),
@@ -61,10 +57,7 @@ or
 .BR nexttowardl ():
 .RS 4
 _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/on_exit.3 b/man3/on_exit.3
index 4ac51f9..2890aef 100644
--- a/man3/on_exit.3
+++ b/man3/on_exit.3
@@ -44,7 +44,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR on_exit ():
-_BSD_SOURCE || _SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .SH DESCRIPTION
 The
 .BR on_exit ()
diff --git a/man3/opendir.3 b/man3/opendir.3
index 77acefb..e0d7eea 100644
--- a/man3/opendir.3
+++ b/man3/opendir.3
@@ -53,7 +53,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/perror.3 b/man3/perror.3
index 7d1bd64..40f1b83 100644
--- a/man3/perror.3
+++ b/man3/perror.3
@@ -51,7 +51,10 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .IR sys_errlist ,
 .IR sys_nerr :
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 The
 .BR perror ()
diff --git a/man3/popen.3 b/man3/popen.3
index 184d6ca..a8702ff 100644
--- a/man3/popen.3
+++ b/man3/popen.3
@@ -58,7 +58,8 @@ Feature Test Macro Requirements for glibc (see
 .BR popen (),
 .BR pclose ():
 .RS 4
-_POSIX_C_SOURCE\ >=\ 2 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE
+_POSIX_C_SOURCE\ >=\ 2
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/posix_fallocate.3 b/man3/posix_fallocate.3
index a79dafd..f0043bf 100644
--- a/man3/posix_fallocate.3
+++ b/man3/posix_fallocate.3
@@ -40,7 +40,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR posix_fallocate ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L
+_POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/posix_madvise.3 b/man3/posix_madvise.3
index 60a55b9..7254df6 100644
--- a/man3/posix_madvise.3
+++ b/man3/posix_madvise.3
@@ -36,7 +36,7 @@ Feature Test Macro Requirements for glibc (see
 .br
 .RS 4
 .ad l
-_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600
+_POSIX_C_SOURCE >= 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/posix_memalign.3 b/man3/posix_memalign.3
index eb4d13c..a7cb05b 100644
--- a/man3/posix_memalign.3
+++ b/man3/posix_memalign.3
@@ -50,7 +50,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .ad l
 .BR posix_memalign ():
-_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600
+_POSIX_C_SOURCE\ >=\ 200112L
 .sp
 .BR aligned_alloc ():
 _ISOC11_SOURCE
@@ -62,16 +62,15 @@ _ISOC11_SOURCE
 .TP 4
 Since glibc 2.12:
 .nf
-_BSD_SOURCE ||
-    (_XOPEN_SOURCE\ >=\ 500 ||
-        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
-    !(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600)
+(_XOPEN_SOURCE\ >=\ 500) && !(_POSIX_C_SOURCE\ >=\ 200112L)
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .br
 .fi
 .TP
 Before glibc 2.12:
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .ad b
 .br
 (The (nonstandard) header file
diff --git a/man3/pow.3 b/man3/pow.3
index 66a0f5e..7d7761a 100644
--- a/man3/pow.3
+++ b/man3/pow.3
@@ -57,11 +57,9 @@ Feature Test Macro Requirements for glibc (see
 .BR powf (),
 .BR powl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/printf.3 b/man3/printf.3
index fb3c5cf..14a9c37 100644
--- a/man3/printf.3
+++ b/man3/printf.3
@@ -70,11 +70,8 @@ Feature Test Macro Requirements for glibc (see
 .BR snprintf (),
 .BR vsnprintf ():
 .RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I "cc -std=c99"
+_XOPEN_SOURCE\ >=\ 500 || _ISOC99_SOURCE ||
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .sp
 .BR dprintf (),
@@ -83,7 +80,7 @@ or
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/profil.3 b/man3/profil.3
index 75e3e49..e2b4241 100644
--- a/man3/profil.3
+++ b/man3/profil.3
@@ -42,7 +42,15 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR profil ():
-_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.nf 
+    Since glibc 2.21:
+.\"             commit 266865c0e7b79d4196e2cc393693463f03c90bd8
+        _DEFAULT_SOURCE
+    In glibc 2.19 and 2.20:
+        _DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+    Up to and including glibc 2.19:
+        _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\ <\ 500)
+.fi
 .SH DESCRIPTION
 This routine provides a means to find out in what areas your program
 spends most of its time.
diff --git a/man3/psignal.3 b/man3/psignal.3
index dc34581..fa0601a 100644
--- a/man3/psignal.3
+++ b/man3/psignal.3
@@ -46,13 +46,19 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR psignal ():
-_SVID_SOURCE || _BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .br
 .BR psiginfo ():
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .br
 .IR sys_siglist :
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 The
 .BR psignal ()
diff --git a/man3/pthread_attr_setstack.3 b/man3/pthread_attr_setstack.3
index a8fdb1e..5f144fb 100644
--- a/man3/pthread_attr_setstack.3
+++ b/man3/pthread_attr_setstack.3
@@ -48,7 +48,7 @@ Feature Test Macro Requirements for glibc (see
 .BR pthread_attr_getstack (),
 .BR pthread_attr_setstack ():
 .RS 4
-_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600
+_POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/putenv.3 b/man3/putenv.3
index dd030d3..3d598c5 100644
--- a/man3/putenv.3
+++ b/man3/putenv.3
@@ -50,7 +50,9 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR putenv ():
-_SVID_SOURCE || _XOPEN_SOURCE
+_XOPEN_SOURCE
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE
 .SH DESCRIPTION
 The
 .BR putenv ()
diff --git a/man3/putpwent.3 b/man3/putpwent.3
index 02f2563..b267b9c 100644
--- a/man3/putpwent.3
+++ b/man3/putpwent.3
@@ -45,7 +45,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR putpwent ():
-_SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _SVID_SOURCE
 .SH DESCRIPTION
 The
 .BR putpwent ()
diff --git a/man3/qecvt.3 b/man3/qecvt.3
index 0864be9..64ed583 100644
--- a/man3/qecvt.3
+++ b/man3/qecvt.3
@@ -59,7 +59,7 @@ _SVID_SOURCE
 .\"    glibc 2.10 to glibc 2.17
 .\"        _SVID_SOURCE || (_XOPEN_SOURCE >= 500 ||
 .\"            (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
-.\"                ! (_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700))
+.\"                ! (_POSIX_C_SOURCE >= 200809L))
 .\"    Before glibc 2.10:
 .\"        _SVID_SOURCE || _XOPEN_SOURCE >= 500 ||
 .\"            (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)
diff --git a/man3/rand.3 b/man3/rand.3
index f54ac78..4292eed 100644
--- a/man3/rand.3
+++ b/man3/rand.3
@@ -58,7 +58,7 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR rand_r ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
 .SH DESCRIPTION
 The
 .BR rand ()
diff --git a/man3/random.3 b/man3/random.3
index d61e759..26d1b5d 100644
--- a/man3/random.3
+++ b/man3/random.3
@@ -57,8 +57,10 @@ Feature Test Macro Requirements for glibc (see
 .BR initstate (),
 .BR setstate ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/random_r.3 b/man3/random_r.3
index d588e3c..42d9755 100644
--- a/man3/random_r.3
+++ b/man3/random_r.3
@@ -52,7 +52,8 @@ Feature Test Macro Requirements for glibc (see
 .BR initstate_r (),
 .BR setstate_r ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE
+/* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/rcmd.3 b/man3/rcmd.3
index 0ca8352..5073d9e 100644
--- a/man3/rcmd.3
+++ b/man3/rcmd.3
@@ -88,7 +88,10 @@ Feature Test Macro Requirements for glibc (see
 .BR iruserok_af (),
 .BR ruserok (),
 .BR ruserok_af ():
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 The
 .BR rcmd ()
diff --git a/man3/readdir.3 b/man3/readdir.3
index 4b4d2fa..cb59d02 100644
--- a/man3/readdir.3
+++ b/man3/readdir.3
@@ -1,4 +1,6 @@
 .\" Copyright (C) 1993 David Metcalfe (david@prism.demon.co.uk)
+.\" and Copyright (C) 2008, 2016 Michael Kerrisk <mtk.manpages@gmail.com>
+.\" and Copyright (C) 2016 Florian Weimer <fweimer@redhat.com>
 .\"
 .\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
@@ -54,8 +56,8 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR readdir_r ():
 .RS 4
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _BSD_SOURCE ||
-_SVID_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
@@ -67,41 +69,115 @@ to by \fIdirp\fP.
 It returns NULL on reaching the end of the directory stream or if
 an error occurred.
 .PP
-On Linux, the
+In the glibc implementation, the
 .I dirent
 structure is defined as follows:
 .PP
 .in +4n
 .nf
 struct dirent {
-    ino_t          d_ino;       /* inode number */
-    off_t          d_off;       /* not an offset; see NOTES */
-    unsigned short d_reclen;    /* length of this record */
-    unsigned char  d_type;      /* type of file; not supported
+    ino_t          d_ino;       /* Inode number */
+    off_t          d_off;       /* Not an offset; see below */
+    unsigned short d_reclen;    /* Length of this record */
+    unsigned char  d_type;      /* Type of file; not supported
                                    by all filesystem types */
-    char           d_name[256]; /* filename */
+    char           d_name[256]; /* Null-terminated filename */
 };
 .fi
 .in
 .PP
 The only fields in the
 .I dirent
-structure that are mandated by POSIX.1 are:
-.IR d_name [],
-of unspecified size, with at most
-.B NAME_MAX
-characters preceding the terminating null byte (\(aq\\0\(aq);
-and (as an XSI extension)
+structure that are mandated by POSIX.1 are
+.IR d_name
+and
 .IR d_ino .
 The other fields are unstandardized, and not present on all systems;
 see NOTES below for some further details.
+
+The fields of the
+.I dirent
+structure are as follows:
+.TP
+.I d_ino
+This is the inode number of the file.
+.TP
+.I d_off
+The value returned in
+.I d_off
+is the same as would be returned by calling
+.BR telldir (3)
+at the current position in the directory stream.
+Be aware that despite its type and name, the
+.I d_off
+field is seldom any kind of directory offset on modern filesystems.
+.\" https://lwn.net/Articles/544298/
+Applications should treat this field as an opaque value,
+making no assumptions about its contents; see also
+.BR telldir (3).
+.TP
+.I d_reclen
+This is the size (in bytes) of the returned record.
+.TP
+.I d_type
+This field contains a value indicating the file type,
+making it possible to avoid the expense of calling
+.BR lstat (2)
+if further actions depend on the type of the file.
+.IP
+When a suitable feature test macro is defined
+.RB ( _DEFAULT_SOURCE
+on glibc versions since 2.19, or
+.BR _BSD_SOURCE
+on glibc versions 2.19 and earlier),
+glibc defines the following macro constants for the value returned in
+.IR d_type :
+.RS
+.TP 12
+.B DT_BLK
+This is a block device.
+.TP
+.B DT_CHR
+This is a character device.
+.TP
+.B DT_DIR
+This is a directory.
+.TP
+.B DT_FIFO
+This is a named pipe (FIFO).
+.TP
+.B DT_LNK
+This is a symbolic link.
+.TP
+.B DT_REG
+This is a regular file.
+.TP
+.B DT_SOCK
+This is a UNIX domain socket.
+.TP
+.B DT_UNKNOWN
+The file type could not be determined.
+.RE
+.IP
+Currently,
+.\" kernel 2.6.27
+.\" The same sentence is in getdents.2
+only some filesystems (among them: Btrfs, ext2, ext3, and ext4)
+have full support for returning the file type in
+.IR d_type .
+All applications must properly handle a return of
+.BR DT_UNKNOWN .
+.TP
+.I d_name
+This field contains the null terminated filename.
 .PP
 The data returned by
 .BR readdir ()
 may be overwritten by subsequent calls to
 .BR readdir ()
 for the same directory stream.
-
+.\"
+.SS readdir_r()
 The
 .BR readdir_r ()
 function is a reentrant version of
@@ -110,12 +186,65 @@ It reads the next directory entry from the directory stream
 .IR dirp ,
 and returns it in the caller-allocated buffer pointed to by
 .IR entry .
-(See NOTES for information on allocating this buffer.)
 A pointer to the returned item is placed in
 .IR *result ;
 if the end of the directory stream was encountered,
 then NULL is instead returned in
 .IR *result .
+
+It is recommended that applications use
+.BR readdir ()
+instead of
+.BR readdir_r ().
+Furthermore, since version 2.24, glibc deprecates
+.BR readdir_r ().
+The reasons are as follows:
+.IP * 3
+On systems where
+.BR NAME_MAX
+is undefined, calling
+.BR readdir_r ()
+may be unsafe because the interface does not allow the caller to specify
+the length of the buffer used for the returned directory entry.
+.IP *
+On some systems,
+.BR readdir_r ()
+can't read directory entries with very long names.
+When the glibc implementation encounters such a name,
+.BR readdir_r ()
+fails with the error
+.B ENAMETOOLONG
+.IR "after the final directory entry has been read" .
+On some other systems,
+.BR readdir_r ()
+may return a success status, but the returned
+.IR d_name
+field may not be null terminated or may be truncated.
+.IP *
+In the current POSIX.1 specification (POSIX.1-2008),
+.BR readdir ()
+is not required to be thread-safe.
+However, in modern implementations (including the glibc implementation),
+concurrent calls to
+.BR readdir ()
+that specify different directory streams are thread-safe.
+Therefore, the use of
+.BR readdir_r ()
+is generally unnecessary in multithreaded programs.
+In cases where multiple threads must read from the same directory stream,
+using
+.BR readdir ()
+with external synchronization is still preferable to the use of
+.BR readdir_r (),
+for the reasons given in the points above.
+.IP *
+It is expected that a future version of POSIX.1
+.\" http://www.austingroupbugs.net/view.php?id=696
+will make
+.BR readdir_r ()
+obsolete, and require that
+.BR readdir ()
+be thread-safe when concurrently employed on different directory streams.
 .SH RETURN VALUE
 On success,
 .BR readdir ()
@@ -144,6 +273,9 @@ returns 0, and returns NULL in
 .TP
 .B EBADF
 Invalid directory stream descriptor \fIdirp\fP.
+.TP
+.B ENAMETOOLOMG
+A directory entry whose name was too long to be read was encountered.
 .SH ATTRIBUTES
 For an explanation of the terms used in this section, see
 .BR attributes (7).
@@ -162,12 +294,23 @@ T}	Thread safety	MT-Safe
 .SH CONFORMING TO
 POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
 .SH NOTES
+A directory stream is opened using
+.BR opendir (3).
+
+The order in which filenames are read by successive calls to
+.BR readdir ()
+depends on the filesystem implementation;
+it us unlikely that the names will be sorted in any fashion.
+
 Only the fields
 .I d_name
-and
+and (as an XSI extension)
 .I d_ino
 are specified in POSIX.1.
 .\" POSIX.1-2001, POSIX.1-2008
+Other than Linux, the
+.I d_type
+field is available mainly only on BSD systems.
 The remaining fields are available on many, but not all systems.
 Under glibc,
 programs can check for the availability of the fields not defined
@@ -178,97 +321,6 @@ in POSIX.1 by testing whether the macros
 or
 .B _DIRENT_HAVE_D_TYPE
 are defined.
-
-The value returned in
-.I d_off
-is the same as would be returned by calling
-.BR telldir (3)
-at the current position in the directory stream.
-Be aware that despite its type and name, the
-.I d_off
-field is seldom any kind of directory offset on modern filesystems.
-.\" https://lwn.net/Articles/544298/
-Applications should treat this field as an opaque value,
-making no assumptions about its contents; see also
-.BR telldir (3).
-
-Other than Linux, the
-.I d_type
-field is available mainly only on BSD systems.
-This field makes it possible to avoid the expense of calling
-.BR lstat (2)
-if further actions depend on the type of the file.
-If the
-.B _BSD_SOURCE
-feature test macro is defined,
-then glibc defines the following macro constants
-for the value returned in
-.IR d_type :
-.TP 12
-.B DT_BLK
-This is a block device.
-.TP
-.B DT_CHR
-This is a character device.
-.TP
-.B DT_DIR
-This is a directory.
-.TP
-.B DT_FIFO
-This is a named pipe (FIFO).
-.TP
-.B DT_LNK
-This is a symbolic link.
-.TP
-.B DT_REG
-This is a regular file.
-.TP
-.B DT_SOCK
-This is a UNIX domain socket.
-.TP
-.B DT_UNKNOWN
-The file type is unknown.
-.\" The glibc manual says that on some systems this is the only
-.\" value returned
-.PP
-If the file type could not be determined, the value
-.B DT_UNKNOWN
-is returned in
-.IR d_type .
-
-Currently,
-.\" kernel 2.6.27
-.\" The same sentence is in getdents.2
-only some filesystems (among them: Btrfs, ext2, ext3, and ext4)
-have full support for returning the file type in
-.IR d_type .
-All applications must properly handle a return of
-.BR DT_UNKNOWN .
-
-Since POSIX.1 does not specify the size of the
-.I d_name
-field, and other nonstandard fields may precede that field within the
-.I dirent
-structure, portable applications that use
-.BR readdir_r ()
-should allocate the buffer whose address is passed in
-.IR entry
-as follows:
-.in +4n
-.nf
-
-name_max = pathconf(dirpath, _PC_NAME_MAX);
-if (name_max == \-1)         /* Limit not defined, or error */
-    name_max = 255;         /* Take a guess */
-len = offsetof(struct dirent, d_name) + name_max + 1;
-entryp = malloc(len);
-
-.fi
-.in
-(POSIX.1 requires that
-.I d_name
-is the last field in a
-.IR "struct dirent" .)
 .SH SEE ALSO
 .BR getdents (2),
 .BR read (2),
diff --git a/man3/realpath.3 b/man3/realpath.3
index 90cf017..f1d4278 100644
--- a/man3/realpath.3
+++ b/man3/realpath.3
@@ -44,8 +44,10 @@ Feature Test Macro Requirements for glibc (see
 .BR realpath ():
 .ad l
 .RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/remainder.3 b/man3/remainder.3
index 29633be..290396e 100644
--- a/man3/remainder.3
+++ b/man3/remainder.3
@@ -63,30 +63,27 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR remainder ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED ||
-_ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR remainderf (),
 .BR remainderl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR drem (),
 .BR dremf (),
 .BR dreml ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE
+/* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/remquo.3 b/man3/remquo.3
index 0ba6b25..60719c7 100644
--- a/man3/remquo.3
+++ b/man3/remquo.3
@@ -35,11 +35,7 @@ Feature Test Macro Requirements for glibc (see
 .BR remquof (),
 .BR remquol ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/rexec.3 b/man3/rexec.3
index 6e7f87b..7b6d846 100644
--- a/man3/rexec.3
+++ b/man3/rexec.3
@@ -43,7 +43,6 @@
 rexec, rexec_af \- return stream to a remote command
 .SH SYNOPSIS
 .nf
-.BR "#define _BSD_SOURCE" "             /* See feature_test_macros(7) */"
 .B #include <netdb.h>
 .sp
 .BI "int rexec(char **" ahost ", int " inport ", const char *" user ", "
@@ -53,6 +52,15 @@ rexec, rexec_af \- return stream to a remote command
 .BI "             const char *" passwd ", const char *" cmd ", int *" fd2p ,
 .BI "             sa_family_t " af  );
 .fi
+.sp
+.BR rexec (),
+.BR rexec_af ():
+.nf
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    In glibc up to and including 2.19:
+        _BSD_SOURCE
+.fi
 .SH DESCRIPTION
 This interface is obsoleted by
 .BR rcmd (3).
diff --git a/man3/rint.3 b/man3/rint.3
index 22fef4d..bf0fd92 100644
--- a/man3/rint.3
+++ b/man3/rint.3
@@ -57,30 +57,24 @@ Feature Test Macro Requirements for glibc (see
 .BR nearbyintf (),
 .BR nearbyintl ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _POSIX_C_SOURCE\ >=\ 200112L || _ISOC99_SOURCE;
-.br
-or
-.I cc\ -std=c99
+_POSIX_C_SOURCE\ >=\ 200112L || _ISOC99_SOURCE
 .RE
 .br
 .BR rint ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR rintf (),
 .BR rintl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/round.3 b/man3/round.3
index 80d3bac..7036fcd 100644
--- a/man3/round.3
+++ b/man3/round.3
@@ -50,11 +50,7 @@ Feature Test Macro Requirements for glibc (see
 .BR roundf (),
 .BR roundl ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/rpmatch.3 b/man3/rpmatch.3
index b7db5f5..42507ba 100644
--- a/man3/rpmatch.3
+++ b/man3/rpmatch.3
@@ -42,7 +42,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR rpmatch ():
-_SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _SVID_SOURCE
 .SH DESCRIPTION
 .BR rpmatch ()
 handles a user response to yes or no questions, with
diff --git a/man3/scalb.3 b/man3/scalb.3
index a81470b..cd43782 100644
--- a/man3/scalb.3
+++ b/man3/scalb.3
@@ -47,14 +47,18 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR scalb ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .br
 .BR scalbf (),
 .BR scalbl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600
+_XOPEN_SOURCE\ >=\ 600
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/scalbln.3 b/man3/scalbln.3
index c900fe8..5fe3510 100644
--- a/man3/scalbln.3
+++ b/man3/scalbln.3
@@ -55,22 +55,17 @@ Feature Test Macro Requirements for glibc (see
 .BR scalblnf (),
 .BR scalblnl ():
 .RS
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
 .RE
 .br
 .BR scalbn (),
 .BR scalbnf (),
 .BR scalbnl ():
 .RS
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/scandir.3 b/man3/scandir.3
index 9ff87dd..76dfe63 100644
--- a/man3/scandir.3
+++ b/man3/scandir.3
@@ -101,12 +101,8 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .PD 0
 .ad b
-_BSD_SOURCE || _SVID_SOURCE
-.br
-|| /* Since glibc 2.10: */
-.RS 4
-(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700)
-.RE
+/* Since glibc 2.10: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .PD
 .RE
 .sp
@@ -293,7 +289,7 @@ and glibc 2.10 changed the definition of
 to match the standard.
 .SH EXAMPLE
 .nf
-#define _SVID_SOURCE
+#define _DEFAULT_SOURCE
 /* print files in current directory in reverse order */
 #include <dirent.h>
 
diff --git a/man3/scanf.3 b/man3/scanf.3
index 0b2fdc8..d0e7fc2 100644
--- a/man3/scanf.3
+++ b/man3/scanf.3
@@ -77,11 +77,7 @@ Feature Test Macro Requirements for glibc (see
 .BR vsscanf (),
 .BR vfscanf ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I "cc -std=c99"
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .ad
 .RE
 .SH DESCRIPTION
diff --git a/man3/seekdir.3 b/man3/seekdir.3
index 30827ec..679e024 100644
--- a/man3/seekdir.3
+++ b/man3/seekdir.3
@@ -45,7 +45,9 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR seekdir ():
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE
+ _XOPEN_SOURCE
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .SH DESCRIPTION
 The
 .BR seekdir ()
diff --git a/man3/sem_wait.3 b/man3/sem_wait.3
index 3ba8c39..967691d 100644
--- a/man3/sem_wait.3
+++ b/man3/sem_wait.3
@@ -45,7 +45,7 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR sem_timedwait ():
-_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600
+_POSIX_C_SOURCE\ >=\ 200112L
 .SH DESCRIPTION
 .BR sem_wait ()
 decrements (locks) the semaphore pointed to by
diff --git a/man3/setbuf.3 b/man3/setbuf.3
index 817f6df..d28dd9c 100644
--- a/man3/setbuf.3
+++ b/man3/setbuf.3
@@ -69,7 +69,10 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR setbuffer (),
 .BR setlinebuf ():
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 The three types of buffering available are unbuffered, block buffered, and
 line buffered.
diff --git a/man3/setenv.3 b/man3/setenv.3
index cd6ea9f..ca64d4b 100644
--- a/man3/setenv.3
+++ b/man3/setenv.3
@@ -55,7 +55,8 @@ Feature Test Macro Requirements for glibc (see
 .BR setenv (),
 .BR unsetenv ():
 .RS 4
-_BSD_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600
+_POSIX_C_SOURCE\ >=\ 200112L
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/setjmp.3 b/man3/setjmp.3
index a6cfb42..55b9737 100644
--- a/man3/setjmp.3
+++ b/man3/setjmp.3
@@ -1,4 +1,4 @@
-.\" Written by Michael Haardt, Fri Nov 25 14:51:42 MET 1994
+.\" Copyright (C) 2016 Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
 .\" %%%LICENSE_START(GPLv2+_DOC_FULL)
 .\" This is free documentation; you can redistribute it and/or
@@ -26,14 +26,16 @@
 .\" "
 .TH SETJMP 3 2015-08-08 "" "Linux Programmer's Manual"
 .SH NAME
-setjmp, sigsetjmp \- save stack context for nonlocal goto
+setjmp, sigsetjmp, longjmp, siglongjmp  \- performing a nonlocal goto
 .SH SYNOPSIS
 .B #include <setjmp.h>
 .sp
 .nf
 .BI "int setjmp(jmp_buf " env );
-
 .BI "int sigsetjmp(sigjmp_buf " env ", int " savesigs );
+
+.BI "void longjmp(jmp_buf " env ", int " val );
+.BI "void siglongjmp(sigjmp_buf " env ", int " val );
 .fi
 .sp
 .in -4n
@@ -42,75 +44,129 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR setjmp ():
-see NOTES.
+    see NOTES.
 .br
 .BR sigsetjmp ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_C_SOURCE
+_POSIX_C_SOURCE
 .SH DESCRIPTION
+The functions described on this page are used for performing "nonlocal gotos":
+transferring execution from one function to a predetermined location
+in another function.
+The
 .BR setjmp ()
-and
-.BR longjmp (3)
-are useful for dealing with errors
-and interrupts encountered in a low-level subroutine of a program.
+function dynamically establishes the target to which control
+will later be transferred, and
+.BR longjmp ()
+performs the transfer of execution.
+
+The
 .BR setjmp ()
-saves the stack context/environment in
-.I env
-for
-later use by
-.BR longjmp (3).
-The stack context will be invalidated
-if the function which called
+function saves various information about the calling environment
+(typically, the stack pointer, the instruction pointer,
+possibly the values of other registers and the signal mask)
+in the buffer
+.IR env
+for later use by
+.BR longjmp ().
+In this case,
 .BR setjmp ()
-returns.
-.P
+returns 0.
+
+The
+.BR longjmp ()
+function uses the information saved in
+.IR env
+to transfer control back to the point where
+.BR setjmp ()
+was called and to restore ("rewind") the stack to its state at the time of the
+.BR setjmp ()
+call.
+In addition, and depending on the implementation (see NOTES),
+the values of some other registers and the process signal mask
+may be restored to their state at the time of the
+.BR setjmp ()
+call.
+
+Following a successful
+.BR longjmp (),
+execution continues as if
+.BR setjmp ()
+had returned for a second time.
+This "fake" return can be distinguished from a true
+.BR setjmp ()
+call because the "fake" return returns the value provided in
+.IR val .
+If the programmer mistakenly passes the value 0 in
+.IR val ,
+the "fake" return will instead return 1.
+
+.SS sigsetjmp() and siglongjmp()
 .BR sigsetjmp ()
-is similar to
-.BR setjmp ().
-If, and only if,
+and
+.BR siglongjmp ()
+also perform nonlocal gotos, but provide predictable handling of
+the process signal mask.
+
+If, and only if, the
 .I savesigs
-is nonzero,
-the process's current signal mask is saved in
+argument provided to
+.BR sigsetjmp ()
+is nonzero, the process's current signal mask is saved in
 .I env
 and will be restored if a
-.BR siglongjmp (3)
+.BR siglongjmp ()
 is later performed with this
 .IR env .
 .SH RETURN VALUE
 .BR setjmp ()
 and
 .BR sigsetjmp ()
-return 0 if returning directly, and
-nonzero when returning from
-.BR longjmp (3)
+return 0 when called directly;
+on the "fake" return that occurs after
+.BR longjmp ()
 or
-.BR siglongjmp (3)
-using the saved context.
+.BR siglongjmp (),
+the nonzero value specified in
+.I val
+is returned.
+
+The
+.BR longjmp ()
+or
+.BR siglongjmp ()
+functions do not return.
 .SH ATTRIBUTES
 For an explanation of the terms used in this section, see
 .BR attributes (7).
 .TS
 allbox;
-lbw21 lb lb
+lbw23 lb lb
 l l l.
 Interface	Attribute	Value
 T{
 .BR setjmp (),
 .BR sigsetjmp ()
 T}	Thread safety	MT-Safe
+T{
+.BR longjmp (),
+.BR siglongjmp ()
+T}	Thread safety	MT-Safe
 .TE
 
 .SH CONFORMING TO
-.BR setjmp ():
+.BR setjmp (),
+.BR longjmp ():
 POSIX.1-2001, POSIX.1-2008, C89, C99.
 
-.BR sigsetjmp ():
+.BR sigsetjmp (),
+.BR siglongjmp ():
 POSIX.1-2001, POSIX.1-2008.
 .SH NOTES
 POSIX does not specify whether
 .BR setjmp ()
 will save the signal mask
 (to be later restored during
-.BR longjmp (3)).
+.BR longjmp ().
 In System V it will not.
 In 4.3BSD it will, and there
 is a function
@@ -125,7 +181,7 @@ feature test macro is defined and none of
 .BR _POSIX_SOURCE ,
 .BR _POSIX_C_SOURCE ,
 .BR _XOPEN_SOURCE ,
-.BR _XOPEN_SOURCE_EXTENDED ,
+.\" .BR _XOPEN_SOURCE_EXTENDED ,
 .BR _GNU_SOURCE ,
 or
 .B _SVID_SOURCE
@@ -142,20 +198,103 @@ with a nonzero
 .I savesigs
 argument.
 
-If you want to portably save and restore signal masks, use
+.BR setjmp ()
+and
+.BR longjmp (3)
+can be useful for dealing with errors inside deeply nested function calls
+or to allow a signal handler to pass control to
+a specific point in the program,
+rather than returning to the point where the handler interrupted
+the main program.
+In the latter case,
+if you want to portably save and restore signal masks, use
 .BR sigsetjmp ()
 and
-.BR siglongjmp (3).
+.BR siglongjmp ().
+See also the discussion of program readability below.
+
+The compiler may optimize variables into registers, and
+.BR longjmp ()
+may restore the values of other registers in addition to the
+stack pointer and program counter.
+Consequently, the values of automatic variables are unspecified
+after a call to
+.BR longjmp ()
+if they meet all the following criteria:
+.IP \(bu 3
+they are local to the function that made the corresponding
+.BR setjmp (3)
+call;
+.IP \(bu
+their values are changed between the calls to
+.BR setjmp (3)
+and
+.BR longjmp ();
+and
+.IP \(bu
+they are not declared as
+.IR volatile .
 .P
+Analogous remarks apply for
+.BR siglongjmp ().
+.\"
+.SS Nonlocal gotos and program readability
+While it can be abused,
+the traditional C "goto" statement at least has the benefit that lexical cues
+(the goto statement and the target label)
+allow the programmer to easily perceive the flow of control.
+Nonlocal gotos provide no such cues: multiple
+.BR setjmp ()
+calls might employ the same
+.IR jmp_buf
+variable so that the content of the variable may change
+over the lifetime of the application.
+Consequently, the programmer may be forced to perform detailed
+reading of the code to determine the dynamic target of a particular
+.BR longjmp ()
+call.
+(To make the programmer's life easier, each
+.BR setjmp ()
+call should employ a unique
+.IR jmp_buf
+variable.)
+
+Adding further difficulty, the
 .BR setjmp ()
 and
-.BR sigsetjmp ()
-make programs hard to understand
-and maintain.
-If possible, an alternative should be used.
+.BR longjmp ()
+calls may not even be in the same source code module.
+
+In summary, nonlocal gotos can make programs harder to understand
+and maintain, and an alternative should be used if possible.
+.\"
+.SS Caveats
+If the function which called
+.BR setjmp ()
+returns before
+.BR longjmp ()
+is called, the behavior is undefined.
+Some kind of subtle or unsubtle chaos is sure to result.
+
+If, in a multithreaded program, a
+.BR longjmp ()
+call employs an
+.I env
+buffer that was initialized by a call to
+.BR setjmp ()
+in a different thread, the behavior is undefined.
+.\"
+.\" The following statement appeared in versions up to POSIX.1-2008 TC1,
+.\" but is set to be removed in POSIX.1-2008 TC2:
+.\"
+.\"     According to POSIX.1, if a
+.\"     .BR longjmp ()
+.\"     call is performed from a nested signal handler
+.\"     (i.e., from a handler that was invoked in response to a signal that was
+.\"     generated while another signal was already in the process of being
+.\"     handled), the behavior is undefined.
 .SH SEE ALSO
-.BR longjmp (3),
-.BR siglongjmp (3)
+.BR signal (7)
 .SH COLOPHON
 This page is part of release 4.04 of the Linux
 .I man-pages
diff --git a/man3/setnetgrent.3 b/man3/setnetgrent.3
index 6f89d2b..cfc2693 100644
--- a/man3/setnetgrent.3
+++ b/man3/setnetgrent.3
@@ -39,7 +39,10 @@ Feature Test Macro Requirements for glibc (see
 .BR getnetgrent (),
 .BR getnetgrent_r (),
 .BR innetgr ():
-_BSD_SOURCE || _SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .ad b
 .SH DESCRIPTION
 The
diff --git a/man3/siginterrupt.3 b/man3/siginterrupt.3
index d9f25c0..4ebc4f5 100644
--- a/man3/siginterrupt.3
+++ b/man3/siginterrupt.3
@@ -46,10 +46,10 @@ Feature Test Macro Requirements for glibc (see
 .BR siginterrupt ():
 .ad l
 .RS 4
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
-.br
-|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/signbit.3 b/man3/signbit.3
index d8c0001..ce0e47e 100644
--- a/man3/signbit.3
+++ b/man3/signbit.3
@@ -26,11 +26,7 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR signbit ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/significand.3 b/man3/significand.3
index 19a57ba..abbf23e 100644
--- a/man3/significand.3
+++ b/man3/significand.3
@@ -31,7 +31,8 @@ Feature Test Macro Requirements for glibc (see
 .BR significandf (),
 .BR significandl ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE
+/* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/sigset.3 b/man3/sigset.3
index 85cc515..fe8b708 100644
--- a/man3/sigset.3
+++ b/man3/sigset.3
@@ -51,8 +51,8 @@ Feature Test Macro Requirements for glibc (see
 .BR sigignore ():
 .br
 .RS 4
-_XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/sigsetops.3 b/man3/sigsetops.3
index e056c48..7374480 100644
--- a/man3/sigsetops.3
+++ b/man3/sigsetops.3
@@ -57,7 +57,7 @@ Feature Test Macro Requirements for glibc (see
 .BR sigdelset (),
 .BR sigismember ():
 .RS 4
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/sigvec.3 b/man3/sigvec.3
index c1f5875..85e4657 100644
--- a/man3/sigvec.3
+++ b/man3/sigvec.3
@@ -45,7 +45,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 All functions shown above:
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 These functions are provided in glibc as a compatibility interface
 for programs that make use of the historical BSD signal API.
diff --git a/man3/sigwait.3 b/man3/sigwait.3
index ff074d6..825bbd7 100644
--- a/man3/sigwait.3
+++ b/man3/sigwait.3
@@ -40,7 +40,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .ad l
 .BR sigwait ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
 .ad b
 .SH DESCRIPTION
 The
diff --git a/man3/sin.3 b/man3/sin.3
index bae783f..f787d67 100644
--- a/man3/sin.3
+++ b/man3/sin.3
@@ -57,11 +57,9 @@ Feature Test Macro Requirements for glibc (see
 .BR sinf (),
 .BR sinl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/sinh.3 b/man3/sinh.3
index 5d2f07e..7c23875 100644
--- a/man3/sinh.3
+++ b/man3/sinh.3
@@ -58,11 +58,9 @@ Feature Test Macro Requirements for glibc (see
 .BR sinhf (),
 .BR sinhl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/sockatmark.3 b/man3/sockatmark.3
index ffe55f1..ccca5f6 100644
--- a/man3/sockatmark.3
+++ b/man3/sockatmark.3
@@ -37,7 +37,7 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .ad l
 .BR sockatmark ():
-_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600
+_POSIX_C_SOURCE\ >=\ 200112L
 .ad b
 .SH DESCRIPTION
 .BR sockatmark ()
diff --git a/man3/sqrt.3 b/man3/sqrt.3
index 9e833da..cc9ec4b 100644
--- a/man3/sqrt.3
+++ b/man3/sqrt.3
@@ -56,11 +56,9 @@ Feature Test Macro Requirements for glibc (see
 .BR sqrtf (),
 .BR sqrtl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/stpcpy.3 b/man3/stpcpy.3
index 331b6c5..9f4c8c9 100644
--- a/man3/stpcpy.3
+++ b/man3/stpcpy.3
@@ -43,7 +43,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/stpncpy.3 b/man3/stpncpy.3
index c2c513c..4f448ca 100644
--- a/man3/stpncpy.3
+++ b/man3/stpncpy.3
@@ -32,7 +32,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/strdup.3 b/man3/strdup.3
index e332c0a..ad83b39 100644
--- a/man3/strdup.3
+++ b/man3/strdup.3
@@ -53,17 +53,17 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR strdup ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
-.br
-|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+_XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+    || /* Since glibc 2.12: */ _POSIX_C_SOURCE\ >=\ 200809L
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .PP
 .BR strndup ():
 .RS 4
 .TP 4
 Since glibc 2.10:
-_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/strerror.3 b/man3/strerror.3
index 0a48c4d..f0030ad 100644
--- a/man3/strerror.3
+++ b/man3/strerror.3
@@ -64,7 +64,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 The XSI-compliant version is provided if:
 .br
-(_POSIX_C_SOURCE\ >=\ 200112L || _XOPEN_SOURCE\ >=\ 600) && !\ _GNU_SOURCE
+(_POSIX_C_SOURCE\ >=\ 200112L) && ! \ _GNU_SOURCE
 .br
 Otherwise, the GNU-specific version is provided.
 .RE
diff --git a/man3/strnlen.3 b/man3/strnlen.3
index 63039b7..e7bd79c 100644
--- a/man3/strnlen.3
+++ b/man3/strnlen.3
@@ -31,7 +31,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/strsep.3 b/man3/strsep.3
index e1c9863..d136d50 100644
--- a/man3/strsep.3
+++ b/man3/strsep.3
@@ -46,7 +46,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR strsep ():
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 If
 .I *stringp
diff --git a/man3/strsignal.3 b/man3/strsignal.3
index 1725bf0..8cef601 100644
--- a/man3/strsignal.3
+++ b/man3/strsignal.3
@@ -50,7 +50,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/strtod.3 b/man3/strtod.3
index 65e320d..dd3c350 100644
--- a/man3/strtod.3
+++ b/man3/strtod.3
@@ -63,11 +63,7 @@ Feature Test Macro Requirements for glibc (see
 .BR strtof (),
 .BR strtold ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/strtok.3 b/man3/strtok.3
index 03d44a3..56426cd 100644
--- a/man3/strtok.3
+++ b/man3/strtok.3
@@ -48,8 +48,8 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .ad l
 .BR strtok_r ():
-_SVID_SOURCE || _BSD_SOURCE || _POSIX_C_SOURCE\ >=\ 1 ||
-_XOPEN_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .ad b
 .SH DESCRIPTION
 The
diff --git a/man3/strtol.3 b/man3/strtol.3
index 1008ba1..8854433 100644
--- a/man3/strtol.3
+++ b/man3/strtol.3
@@ -49,11 +49,8 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR strtoll ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _BSD_SOURCE || _SVID_SOURCE || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/strtoul.3 b/man3/strtoul.3
index 37ba97d..ef5d2d6 100644
--- a/man3/strtoul.3
+++ b/man3/strtoul.3
@@ -52,11 +52,8 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR strtoull ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _BSD_SOURCE || _SVID_SOURCE || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE ||
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/syslog.3 b/man3/syslog.3
index d922f2b..ae92a88 100644
--- a/man3/syslog.3
+++ b/man3/syslog.3
@@ -53,7 +53,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR vsyslog ():
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 .BR closelog ()
 closes the descriptor being used to write to the system logger.
diff --git a/man3/tan.3 b/man3/tan.3
index 3775f4c..37ebff6 100644
--- a/man3/tan.3
+++ b/man3/tan.3
@@ -57,11 +57,9 @@ Feature Test Macro Requirements for glibc (see
 .BR tanf (),
 .BR tanl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/tanh.3 b/man3/tanh.3
index 466c2e8..d93d666 100644
--- a/man3/tanh.3
+++ b/man3/tanh.3
@@ -57,11 +57,9 @@ Feature Test Macro Requirements for glibc (see
 .BR tanhf (),
 .BR tanhl ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/telldir.3 b/man3/telldir.3
index f02d5a9..5c6fbf5 100644
--- a/man3/telldir.3
+++ b/man3/telldir.3
@@ -43,7 +43,9 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR telldir ():
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE
+ _XOPEN_SOURCE
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 .SH DESCRIPTION
 The
 .BR telldir ()
diff --git a/man3/tempnam.3 b/man3/tempnam.3
index 3fd8c1a..2140d46 100644
--- a/man3/tempnam.3
+++ b/man3/tempnam.3
@@ -38,7 +38,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR tempnam ():
-_BSD_SOURCE || _SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .SH DESCRIPTION
 .I "Never use this function."
 Use
diff --git a/man3/termios.3 b/man3/termios.3
index 9aa1d4b..8b6a38e 100644
--- a/man3/termios.3
+++ b/man3/termios.3
@@ -81,7 +81,10 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR cfsetspeed (),
 .BR cfmakeraw ():
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 The termios functions describe a general terminal interface that is
 provided to control asynchronous communications ports.
diff --git a/man3/tgamma.3 b/man3/tgamma.3
index 4426af5..d4e8038 100644
--- a/man3/tgamma.3
+++ b/man3/tgamma.3
@@ -34,11 +34,8 @@ Feature Test Macro Requirements for glibc (see
 .BR tgammaf (),
 .BR tgammal ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE ||
+_POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/timegm.3 b/man3/timegm.3
index a406f14..337de7b 100644
--- a/man3/timegm.3
+++ b/man3/timegm.3
@@ -41,7 +41,10 @@ Feature Test Macro Requirements for glibc (see
 .sp
 .BR timelocal (),
 .BR timegm ():
-_BSD_SOURCE || _SVID_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE || _SVID_SOURCE
 .SH DESCRIPTION
 The functions
 .BR timelocal ()
diff --git a/man3/timeradd.3 b/man3/timeradd.3
index e503e8a..4774abe 100644
--- a/man3/timeradd.3
+++ b/man3/timeradd.3
@@ -50,7 +50,10 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 All functions shown above:
-_BSD_SOURCE
+    Since glibc 2.19:
+        _DEFAULT_SOURCE
+    Glibc 2.19 and earlier:
+        _BSD_SOURCE
 .SH DESCRIPTION
 The macros are provided to operate on
 .I timeval
diff --git a/man3/tmpnam.3 b/man3/tmpnam.3
index c677436..86b02e9 100644
--- a/man3/tmpnam.3
+++ b/man3/tmpnam.3
@@ -157,16 +157,7 @@ tmpnam_r(char *s)
 .fi
 .sp
 apparently as a warning not to use NULL.
-A few systems implement it.
-To get a glibc prototype for this function from
-.IR <stdio.h> ,
-define
-.B _SVID_SOURCE
-or
-.B _BSD_SOURCE
-(before including
-.I any
-header file).
+A few systems implement it and an implementation is provided in glibc.
 .SH BUGS
 Never use this function.
 Use
diff --git a/man3/toascii.3 b/man3/toascii.3
index d19032e..40caaed 100644
--- a/man3/toascii.3
+++ b/man3/toascii.3
@@ -40,7 +40,9 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR toascii ():
-_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE
+_XOPEN_SOURCE
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .SH DESCRIPTION
 .BR toascii ()
 converts
diff --git a/man3/trunc.3 b/man3/trunc.3
index b1813a6..5ef295b 100644
--- a/man3/trunc.3
+++ b/man3/trunc.3
@@ -48,11 +48,7 @@ Feature Test Macro Requirements for glibc (see
 .BR truncf (),
 .BR truncl ():
 .RS 4
-_XOPEN_SOURCE\ >=\ 600 || _ISOC99_SOURCE ||
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_ISOC99_SOURCE || _POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/ttyslot.3 b/man3/ttyslot.3
index 105908e..5b60705 100644
--- a/man3/ttyslot.3
+++ b/man3/ttyslot.3
@@ -43,9 +43,13 @@ Feature Test Macro Requirements for glibc (see
 .ad l
 .BR ttyslot ():
 .RS 4
-_BSD_SOURCE ||
+Since glibc 2.20:
+    _BSD_SOURCE ||
+    _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_\ <\ 500
 .br
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_\ <\ 500\ &&\ _XOPEN_SOURCE_EXTENDED
+Glibc 2.19 and earlier:
+    _DEFAULT_SOURCE ||
+    _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_\ <\ 500
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man3/tzset.3 b/man3/tzset.3
index 112f20c..5160373 100644
--- a/man3/tzset.3
+++ b/man3/tzset.3
@@ -50,16 +50,16 @@ Feature Test Macro Requirements for glibc (see
 .in
 .sp
 .BR tzset ():
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
+_POSIX_C_SOURCE
 .br
 .IR tzname :
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE
-.br
-.IR timezone :
-_SVID_SOURCE || _XOPEN_SOURCE
+_POSIX_C_SOURCE
 .br
+.IR timezone ,
 .IR daylight :
-_SVID_SOURCE || _XOPEN_SOURCE
+_XOPEN_SOURCE
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE
 .SH DESCRIPTION
 The
 .BR tzset ()
diff --git a/man3/ualarm.3 b/man3/ualarm.3
index 105000f..5a80d44 100644
--- a/man3/ualarm.3
+++ b/man3/ualarm.3
@@ -43,15 +43,14 @@ Feature Test Macro Requirements for glibc (see
 .TP 4
 Since glibc 2.12:
 .nf
-_BSD_SOURCE ||
-    (_XOPEN_SOURCE\ >=\ 500 ||
-        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
-    !(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700)
+(_XOPEN_SOURCE\ >=\ 500) && ! (_POSIX_C_SOURCE\ >=\ 200809L)
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .TP 4
 .fi
 Before glibc 2.12:
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .PD
 .RE
 .ad b
diff --git a/man3/unlocked_stdio.3 b/man3/unlocked_stdio.3
index e772cd3..434e1ab 100644
--- a/man3/unlocked_stdio.3
+++ b/man3/unlocked_stdio.3
@@ -73,8 +73,8 @@ Feature Test Macro Requirements for glibc (see
 .BR putc_unlocked (),
 .BR putchar_unlocked ():
 .RS 4
-_POSIX_C_SOURCE\ >=\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE ||
-_BSD_SOURCE || _SVID_SOURCE
+_POSIX_C_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .RE
 .sp
 .BR clearerr_unlocked (),
@@ -87,7 +87,8 @@ _BSD_SOURCE || _SVID_SOURCE
 .BR fread_unlocked (),
 .BR fwrite_unlocked ():
 .RS 4
-_BSD_SOURCE || _SVID_SOURCE
+/* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .RE
 .sp
 .BR fgets_unlocked (),
diff --git a/man3/usleep.3 b/man3/usleep.3
index 2908428..45d3682 100644
--- a/man3/usleep.3
+++ b/man3/usleep.3
@@ -52,15 +52,14 @@ Feature Test Macro Requirements for glibc (see
 .TP 4
 Since glibc 2.12:
 .nf
-_BSD_SOURCE ||
-    (_XOPEN_SOURCE\ >=\ 500 ||
-        _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED) &&
-    !(_POSIX_C_SOURCE\ >=\ 200809L || _XOPEN_SOURCE\ >=\ 700)
+(_XOPEN_SOURCE\ >=\ 500) && ! (_POSIX_C_SOURCE\ >=\ 200809L)
+    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
 .TP 4
 .fi
 Before glibc 2.12:
-_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500 ||
-_XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
+_BSD_SOURCE || _XOPEN_SOURCE\ >=\ 500
+.\"    || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED
 .PD
 .RE
 .ad b
diff --git a/man3/wcpcpy.3 b/man3/wcpcpy.3
index c2e1a61..acee50b 100644
--- a/man3/wcpcpy.3
+++ b/man3/wcpcpy.3
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/wcpncpy.3 b/man3/wcpncpy.3
index 4151fb3..ead179f 100644
--- a/man3/wcpncpy.3
+++ b/man3/wcpncpy.3
@@ -34,7 +34,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/wcscasecmp.3 b/man3/wcscasecmp.3
index b8b3c51..53757ca 100644
--- a/man3/wcscasecmp.3
+++ b/man3/wcscasecmp.3
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/wcsdup.3 b/man3/wcsdup.3
index 5934bee..24ed5f5 100644
--- a/man3/wcsdup.3
+++ b/man3/wcsdup.3
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/wcsncasecmp.3 b/man3/wcsncasecmp.3
index c7c9bc6..8504539 100644
--- a/man3/wcsncasecmp.3
+++ b/man3/wcsncasecmp.3
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/wcsnlen.3 b/man3/wcsnlen.3
index df02751..7a0e999 100644
--- a/man3/wcsnlen.3
+++ b/man3/wcsnlen.3
@@ -33,7 +33,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/wcsnrtombs.3 b/man3/wcsnrtombs.3
index 13f343c..6e1b866 100644
--- a/man3/wcsnrtombs.3
+++ b/man3/wcsnrtombs.3
@@ -34,7 +34,7 @@ Feature Test Macro Requirements for glibc (see
 .RS 4
 .TP 4
 Since glibc 2.10:
-_XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
+_POSIX_C_SOURCE\ >=\ 200809L
 .TP
 Before glibc 2.10:
 _GNU_SOURCE
diff --git a/man3/wprintf.3 b/man3/wprintf.3
index e08e1d6..6226e22 100644
--- a/man3/wprintf.3
+++ b/man3/wprintf.3
@@ -49,10 +49,7 @@ All functions shown above:
 .\" .BR vswprintf ():
 _XOPEN_SOURCE\ >=\ 500 || _ISOC99_SOURCE ||
 .br
-_POSIX_C_SOURCE\ >=\ 200112L;
-.br
-or
-.I cc\ -std=c99
+_POSIX_C_SOURCE\ >=\ 200112L
 .RE
 .ad
 .SH DESCRIPTION
diff --git a/man3/y0.3 b/man3/y0.3
index 0a6d0ed..803222f 100644
--- a/man3/y0.3
+++ b/man3/y0.3
@@ -72,7 +72,9 @@ Feature Test Macro Requirements for glibc (see
 .BR y1 (),
 .BR yn ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE
+_XOPEN_SOURCE
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .RE
 .br
 .BR y0f (),
@@ -82,8 +84,10 @@ _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE
 .BR ynf (),
 .BR ynl ():
 .RS 4
-_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\ >=\ 600
-.\" Also seems to work: -std=c99 -D_XOPEN_SOURCE
+_XOPEN_SOURCE \ >=\ 600
+    || (_ISOC99_SOURCE && _XOPEN_SOURCE)
+    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
+    || /* Glibc versions <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
 .RE
 .ad b
 .SH DESCRIPTION
diff --git a/man7/feature_test_macros.7 b/man7/feature_test_macros.7
index 80753b2..d1208fc 100644
--- a/man7/feature_test_macros.7
+++ b/man7/feature_test_macros.7
@@ -122,10 +122,76 @@ This format is employed in cases where only a single
 feature test macro can be used to expose the function
 declaration, and that macro is not defined by default.
 .SS Feature test macros understood by glibc
-The following paragraphs explain how feature test macros are handled
+The paragraphs below explain how feature test macros are handled
 in Linux glibc 2.\fIx\fP,
 .I x
 > 0.
+
+First, though a summary of a few details for the impatient:
+.IP * 3
+The macros that you most likely need to use in modern source code are
+.BR _POSIX_C_SOURCE
+(for definitions from various versions of POSIX.1),
+.BR _XOPEN_SOURCE
+(for definitions from various versions of SUS),
+.BR _GNU_SOURCE
+(for GNU and/or Linux specific stuff), and
+.BR _DEFAULT_SOURCE
+(to get definitions that would normally be provided by default).
+.IP *
+Certain macros are defined with default values.
+Thus, although one or more macros may be indicated as being 
+required in the SYNOPSIS of a man page,
+it may not be necessary to define them explicitly.
+Full details of the defaults are given later in this man page.
+.IP *
+Defining
+.BR _XOPEN_SOURCE
+with a value of 600 or greater produces the same effects as defining
+.BR _POSIX_C_SOURCE
+with a value of 200112L or greater.
+Where one sees
+.RS
+.nf
+
+    _POSIX_C_SOURCE >= 200112L
+
+.fi
+.RE
+.IP
+in the feature test macro requirements in the SYNOPSIS of a man page,
+it is implicit that the following has the same effect:
+.RS
+.nf
+
+    _XOPEN_SOURCE >= 600
+
+.fi
+.RE
+.IP *
+Defining
+.BR _XOPEN_SOURCE
+with a value of 700 or greater produces the same effects as defining
+.BR _POSIX_C_SOURCE
+with a value of 200809L or greater.
+Where one sees
+.RS
+.nf
+
+    _POSIX_C_SOURCE >= 200809L
+
+.fi
+.RE
+.IP
+in the feature test macro requirements in the SYNOPSIS of a man page,
+it is implicit that the following has the same effect:
+.RS
+.nf
+
+    _XOPEN_SOURCE >= 700
+
+.fi
+.RE
 .\" The details in glibc 2.0 are simpler, but combining a
 .\" a description of them with the details in later glibc versions
 .\" would make for a complicated description.
@@ -161,9 +227,11 @@ definitions for POSIX.1c (threads).
 .IP \(bu
 (Since glibc 2.3.3)
 The value 200112L or greater additionally exposes definitions corresponding
-to the POSIX.1-2001 base specification (excluding the XSI extension)
-and also causes C95 (since glibc 2.12) and
-C99 (since glibc 2.10) features to be exposed.
+to the POSIX.1-2001 base specification (excluding the XSI extension).
+This value also causes C95 (since glibc 2.12) and
+C99 (since glibc 2.10) features to be exposed
+(in other words, the equivalent of defining
+.BR _ISOC99_SOURCE ).
 .IP \(bu
 (Since glibc 2.10)
 The value 200809L or greater additionally exposes definitions corresponding
@@ -174,6 +242,10 @@ to the POSIX.1-2008 base specification (excluding the XSI extension).
 Defining this obsolete macro with any value is equivalent to defining
 .B _POSIX_C_SOURCE
 with the value 1.
+
+Since this macro is obsolete,
+its usage is generally not documented when discussing
+feature test macro requirements in the man pages.
 .TP
 .B _XOPEN_SOURCE
 Defining this macro causes header files to expose definitions as follows:
@@ -233,15 +305,32 @@ is defined with the value 200112L.
 is defined with the value 200809L.
 .RE
 .RE
+.IP
+In addition, defining
+.BR _XOPEN_SOURCE
+with a value of 500 or greater produces the same effects as defining
+.BR _XOPEN_SOURCE_EXTENDED .
 .TP
 .B _XOPEN_SOURCE_EXTENDED
-If this macro is defined, and
+If this macro is defined,
+.I and
 .B _XOPEN_SOURCE
 is defined, then expose definitions corresponding to the XPG4v2
 (SUSv1) UNIX extensions (UNIX 95).
-This macro is also implicitly defined if
+Defining
 .B _XOPEN_SOURCE
-is defined with a value of 500 or more.
+with a value of 500 or more also produces the same effect as defining
+.BR _XOPEN_SOURCE_EXTENDED .
+Use of
+.BR _XOPEN_SOURCE_EXTENDED
+in new source code should be avoided.
+
+Since defining
+.B _XOPEN_SOURCE
+with a value of 500 or more has the same effect as defining
+.BR _XOPEN_SOURCE_EXTENDED ,
+the latter (obsolete) feature test macro is generally not described in the
+SYNOPSIS in man pages.
 .TP
 .BR _ISOC99_SOURCE " (since glibc 2.1.3)"
 Exposes declarations consistent with the ISO C99 standard.
@@ -256,11 +345,19 @@ Defining
 .B _ISOC99_SOURCE
 also exposes ISO C (1990) Amendment 1 ("C95") definitions.
 (The primary change in C95 was support for international character sets.)
+
+Invoking the C compiler with the option
+.IR \-std=c99
+produces the same effects as defining this macro.
 .TP
 .BR _ISOC11_SOURCE " (since glibc 2.16)"
 Exposes declarations consistent with the ISO C11 standard.
 Defining this macro also enables C99 and C95 features (like
 .BR _ISOC99_SOURCE ).
+
+Invoking the C compiler with the option
+.IR \-std=c11
+produces the same effects as defining this macro.
 .TP
 .B _LARGEFILE64_SOURCE
 Expose definitions for the alternative API specified by the
@@ -381,8 +478,8 @@ Defining
 without defining other individual macros
 or invoking the compiler in one of its "standard" modes has no effect.
 
-The "default" definitions comprise those required by POSIX.1-2008
-as well as various definitions derived from BSD and System V.
+The "default" definitions comprise those required by POSIX.1-2008 and ISO C99,
+as well as various definitions originally derived from BSD and System V.
 On glibc 2.19 and earlier, these defaults were approximately equivalent
 to explicitly defining the following:
 
@@ -602,9 +699,9 @@ POSIX.1 specifies
 .BR _POSIX_SOURCE ,
 and
 .BR _XOPEN_SOURCE .
-.B _XOPEN_SOURCE_EXTENDED
-was specified by XPG4v2 (aka SUSv1).
 
+.B _XOPEN_SOURCE_EXTENDED
+was specified by XPG4v2 (aka SUSv1), but is not present in SUSv2 and later.
 .B _FILE_OFFSET_BITS
 is not specified by any standard,
 but is employed on some other implementations.
-- 
2.4.3