Release/2.17
The release branch of glibc-2.17 is maintained by Carlos O'Donell.
This branch was previously maintained by David Miller until 2014-10-03.
The 2.17 release branch is release/2.17/master.
Machine status:
- AArch64, builds, tested cross with issues listed below (By: Marcus Shawcroft, Linux 3.7.0-rc5+, GCC 4.7.3 20121105, Binutils 2.23.51.20121203)
- x86, builds, some testsuite failures listed below (By: H.J. on Fedora 17, Linux 3.6.10, GCC 4.7.2, Binutils 2.23.51.0.6)
x86 GNU/Hurd, needs patching
- x86-64, builds, some testsuite failures listed below (By: Carlos on FC17, Linux 3.3.4, GCC 4.7.2, Binutils 2.22.52.0.1)
- x32, builds, some testsuite failures listed below (By: H.J. on Fedora 17, Linux 3.6.10, GCC 4.7.2, Binutils 2.23.51.0.6)
- Power, ???
- Power64, builds, some testsuite failures listed below (By: Siddhesh on Fedora 18, Linux 3.6.0, GCC 4.7.2, Binutils 2.23.51.0.1)
- s390, builds, some testsuite failures listed below (By: Krebbel on Linux 2.6.35, GCC 4.8 r194628, Binutils: 2.23.51.20121023)
- s390x, builds, some testsuite failures listed below (By: Krebbel on Linux 3.6.8, GCC 4.8 r194572, Binutils: 2.23.51.20121120) (By: Siddhesh on Fedora 18, Linux 3.6.0, GCC 4.7.2, Binutils 2.23.51.0.1)
- ARM, builds, some testsuite failures listed below
- MIPS, builds, some testsuite failures listed below
- sparc, builds, no testsuite failures
- sparc64, builds, no testsuite failures
- Alpha, builds (cross-compile) (By: vapier on Gentoo, Linux 3.7, GCC 4.7.2, Binutils 2.23.1)
- IA64, Builds, No testsuite regressions. (By: vapier on Gentoo, Linux 3.3.8, GCC 4.5.4, Binutils 2.22)
- HP-PARISC, fails to build. Requires NPTL patches. Plan to have everything merged by 2.18 release. (By: Carlos on Gentoo, Linux 3.6.0-rc6, GCC 4.5.3, Binutils 2.22)
- SH, builds (cross-compile) (By: vapier on Gentoo, Linux 3.7, GCC 4.7.2, Binutils 2.23.1)
- m68k, ???
tilepro/tilegx, builds, some testsuite failures listed below (By: ChrisMetcalf on Tilera MDE 4.x, Linux 3.6.0, GCC 4.4, Binutils 2.21)
The ref structure of this branch is:
- release/2.17/master: main branch
- glibc-2.17.1: revision releases tagged out of release/2.17/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?
- Is the fix committed in master? It has to be, unless it's not applicable to master (e.g. code has been rewritten meantime).
- Do you have commit permissions? If so, go ahead if you think it's reasonably safe. break;
- 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;
- Add the glibc_2.17 keyword to the appropriate bug report.
- 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.17/master as well, more so if they tell me about it!).
ABI Compatibility Status
ABI checker result (relative to 2.16):
CPU \ Kernel |
GNU/Linux |
GNU/kFreeBSD |
... |
x86 |
|
|
|
x86_64 |
|
|
|
arm |
|
|
|
... |
|
|
|
Known Issues
Testsuite Failures
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 (http://sourceware.org/ml/libc-alpha/2012-02/msg00468.html).
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 http://sourceware.org/ml/libc-alpha/2012-04/msg01014.html regarding the use of system library directories here).
AArch64
- intl/tst-gettext fails when run cross, runs fine native:
tst-gettext.c:214: setlocale (LC_ALL, ""): No such file or directory
- posix/tst-chmod fails intermittently when run cross against an NFS filesystem:
chmod(...,0) did not set ctime correctly
ARM
- On systems with VFPv3 or VFPv4 (not VFPv2, VFPv3U or VFPv4U), math/test-fenv fails. fesetenv (FE_NOMASK_ENV) fails on such systems for lack of support for trapping exceptions, but the test does not handle that failure; feenableexcept should also fail, but does not, and the test does not handle failure of feenableexcept either.
- On systems not using VFP, math/test-fenv, math/test-misc, math/test-fpucw, math/bug-nextafter, math/bug-nexttoward, math/test-float, math/test-double, math/test-ifloat and math/test-idouble fail (the lack of support for floating point exceptions and rounding modes is determined at run time, and while tests generally check for errors from fesetround they do not handle a run-time lack of exceptions being raised).
On systems with VFP support, but where glibc is built for soft-float, math/test-fenv, math/test-misc, math/bug-nextafter, math/bug-nexttoward, math/test-float, math/test-double, math/test-ifloat, math/test-idouble and stdlib/tst-strtod-round fail (fesetround passes, but does not affect the copies of libgcc functions linked into glibc; see bug 10064).
IA64
make[2]: [/home/vapier/glibc/build/math/test-float.out] Error 1 make[2]: [/home/vapier/glibc/build/math/test-double.out] Error 1 make[2]: [/home/vapier/glibc/build/math/test-ldouble.out] Error 1 make[2]: [/home/vapier/glibc/build/math/test-ildoubl.out] Error 1 make[2]: [/home/vapier/glibc/build/math/test-ifloat.out] Error 1 make[2]: [/home/vapier/glibc/build/math/test-idouble.out] Error 1 make[2]: [/home/vapier/glibc/build/stdlib/tst-makecontext3.out] Error 1 make[2]: [/home/vapier/glibc/build/stdio-common/tst-long-dbl-fphex.out] Error 1 make[2]: [/home/vapier/glibc/build/posix/tst-getcpu.out] Error 1 make[2]: [/home/vapier/glibc/build/posix/annexc.out] Error 1 (ignored) make[2]: [/home/vapier/glibc/build/conform/run-conformtest.out] Error 1 (ignored) make[2]: [/home/vapier/glibc/build/debug/tst-longjmp_chk2.out] Error 1
makecontext is known to be limited on ia64 and the testsuite runs up against that; bug 14250
tst-getcpu hits a bug in the kernel; upstream patch has yet to be merged
- annexc is a common issue that all targets fail
tst-longjmp_chk2 needs sigaltstack support implemented; bug 16372
- some of the math tests probably match some open bugs on the topic
MIPS
- On MIPS64 (n32 and n64), long double is implemented using fp-bit without support for exceptions and rounding modes, which causes the following tests to fail: math/test-misc, math/bug-nextafter, math/bug-nexttoward, math/test-ldouble, math/test-ildoubl, stdlib/tst-strtod-round.
- On soft-float MIPS systems, there is no support for floating-point exceptions and rounding modes, causing the following tests to fail: math/test-fenv, math/test-misc, math/bug-nextafter, math/bug-nexttoward, math/test-float, math/test-double, math/test-ifloat, math/test-idouble, stdlib/bug-getcontext.
- 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 and elf/check-localplt to fail. For the first two, see bug 2981.
PowerPC32 (soft-float)
- math/test-ldouble and math/test-ildoubl fail. Underflowing results of fmal are inaccurate in directed rounding modes, and one test of clog10l and one of clogl have the wrong sign of zero in the imaginary part of the result, probably because the soft-fp code used in libgcc as part of implementing IBM long double does not handle the software rounding mode from libc and does not handle signs of zero results the same as the instruction used in the hardware floating-point case. As for hard-float, one clogl test has a missing underflow exception and one csqrtl test has a spurious underflow exception.
Power64
Build system: FC18, GCC 4.7.2, Binutils 2.23.51.0.1, Kernel 3.6.0
make[2]: *** [/root/glibc-build/math/test-ldouble.out] Error 1 make[1]: *** [math/tests] Error 2 make[2]: [/root/glibc-build/posix/annexc.out] Error 1 (ignored) make[2]: [/root/glibc-build/conform/run-conformtest.out] Error 1 (ignored) make: *** [check] Error 2
- test-ldouble.out
testing long double (without inline functions) Failure: Real part of: clog (0x0.fffffffffffff8p0 + 0x0.fffffffffffff8p-1000 i) == -1.110223024625156602053389888482372171810e-16 + 9.332636185032188789900895447238171696171e-302 i: Exception "Underflow" not set Failure: Real part of: csqrt (0x1p-500 + 0x1p-1074 i) == 5.527147875260444560247265192192255725514e-76 + 4.469444793151709302716387622440056066334e-249 i: Exception "Underflow" set Test suite completed: 6264 test cases plus 5256 tests for exception flags executed. 2 errors occurred.
Tile
tile doesn't handle -fexceptions correctly for pthread_cancel(); see bug 14266.
x86-64
Build system: FC17, GCC 4.7.2, Binutils 2.22.50.0.1, Kernel 3.3.4
make[2]: [glibc/posix/annexc.out] Error 1 (ignored) make[2]: *** [glibc/nptl/tst-eintr1.out] Error 1 make[1]: *** [nptl/tests] Error 2 make[2]: [glibc/conform/run-conformtest.out] Error 1 (ignored) make: *** [check] Error 2
- nptl/tst-eintr1.out:
.............................................tf1: pthread_create failed: Resource temporarily unavailable tf1: pthread_create failed: Resource temporarily unavailable
This is a kernel race, where it is unable to reap the exiting thread fast enough. This is seen regularly on x86_64, but the root cause is not necessarily architecture specific.
s390
Build system: Linux 2.6.35, GCC 4.8 r194628, Binutils: 2.23.51.20121023)
Failed to remake target file `/build/glibc/glibc-build-21122012/nptl/tst-cleanup2.out'. Failed to remake target file `/build/glibc/glibc-build-21122012/nptl/tst-cleanupx2.out'. Failed to remake target file `/build/glibc/glibc-build-21122012/rt/tst-cpuclock2.out'.
s390x
Build system: Linux 3.6.8, GCC 4.8 r194572, Binutils: 2.23.51.20121120
Failed to remake target file `/home/andreas/glibc/glibc-build/nptl/tst-cleanup2.out'. Failed to remake target file `/home/andreas/glibc/glibc-build/nptl/tst-cleanupx2.out'.
Build system: FC18, GCC 4.7.2, Binutils 2.23.51.0.1, Kernel 3.6.0
make[2]: *** [/root/glibc-build/math/test-float.out] Error 1 make[2]: *** [/root/glibc-build/math/test-double.out] Error 1 make[2]: *** [/root/glibc-build/math/test-ldouble.out] Error 1 make[2]: *** [/root/glibc-build/math/test-ildoubl.out] Error 1 make[2]: *** [/root/glibc-build/math/test-ifloat.out] Error 1 make[2]: *** [/root/glibc-build/math/test-idouble.out] Error 1 make[1]: *** [math/tests] Error 2 make[2]: [/root/glibc-build/posix/annexc.out] Error 1 (ignored) make[2]: *** [/root/glibc-build/rt/tst-cpuclock2.out] Error 1 make[1]: *** [rt/tests] Error 2 make[2]: [/root/glibc-build/conform/run-conformtest.out] Error 1 (ignored) make: *** [check] Error 2
- nptl/tst-cpuclock2.out:
live thread clock fffffffffffa02fe resolution 0.000000001 live thread before sleep => 0.000095657 self thread before sleep => 0.000258345 live thread after sleep => 0.500013046 self thread after sleep => 0.000363238 absolute clock_nanosleep on PROCESS_CPUTIME_ID 18446744073709550750 past target (outside reasonable range) absolute clock_nanosleep on PROCESS_CPUTIME_ID slept 99999134 (outside reasonable range)
Build Failures
Describe build failures here and how to fix them.
HP-PARISC
Build fauilure is:
pthread_create.c: In function ‘start_thread’: pthread_create.c:398:3: error: #error "to do" pthread_create.c:400:3: error: ‘freesize’ undeclared (first use in this function) pthread_create.c:400:3: note: each undeclared identifier is reported only once for each function it appears in pthread_create.c:393:10: warning: unused variable ‘pagesize_m1’ make[2]: *** [/home/carlos/build/glibc/nptl/pthread_create.o] Error 1 make[2]: Leaving directory `/home/carlos/src/glibc/nptl' make[1]: *** [nptl/subdir_lib] Error 2 make[1]: Leaving directory `/home/carlos/src/glibc' make: *** [all] Error 2
The patch to fix the build is located here hppa-nptl-2012-12-16.diff.
Packaging Changes
Due to changes in the installed headers and the libraries itself, userland applications might not build anymore. The following problems have been noticed while rebuilding distributions like openSUSE:
- Some packages had missing includes (e.g. signal.h or stdint.h). Those are easily fixed by including the header defining the missing types.
- The functions setfsgid() and setfsuid() produce warnings when the return value is not checked and thus fail to when -Werror is used. The proper fix is to check whether these functions have a return value less than 0.
- The `clock_*' suite of functions was moved from librt to libc. Some configure scripts check only whether clock_gettime() is in librt and assume that other functions like mq_gettattr() are in the same library. So, the configure check for clock_gettime() in librt needs to be extended to look for other functions as well.
The __secure_getenv() internal function was made public under the new name secure_getenv(). The old symbol is no longer available for linking, applications should switch to use the new name, or, in case of necessity, check for the new name first and fall back to the old name.