Differences between revisions 69 and 70
Revision 69 as of 2014-09-04 01:10:18
Size: 25959
Comment:
Revision 70 as of 2014-09-04 01:57:44
Size: 25959
Comment:
Deletions are marked like this. Additions are marked like this.
Line 31: Line 31:
 * --(s390 ABI issue (jmp_buf/ucontext_t) )--
 * --([[ThreadPropertiesAPI|Thread Properties API]])-- - not ready for this release.
 * --(fcntl-linux.h: add new definitions and manual updates for open file description locks - http://patchwork.sourceware.org/patch/1774/ )-- - Done!

 * --(PowerPC - fix termios definitions - https://sourceware.org/ml/libc-alpha/2014-07/msg00487.html) )--
  * Require to fix various packages build - https://bugzilla.redhat.com/show_bug.cgi?id=1122714

=== Desirable this release? ===
Line 86: Line 94:
 * --(s390 ABI issue (jmp_buf/ucontext_t) )--
 * --([[ThreadPropertiesAPI|Thread Properties API]])-- - not ready for this release.
 * --(fcntl-linux.h: add new definitions and manual updates for open file description locks - http://patchwork.sourceware.org/patch/1774/ )-- - Done!

 * --(PowerPC - fix termios definitions - https://sourceware.org/ml/libc-alpha/2014-07/msg00487.html) )--
  * Require to fix various packages build - https://bugzilla.redhat.com/show_bug.cgi?id=1122714

=== Desirable this release? ===

Release/2.20

1. Current status

The release branch of glibc-2.20 is maintained by Allan McRae ( allan@archlinux.org ) and is planned for release July 31st 2014. The freeze in preparation for this release will occur on July 1st 2014.

The ref structure of this branch is:

  • release/2.20/master: main branch
  • glibc-2.20.N: revision releases tagged out of release/2.20/master

These people are interested in contents and further revisions tagged on the branch:

The general policies for release branches apply to this branch. Do you think a certain bugfix should be included in this branch?

  1. Is the fix committed in master? It has to be, unless it's not applicable to master (e.g. code has been rewritten meantime).
  2. Do you have commit permissions? If so, go ahead if you think it's reasonably safe. break;
  3. Can you handle Git yourself? Then you can clone the glibc repository, cherry-pick the appropriate fixes, push your branch out and send a pull request at libc-alpha. break;
  4. Add the glibc_2.20 keyword to the appropriate bug report.
  5. If there is no appropriate bug report, send a request for the fix to be included to libc-alpha.

A revision release is tagged either when some critical bug-fix appears, or after some period of real-world testing, usually mainly in some SUSE distribution branch (but other distributions are welcome to run latest release/2.20/master as well, more so if they tell me about it!).

2. Planning

What things do we want to accomplish this release?

2.1. Release blockers?

2.2. Desirable this release?

3. Known Issues

3.1. Build and test issues

Describe build and test issues for each architecture, or confirm a clean build with no testsuite failures. The list below is not a complete list of ABI variants; testing should try to cover the different ABI variants as far as possible.

Build system: UNAME -a, GCC?, Binutils?, Kernel ?

TRIMMED LIST OF FAILURES.

3.1.1. Architecture-independent

  • On systems with limited memory, stdio-common/test-vfprintf and stdio-common/bug22 may fail (bug 14231).

  • On some systems, a race condition may cause nptl/tst-cancel7 and nptl/tst-cancelx7 to fail (bug 14232).

  • If cross-testing, and the physical path to the build directory is different on the build system and the host used for testing (if it involves a symlink on one system but not the other), io/ftwtest fails.
  • On systems with Linux kernels before September 2011, rt/tst-cpuclock2 fails (https://sourceware.org/ml/libc-alpha/2012-02/msg00468.html).

  • rt/tst-shm fails if /dev/shm is not mounted or does not have write permissions for the user running the tests.

  • If the test system does not have suitable copies of libgcc_s.so and libstdc++.so installed in system library directories, it is necessary to copy or symlink them into the build directory before testing (see https://sourceware.org/ml/libc-alpha/2012-04/msg01014.html regarding the use of system library directories here).

3.1.2. AArch64

Build system: AArch64 GNU/Linux, gcc version 4.8.2 20140120, GNU assembler version 2.23.52.0.1, Linux 3.15. (Carlos O'Donell)

FAIL: conform/POSIX/semaphore.h/conform
FAIL: conform/POSIX2008/cpio.h/conform
FAIL: conform/POSIX2008/semaphore.h/conform
FAIL: conform/UNIX98/cpio.h/conform
FAIL: conform/UNIX98/fmtmsg.h/conform
FAIL: conform/UNIX98/semaphore.h/conform
FAIL: conform/XOPEN2K/cpio.h/conform
FAIL: conform/XOPEN2K/fmtmsg.h/conform
FAIL: conform/XOPEN2K8/cpio.h/conform
FAIL: conform/XOPEN2K8/fmtmsg.h/conform
FAIL: conform/XOPEN2K8/semaphore.h/conform
FAIL: conform/XPG3/cpio.h/conform
FAIL: conform/XPG4/cpio.h/conform
FAIL: conform/XPG4/fmtmsg.h/conform
FAIL: debug/tst-backtrace5
FAIL: debug/tst-backtrace6
FAIL: math/basic-test
FAIL: rt/tst-mqueue6
Summary of test results:
     18 FAIL
   1651 PASS
    120 XFAIL
      4 XPASS

The tst-backtrace failures have been partly analyzed but no solution found yet:

https://sourceware.org/ml/libc-alpha/2014-08/msg00139.html

The math failures are probably a gcc bug:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61441

Build system: AArch64 GNU/Linux, gcc version 4.9.2 20140728, GNU assembler version 2.24.51, Linux version 3.14.0-rc6. (Marcus Shawcroft)

...
FAIL: debug/tst-backtrace4
FAIL: debug/tst-backtrace5
FAIL: debug/tst-backtrace6
FAIL: elf/check-abi-libc
FAIL: elf/tst-dl-iter-static
FAIL: rt/tst-cpuclock2
FAIL: rt/tst-cputimer1

Summary of test results:
      7 FAIL
   1653 PASS
    120 XFAIL
      4 XPASS

The check-abi-libc is due to my prefix setting impacting _nl_default_dirname.

3.1.3. Alpha

Build system: alphaev67 qemu 2.0.95, gcc version 4.9.0 (Gentoo 4.9.0 p1.0, pie-0.6.0), GNU assembler (Gentoo git) 2.24.51.20140619, Linux 3.16.0-rc6. (Richard Henderson)

...
FAIL: crypt/badsalttest
FAIL: debug/tst-backtrace5
FAIL: debug/tst-backtrace6
FAIL: math/test-fenv-return
FAIL: math/test-float

The badsalttest failure is a real bug in strncmp, reading past the first difference. The test-fenv-return and test-float failures are believed to be qemu fp bugs.

3.1.4. ARM

Build system: ARM GNU/Linux (gnueabihf), gcc version 4.8.2, GNU assembler version 2.24, Linux 3.4.0. (Will Newton)

Summary of test results:
   1704 PASS
    120 XFAIL
      4 XPASS

Build system: (hard-float ABI) GCC 4.9.2 20140811 (prerelease), binutils 2.24.51.20140811, Linux 2.6.35 (Joseph Myers)

FAIL: io/ftwtest
FAIL: nptl/tst-cancel7
FAIL: nptl/tst-cancelx7
FAIL: nptl/tst-cond-except
FAIL: nptl/tst-cond17
FAIL: nptl/tst-cond24
FAIL: nptl/tst-cond25
FAIL: nptl/tst-robust1
FAIL: nptl/tst-robust3
FAIL: nptl/tst-robust4
FAIL: nptl/tst-robust7
FAIL: nptl/tst-robust9
FAIL: rt/tst-cpuclock2

The NPTL failures not mentioned as architecture-independent are thought to result from general unreliability of the board being used for testing.

Build system: (soft-float) GCC 4.9.2 20140811 (prerelease), binutils 2.24.51.20140811, Linux 2.6.34.1 (Joseph Myers)

FAIL: elf/tst-tls13
FAIL: io/ftwtest
FAIL: math/basic-test
FAIL: nptl/tst-cancel7
FAIL: nptl/tst-cancelx7
FAIL: nptl/tst-mutexpi9
FAIL: nptl/tst-setuid3
FAIL: nptl/tst-stackguard1
FAIL: rt/tst-cpuclock1
FAIL: rt/tst-shm
FAIL: stdio-common/bug22
FAIL: stdio-common/test-vfprintf
  • On soft-float systems, math/basic-test fails because of GCC bug 59833.

  • rt/tst-cpuclock1 may have the same cause of failure as rt/tst-cpuclock2.
  • elf/tst-tls13 and nptl/tst-stackguard1 are timeouts, possibly related to slow NFS.
  • Cause of nptl/tst-mutexpi9 and nptl/tst-setuid3 failures unknown.

3.1.5. HPPA

Build system: HP-PARISC GNU/Linux, gcc version 4.6.3 (Gentoo 4.6.3 p1.13, pie-0.5.2), GNU assembler version 2.23.2, Linux 3.13 (Carlos O'Donell)

FAIL: math/test-double
FAIL: math/test-fenv-return
FAIL: math/test-float
FAIL: math/test-idouble
FAIL: math/test-ifloat
FAIL: posix/tst-getcpu
FAIL: rt/tst-aio64
FAIL: rt/tst-mqueue8x
FAIL: elf/check-execstack
FAIL: elf/check-localplt
FAIL: elf/check-textrel
FAIL: elf/tst-addr1
FAIL: elf/tst-audit2
FAIL: nptl/tst-attr3
FAIL: nptl/tst-cancel11
FAIL: nptl/tst-cancel2
FAIL: nptl/tst-cancel20
FAIL: nptl/tst-cancel21
FAIL: nptl/tst-cancel21-static
FAIL: nptl/tst-cancel22
FAIL: nptl/tst-cancel23
FAIL: nptl/tst-cancel25
FAIL: nptl/tst-cancel3
FAIL: nptl/tst-cancel4
FAIL: nptl/tst-cancel5
FAIL: nptl/tst-cancel6
FAIL: nptl/tst-cancelx11
FAIL: nptl/tst-cancelx2
FAIL: nptl/tst-cancelx20
FAIL: nptl/tst-cancelx21
FAIL: nptl/tst-cancelx3
FAIL: nptl/tst-cancelx4
FAIL: nptl/tst-cancelx5
FAIL: nptl/tst-cancelx6
FAIL: nptl/tst-cleanup4
FAIL: nptl/tst-cleanupx4
FAIL: nptl/tst-cond20
FAIL: nptl/tst-cond21
FAIL: nptl/tst-fini1
FAIL: nptl/tst-key3
FAIL: nptl/tst-sem14
FAIL: nptl/tst-stack1
FAIL: conform/POSIX/semaphore.h/conform
FAIL: conform/POSIX2008/cpio.h/conform
FAIL: conform/POSIX2008/semaphore.h/conform
FAIL: conform/UNIX98/cpio.h/conform
FAIL: conform/UNIX98/fmtmsg.h/conform
FAIL: conform/UNIX98/semaphore.h/conform
FAIL: conform/XOPEN2K/cpio.h/conform
FAIL: conform/XOPEN2K/fmtmsg.h/conform
FAIL: conform/XOPEN2K8/cpio.h/conform
FAIL: conform/XOPEN2K8/fmtmsg.h/conform
FAIL: conform/XOPEN2K8/semaphore.h/conform
FAIL: conform/XPG3/cpio.h/conform
FAIL: conform/XPG4/cpio.h/conform
FAIL: conform/XPG4/fmtmsg.h/conform
FAIL: conform/ISO11/stddef.h/conform
FAIL: conform/ISO11/tgmath.h/conform
FAIL: conform/POSIX/aio.h/conform
FAIL: conform/POSIX/mqueue.h/conform
FAIL: conform/POSIX/pthread.h/conform
FAIL: conform/POSIX/regex.h/conform
FAIL: conform/POSIX/signal.h/conform
FAIL: conform/POSIX/sys/mman.h/conform
FAIL: conform/POSIX/sys/types.h/conform
FAIL: conform/POSIX/sys/wait.h/conform
FAIL: conform/POSIX2008/aio.h/conform
FAIL: conform/POSIX2008/mqueue.h/conform
FAIL: conform/POSIX2008/pthread.h/conform
FAIL: conform/POSIX2008/regex.h/conform
FAIL: conform/POSIX2008/spawn.h/conform
FAIL: conform/POSIX2008/sys/mman.h/conform
FAIL: conform/POSIX2008/sys/types.h/conform
FAIL: conform/UNIX98/aio.h/conform
FAIL: conform/UNIX98/ftw.h/conform
FAIL: conform/UNIX98/mqueue.h/conform
FAIL: conform/UNIX98/pthread.h/conform
FAIL: conform/UNIX98/regex.h/conform
FAIL: conform/UNIX98/sys/mman.h/conform
FAIL: conform/UNIX98/sys/types.h/conform
FAIL: conform/UNIX98/sys/uio.h/conform
FAIL: conform/XOPEN2K/ftw.h/conform
FAIL: conform/XOPEN2K/pthread.h/conform
FAIL: conform/XOPEN2K/regex.h/conform
FAIL: conform/XOPEN2K/spawn.h/conform
FAIL: conform/XOPEN2K/stdlib.h/conform
FAIL: conform/XOPEN2K/sys/mman.h/conform
FAIL: conform/XOPEN2K/sys/types.h/conform
FAIL: conform/XOPEN2K/sys/uio.h/conform
FAIL: conform/XOPEN2K8/aio.h/conform
FAIL: conform/XOPEN2K8/ftw.h/conform
FAIL: conform/XOPEN2K8/mqueue.h/conform
FAIL: conform/XOPEN2K8/pthread.h/conform
FAIL: conform/XOPEN2K8/regex.h/conform
FAIL: conform/XOPEN2K8/spawn.h/conform
FAIL: conform/XOPEN2K8/stdlib.h/conform
FAIL: conform/XOPEN2K8/sys/mman.h/conform
FAIL: conform/XOPEN2K8/sys/types.h/conform
FAIL: conform/XOPEN2K8/sys/uio.h/conform
FAIL: conform/XPG4/sys/mman.h/conform
FAIL: stdlib/tst-makecontext

* Custom patch required to build and run glibc for hppa. * Removed generic conform test failures, but haven't looked at why all the other conform failures are there. * The cancellation failures are long standing issues that need resolution with cancellation.

3.1.6. IA64

Build system: ia64 Dual-Core Intel(R) Itanium(R) Processor 9040, gcc (Gentoo 4.7.3-r1 p1.4, pie-0.5.5), GNU assembler (Gentoo 2.23.2 p1.0), Linux 3.12.13-gentoo. (Mike Frysinger)

FAIL: debug/tst-backtrace4
FAIL: math/test-double
FAIL: math/test-fenv-return
FAIL: math/test-float
FAIL: math/test-idouble
FAIL: math/test-ifloat
FAIL: math/test-ildoubl
FAIL: math/test-ldouble
FAIL: rt/tst-cpuclock2
FAIL: stdio-common/tst-long-dbl-fphex
FAIL: stdlib/tst-makecontext3
FAIL: stdlib/tst-strtod6
FAIL: time/bug-getdate1
  • tst-backtrace4 is known to fail on IA64 due to limited backtrace output; mailing list thread

  • tst-cpuclock2 seems to be flaky as it passes normally, but sometimes fails under load
  • makecontext is known to be limited on IA64 and the testsuite runs up against that; bug 14250

  • bug-getdate1 seems to be flaky as it passes normally, but sometimes fails under load
  • all the rest are math related and probably match some open bugs on the topic, or need some baselines updated

3.1.6.1. regression
  • test-fenv-return ???

3.1.7. M68K

3.1.8. MicroBlaze

3.1.9. MIPS

Build system: GCC 4.9.2 20140811 (prerelease), binutils 2.24.51.20140811, Linux 2.6.35.9 (Joseph Myers) - the following failures apply to both BE and LE, all of o32, n32 and n64, both hard-float and soft-float.

FAIL: elf/check-execstack
FAIL: elf/check-localplt
FAIL: elf/tst-audit1
FAIL: elf/tst-audit2
FAIL: elf/tst-audit8
FAIL: elf/tst-audit9
FAIL: io/ftwtest
FAIL: stdio-common/bug22

Additional failures seen for hard-float o32:

FAIL: math/test-double
FAIL: math/test-float

Additional failure seen for soft-float:

FAIL: math/test-fenv
  • On soft-float MIPS systems, there is no support for floating-point exceptions and rounding modes, causing math/test-fenv to fail.
  • For hard-float MIPS, o32 ABI (maybe only some architecture variants), math/test-float and math/test-double fail with missing "invalid" exceptions; see bug 16399.

  • MIPS GCC does not use PT_GNU_STACK markers (this is a GCC issue), causing elf/check-execstack to fail (the relevant kernel support went in around February 2010).
  • Peculiarities of MIPS ELF cause elf/tst-audit1, elf/tst-audit2, elf/tst-audit8, elf/tst-audit9 and elf/check-localplt to fail. For the first two, see bug 2981.

3.1.10. PowerPC (32-bit soft-float)

Build system: GCC 4.9.2 20140811 (prerelease), binutils 2.24.51.20140811, Linux 2.6.34.1 (Joseph Myers)

FAIL: io/ftwtest
FAIL: math/test-double
FAIL: math/test-float
FAIL: math/test-ildoubl
FAIL: math/test-ldouble
FAIL: rt/tst-cpuclock2
FAIL: stdio-common/bug22
  • test-double, test-float, test-ildoubl and test-ldouble fail because of IBM long double issues.

3.1.11. PowerPC (32-bit hard-float)

Build system: GCC version 4.9.2 20140813 (prerelease), binutils version 2.24.51.20140714, Linux 3.16.0-rc5. (Adhemerval Zanella)

FAIL: math/test-ildoubl
FAIL: math/test-ldouble
FAIL: nptl/tst-cond18
FAIL: nptl/tst-eintr1
  • test-double, test-float, test-ildoubl and test-ldouble fail because of IBM long double issues.

3.1.12. PowerPC (64-bit hard-float) - Big Endian (ELFv1)

Build system: GCC version 4.9.2 20140813 (prerelease), binutils version 2.24.51.20140714, Linux 3.16.0-rc5. (Adhemerval Zanella)

FAIL: elf/ifuncmain6pie
FAIL: math/test-ildoubl
FAIL: math/test-ldouble
FAIL: nptl/tst-cond18
FAIL: nptl/tst-eintr1
FAIL: rt/tst-cpuclock2
  • test-double, test-float, test-ildoubl and test-ldouble fail because of IBM long double issues.
  • I am investigating elf/ifuncmain6pie failure.
    • It seems a GCC 4.9 issue, since I can not reproduce it with GCC 4.8 or GCC 4.7.

3.1.13. PowerPC (64-bit hard-float) - Little Endian (ELFv2)

Build system: GCC version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) , binutils version 2.24, Linux 3.13.0-27. (Adhemerval Zanella)

FAIL: math/test-ildoubl
FAIL: math/test-ldouble
  • test-double, test-float, test-ildoubl and test-ldouble fail because of IBM long double issues.

3.1.14. S/390 (32-bit)

Build system: s390 GNU/Linux, gcc version 4.9.0 20140217, GNU assembler version 2.24.51, Linux 3.6.2 (Stefan Liebler)

Summary of tests.sum results:
   1666 PASS
    121 XFAIL
      3 XPASS

FAIL: nptl/tst-setuid2
Summary of xtests.sum results:
      1 FAIL
     15 PASS

nptl/tst-setuid2 passes with root privileges.

3.1.15. S/390 (64-bit)

Build system: s390x GNU/Linux, gcc version 4.9.0 20140217, GNU assembler version 2.24.51, Linux 3.13.6 (Stefan Liebler)

Summary of tests.sum results:
   1703 PASS
    120 XFAIL
      4 XPASS

FAIL: nptl/tst-setuid2
Summary of xtests.sum results:
      1 FAIL
     15 PASS

nptl/tst-setuid2 passes with root privileges.

3.1.16. SH

3.1.17. SPARC (32-bit)

FAIL: math/test-ldouble

* test-ldouble appears to be an unexpected underflow being signalled in erf() with 128-bit long doubles; bug 17257

3.1.18. SPARC (64-bit)

FAIL: math/test-ldouble

* test-ldouble is the same failure as seen on SPARC 32-bit.

3.1.19. TILE-Gx

3.1.20. TILEPro

3.1.21. x86 (32-bit, Linux)

Some GCC releases miscompile the setxid support code in NPTL. This results in functions such as setgid failing with ENOSYS because an totally bogus system call number is being passed to the kernel. This has been fixed as GCC bug 61801.

Build system: x86_64 GNU/Linux, gcc version 4.8.3 20140624 (Red Hat 4.8.3-1) (GCC), GNU assembler version 2.23.2 (x86_64-redhat-linux) using BFD version version 2.23.2, Linux 3.15.3-200.fc20.x86_64 (Carlos O'Donell). Built with -m32' and targetting i686-pc-linux-gnu'.

...
FAIL: nptl/tst-setuid3
FAIL: rt/tst-cputimer1
Summary of test results:
     16 FAIL
   1691 PASS
      1 UNRESOLVED
    120 XFAIL
      4 XPASS

In addition, the following test fails when compiling with gcc-4.9:

FAIL: nptl/tst-cleanupx4

3.1.22. x86_64 (64-bit, Linux)

Build system: x86_64 GNU/Linux, gcc version 4.8.3 20140624 (Red Hat 4.8.3-1) (GCC), GNU assembler version 2.23.2 (x86_64-redhat-linux) using BFD version version 2.23.2, Linux 3.15.3-200.fc20.x86_64 (Carlos O'Donell).

...
Summary of test results:
     14 FAIL
   1708 PASS
    121 XFAIL
      3 XPASS

3.1.23. x86_64 (x32, Linux)

Build system: x86_64 GNU/Linux, gcc version 4.8.3 20140624 (Red Hat 4.8.3-1) (GCC), GNU binutils 2.24.51 (20140806), Linux 3.15.8-200.fc20.x86_64 (H.J. Lu). Since clock_t and tv_nsec are long long for x32 while conform tests expect they are long, those failures are expected. elf/check-localplt is due to https://sourceware.org/bugzilla/show_bug.cgi?id=16512

FAIL: conform/ISO/time.h/conform
FAIL: conform/ISO11/time.h/conform
FAIL: conform/ISO99/time.h/conform
FAIL: conform/POSIX/mqueue.h/conform
FAIL: conform/POSIX/sched.h/conform
FAIL: conform/POSIX/time.h/conform
FAIL: conform/POSIX2008/mqueue.h/conform
FAIL: conform/POSIX2008/sys/select.h/conform
FAIL: conform/POSIX2008/sys/stat.h/conform
FAIL: conform/POSIX2008/time.h/conform
FAIL: conform/UNIX98/mqueue.h/conform
FAIL: conform/UNIX98/sched.h/conform
FAIL: conform/UNIX98/time.h/conform
FAIL: conform/XOPEN2K/sys/select.h/conform
FAIL: conform/XOPEN2K/time.h/conform
FAIL: conform/XOPEN2K8/mqueue.h/conform
FAIL: conform/XOPEN2K8/sys/stat.h/conform
FAIL: conform/XOPEN2K8/time.h/conform
FAIL: conform/XPG4/time.h/conform
FAIL: elf/check-localplt
     20 FAIL
    121 XFAIL
FAIL: nptl/tst-setuid2
      1 FAIL

3.1.24. x86 (32-bit, Hurd)

3.2. Packaging Changes

Describe any distribution packing changes that may be required:

3.2.1. Update build recipies

With the de-addon-ification of nptl you should use --enable-add-ons to avoid getting the following error:

checking sysdep dirs... sysdeps/unix/sysv/linux/x86_64/64 sysdeps/unix/sysv/linux/x86_64 sysdeps/unix/sysv/linux/x86 sysdeps/unix/sysv/linux/wordsize-64 sysdeps/x86_64/nptl sysdeps/unix/sysv/linux sysdeps/nptl sysdeps/pthread sysdeps/gnu sysdeps/unix/inet sysdeps/unix/sysv sysdeps/unix/x86_64 sysdeps/unix sysdeps/posix sysdeps/x86_64/64 sysdeps/x86_64/fpu/multiarch sysdeps/x86_64/fpu sysdeps/x86/fpu sysdeps/x86_64/multiarch sysdeps/x86_64 sysdeps/x86 sysdeps/ieee754/ldbl-96 sysdeps/ieee754/dbl-64/wordsize-64 sysdeps/ieee754/dbl-64 sysdeps/ieee754/flt-32 sysdeps/wordsize-64 sysdeps/ieee754 sysdeps/generic
configure: error: add-on nptl has no configure fragment or sysdeps tree

This is because nptl is no longer an add-on, it's an integral part of glibc.

3.2.2. Deprecation of _BSD_SOURCE and _SVID_SOURCE feature macros

The _BSD_SOURCE and _SVID_SOURCE feature macros are in the process of being deprecated for a cleaner interface for enabling or disabling all the additional features normally defined in the GNU C Library. The replacement is _DEFAULT_SOURCE, and provides everything provided by the previous two macros e.g. all options enabled by default if the compiler options would not restrict them.

Summary Table:

Feature Test Macro

Version 2.18

Version 2.19

Version 2.20

_BSD_SOURCE

Supported. ISO C, POSIX, and 4.3BSD things.

Supported.

Supported, but issues a warning if _DEFAULT_SOURCE is not defined.

_SVID_SOURCE

Supported. ISO C, POSIX, and SVID things.

Supported.

Supported, but issues a warning if _DEFAULT_SOURCE is not defined.

_DEFAULT_SOURCE

Unsupported (ignored).

Supported.

Supported. The default set of features (taking precedence over __STRICT_ANSI__).

The _BSD_SOURCE and _SVID_SOURCE feature macros are not yet deprecated, but use of those macros will produce the following warning:

In file included from /usr/include/stdio.h:27:0,
                 from test3.c:2:
/usr/include/features.h:152:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
 # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
   ^

The recommend process for removing the warning is to the following:

  • Remove the defines for _BSD_SOURCE and _SVID_SOURCE to determine if your application actually needs them. Several of these define are cargo culted from older sources without a clear understanding of the interfaces they enable. The application may in fact not need either of these defines.

  • If the application does indeed need _BSD_SOURCE and/or _SVID_SOURCE, you only support glibc >= 2.20 and you're on Linux then define _DEFAULT_SOURCE instead like this:

#if defined __linux__
# define _DEFAULT_SOURCE 1
#else
# define _BSD_SOURCE 1
# define _SVID_SOURCE 1
#endif
  • If the application does indeed need _BSD_SOURCE and/or _SVID_SOURCE and you must support glibc < 2.19 and glibc >= 2.20 then define all three unconditionally:

/* Legacy feature macros.  */
#define _BSD_SOURCE 1
#define _SVID_SOURCE 1
/* New feature macro that provides everything _BSD_SOURCE and
   _SVID_SOURCE provided and possibly more.  */
#define _DEFAULT_SOURCE 1

Eventually when _BSD_SOURCE and _SVID_SOURCE are removed your application will need to define _DEFAULT_SOURCE to continue to operate correctly. For more information on _DEFAULT_SOURCE see the glibc manual.

None: Release/2.20 (last edited 2014-09-09 04:48:10 by Kazumoto Kojima)