tst-obprintf failed with GCC 4.7.
It turned out that this is the fault of GCC optimizing away the
following from malloc/mcheck.c:
/* We call malloc() once here to ensure it is initialized. */
void *p = malloc (0);
free (p);
gcc sees the malloc(0);free pair and removes it completely.
And now malloc is not properly initialized and we screw up if both
mcheck is used (via tst-obprintf) and MALLOC_CHECK_ is set (as it is in my
environment).
* Makerules (%.abilist): Add vpath on sysdep_dirs.
(check-abi-%): Remove AWK script prerequisite and explicit
abilist directory.
(check-abi): Rewrite to just diff the symlist with the abilist.
(config-tls, config-abi-config): Delete, no longer used.
(update-abi-%): Remove AWK script and explicit abilist directory.
(update-abi): Rewrite to simply compare and conditionally copy the
symlist and the sysdep abilist file. Remove update-abi-config
checks.
* abilist/ld.abilist: Remove.
* abilist/libBrokenLocale.abilist: Remove.
* abilist/libanl.abilist: Remove.
* abilist/libcrypt.abilist: Remove.
* abilist/libdl.abilist: Remove.
* abilist/librt.abilist: Remove.
* abilist/libthread_db.abilist: Remove.
* abilist/libutil.abilist: Remove.
* scripts/extract-abilist.awk: Remove.
* scripts/merge-abilist.awk: Remove.
* sysdeps/generic/libcidn.abilist: New file.
* sysdeps/generic/libnss_compat.abilist: New file.
* sysdeps/generic/libnss_db.abilist: New file.
* sysdeps/generic/libnss_dns.abilist: New file.
* sysdeps/generic/libnss_files.abilist: New file.
* sysdeps/generic/libnss_hesiod.abilist: New file.
* sysdeps/generic/libnss_nis.abilist: New file.
* sysdeps/generic/libnss_nisplus.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libanl.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libBrokenLocale.abilist: New
file.
* sysdeps/unix/sysv/linux/i386/nptl/libc.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libcrypt.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libdl.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libm.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libnsl.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libpthread.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libresolv.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/librt.abilist: New file.
* sysdeps/unix/sysv/linux/i386/nptl/libthread_db.abilist: New
file.
* sysdeps/unix/sysv/linux/i386/nptl/libutil.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libanl.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libBrokenLocale.abilist: New
file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libc.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libcrypt.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libdl.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libm.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libnsl.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libpthread.abilist: New
file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libresolv.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/librt.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libthread_db.abilist: New
file.
* sysdeps/unix/sysv/linux/x86_64/nptl/libutil.abilist: New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/ld.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libanl.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libBrokenLocale.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libc.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libcrypt.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libdl.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libm.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libnsl.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libpthread.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libresolv.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/librt.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libthread_db.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powercp32/fpu/nptl/libutil.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld.abilist: New
file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist: New
file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm.abilist: New
file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db.abilist:
New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libanl.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libBrokenLocale.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libcrypt.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libdl.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libm.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libnsl.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libpthread.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libresolv.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/librt.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libthread_db.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libutil.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libanl.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libBrokenLocale.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libcrypt.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libdl.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libm.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libnsl.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libpthread.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libresolv.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/librt.abilist: New
file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libthread_db.abilist:
New file.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libutil.abilist: New
file.
* sysdeps/unix/sysv/linux/sh/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libanl.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libBrokenLocale.abilist: New
file.
* sysdeps/unix/sysv/linux/sh/nptl/libc.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libcrypt.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libdl.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libm.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libnsl.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libpthread.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libresolv.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/librt.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libthread_db.abilist: New file.
* sysdeps/unix/sysv/linux/sh/nptl/libutil.abilist: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libanl.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libBrokenLocale.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libcrypt.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libdl.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libm.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libnsl.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libpthread.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libresolv.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/librt.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libthread_db.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libutil.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libanl.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libBrokenLocale.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libcrypt.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libdl.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libm.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libnsl.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libpthread.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libresolv.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/librt.abilist: New
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libthread_db.abilist:
New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libutil.abilist: New
file.
* sysdeps/sparc/sparc32/bits/atomic.h: Include sysdep.h to get
HWCAP_* values only after the memory barriers have been defined.
(atomic_full_barrier): Define.
(atomic_read_barrier): Define.
(atomic_write_barrier): Define.
The current implementation of __strtoul_internal seems to only pretend
to support hex and octal strings by detecting a preceding 0x or 0 and
marking base as 8 or 16. When it comes to the actual processing of the
string, it only considers numeric values within, thus breaking hex
values that may have [a-f] in them. Fixed with this commit.
[BZ #13970]
(strtod, strtof, strtold, strtol, strtoul, strtoq)
(strtouq, strtoll, strtoull, strtol_l, strtoul_l, strtoll_l, strtoull_l)
(strtod_l, strtof_l, strtold_l): Remove __wur.
It is not necessarily an error to ignore strtol's return value.
One can reliably look at the stored endptr to decide whether
the number had valid syntax.
[BZ# 6794]
* sysdeps/ieee754/ldbl-96/s_ilogbl.c: Moved to ...
* sysdeps/ieee754/ldbl-96/e_ilogbl.c: ... here.
Rename __ilogbl to __ieee754_ilogbl and remove weak_alias.
* sysdeps/ieee754/ldbl-128/s_ilogbl.c: Moved to ...
* sysdeps/ieee754/ldbl-128/e_ilogbl.c: ... here.
Rename __ilogbl to __ieee754_ilogbl and remove weak_alias.
* sysdeps/ieee754/ldbl-64-128/s_ilogbl.c: Moved to ...
* sysdeps/ieee754/ldbl-64-128/e_ilogbl.c: ... here.
* sysdeps/sparc/sparc64/soft-fp/s_ilogbl.c: Moved to ...
* sysdeps/sparc/sparc64/soft-fp/e_ilogbl.c: ... here.
Rename __ilogbl to __ieee754_ilogbl and remove weak_alias.
[BZ #6794]
Following Joseph comments about bug 6794, here is a proposed fix. It turned out
to be a large fix mainly because I had to move some file along to follow libm
files/names conventions.
Basically I have added wrappers (w_ilogb.c, w_ilogbf.c, w_ilogbl.c) that now calls
the symbol '__ieee754_ilogb'. The wrappers checks for '__ieee754_ilogb' output and
set the errno and raise exceptions as expected.
The '__ieee754_ilogb' is implemented in sysdeps. I have moved the 's_ilogb[f|l]' files
to e_ilogb[f|l] and renamed the '__ilogb[f|l]' to '__ieee754_ilogb[f|l]'.
I also found out a bug in i386 and x86-64 assembly coded ilogb implementation where
it raises a FE_DIVBYZERO when argument is '0.0'. I corrected this issue as well.
Finally I added the errno and FE_INVALID tests for 0.0, NaN and +-InF argument. Tested
on i386, x86-64, ppc32 and ppc64.
Dropping external addon trees into the main git checkout is normal
to test them, so add them to the ignore list. Not like we want to
ever check them in.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
[BZ #11959]
* libio/stdio.h (fwrite, fwrite_unlocked): Remove __wur.
It is not necessarily an error to ignore fwrite's return
value. One can reliably use ferror to test for errors after
the fact.