mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-18 22:54:00 +00:00
core/glibc to 2.16.0-1
This commit is contained in:
parent
d94b3d4caf
commit
960bf52df1
33 changed files with 66 additions and 3974 deletions
|
@ -1,4 +1,4 @@
|
|||
# $Id: PKGBUILD 145916 2012-01-04 01:25:04Z allan $
|
||||
# $Id: PKGBUILD 163008 2012-07-05 13:48:19Z allan $
|
||||
# Maintainer: Allan McRae <allan@archlinux.org>
|
||||
|
||||
# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
|
||||
|
@ -7,252 +7,77 @@
|
|||
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
|
||||
# - Added source file for glibc-ports, needed for building on ARM
|
||||
# - Symlink glibc-ports source dir to ports dir in glibc directory
|
||||
# - Patch glibc-ports for v5
|
||||
# - Patch glibc for ld-linux-armhf.so.3 and symlink ld-linux.so.3
|
||||
# - Changed configure to enable ports add-on, specify our build host type
|
||||
# - Disabled distcc, make -j1 for v5, -j2 for v7
|
||||
|
||||
plugrel=1
|
||||
noautobuild=1
|
||||
|
||||
pkgname=glibc
|
||||
pkgver=2.15
|
||||
pkgrel=12
|
||||
_glibcdate=20111227
|
||||
pkgver=2.16.0
|
||||
pkgrel=1
|
||||
pkgdesc="GNU C Library"
|
||||
arch=('i686' 'x86_64')
|
||||
url="http://www.gnu.org/software/libc"
|
||||
license=('GPL' 'LGPL')
|
||||
groups=('base')
|
||||
depends=('linux-api-headers>=3.1.6' 'tzdata')
|
||||
makedepends=('gcc>=4.6')
|
||||
depends=('linux-api-headers>=3.4' 'tzdata')
|
||||
makedepends=('gcc>=4.7')
|
||||
backup=(etc/gai.conf
|
||||
etc/locale.gen
|
||||
etc/nscd.conf)
|
||||
options=('!strip' '!distcc')
|
||||
options=('!strip')
|
||||
install=glibc.install
|
||||
source=(ftp://ftp.archlinux.org/other/glibc/${pkgname}-${pkgver}_${_glibcdate}.tar.xz
|
||||
http://ftp.gnu.org/gnu/libc/glibc-ports-2.15.tar.bz2
|
||||
alarm.patch
|
||||
glibc-2.15-do-not-install-timezone-files.patch
|
||||
glibc-2.15-do-not-install-timezone-files-2.patch
|
||||
glibc-__i686.patch
|
||||
glibc-2.14-libdl-crash.patch
|
||||
glibc-2.14-reexport-rpc-interface.patch
|
||||
glibc-2.14-reinstall-nis-rpc-headers.patch
|
||||
source=(http://ftp.gnu.org/gnu/libc/${pkgname}-${pkgver}.tar.xz{,.sig}
|
||||
http://ftp.gnu.org/gnu/libc/glibc-ports-${pkgver}.tar.bz2
|
||||
glibc-2.15-fix-res_query-assert.patch
|
||||
glibc-2.15-regex.patch
|
||||
glibc-2.15-lddebug-scopes.patch
|
||||
glibc-2.15-revert-c5a0802a.patch
|
||||
glibc-2.15-scanf.patch
|
||||
glibc-2.15-ifunc.patch
|
||||
glibc-2.15-avx.patch
|
||||
glibc-2.15-strcasecmp-disable-avx.patch
|
||||
glibc-2.15-gb18030.patch.gz
|
||||
glibc-2.15-revert-netlink-cache.patch
|
||||
glibc-2.15-arena.patch
|
||||
glibc-2.15-negative-result-cache.patch
|
||||
glibc-2.15-multiarch-x86-strcmp.patch
|
||||
glibc-2.15-vdso.patch
|
||||
glibc-2.15-feraiseexcept-plt.patch
|
||||
glibc-2.15-vfprintf-nargs.patch
|
||||
glibc-2.15-__libc_res_nquerydomain-out-of-bounds.patch
|
||||
glibc-2.15-fmtmsg-locking.patch
|
||||
glibc-2.15-non-signalling-comparisons.patch
|
||||
glibc-2.15-rintf-rounding.patch
|
||||
glibc-2.15-nearbyintf-rounding.patch
|
||||
glibc-2.15-confstr-local-buffer-extent.patch
|
||||
glibc-2.15-testsuite.patch
|
||||
local-soname-hack.diff
|
||||
nscd.rcd
|
||||
nscd.service
|
||||
nscd.tmpfiles
|
||||
locale.gen.txt
|
||||
locale-gen)
|
||||
md5sums=('6ffdf5832192b92f98bdd125317c0dfc'
|
||||
'56efe246ce89f16a52792cea9224823c'
|
||||
'c45df830828555a85e5b15d46fb0520a'
|
||||
'349227bcedb19cea008fbcb2c7e1a582'
|
||||
'880439de2c608177ed1d749722d26820'
|
||||
'40cd342e21f71f5e49e32622b25acc52'
|
||||
'6970bcfeb3bf88913436d5112d16f588'
|
||||
'c5de2a946215d647c8af5432ec4b0da0'
|
||||
'55febbb72139ac7b65757df085024b83'
|
||||
md5sums=('80b181b02ab249524ec92822c0174cf7'
|
||||
'2a1221a15575820751c325ef4d2fbb90'
|
||||
'668bcd584718ff0c6aa2f14b668595b6'
|
||||
'31f415b41197d85d3bbee3d1eecd06a3'
|
||||
'b3526cbd5e29773560dba725db99af5a'
|
||||
'3c219ddfb619b6df903cac4cc42c611d'
|
||||
'7ae3e426251ae33e73dbad71f9c91378'
|
||||
'f0782ddbf38e0b30ec6b85348816046f'
|
||||
'3d844b53b2dbb7c996e39c7ad932f55d'
|
||||
'41ae047ac88e8f6f547c70b0a0bc3b72'
|
||||
'fccb89f6628f59752278e125c35941f8'
|
||||
'001a4044ac3d59aca6ee144eaca57ab2'
|
||||
'94b61302a7ca6c5764d013dc7738fcfe'
|
||||
'a9ffadcfd2d357f91fee0b861fd4a7c6'
|
||||
'2c46b8e294de24c531f2253ff69aeef3'
|
||||
'7a2998a04ebfcf8bf820540f490ce714'
|
||||
'0d77d20fa7fe2f87ad945cb9edb4d91d'
|
||||
'bfdefac3d705f41fbf84b1de1dc945af'
|
||||
'de9399a35a9c14f793c66f1230674d67'
|
||||
'340deaa582a95ddde86edb624c3bfea0'
|
||||
'6bbac50e6ff82187654e6a0a7bd849e7'
|
||||
'c483504cf404ed0b44480af627813a97'
|
||||
'1419d61fd1dbc6cdc48bb59da86fa66f'
|
||||
'7ff501435078b1a2622124fbeaafc921'
|
||||
'4ed0bb09c3851cd9cb5e39c946a8a334'
|
||||
'6962c3fa29306bfbf6f0d22b19cb825d'
|
||||
'0a0383d50d63f1c02919fe9943b82014'
|
||||
'fa192d063312907797eb48f59da99588'
|
||||
'589d79041aa767a5179eaa4e2737dd3f'
|
||||
'ad8a9af15ab7eeaa23dc7ee85024af9f'
|
||||
'bccbe5619e75cf1d97312ec3681c605c'
|
||||
'07ac979b6ab5eeb778d55f041529d623'
|
||||
'476e9113489f93b348b21e144b6a8fcf')
|
||||
|
||||
mksource() {
|
||||
git clone git://sourceware.org/git/glibc.git
|
||||
pushd glibc
|
||||
#git checkout -b glibc-2.15-arch origin/release/2.15/master
|
||||
git checkout -b glibc-2.15-arch origin/master
|
||||
popd
|
||||
tar -cvJf glibc-${pkgver}_${_glibcdate}.tar.xz glibc/*
|
||||
}
|
||||
|
||||
build() {
|
||||
cd ${srcdir}/glibc
|
||||
cd ${srcdir}/${pkgname}-${pkgver}
|
||||
|
||||
# ALARM: Symlink ports dir
|
||||
# ALARM: Symlink ports dir, patch for hard-float ld-linux soname
|
||||
ln -s ${srcdir}/${pkgname}-ports-${pkgver} ./ports
|
||||
[[ $CARCH == "arm" ]] && patch -p1 -i "${srcdir}/alarm.patch"
|
||||
|
||||
# timezone data is in separate package (tzdata)
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=482ff4da
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-do-not-install-timezone-files.patch
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=a458e7fe
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-do-not-install-timezone-files-2.patch
|
||||
|
||||
# undefine __i686
|
||||
# http://sourceware.org/glibc/wiki/Release/2.15#Build_Failures
|
||||
patch -p1 -i ${srcdir}/glibc-__i686.patch
|
||||
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=675155e9 (fedora branch)
|
||||
# http://sourceware.org/ml/libc-alpha/2011-06/msg00006.html
|
||||
patch -p1 -i ${srcdir}/glibc-2.14-libdl-crash.patch
|
||||
|
||||
# re-export RPC interface until libtirpc is ready as a replacement
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=acee4873 (fedora branch)
|
||||
patch -p1 -i ${srcdir}/glibc-2.14-reexport-rpc-interface.patch
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=bdd816a3 (fedora branch)
|
||||
patch -p1 -i ${srcdir}/glibc-2.14-reinstall-nis-rpc-headers.patch
|
||||
[[ $CARCH == "armv7h" ]] && patch -p1 -i ${srcdir}/local-soname-hack.diff
|
||||
|
||||
# fix res_query assertion
|
||||
# http://sourceware.org/bugzilla/show_bug.cgi?id=13013
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-fix-res_query-assert.patch
|
||||
|
||||
# fix up regcomp/regexec
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=2ba92745
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-regex.patch
|
||||
|
||||
# propriety nvidia crash - https://bugzilla.redhat.com/show_bug.cgi?id=737223
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=0c95ab64 (fedora branch)
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-lddebug-scopes.patch
|
||||
|
||||
# revert commit c5a0802a - causes various hangs
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=769421
|
||||
# Note: fedora may have actual fix (not submitted upstream yet...)
|
||||
# http://pkgs.fedoraproject.org/gitweb/?p=glibc.git;a=blob_plain;f=glibc-rh552960-2.patch
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=552960
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-revert-c5a0802a.patch
|
||||
|
||||
# fix realloc usage in vfscanf
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=20b38e03
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-scanf.patch
|
||||
|
||||
# fix ifunc relocations
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=6ee65ed6
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-ifunc.patch
|
||||
|
||||
# fix AVX detection
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=afc5ed09
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=08cf777f
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-avx.patch
|
||||
# and "fix" strcasecmp
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-strcasecmp-disable-avx.patch
|
||||
|
||||
# fix GB18030 charmap
|
||||
# http://sourceware.org/bugzilla/show_bug.cgi?id=11837
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=2a57bd79 (fedora branch)
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=3d828a61 (fedora branch)
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-gb18030.patch
|
||||
|
||||
# fix crash in __nscd_get_mapping if nscd not running
|
||||
# http://sourceware.org/bugzilla/show_bug.cgi?id=13594 (potential fix in comment)
|
||||
# reverts commit 3a2c0242 and other necessary following changes...
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-revert-netlink-cache.patch
|
||||
|
||||
# handle ARENA_TEST correctly
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=41b81892
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-arena.patch
|
||||
|
||||
# Do not cache negative results in nscd if these are transient
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=3e1aa84e
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-negative-result-cache.patch
|
||||
|
||||
# strcasecmp_l, strncasecmp_l act as strcmp for multiarch x86
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=0bab47b6
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-multiarch-x86-strcmp.patch
|
||||
|
||||
# always set l_used for vDSO.
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=1f393a11
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-vdso.patch
|
||||
|
||||
# fix x86 PLT slot usage for feraiseexcept
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=7c35ffed
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-feraiseexcept-plt.patch
|
||||
|
||||
# vfprintf nargs overflow - CVE-2012-0864
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=7c1f4834
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-vfprintf-nargs.patch
|
||||
|
||||
# avoid out ouf bounds read in __libc_res_nquerydomain
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=8fdceb2e
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-__libc_res_nquerydomain-out-of-bounds.patch
|
||||
|
||||
# make fmtmsg function thread-safe
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=7724defc
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-fmtmsg-locking.patch
|
||||
|
||||
# use non-signaling floating-point comparisons in math functions
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=92221550
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-non-signalling-comparisons.patch
|
||||
|
||||
# fix rintf rounding.
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=fe45ce09
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-rintf-rounding.patch
|
||||
|
||||
# fix nearbyintf rounding
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=6cbeae47
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-nearbyintf-rounding.patch
|
||||
|
||||
# fix varaible scope issue in confstr
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=ac4c54f0
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=d6a403f9
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-confstr-local-buffer-extent.patch
|
||||
|
||||
# fix testsuite failures with --as-needed
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=d4c2917f
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-testsuite.patch
|
||||
|
||||
install -dm755 ${pkgdir}/etc
|
||||
touch ${pkgdir}/etc/ld.so.conf
|
||||
|
||||
cd ${srcdir}
|
||||
mkdir glibc-build
|
||||
cd glibc-build
|
||||
|
||||
if [[ ${CARCH} = "i686" ]]; then
|
||||
# Hack to fix NPTL issues with Xen, only required on 32bit platforms
|
||||
# TODO: make separate glibc-xen package for i686
|
||||
export CFLAGS="${CFLAGS} -mno-tls-direct-seg-refs"
|
||||
fi
|
||||
|
||||
# ALARM: Specify build host types
|
||||
[[ $CARCH == "arm" ]] && CONFIGFLAG="--host=arm-unknown-linux-gnueabi --build=arm-unknown-linux-gnueabi" && MAKEFLAG="-j1"
|
||||
[[ $CARCH == "armv7h" ]] && CONFIGFLAG="--host=armv7l-unknown-linux-gnueabi --build=armv7l-unknown-linux-gnueabi" && MAKEFLAG="-j2"
|
||||
[[ $CARCH == "armv7h" ]] && CONFIGFLAG="--host=armv7l-unknown-linux-gnueabihf --build=armv7l-unknown-linux-gnueabihf" && MAKEFLAG="-j2"
|
||||
|
||||
echo "slibdir=/lib" >> configparms
|
||||
|
||||
|
@ -260,12 +85,14 @@ build() {
|
|||
CFLAGS=${CFLAGS/-fstack-protector/}
|
||||
CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/}
|
||||
|
||||
${srcdir}/glibc/configure --prefix=/usr \
|
||||
${srcdir}/${pkgname}-${pkgver}/configure --prefix=/usr \
|
||||
--libdir=/usr/lib --libexecdir=/usr/lib \
|
||||
--with-headers=/usr/include \
|
||||
--enable-add-ons=nptl,libidn,ports \
|
||||
--enable-obsolete-rpc \
|
||||
--enable-kernel=2.6.27 \
|
||||
--enable-bind-now --disable-profile \
|
||||
--enable-stackguard-randomization \
|
||||
--disable-multi-arch $CONFIGFLAG
|
||||
|
||||
# build libraries with hardening disabled
|
||||
|
@ -284,46 +111,45 @@ build() {
|
|||
|
||||
check() {
|
||||
cd ${srcdir}/glibc-build
|
||||
|
||||
# some errors are expected - manually check log files
|
||||
#make -k check || true
|
||||
#make -k check
|
||||
}
|
||||
|
||||
package() {
|
||||
cd ${srcdir}/glibc-build
|
||||
|
||||
install -dm755 ${pkgdir}/etc
|
||||
touch ${pkgdir}/etc/ld.so.conf
|
||||
|
||||
make install_root=${pkgdir} install
|
||||
|
||||
rm -f ${pkgdir}/etc/ld.so.{cache,conf}
|
||||
|
||||
install -dm755 ${pkgdir}/{etc/rc.d,usr/{sbin,lib/{,locale,systemd/system,tmpfiles.d}}}
|
||||
|
||||
install -m644 ${srcdir}/glibc/nscd/nscd.conf ${pkgdir}/etc/nscd.conf
|
||||
install -m644 ${srcdir}/${pkgname}-${pkgver}/nscd/nscd.conf ${pkgdir}/etc/nscd.conf
|
||||
sed -i -e 's/^\tserver-user/#\tserver-user/' ${pkgdir}/etc/nscd.conf
|
||||
install -m755 ${srcdir}/nscd.rcd ${pkgdir}/etc/rc.d/nscd
|
||||
install -m644 ${srcdir}/nscd.service ${pkgdir}/usr/lib/systemd/system
|
||||
install -m644 ${srcdir}/nscd.tmpfiles ${pkgdir}/usr/lib/tmpfiles.d/nscd.conf
|
||||
|
||||
install -m644 ${srcdir}/glibc/posix/gai.conf ${pkgdir}/etc/gai.conf
|
||||
install -m644 ${srcdir}/${pkgname}-${pkgver}/posix/gai.conf ${pkgdir}/etc/gai.conf
|
||||
|
||||
install -m755 ${srcdir}/locale-gen ${pkgdir}/usr/sbin
|
||||
|
||||
# create /etc/locale.gen
|
||||
install -m644 ${srcdir}/locale.gen.txt ${pkgdir}/etc/locale.gen
|
||||
sed -i "s|/| |g" ${srcdir}/glibc/localedata/SUPPORTED
|
||||
sed -i 's|\\| |g' ${srcdir}/glibc/localedata/SUPPORTED
|
||||
sed -i "s|SUPPORTED-LOCALES=||" ${srcdir}/glibc/localedata/SUPPORTED
|
||||
cat ${srcdir}/glibc/localedata/SUPPORTED >> ${pkgdir}/etc/locale.gen
|
||||
sed -i "s|^|#|g" ${pkgdir}/etc/locale.gen
|
||||
sed -e '1,3d' -e 's|/| |g' -e 's|\\| |g' -e 's|^|#|g' \
|
||||
${srcdir}/glibc-2.16.0/localedata/SUPPORTED >> ${pkgdir}/etc/locale.gen
|
||||
|
||||
if [[ ${CARCH} = "x86_64" ]]; then
|
||||
# fix for the linker
|
||||
# fix paths and compliance with binary blobs...
|
||||
sed -i '/RTLDLIST/s%lib64%lib%' ${pkgdir}/usr/bin/ldd
|
||||
# Comply with multilib binaries, they look for the linker in /lib64
|
||||
mkdir ${pkgdir}/lib64
|
||||
cd ${pkgdir}/lib64
|
||||
ln -v -s ../lib/ld* .
|
||||
ln -s /lib ${pkgdir}/lib64
|
||||
fi
|
||||
|
||||
# ALARM: symlink ld-linux.so.3 for hard-float
|
||||
[[ $CARCH == "armv7h" ]] && ln -s /lib/ld-2.16.so ${pkgdir}/lib/ld-linux.so.3
|
||||
|
||||
# Do not strip the following files for improved debugging support
|
||||
# ("improved" as in not breaking gdb and valgrind...):
|
||||
# ld-${pkgver}.so
|
||||
|
@ -341,9 +167,9 @@ package() {
|
|||
|
||||
strip $STRIP_STATIC usr/lib/*.a
|
||||
|
||||
strip $STRIP_SHARED lib/{libanl,libBrokenLocale,libcidn,libcrypt}-${pkgver}.so \
|
||||
lib/libnss_{compat,db,dns,files,hesiod,nis,nisplus}-${pkgver}.so \
|
||||
lib/{libdl,libm,libnsl,libresolv,librt,libutil}-${pkgver}.so \
|
||||
strip $STRIP_SHARED lib/{libanl,libBrokenLocale,libcidn,libcrypt}-*.so \
|
||||
lib/libnss_{compat,db,dns,files,hesiod,nis,nisplus}-*.so \
|
||||
lib/{libdl,libm,libnsl,libresolv,librt,libutil}-*.so \
|
||||
lib/{libmemusage,libpcprofile,libSegFault}.so \
|
||||
usr/lib/{pt_chown,{audit,gconv}/*.so}
|
||||
}
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
diff --git a/sysdeps/arm/Makefile b/sysdeps/arm/Makefile
|
||||
index 5651161..1a88430 100644
|
||||
--- a/sysdeps/arm/Makefile
|
||||
+++ b/sysdeps/arm/Makefile
|
||||
@@ -7,3 +7,8 @@ endif
|
||||
ifeq ($(subdir),csu)
|
||||
gen-as-const-headers += tlsdesc.sym
|
||||
endif
|
||||
+
|
||||
+# to pull in __aeabi_read_tp, needed for tls
|
||||
+ifeq ($(subdir),malloc)
|
||||
+$(objpfx)libmemusage.so: $(common-objpfx)libc_nonshared.a
|
||||
+endif
|
||||
--
|
||||
1.7.6.5
|
|
@ -1,132 +0,0 @@
|
|||
diff --git a/elf/dl-close.c b/elf/dl-close.c
|
||||
index 73b2a2f..9bd91e3 100644
|
||||
--- a/elf/dl-close.c
|
||||
+++ b/elf/dl-close.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Close a shared object opened by `_dl_open'.
|
||||
- Copyright (C) 1996-2007, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 1996-2007, 2009, 2010 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -119,17 +119,8 @@ _dl_close_worker (struct link_map *map)
|
||||
if (map->l_direct_opencount > 0 || map->l_type != lt_loaded
|
||||
|| dl_close_state != not_pending)
|
||||
{
|
||||
- if (map->l_direct_opencount == 0)
|
||||
- {
|
||||
- if (map->l_type == lt_loaded)
|
||||
- dl_close_state = rerun;
|
||||
- else if (map->l_type == lt_library)
|
||||
- {
|
||||
- struct link_map **oldp = map->l_initfini;
|
||||
- map->l_initfini = map->l_orig_initfini;
|
||||
- _dl_scope_free (oldp);
|
||||
- }
|
||||
- }
|
||||
+ if (map->l_direct_opencount == 0 && map->l_type == lt_loaded)
|
||||
+ dl_close_state = rerun;
|
||||
|
||||
/* There are still references to this object. Do nothing more. */
|
||||
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0))
|
||||
diff --git a/elf/dl-deps.c b/elf/dl-deps.c
|
||||
index 9e30594..3890d00 100644
|
||||
--- a/elf/dl-deps.c
|
||||
+++ b/elf/dl-deps.c
|
||||
@@ -478,6 +478,7 @@ _dl_map_object_deps (struct link_map *map,
|
||||
nneeded * sizeof needed[0]);
|
||||
atomic_write_barrier ();
|
||||
l->l_initfini = l_initfini;
|
||||
+ l->l_free_initfini = 1;
|
||||
}
|
||||
|
||||
/* If we have no auxiliary objects just go on to the next map. */
|
||||
@@ -681,6 +682,7 @@ Filters not supported with LD_TRACE_PRELINKING"));
|
||||
l_initfini[nlist] = NULL;
|
||||
atomic_write_barrier ();
|
||||
map->l_initfini = l_initfini;
|
||||
+ map->l_free_initfini = 1;
|
||||
if (l_reldeps != NULL)
|
||||
{
|
||||
atomic_write_barrier ();
|
||||
@@ -689,5 +691,5 @@ Filters not supported with LD_TRACE_PRELINKING"));
|
||||
_dl_scope_free (old_l_reldeps);
|
||||
}
|
||||
if (old_l_initfini != NULL)
|
||||
- map->l_orig_initfini = old_l_initfini;
|
||||
+ _dl_scope_free (old_l_initfini);
|
||||
|
||||
diff --git a/elf/dl-libc.c b/elf/dl-libc.c
|
||||
index 7be9483..a13fce3 100644
|
||||
--- a/elf/dl-libc.c
|
||||
+++ b/elf/dl-libc.c
|
||||
@@ -265,13 +265,13 @@ libc_freeres_fn (free_mem)
|
||||
|
||||
for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns)
|
||||
{
|
||||
- /* Remove all additional names added to the objects. */
|
||||
for (l = GL(dl_ns)[ns]._ns_loaded; l != NULL; l = l->l_next)
|
||||
{
|
||||
struct libname_list *lnp = l->l_libname->next;
|
||||
|
||||
l->l_libname->next = NULL;
|
||||
|
||||
+ /* Remove all additional names added to the objects. */
|
||||
while (lnp != NULL)
|
||||
{
|
||||
struct libname_list *old = lnp;
|
||||
@@ -279,6 +279,10 @@ libc_freeres_fn (free_mem)
|
||||
if (! old->dont_free)
|
||||
free (old);
|
||||
}
|
||||
+
|
||||
+ /* Free the initfini dependency list. */
|
||||
+ if (l->l_free_initfini)
|
||||
+ free (l->l_initfini);
|
||||
}
|
||||
|
||||
if (__builtin_expect (GL(dl_ns)[ns]._ns_global_scope_alloc, 0) != 0
|
||||
diff --git a/elf/rtld.c b/elf/rtld.c
|
||||
index 4a9109e..617e30e 100644
|
||||
--- a/elf/rtld.c
|
||||
+++ b/elf/rtld.c
|
||||
@@ -2251,6 +2251,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
|
||||
lnp->dont_free = 1;
|
||||
lnp = lnp->next;
|
||||
}
|
||||
+ l->l_free_initfini = 0;
|
||||
|
||||
if (l != &GL(dl_rtld_map))
|
||||
_dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0,
|
||||
diff --git a/include/link.h b/include/link.h
|
||||
index e877104..051b99a 100644
|
||||
--- a/include/link.h
|
||||
+++ b/include/link.h
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Data structure for communication from the run-time dynamic linker for
|
||||
loaded ELF shared objects.
|
||||
- Copyright (C) 1995-2006, 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 1995-2006, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -192,6 +192,9 @@ struct link_map
|
||||
during LD_TRACE_PRELINKING=1
|
||||
contains any DT_SYMBOLIC
|
||||
libraries. */
|
||||
+ unsigned int l_free_initfini:1; /* Nonzero if l_initfini can be
|
||||
+ freed, ie. not allocated with
|
||||
+ the dummy malloc in ld.so. */
|
||||
|
||||
/* Collected information about own RPATH directories. */
|
||||
struct r_search_path_struct l_rpath_dirs;
|
||||
@@ -240,9 +243,6 @@ struct link_map
|
||||
|
||||
/* List of object in order of the init and fini calls. */
|
||||
struct link_map **l_initfini;
|
||||
- /* The init and fini list generated at startup, saved when the
|
||||
- object is also loaded dynamically. */
|
||||
- struct link_map **l_orig_initfini;
|
||||
|
||||
/* List of the dependencies introduced through symbol binding. */
|
||||
struct link_map_reldeps
|
|
@ -1,26 +0,0 @@
|
|||
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
|
||||
index 67e1ca2..5e7cca5 100644
|
||||
--- a/include/libc-symbols.h
|
||||
+++ b/include/libc-symbols.h
|
||||
@@ -635,7 +635,7 @@ for linking")
|
||||
# define libc_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
|
||||
# define libc_hidden_def(name) hidden_def (name)
|
||||
# define libc_hidden_weak(name) hidden_weak (name)
|
||||
-# define libc_hidden_nolink(name, version) hidden_nolink (name, libc, version)
|
||||
+# define libc_hidden_nolink(name, version) hidden_def (name)
|
||||
# define libc_hidden_ver(local, name) hidden_ver (local, name)
|
||||
# define libc_hidden_data_def(name) hidden_data_def (name)
|
||||
# define libc_hidden_data_weak(name) hidden_data_weak (name)
|
||||
diff --git a/sunrpc/Makefile b/sunrpc/Makefile
|
||||
index 5134ce9..40c73d1 100644
|
||||
--- a/sunrpc/Makefile
|
||||
+++ b/sunrpc/Makefile
|
||||
@@ -53,7 +53,7 @@ headers-in-tirpc = $(addprefix rpc/,auth.h auth_unix.h clnt.h pmap_clnt.h \
|
||||
des_crypt.h)
|
||||
headers-not-in-tirpc = $(addprefix rpc/,key_prot.h rpc_des.h) \
|
||||
$(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h
|
||||
-headers = rpc/netdb.h
|
||||
+headers = rpc/netdb.h $(headers-in-tirpc) $(headers-not-in-tirpc)
|
||||
install-others = $(inst_sysconfdir)/rpc
|
||||
generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c) $(rpcsvc:%.x=x%.stmp) \
|
||||
$(rpcsvc:%.x=rpcsvc/%.stmp) rpcgen
|
|
@ -1,28 +0,0 @@
|
|||
From bdd816a366c4e5bba5de7157d948e0c0737fb4fb Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Schwab <schwab@redhat.com>
|
||||
Date: Tue, 17 May 2011 17:42:30 +0200
|
||||
Subject: [PATCH] Reinstall NIS RPC headers
|
||||
|
||||
---
|
||||
nis/Makefile | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/nis/Makefile b/nis/Makefile
|
||||
index b5c9609..d2934d9 100644
|
||||
--- a/nis/Makefile
|
||||
+++ b/nis/Makefile
|
||||
@@ -23,9 +23,9 @@ subdir := nis
|
||||
|
||||
aux := nis_hash
|
||||
|
||||
+headers := $(wildcard rpcsvc/*.[hx])
|
||||
distribute := nss-nis.h nss-nisplus.h nis_intern.h Banner \
|
||||
- nisplus-parser.h nis_xdr.h nss \
|
||||
- $(wildcard rpcsvc/*.[hx])
|
||||
+ nisplus-parser.h nis_xdr.h nss
|
||||
|
||||
# These are the databases available for the nis (and perhaps later nisplus)
|
||||
# service. This must be a superset of the services in nss.
|
||||
--
|
||||
1.7.5.4
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
diff --git a/resolv/res_query.c b/resolv/res_query.c
|
||||
index 947c651..abccd4a 100644
|
||||
--- a/resolv/res_query.c
|
||||
+++ b/resolv/res_query.c
|
||||
@@ -556,12 +556,16 @@ __libc_res_nquerydomain(res_state statp,
|
||||
* copy without '.' if present.
|
||||
*/
|
||||
n = strlen(name);
|
||||
- if (n >= MAXDNAME) {
|
||||
+
|
||||
+ /* Decrement N prior to checking it against MAXDNAME
|
||||
+ so that we detect a wrap to SIZE_MAX and return
|
||||
+ a reasonable error. */
|
||||
+ n--;
|
||||
+ if (n >= MAXDNAME - 1) {
|
||||
RES_SET_H_ERRNO(statp, NO_RECOVERY);
|
||||
return (-1);
|
||||
}
|
||||
- n--;
|
||||
- if (n >= 0 && name[n] == '.') {
|
||||
+ if (name[n] == '.') {
|
||||
strncpy(nbuf, name, n);
|
||||
nbuf[n] = '\0';
|
||||
} else
|
|
@ -1,29 +0,0 @@
|
|||
diff --git a/malloc/arena.c b/malloc/arena.c
|
||||
index d3cf4b9..b1c9469 100644
|
||||
--- a/malloc/arena.c
|
||||
+++ b/malloc/arena.c
|
||||
@@ -828,7 +828,7 @@ arena_get2(mstate a_tsd, size_t size)
|
||||
{
|
||||
if (mp_.arena_max != 0)
|
||||
narenas_limit = mp_.arena_max;
|
||||
- else
|
||||
+ else if (narenas > mp_.arena_test)
|
||||
{
|
||||
int n = __get_nprocs ();
|
||||
|
||||
@@ -842,7 +842,14 @@ arena_get2(mstate a_tsd, size_t size)
|
||||
}
|
||||
repeat:;
|
||||
size_t n = narenas;
|
||||
- if (__builtin_expect (n <= mp_.arena_test || n < narenas_limit, 0))
|
||||
+ /* NB: the following depends on the fact that (size_t)0 - 1 is a
|
||||
+ very large number and that the underflow is OK. If arena_max
|
||||
+ is set the value of arena_test is irrelevant. If arena_test
|
||||
+ is set but narenas is not yet larger or equal to arena_test
|
||||
+ narenas_limit is 0. There is no possibility for narenas to
|
||||
+ be too big for the test to always fail since there is not
|
||||
+ enough address space to create that many arenas. */
|
||||
+ if (__builtin_expect (n <= narenas_limit - 1, 0))
|
||||
{
|
||||
if (catomic_compare_and_exchange_bool_acq (&narenas, n + 1, n))
|
||||
goto repeat;
|
|
@ -1,196 +0,0 @@
|
|||
diff --git a/sysdeps/x86_64/fpu/multiarch/e_atan2.c b/sysdeps/x86_64/fpu/multiarch/e_atan2.c
|
||||
index 6867c6e..3a615fc 100644
|
||||
--- a/sysdeps/x86_64/fpu/multiarch/e_atan2.c
|
||||
+++ b/sysdeps/x86_64/fpu/multiarch/e_atan2.c
|
||||
@@ -14,7 +14,7 @@ extern double __ieee754_atan2_fma4 (double, double);
|
||||
|
||||
libm_ifunc (__ieee754_atan2,
|
||||
HAS_FMA4 ? __ieee754_atan2_fma4
|
||||
- : (HAS_AVX ? __ieee754_atan2_avx : __ieee754_atan2_sse2));
|
||||
+ : (HAS_YMM_USABLE ? __ieee754_atan2_avx : __ieee754_atan2_sse2));
|
||||
strong_alias (__ieee754_atan2, __atan2_finite)
|
||||
|
||||
# define __ieee754_atan2 __ieee754_atan2_sse2
|
||||
diff --git a/sysdeps/x86_64/fpu/multiarch/e_exp.c b/sysdeps/x86_64/fpu/multiarch/e_exp.c
|
||||
index 3c65028..7b2320a 100644
|
||||
--- a/sysdeps/x86_64/fpu/multiarch/e_exp.c
|
||||
+++ b/sysdeps/x86_64/fpu/multiarch/e_exp.c
|
||||
@@ -14,7 +14,7 @@ extern double __ieee754_exp_fma4 (double);
|
||||
|
||||
libm_ifunc (__ieee754_exp,
|
||||
HAS_FMA4 ? __ieee754_exp_fma4
|
||||
- : (HAS_AVX ? __ieee754_exp_avx : __ieee754_exp_sse2));
|
||||
+ : (HAS_YMM_USABLE ? __ieee754_exp_avx : __ieee754_exp_sse2));
|
||||
strong_alias (__ieee754_exp, __exp_finite)
|
||||
|
||||
# define __ieee754_exp __ieee754_exp_sse2
|
||||
diff --git a/sysdeps/x86_64/fpu/multiarch/e_log.c b/sysdeps/x86_64/fpu/multiarch/e_log.c
|
||||
index 3b468d0..ab277d6 100644
|
||||
--- a/sysdeps/x86_64/fpu/multiarch/e_log.c
|
||||
+++ b/sysdeps/x86_64/fpu/multiarch/e_log.c
|
||||
@@ -14,7 +14,7 @@ extern double __ieee754_log_fma4 (double);
|
||||
|
||||
libm_ifunc (__ieee754_log,
|
||||
HAS_FMA4 ? __ieee754_log_fma4
|
||||
- : (HAS_AVX ? __ieee754_log_avx
|
||||
+ : (HAS_YMM_USABLE ? __ieee754_log_avx
|
||||
: __ieee754_log_sse2));
|
||||
strong_alias (__ieee754_log, __log_finite)
|
||||
|
||||
diff --git a/sysdeps/x86_64/fpu/multiarch/s_atan.c b/sysdeps/x86_64/fpu/multiarch/s_atan.c
|
||||
index 3160201..78c7e09 100644
|
||||
--- a/sysdeps/x86_64/fpu/multiarch/s_atan.c
|
||||
+++ b/sysdeps/x86_64/fpu/multiarch/s_atan.c
|
||||
@@ -12,7 +12,8 @@ extern double __atan_fma4 (double);
|
||||
# define __atan_fma4 ((void *) 0)
|
||||
# endif
|
||||
|
||||
-libm_ifunc (atan, HAS_FMA4 ? __atan_fma4 : HAS_AVX ? __atan_avx : __atan_sse2);
|
||||
+libm_ifunc (atan, (HAS_FMA4 ? __atan_fma4 :
|
||||
+ HAS_YMM_USABLE ? __atan_avx : __atan_sse2));
|
||||
|
||||
# define atan __atan_sse2
|
||||
#endif
|
||||
diff --git a/sysdeps/x86_64/fpu/multiarch/s_sin.c b/sysdeps/x86_64/fpu/multiarch/s_sin.c
|
||||
index 1ba9dbc..417acd0 100644
|
||||
--- a/sysdeps/x86_64/fpu/multiarch/s_sin.c
|
||||
+++ b/sysdeps/x86_64/fpu/multiarch/s_sin.c
|
||||
@@ -17,10 +17,12 @@ extern double __sin_fma4 (double);
|
||||
# define __sin_fma4 ((void *) 0)
|
||||
# endif
|
||||
|
||||
-libm_ifunc (__cos, HAS_FMA4 ? __cos_fma4 : HAS_AVX ? __cos_avx : __cos_sse2);
|
||||
+libm_ifunc (__cos, (HAS_FMA4 ? __cos_fma4 :
|
||||
+ HAS_YMM_USABLE ? __cos_avx : __cos_sse2));
|
||||
weak_alias (__cos, cos)
|
||||
|
||||
-libm_ifunc (__sin, HAS_FMA4 ? __sin_fma4 : HAS_AVX ? __sin_avx : __sin_sse2);
|
||||
+libm_ifunc (__sin, (HAS_FMA4 ? __sin_fma4 :
|
||||
+ HAS_YMM_USABLE ? __sin_avx : __sin_sse2));
|
||||
weak_alias (__sin, sin)
|
||||
|
||||
# define __cos __cos_sse2
|
||||
diff --git a/sysdeps/x86_64/fpu/multiarch/s_tan.c b/sysdeps/x86_64/fpu/multiarch/s_tan.c
|
||||
index 8f6601e..3047155 100644
|
||||
--- a/sysdeps/x86_64/fpu/multiarch/s_tan.c
|
||||
+++ b/sysdeps/x86_64/fpu/multiarch/s_tan.c
|
||||
@@ -12,7 +12,8 @@ extern double __tan_fma4 (double);
|
||||
# define __tan_fma4 ((void *) 0)
|
||||
# endif
|
||||
|
||||
-libm_ifunc (tan, HAS_FMA4 ? __tan_fma4 : HAS_AVX ? __tan_avx : __tan_sse2);
|
||||
+libm_ifunc (tan, (HAS_FMA4 ? __tan_fma4 :
|
||||
+ HAS_YMM_USABLE ? __tan_avx : __tan_sse2));
|
||||
|
||||
# define tan __tan_sse2
|
||||
#endif
|
||||
diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c
|
||||
index 65b0ee9..76d146c 100644
|
||||
--- a/sysdeps/x86_64/multiarch/init-arch.c
|
||||
+++ b/sysdeps/x86_64/multiarch/init-arch.c
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Initialize CPU feature data.
|
||||
This file is part of the GNU C Library.
|
||||
- Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -144,6 +144,18 @@ __init_cpu_features (void)
|
||||
else
|
||||
kind = arch_kind_other;
|
||||
|
||||
+ if (__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx & bit_AVX)
|
||||
+ {
|
||||
+ /* Reset the AVX bit in case OSXSAVE is disabled. */
|
||||
+ if ((__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx & bit_OSXSAVE) != 0
|
||||
+ && ({ unsigned int xcrlow;
|
||||
+ unsigned int xcrhigh;
|
||||
+ asm ("xgetbv"
|
||||
+ : "=a" (xcrlow), "=d" (xcrhigh) : "c" (0));
|
||||
+ (xcrlow & 6) == 6; }))
|
||||
+ __cpu_features.feature[index_YMM_Usable] |= bit_YMM_Usable;
|
||||
+ }
|
||||
+
|
||||
__cpu_features.family = family;
|
||||
__cpu_features.model = model;
|
||||
atomic_write_barrier ();
|
||||
diff --git a/sysdeps/x86_64/multiarch/init-arch.h b/sysdeps/x86_64/multiarch/init-arch.h
|
||||
index 2a1df39..2dc75ab 100644
|
||||
--- a/sysdeps/x86_64/multiarch/init-arch.h
|
||||
+++ b/sysdeps/x86_64/multiarch/init-arch.h
|
||||
@@ -1,5 +1,5 @@
|
||||
/* This file is part of the GNU C Library.
|
||||
- Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
@@ -22,11 +22,13 @@
|
||||
#define bit_Prefer_SSE_for_memop (1 << 3)
|
||||
#define bit_Fast_Unaligned_Load (1 << 4)
|
||||
#define bit_Prefer_PMINUB_for_stringop (1 << 5)
|
||||
+#define bit_YMM_Usable (1 << 6)
|
||||
|
||||
#define bit_SSE2 (1 << 26)
|
||||
#define bit_SSSE3 (1 << 9)
|
||||
#define bit_SSE4_1 (1 << 19)
|
||||
#define bit_SSE4_2 (1 << 20)
|
||||
+#define bit_OSXSAVE (1 << 27)
|
||||
#define bit_AVX (1 << 28)
|
||||
#define bit_POPCOUNT (1 << 23)
|
||||
#define bit_FMA (1 << 12)
|
||||
@@ -48,6 +50,7 @@
|
||||
# define index_Prefer_SSE_for_memop FEATURE_INDEX_1*FEATURE_SIZE
|
||||
# define index_Fast_Unaligned_Load FEATURE_INDEX_1*FEATURE_SIZE
|
||||
# define index_Prefer_PMINUB_for_stringop FEATURE_INDEX_1*FEATURE_SIZE
|
||||
+# define index_YMM_Usable FEATURE_INDEX_1*FEATURE_SIZE
|
||||
|
||||
#else /* __ASSEMBLER__ */
|
||||
|
||||
@@ -92,7 +95,7 @@ extern struct cpu_features
|
||||
|
||||
|
||||
extern void __init_cpu_features (void) attribute_hidden;
|
||||
-#define INIT_ARCH()\
|
||||
+# define INIT_ARCH() \
|
||||
do \
|
||||
if (__cpu_features.kind == arch_kind_unknown) \
|
||||
__init_cpu_features (); \
|
||||
@@ -125,23 +128,21 @@ extern const struct cpu_features *__get_cpu_features (void)
|
||||
# define index_Slow_BSF FEATURE_INDEX_1
|
||||
# define index_Prefer_SSE_for_memop FEATURE_INDEX_1
|
||||
# define index_Fast_Unaligned_Load FEATURE_INDEX_1
|
||||
+# define index_YMM_Usable FEATURE_INDEX_1
|
||||
|
||||
-#define HAS_ARCH_FEATURE(idx, bit) \
|
||||
- ((__get_cpu_features ()->feature[idx] & (bit)) != 0)
|
||||
+# define HAS_ARCH_FEATURE(name) \
|
||||
+ ((__get_cpu_features ()->feature[index_##name] & (bit_##name)) != 0)
|
||||
|
||||
-#define HAS_FAST_REP_STRING \
|
||||
- HAS_ARCH_FEATURE (index_Fast_Rep_String, bit_Fast_Rep_String)
|
||||
+# define HAS_FAST_REP_STRING HAS_ARCH_FEATURE (Fast_Rep_String)
|
||||
|
||||
-#define HAS_FAST_COPY_BACKWARD \
|
||||
- HAS_ARCH_FEATURE (index_Fast_Copy_Backward, bit_Fast_Copy_Backward)
|
||||
+# define HAS_FAST_COPY_BACKWARD HAS_ARCH_FEATURE (Fast_Copy_Backward)
|
||||
|
||||
-#define HAS_SLOW_BSF \
|
||||
- HAS_ARCH_FEATURE (index_Slow_BSF, bit_Slow_BSF)
|
||||
+# define HAS_SLOW_BSF HAS_ARCH_FEATURE (Slow_BSF)
|
||||
|
||||
-#define HAS_PREFER_SSE_FOR_MEMOP \
|
||||
- HAS_ARCH_FEATURE (index_Prefer_SSE_for_memop, bit_Prefer_SSE_for_memop)
|
||||
+# define HAS_PREFER_SSE_FOR_MEMOP HAS_ARCH_FEATURE (Prefer_SSE_for_memop)
|
||||
|
||||
-#define HAS_FAST_UNALIGNED_LOAD \
|
||||
- HAS_ARCH_FEATURE (index_Fast_Unaligned_Load, bit_Fast_Unaligned_Load)
|
||||
+# define HAS_FAST_UNALIGNED_LOAD HAS_ARCH_FEATURE (Fast_Unaligned_Load)
|
||||
+
|
||||
+# define HAS_YMM_USABLE HAS_ARCH_FEATURE (YMM_Usable)
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
--
|
||||
1.7.9
|
||||
|
|
@ -1,297 +0,0 @@
|
|||
diff --git a/posix/confstr.c b/posix/confstr.c
|
||||
index 3c9566d..cad6561 100644
|
||||
--- a/posix/confstr.c
|
||||
+++ b/posix/confstr.c
|
||||
@@ -35,6 +34,10 @@ confstr (name, buf, len)
|
||||
const char *string = "";
|
||||
size_t string_len = 1;
|
||||
|
||||
+ /* Note that this buffer must be large enough for the longest strings
|
||||
+ used below. */
|
||||
+ char restenvs[4 * sizeof "POSIX_V7_LPBIG_OFFBIG"];
|
||||
+
|
||||
switch (name)
|
||||
{
|
||||
case _CS_PATH:
|
||||
@@ -53,59 +56,55 @@ confstr (name, buf, len)
|
||||
wint_t types are no greater than the width of type long.
|
||||
|
||||
Currently this means all environment which the system allows. */
|
||||
- {
|
||||
- char restenvs[4 * sizeof "POSIX_V7_LPBIG_OFFBIG"];
|
||||
-
|
||||
- string_len = 0;
|
||||
+ string_len = 0;
|
||||
#ifndef _POSIX_V7_ILP32_OFF32
|
||||
- if (__sysconf (_SC_V7_ILP32_OFF32) > 0)
|
||||
+ if (__sysconf (_SC_V7_ILP32_OFF32) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V7_ILP32_OFF32 || _POSIX_V7_ILP32_OFF32 > 0
|
||||
- {
|
||||
- memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFF32",
|
||||
- sizeof "POSIX_V7_ILP32_OFF32" - 1);
|
||||
- string_len += sizeof "POSIX_V7_ILP32_OFF32" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFF32",
|
||||
+ sizeof "POSIX_V7_ILP32_OFF32" - 1);
|
||||
+ string_len += sizeof "POSIX_V7_ILP32_OFF32" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _POSIX_V7_ILP32_OFFBIG
|
||||
- if (__sysconf (_SC_V7_ILP32_OFFBIG) > 0)
|
||||
+ if (__sysconf (_SC_V7_ILP32_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V7_ILP32_OFFBIG || _POSIX_V7_ILP32_OFFBIG > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFFBIG",
|
||||
- sizeof "POSIX_V7_ILP32_OFFBIG" - 1);
|
||||
- string_len += sizeof "POSIX_V7_ILP32_OFFBIG" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFFBIG",
|
||||
+ sizeof "POSIX_V7_ILP32_OFFBIG" - 1);
|
||||
+ string_len += sizeof "POSIX_V7_ILP32_OFFBIG" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _POSIX_V7_LP64_OFF64
|
||||
- if (__sysconf (_SC_V7_LP64_OFF64) > 0)
|
||||
+ if (__sysconf (_SC_V7_LP64_OFF64) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V7_LP64_OFF64 || _POSIX_V7_LP64_OFF64 > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "POSIX_V7_LP64_OFF64",
|
||||
- sizeof "POSIX_V7_LP64_OFF64" - 1);
|
||||
- string_len += sizeof "POSIX_V7_LP64_OFF64" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "POSIX_V7_LP64_OFF64",
|
||||
+ sizeof "POSIX_V7_LP64_OFF64" - 1);
|
||||
+ string_len += sizeof "POSIX_V7_LP64_OFF64" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _POSIX_V7_LPBIG_OFFBIG
|
||||
- if (__sysconf (_SC_V7_LPBIG_OFFBIG) > 0)
|
||||
+ if (__sysconf (_SC_V7_LPBIG_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V7_LPBIG_OFFBIG || _POSIX_V7_LPBIG_OFFBIG > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "POSIX_V7_LPBIG_OFFBIG",
|
||||
- sizeof "POSIX_V7_LPBIG_OFFBIG" - 1);
|
||||
- string_len += sizeof "POSIX_V7_LPBIG_OFFBIG" - 1;
|
||||
- }
|
||||
-#endif
|
||||
- restenvs[string_len++] = '\0';
|
||||
- string = restenvs;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "POSIX_V7_LPBIG_OFFBIG",
|
||||
+ sizeof "POSIX_V7_LPBIG_OFFBIG" - 1);
|
||||
+ string_len += sizeof "POSIX_V7_LPBIG_OFFBIG" - 1;
|
||||
+ }
|
||||
+#endif
|
||||
+ restenvs[string_len++] = '\0';
|
||||
+ string = restenvs;
|
||||
break;
|
||||
|
||||
case _CS_V6_WIDTH_RESTRICTED_ENVS:
|
||||
@@ -116,59 +115,55 @@ confstr (name, buf, len)
|
||||
wint_t types are no greater than the width of type long.
|
||||
|
||||
Currently this means all environment which the system allows. */
|
||||
- {
|
||||
- char restenvs[4 * sizeof "POSIX_V6_LPBIG_OFFBIG"];
|
||||
-
|
||||
- string_len = 0;
|
||||
+ string_len = 0;
|
||||
#ifndef _POSIX_V6_ILP32_OFF32
|
||||
- if (__sysconf (_SC_V6_ILP32_OFF32) > 0)
|
||||
+ if (__sysconf (_SC_V6_ILP32_OFF32) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V6_ILP32_OFF32 || _POSIX_V6_ILP32_OFF32 > 0
|
||||
- {
|
||||
- memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFF32",
|
||||
- sizeof "POSIX_V6_ILP32_OFF32" - 1);
|
||||
- string_len += sizeof "POSIX_V6_ILP32_OFF32" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFF32",
|
||||
+ sizeof "POSIX_V6_ILP32_OFF32" - 1);
|
||||
+ string_len += sizeof "POSIX_V6_ILP32_OFF32" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _POSIX_V6_ILP32_OFFBIG
|
||||
- if (__sysconf (_SC_V6_ILP32_OFFBIG) > 0)
|
||||
+ if (__sysconf (_SC_V6_ILP32_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V6_ILP32_OFFBIG || _POSIX_V6_ILP32_OFFBIG > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFFBIG",
|
||||
- sizeof "POSIX_V6_ILP32_OFFBIG" - 1);
|
||||
- string_len += sizeof "POSIX_V6_ILP32_OFFBIG" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFFBIG",
|
||||
+ sizeof "POSIX_V6_ILP32_OFFBIG" - 1);
|
||||
+ string_len += sizeof "POSIX_V6_ILP32_OFFBIG" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _POSIX_V6_LP64_OFF64
|
||||
- if (__sysconf (_SC_V6_LP64_OFF64) > 0)
|
||||
+ if (__sysconf (_SC_V6_LP64_OFF64) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V6_LP64_OFF64 || _POSIX_V6_LP64_OFF64 > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "POSIX_V6_LP64_OFF64",
|
||||
- sizeof "POSIX_V6_LP64_OFF64" - 1);
|
||||
- string_len += sizeof "POSIX_V6_LP64_OFF64" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "POSIX_V6_LP64_OFF64",
|
||||
+ sizeof "POSIX_V6_LP64_OFF64" - 1);
|
||||
+ string_len += sizeof "POSIX_V6_LP64_OFF64" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _POSIX_V6_LPBIG_OFFBIG
|
||||
- if (__sysconf (_SC_V6_LPBIG_OFFBIG) > 0)
|
||||
+ if (__sysconf (_SC_V6_LPBIG_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V6_LPBIG_OFFBIG || _POSIX_V6_LPBIG_OFFBIG > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "POSIX_V6_LPBIG_OFFBIG",
|
||||
- sizeof "POSIX_V6_LPBIG_OFFBIG" - 1);
|
||||
- string_len += sizeof "POSIX_V6_LPBIG_OFFBIG" - 1;
|
||||
- }
|
||||
-#endif
|
||||
- restenvs[string_len++] = '\0';
|
||||
- string = restenvs;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "POSIX_V6_LPBIG_OFFBIG",
|
||||
+ sizeof "POSIX_V6_LPBIG_OFFBIG" - 1);
|
||||
+ string_len += sizeof "POSIX_V6_LPBIG_OFFBIG" - 1;
|
||||
+ }
|
||||
+#endif
|
||||
+ restenvs[string_len++] = '\0';
|
||||
+ string = restenvs;
|
||||
break;
|
||||
|
||||
case _CS_V5_WIDTH_RESTRICTED_ENVS:
|
||||
@@ -179,59 +174,55 @@ confstr (name, buf, len)
|
||||
wint_t types are no greater than the width of type long.
|
||||
|
||||
Currently this means all environment which the system allows. */
|
||||
- {
|
||||
- char restenvs[4 * sizeof "XBS5_LPBIG_OFFBIG"];
|
||||
-
|
||||
- string_len = 0;
|
||||
+ string_len = 0;
|
||||
#ifndef _XBS5_ILP32_OFF32
|
||||
- if (__sysconf (_SC_XBS5_ILP32_OFF32) > 0)
|
||||
+ if (__sysconf (_SC_XBS5_ILP32_OFF32) > 0)
|
||||
#endif
|
||||
#if !defined _XBS5_ILP32_OFF32 || _XBS5_ILP32_OFF32 > 0
|
||||
- {
|
||||
- memcpy (restenvs + string_len, "XBS5_ILP32_OFF32",
|
||||
- sizeof "XBS5_ILP32_OFF32" - 1);
|
||||
- string_len += sizeof "XBS5_ILP32_OFF32" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ memcpy (restenvs + string_len, "XBS5_ILP32_OFF32",
|
||||
+ sizeof "XBS5_ILP32_OFF32" - 1);
|
||||
+ string_len += sizeof "XBS5_ILP32_OFF32" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _XBS5_ILP32_OFFBIG
|
||||
- if (__sysconf (_SC_XBS5_ILP32_OFFBIG) > 0)
|
||||
+ if (__sysconf (_SC_XBS5_ILP32_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _XBS5_ILP32_OFFBIG || _XBS5_ILP32_OFFBIG > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "XBS5_ILP32_OFFBIG",
|
||||
- sizeof "XBS5_ILP32_OFFBIG" - 1);
|
||||
- string_len += sizeof "XBS5_ILP32_OFFBIG" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "XBS5_ILP32_OFFBIG",
|
||||
+ sizeof "XBS5_ILP32_OFFBIG" - 1);
|
||||
+ string_len += sizeof "XBS5_ILP32_OFFBIG" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _XBS5_LP64_OFF64
|
||||
- if (__sysconf (_SC_XBS5_LP64_OFF64) > 0)
|
||||
+ if (__sysconf (_SC_XBS5_LP64_OFF64) > 0)
|
||||
#endif
|
||||
#if !defined _XBS5_LP64_OFF64 || _XBS5_LP64_OFF64 > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "XBS5_LP64_OFF64",
|
||||
- sizeof "XBS5_LP64_OFF64" - 1);
|
||||
- string_len += sizeof "XBS5_LP64_OFF64" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "XBS5_LP64_OFF64",
|
||||
+ sizeof "XBS5_LP64_OFF64" - 1);
|
||||
+ string_len += sizeof "XBS5_LP64_OFF64" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _XBS5_LPBIG_OFFBIG
|
||||
- if (__sysconf (_SC_XBS5_LPBIG_OFFBIG) > 0)
|
||||
+ if (__sysconf (_SC_XBS5_LPBIG_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _XBS5_LPBIG_OFFBIG || _XBS5_LPBIG_OFFBIG > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "XBS5_LPBIG_OFFBIG",
|
||||
- sizeof "XBS5_LPBIG_OFFBIG" - 1);
|
||||
- string_len += sizeof "XBS5_LPBIG_OFFBIG" - 1;
|
||||
- }
|
||||
-#endif
|
||||
- restenvs[string_len++] = '\0';
|
||||
- string = restenvs;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "XBS5_LPBIG_OFFBIG",
|
||||
+ sizeof "XBS5_LPBIG_OFFBIG" - 1);
|
||||
+ string_len += sizeof "XBS5_LPBIG_OFFBIG" - 1;
|
||||
+ }
|
||||
+#endif
|
||||
+ restenvs[string_len++] = '\0';
|
||||
+ string = restenvs;
|
||||
break;
|
||||
|
||||
case _CS_XBS5_ILP32_OFF32_CFLAGS:
|
|
@ -1,20 +0,0 @@
|
|||
diff --git a/timezone/Makefile b/timezone/Makefile
|
||||
index 00bfba6..9e55a6a 100644
|
||||
--- a/timezone/Makefile
|
||||
+++ b/timezone/Makefile
|
||||
@@ -45,7 +45,6 @@ include ../Makeconfig # Get objpfx defined so we can use it below.
|
||||
CPPFLAGS-zic = -DNOT_IN_libc
|
||||
|
||||
ifeq ($(have-ksh),yes)
|
||||
-install-others += $(inst_zonedir)/iso3166.tab $(inst_zonedir)/zone.tab
|
||||
install-bin-script = tzselect
|
||||
generated += tzselect
|
||||
endif
|
||||
@@ -111,7 +110,3 @@ $(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make
|
||||
-e 's%@TZDIR@%$(zonedir)%g' < $< > $@.new
|
||||
chmod 555 $@.new
|
||||
mv -f $@.new $@
|
||||
-
|
||||
-$(addprefix $(inst_zonedir)/,iso3166.tab zone.tab): \
|
||||
- $(inst_zonedir)/%: % $(+force)
|
||||
- $(do-install)
|
|
@ -1,124 +0,0 @@
|
|||
diff --git a/timezone/Makefile b/timezone/Makefile
|
||||
index e8fb716..d5ea538 100644
|
||||
--- a/timezone/Makefile
|
||||
+++ b/timezone/Makefile
|
||||
@@ -1,4 +1,4 @@
|
||||
-# Copyright (C) 1998,1999,2000,2002,2005,2007 Free Software Foundation, Inc.
|
||||
+# Copyright (C) 1998-2000,2002,2005,2007,2012 Free Software Foundation, Inc.
|
||||
# This file is part of the GNU C Library.
|
||||
|
||||
# The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -49,33 +49,6 @@ include ../Makeconfig # Get objpfx defined so we can use it below.
|
||||
|
||||
CPPFLAGS-zic = -DNOT_IN_libc
|
||||
|
||||
-# z.* use this variable.
|
||||
-define nl
|
||||
-
|
||||
-
|
||||
-endef
|
||||
-ifndef avoid-generated
|
||||
-ifndef inhibit_timezone_rules
|
||||
--include $(addprefix $(objpfx)z.,$(tzfiles))
|
||||
-endif
|
||||
-endif
|
||||
-
|
||||
-# Make these absolute file names.
|
||||
-installed-localtime-file := $(firstword $(filter /%,$(inst_localtime-file)) \
|
||||
- $(addprefix $(inst_zonedir)/, \
|
||||
- $(localtime-file)))
|
||||
-installed-posixrules-file := $(firstword $(filter /%,$(posixrules-file)) \
|
||||
- $(addprefix $(inst_zonedir)/, \
|
||||
- $(posixrules-file)))
|
||||
-
|
||||
-ifeq ($(cross-compiling),no)
|
||||
-# Don't try to install the zoneinfo files since we can't run zic.
|
||||
-install-others = $(addprefix $(inst_zonedir)/,$(zonenames) \
|
||||
- $(zonenames:%=posix/%) \
|
||||
- $(zonenames:%=right/%)) \
|
||||
- $(installed-localtime-file) $(installed-posixrules-file)
|
||||
-endif
|
||||
-
|
||||
ifeq ($(have-ksh),yes)
|
||||
install-others += $(inst_zonedir)/iso3166.tab $(inst_zonedir)/zone.tab
|
||||
install-bin-script = tzselect
|
||||
@@ -85,79 +58,6 @@ endif
|
||||
include ../Rules
|
||||
|
||||
|
||||
-$(tzfiles:%=$(objpfx)z.%): $(objpfx)z.%: % Makefile
|
||||
-# Kludge alert: we use an implicit rule (in what we are generating here)
|
||||
-# because that is the only way to tell Make that the one command builds all
|
||||
-# the files.
|
||||
-# The extra kludge for the $(tzlinks) files is necessary since running zic
|
||||
-# this file requires all other files to exist. Blech!
|
||||
- $(make-target-directory)
|
||||
- (echo 'define $*-zones' ;\
|
||||
- $(AWK) '$$1 == "Zone" { print $$2 } $$1 == "Link" { print $$3 }' $^ ;\
|
||||
- echo 'endef' ;\
|
||||
- echo '$*-zones := $$(subst $$(nl), ,$$($*-zones))' ;\
|
||||
- echo 'ifdef $*-zones' ;\
|
||||
- if test x$(findstring $*, $(tzlinks)) != x; then \
|
||||
- echo '$$(addprefix $$(inst_zonedir)/right/,$$($*-zones)): \';\
|
||||
- echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/right/,$$($$t-zones)))' ;\
|
||||
- echo '$$(addprefix $$(inst_zonedir)/posix/,$$($*-zones)): \';\
|
||||
- echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/posix/,$$($$t-zones)))' ;\
|
||||
- echo '$$(addprefix $$(inst_zonedir)/,$$($*-zones)): \' ;\
|
||||
- echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/,$$($$t-zones)))' ;\
|
||||
- fi ;\
|
||||
- echo '$$(addprefix $$(dir $$(inst_zonedir))zone%/right/,$$($*-zones)): \' ;\
|
||||
- echo '$< $$(objpfx)zic leapseconds yearistype' ;\
|
||||
- echo ' $$(tzcompile)' ;\
|
||||
- echo '$$(addprefix $$(dir $$(inst_zonedir))zone%/posix/,$$($*-zones)): \' ;\
|
||||
- echo '$< $$(objpfx)zic /dev/null yearistype' ;\
|
||||
- echo ' $$(tzcompile)' ;\
|
||||
- echo '$$(addprefix $$(dir $$(inst_zonedir))zone%/,$$($*-zones)): \' ;\
|
||||
- echo '$< $$(objpfx)zic $$(leapseconds) yearistype' ;\
|
||||
- echo ' $$(tzcompile)' ;\
|
||||
- echo 'endif' ;\
|
||||
- echo 'zonenames := $$(zonenames) $$($*-zones)' ;\
|
||||
- ) > $@.new
|
||||
- mv $@.new $@
|
||||
-
|
||||
-.PHONY: echo-zonenames
|
||||
-echo-zonenames:
|
||||
- @echo 'Known zones: $(zonenames)'
|
||||
-
|
||||
-
|
||||
-# We have to use `-d $(inst_zonedir)' to explictly tell zic where to
|
||||
-# place the output files although $(zonedir) is compiled in. But the
|
||||
-# user might have set $(install_root) on the command line of `make install'.
|
||||
-zic-cmd = $(built-program-cmd) -d $(inst_zonedir)
|
||||
-tzcompile = $(zic-cmd)$(target-zone-flavor) -L $(word 3,$^) \
|
||||
- -y $(dir $(word 4,$^))$(notdir $(word 4,$^)) $<
|
||||
-
|
||||
-# The source files specify the zone names relative to the -d directory,
|
||||
-# so for the posix/ and right/ flavors we need to pass -d $(inst_zonedir)/posix
|
||||
-# and the like. This magic extracts /posix or /right if it's the first
|
||||
-# component after $(inst_zonedir) in the target name $@.
|
||||
-target-zone-flavor = $(filter /posix /right, \
|
||||
- /$(firstword $(subst /, , \
|
||||
- $(patsubst $(inst_zonedir)/%,%,$@))))
|
||||
-
|
||||
-ifdef localtime
|
||||
-$(installed-localtime-file): $(inst_zonedir)/$(localtime) $(objpfx)zic \
|
||||
- $(+force)
|
||||
- $(make-target-directory)
|
||||
- if test -r $@; then \
|
||||
- echo Site timezone NOT reset to Factory.; \
|
||||
- else \
|
||||
- rm -f $@T; \
|
||||
- $(SHELL) $(..)scripts/rellns-sh $< $@T; \
|
||||
- mv -f $@T $@; \
|
||||
- fi
|
||||
-endif
|
||||
-ifdef posixrules
|
||||
-$(installed-posixrules-file): $(inst_zonedir)/$(posixrules) $(objpfx)zic \
|
||||
- $(+force)
|
||||
- $(zic-cmd) -p $(posixrules)
|
||||
-endif
|
||||
-
|
||||
-
|
||||
$(objpfx)zic: $(objpfx)scheck.o $(objpfx)ialloc.o
|
||||
|
||||
tz-cflags = -DTZDIR='"$(zonedir)"' \
|
|
@ -1,20 +0,0 @@
|
|||
diff --git a/sysdeps/i386/fpu/feupdateenv.c b/sysdeps/i386/fpu/feupdateenv.c
|
||||
index 70f9ee2..6e2ce35 100644
|
||||
--- a/sysdeps/i386/fpu/feupdateenv.c
|
||||
+++ b/sysdeps/i386/fpu/feupdateenv.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Install given floating-point environment and raise exceptions.
|
||||
- Copyright (C) 1997,99,2000,01,07,2010 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 1997,99,2000,01,07,2010,2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||
|
||||
@@ -44,7 +44,7 @@ __feupdateenv (const fenv_t *envp)
|
||||
/* Raise the saved exception. Incidently for us the implementation
|
||||
defined format of the values in objects of type fexcept_t is the
|
||||
same as the ones specified using the FE_* constants. */
|
||||
- feraiseexcept ((int) temp);
|
||||
+ __feraiseexcept ((int) temp);
|
||||
|
||||
/* Success. */
|
||||
return 0;
|
|
@ -1,148 +0,0 @@
|
|||
diff --git a/stdlib/fmtmsg.c b/stdlib/fmtmsg.c
|
||||
index 9203317..4c02302 100644
|
||||
--- a/stdlib/fmtmsg.c
|
||||
+++ b/stdlib/fmtmsg.c
|
||||
@@ -103,7 +103,6 @@ fmtmsg (long int classification, const char *label, int severity,
|
||||
const char *text, const char *action, const char *tag)
|
||||
{
|
||||
__libc_once_define (static, once);
|
||||
- int result = MM_OK;
|
||||
struct severity_info *severity_rec;
|
||||
|
||||
/* Make sure everything is initialized. */
|
||||
@@ -124,17 +123,6 @@ fmtmsg (long int classification, const char *label, int severity,
|
||||
return MM_NOTOK;
|
||||
}
|
||||
|
||||
- for (severity_rec = severity_list; severity_rec != NULL;
|
||||
- severity_rec = severity_rec->next)
|
||||
- if (severity == severity_rec->severity)
|
||||
- /* Bingo. */
|
||||
- break;
|
||||
-
|
||||
- /* If we don't know anything about the severity level return an error. */
|
||||
- if (severity_rec == NULL)
|
||||
- return MM_NOTOK;
|
||||
-
|
||||
-
|
||||
#ifdef __libc_ptf_call
|
||||
/* We do not want this call to be cut short by a thread
|
||||
cancellation. Therefore disable cancellation for now. */
|
||||
@@ -143,54 +131,73 @@ fmtmsg (long int classification, const char *label, int severity,
|
||||
0);
|
||||
#endif
|
||||
|
||||
- /* Now we can print. */
|
||||
- if (classification & MM_PRINT)
|
||||
- {
|
||||
- int do_label = (print & label_mask) && label != MM_NULLLBL;
|
||||
- int do_severity = (print & severity_mask) && severity != MM_NULLSEV;
|
||||
- int do_text = (print & text_mask) && text != MM_NULLTXT;
|
||||
- int do_action = (print & action_mask) && action != MM_NULLACT;
|
||||
- int do_tag = (print & tag_mask) && tag != MM_NULLTAG;
|
||||
-
|
||||
- if (__fxprintf (stderr, "%s%s%s%s%s%s%s%s%s%s\n",
|
||||
- do_label ? label : "",
|
||||
- do_label && (do_severity | do_text | do_action | do_tag)
|
||||
- ? ": " : "",
|
||||
- do_severity ? severity_rec->string : "",
|
||||
- do_severity && (do_text | do_action | do_tag)
|
||||
- ? ": " : "",
|
||||
- do_text ? text : "",
|
||||
- do_text && (do_action | do_tag) ? "\n" : "",
|
||||
- do_action ? "TO FIX: " : "",
|
||||
- do_action ? action : "",
|
||||
- do_action && do_tag ? " " : "",
|
||||
- do_tag ? tag : "") < 0)
|
||||
- /* Oh, oh. An error occurred during the output. */
|
||||
- result = MM_NOMSG;
|
||||
- }
|
||||
+ __libc_lock_lock (lock);
|
||||
|
||||
- if (classification & MM_CONSOLE)
|
||||
+ for (severity_rec = severity_list; severity_rec != NULL;
|
||||
+ severity_rec = severity_rec->next)
|
||||
+ if (severity == severity_rec->severity)
|
||||
+ /* Bingo. */
|
||||
+ break;
|
||||
+
|
||||
+ /* If we don't know anything about the severity level return an error. */
|
||||
+ int result = MM_NOTOK;
|
||||
+ if (severity_rec != NULL)
|
||||
{
|
||||
- int do_label = label != MM_NULLLBL;
|
||||
- int do_severity = severity != MM_NULLSEV;
|
||||
- int do_text = text != MM_NULLTXT;
|
||||
- int do_action = action != MM_NULLACT;
|
||||
- int do_tag = tag != MM_NULLTAG;
|
||||
-
|
||||
- syslog (LOG_ERR, "%s%s%s%s%s%s%s%s%s%s\n",
|
||||
- do_label ? label : "",
|
||||
- do_label && (do_severity | do_text | do_action | do_tag)
|
||||
- ? ": " : "",
|
||||
- do_severity ? severity_rec->string : "",
|
||||
- do_severity && (do_text | do_action | do_tag) ? ": " : "",
|
||||
- do_text ? text : "",
|
||||
- do_text && (do_action | do_tag) ? "\n" : "",
|
||||
- do_action ? "TO FIX: " : "",
|
||||
- do_action ? action : "",
|
||||
- do_action && do_tag ? " " : "",
|
||||
- do_tag ? tag : "");
|
||||
+ result = MM_OK;
|
||||
+
|
||||
+ /* Now we can print. */
|
||||
+ if (classification & MM_PRINT)
|
||||
+ {
|
||||
+ int do_label = (print & label_mask) && label != MM_NULLLBL;
|
||||
+ int do_severity = (print & severity_mask) && severity != MM_NULLSEV;
|
||||
+ int do_text = (print & text_mask) && text != MM_NULLTXT;
|
||||
+ int do_action = (print & action_mask) && action != MM_NULLACT;
|
||||
+ int do_tag = (print & tag_mask) && tag != MM_NULLTAG;
|
||||
+ int need_colon = (do_label
|
||||
+ && (do_severity | do_text | do_action | do_tag));
|
||||
+
|
||||
+ if (__fxprintf (stderr, "%s%s%s%s%s%s%s%s%s%s\n",
|
||||
+ do_label ? label : "",
|
||||
+ need_colon ? ": " : "",
|
||||
+ do_severity ? severity_rec->string : "",
|
||||
+ do_severity && (do_text | do_action | do_tag)
|
||||
+ ? ": " : "",
|
||||
+ do_text ? text : "",
|
||||
+ do_text && (do_action | do_tag) ? "\n" : "",
|
||||
+ do_action ? "TO FIX: " : "",
|
||||
+ do_action ? action : "",
|
||||
+ do_action && do_tag ? " " : "",
|
||||
+ do_tag ? tag : "") < 0)
|
||||
+ /* Oh, oh. An error occurred during the output. */
|
||||
+ result = MM_NOMSG;
|
||||
+ }
|
||||
+
|
||||
+ if (classification & MM_CONSOLE)
|
||||
+ {
|
||||
+ int do_label = label != MM_NULLLBL;
|
||||
+ int do_severity = severity != MM_NULLSEV;
|
||||
+ int do_text = text != MM_NULLTXT;
|
||||
+ int do_action = action != MM_NULLACT;
|
||||
+ int do_tag = tag != MM_NULLTAG;
|
||||
+ int need_colon = (do_label
|
||||
+ && (do_severity | do_text | do_action | do_tag));
|
||||
+
|
||||
+ syslog (LOG_ERR, "%s%s%s%s%s%s%s%s%s%s\n",
|
||||
+ do_label ? label : "",
|
||||
+ need_colon ? ": " : "",
|
||||
+ do_severity ? severity_rec->string : "",
|
||||
+ do_severity && (do_text | do_action | do_tag) ? ": " : "",
|
||||
+ do_text ? text : "",
|
||||
+ do_text && (do_action | do_tag) ? "\n" : "",
|
||||
+ do_action ? "TO FIX: " : "",
|
||||
+ do_action ? action : "",
|
||||
+ do_action && do_tag ? " " : "",
|
||||
+ do_tag ? tag : "");
|
||||
+ }
|
||||
}
|
||||
|
||||
+ __libc_lock_unlock (lock);
|
||||
+
|
||||
#ifdef __libc_ptf_call
|
||||
__libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
|
||||
#endif
|
Binary file not shown.
|
@ -1,262 +0,0 @@
|
|||
diff --git a/Makeconfig b/Makeconfig
|
||||
index 2db2821..68547b2 100644
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -900,6 +900,12 @@ else
|
||||
libdl = $(common-objpfx)dlfcn/libdl.a
|
||||
endif
|
||||
|
||||
+ifeq ($(build-shared),yes)
|
||||
+libm = $(common-objpfx)math/libm.so$(libm.so-version)
|
||||
+else
|
||||
+libm = $(common-objpfx)math/libm.a
|
||||
+endif
|
||||
+
|
||||
# These are the subdirectories containing the library source. The order
|
||||
# is more or less arbitrary. The sorting step will take care of the
|
||||
# dependencies.
|
||||
diff --git a/elf/Makefile b/elf/Makefile
|
||||
index 052e763..3f1772a 100644
|
||||
--- a/elf/Makefile
|
||||
+++ b/elf/Makefile
|
||||
@@ -124,7 +124,8 @@ distribute := rtld-Rules \
|
||||
tst-initordera1.c tst-initordera2.c tst-initorderb1.c \
|
||||
tst-initorderb2.c tst-initordera3.c tst-initordera4.c \
|
||||
tst-initorder.c \
|
||||
- tst-initorder2.c
|
||||
+ tst-initorder2.c \
|
||||
+ tst-relsort1.c tst-relsort1mod1.c tst-relsort1mod2.c
|
||||
|
||||
CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables
|
||||
CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables
|
||||
@@ -227,7 +228,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
|
||||
tst-audit1 tst-audit2 \
|
||||
tst-stackguard1 tst-addr1 tst-thrlock \
|
||||
tst-unique1 tst-unique2 tst-unique3 tst-unique4 \
|
||||
- tst-initorder tst-initorder2
|
||||
+ tst-initorder tst-initorder2 tst-relsort1
|
||||
# reldep9
|
||||
test-srcs = tst-pathopt
|
||||
selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null)
|
||||
@@ -290,7 +291,9 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
|
||||
tst-initordera1 tst-initorderb1 \
|
||||
tst-initordera2 tst-initorderb2 \
|
||||
tst-initordera3 tst-initordera4 \
|
||||
- tst-initorder2a tst-initorder2b tst-initorder2c tst-initorder2d
|
||||
+ tst-initorder2a tst-initorder2b tst-initorder2c \
|
||||
+ tst-initorder2d \
|
||||
+ tst-relsort1mod1 tst-relsort1mod2
|
||||
ifeq (yes,$(have-initfini-array))
|
||||
modules-names += tst-array2dep tst-array5dep
|
||||
endif
|
||||
@@ -1195,3 +1198,9 @@ CFLAGS-tst-auditmod6b.c += $(AVX-CFLAGS)
|
||||
CFLAGS-tst-auditmod6c.c += $(AVX-CFLAGS)
|
||||
CFLAGS-tst-auditmod7b.c += $(AVX-CFLAGS)
|
||||
endif
|
||||
+
|
||||
+$(objpfx)tst-relsort1: $(libdl)
|
||||
+$(objpfx)tst-relsort1mod1.so: $(libm) $(objpfx)tst-relsort1mod2.so
|
||||
+$(objpfx)tst-relsort1mod2.so: $(libm)
|
||||
+$(objpfx)tst-relsort1.out: $(objpfx)tst-relsort1mod1.so \
|
||||
+ $(objpfx)tst-relsort1mod2.so
|
||||
diff --git a/elf/dl-open.c b/elf/dl-open.c
|
||||
index a0b5c50..a56bdc1 100644
|
||||
--- a/elf/dl-open.c
|
||||
+++ b/elf/dl-open.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Load a shared object at runtime, relocate it, and run its initializer.
|
||||
- Copyright (C) 1996-2007, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 1996-2007, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -302,45 +302,109 @@ dl_open_worker (void *a)
|
||||
if (GLRO(dl_lazy))
|
||||
reloc_mode |= mode & RTLD_LAZY;
|
||||
|
||||
- /* Relocate the objects loaded. We do this in reverse order so that copy
|
||||
- relocs of earlier objects overwrite the data written by later objects. */
|
||||
-
|
||||
+ /* Sort the objects by dependency for the relocation process. This
|
||||
+ allows IFUNC relocations to work and it also means copy
|
||||
+ relocation of dependencies are if necessary overwritten. */
|
||||
+ size_t nmaps = 0;
|
||||
struct link_map *l = new;
|
||||
- while (l->l_next)
|
||||
- l = l->l_next;
|
||||
- while (1)
|
||||
+ do
|
||||
+ {
|
||||
+ if (! l->l_real->l_relocated)
|
||||
+ ++nmaps;
|
||||
+ l = l->l_next;
|
||||
+ }
|
||||
+ while (l != NULL);
|
||||
+ struct link_map *maps[nmaps];
|
||||
+ nmaps = 0;
|
||||
+ l = new;
|
||||
+ do
|
||||
{
|
||||
if (! l->l_real->l_relocated)
|
||||
+ maps[nmaps++] = l;
|
||||
+ l = l->l_next;
|
||||
+ }
|
||||
+ while (l != NULL);
|
||||
+ if (nmaps > 1)
|
||||
+ {
|
||||
+ char seen[nmaps];
|
||||
+ memset (seen, '\0', nmaps);
|
||||
+ size_t i = 0;
|
||||
+ while (1)
|
||||
{
|
||||
-#ifdef SHARED
|
||||
- if (__builtin_expect (GLRO(dl_profile) != NULL, 0))
|
||||
+ ++seen[i];
|
||||
+ struct link_map *thisp = maps[i];
|
||||
+
|
||||
+ /* Find the last object in the list for which the current one is
|
||||
+ a dependency and move the current object behind the object
|
||||
+ with the dependency. */
|
||||
+ size_t k = nmaps - 1;
|
||||
+ while (k > i)
|
||||
{
|
||||
- /* If this here is the shared object which we want to profile
|
||||
- make sure the profile is started. We can find out whether
|
||||
- this is necessary or not by observing the `_dl_profile_map'
|
||||
- variable. If was NULL but is not NULL afterwars we must
|
||||
- start the profiling. */
|
||||
- struct link_map *old_profile_map = GL(dl_profile_map);
|
||||
+ struct link_map **runp = maps[k]->l_initfini;
|
||||
+ if (runp != NULL)
|
||||
+ /* Look through the dependencies of the object. */
|
||||
+ while (*runp != NULL)
|
||||
+ if (__builtin_expect (*runp++ == thisp, 0))
|
||||
+ {
|
||||
+ /* Move the current object to the back past the last
|
||||
+ object with it as the dependency. */
|
||||
+ memmove (&maps[i], &maps[i + 1],
|
||||
+ (k - i) * sizeof (maps[0]));
|
||||
+ maps[k] = thisp;
|
||||
+
|
||||
+ if (seen[i + 1] > 1)
|
||||
+ {
|
||||
+ ++i;
|
||||
+ goto next_clear;
|
||||
+ }
|
||||
+
|
||||
+ char this_seen = seen[i];
|
||||
+ memmove (&seen[i], &seen[i + 1],
|
||||
+ (k - i) * sizeof (seen[0]));
|
||||
+ seen[k] = this_seen;
|
||||
+
|
||||
+ goto next;
|
||||
+ }
|
||||
+
|
||||
+ --k;
|
||||
+ }
|
||||
|
||||
- _dl_relocate_object (l, l->l_scope, reloc_mode | RTLD_LAZY, 1);
|
||||
+ if (++i == nmaps)
|
||||
+ break;
|
||||
+ next_clear:
|
||||
+ memset (&seen[i], 0, (nmaps - i) * sizeof (seen[0]));
|
||||
+ next:;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- if (old_profile_map == NULL && GL(dl_profile_map) != NULL)
|
||||
- {
|
||||
- /* We must prepare the profiling. */
|
||||
- _dl_start_profile ();
|
||||
+ for (size_t i = nmaps; i-- > 0; )
|
||||
+ {
|
||||
+ l = maps[i];
|
||||
|
||||
- /* Prevent unloading the object. */
|
||||
- GL(dl_profile_map)->l_flags_1 |= DF_1_NODELETE;
|
||||
- }
|
||||
+#ifdef SHARED
|
||||
+ if (__builtin_expect (GLRO(dl_profile) != NULL, 0))
|
||||
+ {
|
||||
+ /* If this here is the shared object which we want to profile
|
||||
+ make sure the profile is started. We can find out whether
|
||||
+ this is necessary or not by observing the `_dl_profile_map'
|
||||
+ variable. If it was NULL but is not NULL afterwars we must
|
||||
+ start the profiling. */
|
||||
+ struct link_map *old_profile_map = GL(dl_profile_map);
|
||||
+
|
||||
+ _dl_relocate_object (l, l->l_scope, reloc_mode | RTLD_LAZY, 1);
|
||||
+
|
||||
+ if (old_profile_map == NULL && GL(dl_profile_map) != NULL)
|
||||
+ {
|
||||
+ /* We must prepare the profiling. */
|
||||
+ _dl_start_profile ();
|
||||
+
|
||||
+ /* Prevent unloading the object. */
|
||||
+ GL(dl_profile_map)->l_flags_1 |= DF_1_NODELETE;
|
||||
}
|
||||
- else
|
||||
-#endif
|
||||
- _dl_relocate_object (l, l->l_scope, reloc_mode, 0);
|
||||
}
|
||||
-
|
||||
- if (l == new)
|
||||
- break;
|
||||
- l = l->l_prev;
|
||||
+ else
|
||||
+#endif
|
||||
+ _dl_relocate_object (l, l->l_scope, reloc_mode, 0);
|
||||
}
|
||||
|
||||
/* If the file is not loaded now as a dependency, add the search
|
||||
diff --git a/elf/tst-relsort1.c b/elf/tst-relsort1.c
|
||||
new file mode 100644
|
||||
index 0000000..972100c
|
||||
--- /dev/null
|
||||
+++ b/elf/tst-relsort1.c
|
||||
@@ -0,0 +1,19 @@
|
||||
+#include <dlfcn.h>
|
||||
+#include <stdio.h>
|
||||
+
|
||||
+
|
||||
+static int
|
||||
+do_test ()
|
||||
+{
|
||||
+ const char lib[] = "$ORIGIN/tst-relsort1mod1.so";
|
||||
+ void *h = dlopen (lib, RTLD_NOW);
|
||||
+ if (h == NULL)
|
||||
+ {
|
||||
+ puts (dlerror ());
|
||||
+ return 1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#define TEST_FUNCTION do_test ()
|
||||
+#include "../test-skeleton.c"
|
||||
diff --git a/elf/tst-relsort1mod1.c b/elf/tst-relsort1mod1.c
|
||||
new file mode 100644
|
||||
index 0000000..9e4a943
|
||||
--- /dev/null
|
||||
+++ b/elf/tst-relsort1mod1.c
|
||||
@@ -0,0 +1,7 @@
|
||||
+extern int foo (double);
|
||||
+
|
||||
+int
|
||||
+bar (void)
|
||||
+{
|
||||
+ return foo (1.2);
|
||||
+}
|
||||
diff --git a/elf/tst-relsort1mod2.c b/elf/tst-relsort1mod2.c
|
||||
new file mode 100644
|
||||
index 0000000..a2c3e55
|
||||
--- /dev/null
|
||||
+++ b/elf/tst-relsort1mod2.c
|
||||
@@ -0,0 +1,7 @@
|
||||
+#include <math.h>
|
||||
+
|
||||
+int
|
||||
+foo (double d)
|
||||
+{
|
||||
+ return floor (d) != 0.0;
|
||||
+}
|
|
@ -1,27 +0,0 @@
|
|||
From 0c95ab64cb4ec0d22bb222647d9d20c7b4903e38 Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Schwab <schwab@redhat.com>
|
||||
Date: Fri, 7 Oct 2011 09:31:27 +0200
|
||||
Subject: [PATCH] Horrible workaround for horribly broken software
|
||||
|
||||
---
|
||||
elf/rtld.c | 4 +++-
|
||||
1 files changed, 3 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/elf/rtld.c b/elf/rtld.c
|
||||
index 978c609..8422b9f 100644
|
||||
--- a/elf/rtld.c
|
||||
+++ b/elf/rtld.c
|
||||
@@ -1393,7 +1393,9 @@ of this helper program; chances are you did not intend to run this program.\n\
|
||||
char *copy = malloc (len);
|
||||
if (copy == NULL)
|
||||
_dl_fatal_printf ("out of memory\n");
|
||||
- l->l_libname->name = l->l_name = memcpy (copy, dsoname, len);
|
||||
+ l->l_libname->name = memcpy (copy, dsoname, len);
|
||||
+ if (GLRO(dl_debug_mask))
|
||||
+ l->l_name = copy;
|
||||
}
|
||||
|
||||
/* Add the vDSO to the object list. */
|
||||
--
|
||||
1.7.3.4
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
diff --git a/sysdeps/i386/i686/multiarch/strcasecmp_l-c.c b/sysdeps/i386/i686/multiarch/strcasecmp_l-c.c
|
||||
index d10e872..d4fcd2b 100644
|
||||
--- a/sysdeps/i386/i686/multiarch/strcasecmp_l-c.c
|
||||
+++ b/sysdeps/i386/i686/multiarch/strcasecmp_l-c.c
|
||||
@@ -6,6 +6,8 @@ extern __typeof (strcasecmp_l) __strcasecmp_l_nonascii;
|
||||
#define USE_IN_EXTENDED_LOCALE_MODEL 1
|
||||
#include <string/strcasecmp.c>
|
||||
|
||||
+strong_alias (__strcasecmp_l_nonascii, __strcasecmp_l_ia32)
|
||||
+
|
||||
/* The needs of strcasecmp in libc are minimal, no need to go through
|
||||
the IFUNC. */
|
||||
strong_alias (__strcasecmp_l_nonascii, __GI___strcasecmp_l)
|
||||
diff --git a/sysdeps/i386/i686/multiarch/strcmp.S b/sysdeps/i386/i686/multiarch/strcmp.S
|
||||
index 5410d17..b3b9eb8 100644
|
||||
--- a/sysdeps/i386/i686/multiarch/strcmp.S
|
||||
+++ b/sysdeps/i386/i686/multiarch/strcmp.S
|
||||
@@ -111,6 +111,7 @@ END(STRCMP)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
-#ifndef USE_AS_STRNCMP
|
||||
+#if !defined USE_AS_STRNCMP && !defined USE_AS_STRCASECMP_L \
|
||||
+ && !defined USE_AS_STRNCASECMP_L
|
||||
# include "../strcmp.S"
|
||||
#endif
|
||||
diff --git a/sysdeps/i386/i686/multiarch/strncase_l-c.c b/sysdeps/i386/i686/multiarch/strncase_l-c.c
|
||||
index 0c68b8d..7e601af 100644
|
||||
--- a/sysdeps/i386/i686/multiarch/strncase_l-c.c
|
||||
+++ b/sysdeps/i386/i686/multiarch/strncase_l-c.c
|
||||
@@ -6,6 +6,8 @@ extern __typeof (strncasecmp_l) __strncasecmp_l_nonascii;
|
||||
#define USE_IN_EXTENDED_LOCALE_MODEL 1
|
||||
#include <string/strncase.c>
|
||||
|
||||
+strong_alias (__strncasecmp_l_nonascii, __strncasecmp_l_ia32)
|
||||
+
|
||||
/* The needs of strcasecmp in libc are minimal, no need to go through
|
||||
the IFUNC. */
|
||||
strong_alias (__strncasecmp_l_nonascii, __GI___strncasecmp_l)
|
|
@ -1,75 +0,0 @@
|
|||
diff --git a/math/libm-test.inc b/math/libm-test.inc
|
||||
index c8186c8..1016753 100644
|
||||
--- a/math/libm-test.inc
|
||||
+++ b/math/libm-test.inc
|
||||
@@ -4632,6 +4632,29 @@ nearbyint_test (void)
|
||||
TEST_f_f (nearbyint, 524286.75, 524287.0);
|
||||
TEST_f_f (nearbyint, 524288.75, 524289.0);
|
||||
|
||||
+ TEST_f_f (nearbyint, 1048576.75, 1048577.0);
|
||||
+ TEST_f_f (nearbyint, 2097152.75, 2097153.0);
|
||||
+ TEST_f_f (nearbyint, 2492472.75, 2492473.0);
|
||||
+ TEST_f_f (nearbyint, 2886220.75, 2886221.0);
|
||||
+ TEST_f_f (nearbyint, 3058792.75, 3058793.0);
|
||||
+ TEST_f_f (nearbyint, -1048576.75, -1048577.0);
|
||||
+ TEST_f_f (nearbyint, -2097152.75, -2097153.0);
|
||||
+ TEST_f_f (nearbyint, -2492472.75, -2492473.0);
|
||||
+ TEST_f_f (nearbyint, -2886220.75, -2886221.0);
|
||||
+ TEST_f_f (nearbyint, -3058792.75, -3058793.0);
|
||||
+#ifndef TEST_FLOAT
|
||||
+ TEST_f_f (nearbyint, 70368744177664.75, 70368744177665.0);
|
||||
+ TEST_f_f (nearbyint, 140737488355328.75, 140737488355329.0);
|
||||
+ TEST_f_f (nearbyint, 281474976710656.75, 281474976710657.0);
|
||||
+ TEST_f_f (nearbyint, 562949953421312.75, 562949953421313.0);
|
||||
+ TEST_f_f (nearbyint, 1125899906842624.75, 1125899906842625.0);
|
||||
+ TEST_f_f (nearbyint, -70368744177664.75, -70368744177665.0);
|
||||
+ TEST_f_f (nearbyint, -140737488355328.75, -140737488355329.0);
|
||||
+ TEST_f_f (nearbyint, -281474976710656.75, -281474976710657.0);
|
||||
+ TEST_f_f (nearbyint, -562949953421312.75, -562949953421313.0);
|
||||
+ TEST_f_f (nearbyint, -1125899906842624.75, -1125899906842625.0);
|
||||
+#endif
|
||||
+
|
||||
END (nearbyint);
|
||||
}
|
||||
|
||||
diff --git a/sysdeps/ieee754/flt-32/s_nearbyintf.c b/sysdeps/ieee754/flt-32/s_nearbyintf.c
|
||||
index 04ef9ab..a6d602b 100644
|
||||
--- a/sysdeps/ieee754/flt-32/s_nearbyintf.c
|
||||
+++ b/sysdeps/ieee754/flt-32/s_nearbyintf.c
|
||||
@@ -30,18 +30,12 @@ __nearbyintf(float x)
|
||||
{
|
||||
fenv_t env;
|
||||
int32_t i0,j0,sx;
|
||||
- u_int32_t i,i1;
|
||||
float w,t;
|
||||
GET_FLOAT_WORD(i0,x);
|
||||
sx = (i0>>31)&1;
|
||||
j0 = ((i0>>23)&0xff)-0x7f;
|
||||
if(j0<23) {
|
||||
if(j0<0) {
|
||||
- if((i0&0x7fffffff)==0) return x;
|
||||
- i1 = (i0&0x07fffff);
|
||||
- i0 &= 0xfff00000;
|
||||
- i0 |= ((i1|-i1)>>9)&0x400000;
|
||||
- SET_FLOAT_WORD(x,i0);
|
||||
libc_feholdexceptf (&env);
|
||||
w = TWO23[sx]+x;
|
||||
t = w-TWO23[sx];
|
||||
@@ -49,17 +43,11 @@ __nearbyintf(float x)
|
||||
GET_FLOAT_WORD(i0,t);
|
||||
SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31));
|
||||
return t;
|
||||
- } else {
|
||||
- i = (0x007fffff)>>j0;
|
||||
- if((i0&i)==0) return x; /* x is integral */
|
||||
- i>>=1;
|
||||
- if((i0&i)!=0) i0 = (i0&(~i))|((0x100000)>>j0);
|
||||
}
|
||||
} else {
|
||||
if(__builtin_expect(j0==0x80, 0)) return x+x; /* inf or NaN */
|
||||
else return x; /* x is integral */
|
||||
}
|
||||
- SET_FLOAT_WORD(x,i0);
|
||||
libc_feholdexceptf (&env);
|
||||
w = TWO23[sx]+x;
|
||||
t = w-TWO23[sx];
|
|
@ -1,138 +0,0 @@
|
|||
diff --git a/nscd/aicache.c b/nscd/aicache.c
|
||||
index aaaf80d..e1f1244 100644
|
||||
--- a/nscd/aicache.c
|
||||
+++ b/nscd/aicache.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Cache handling for host lookup.
|
||||
- Copyright (C) 2004-2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 2004-2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
|
||||
|
||||
@@ -514,8 +514,9 @@ next_nip:
|
||||
if (fd != -1)
|
||||
TEMP_FAILURE_RETRY (send (fd, ¬found, total, MSG_NOSIGNAL));
|
||||
|
||||
- /* If we cannot permanently store the result, so be it. */
|
||||
- if (__builtin_expect (db->negtimeout == 0, 0))
|
||||
+ /* If we have a transient error or cannot permanently store the
|
||||
+ result, so be it. */
|
||||
+ if (rc4 == EAGAIN || __builtin_expect (db->negtimeout == 0, 0))
|
||||
{
|
||||
/* Mark the old entry as obsolete. */
|
||||
if (dh != NULL)
|
||||
diff --git a/nscd/grpcache.c b/nscd/grpcache.c
|
||||
index e9607c6..a698f36 100644
|
||||
--- a/nscd/grpcache.c
|
||||
+++ b/nscd/grpcache.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Cache handling for group lookup.
|
||||
- Copyright (C) 1998-2008, 2009, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 1998-2008, 2009, 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||
|
||||
@@ -120,8 +120,9 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
|
||||
else
|
||||
written = total;
|
||||
|
||||
- /* If we cannot permanently store the result, so be it. */
|
||||
- if (db->negtimeout == 0)
|
||||
+ /* If we have a transient error or cannot permanently store
|
||||
+ the result, so be it. */
|
||||
+ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0))
|
||||
{
|
||||
/* Mark the old entry as obsolete. */
|
||||
if (dh != NULL)
|
||||
diff --git a/nscd/hstcache.c b/nscd/hstcache.c
|
||||
index 4d68ade..c72feaa 100644
|
||||
--- a/nscd/hstcache.c
|
||||
+++ b/nscd/hstcache.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Cache handling for host lookup.
|
||||
- Copyright (C) 1998-2008, 2009, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 1998-2008, 2009, 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||
|
||||
@@ -141,8 +141,9 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req,
|
||||
MSG_NOSIGNAL)) != total)
|
||||
all_written = false;
|
||||
|
||||
- /* If we cannot permanently store the result, so be it. */
|
||||
- if (__builtin_expect (db->negtimeout == 0, 0))
|
||||
+ /* If we have a transient error or cannot permanently store
|
||||
+ the result, so be it. */
|
||||
+ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0))
|
||||
{
|
||||
/* Mark the old entry as obsolete. */
|
||||
if (dh != NULL)
|
||||
diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c
|
||||
index 4ac9942..2019991 100644
|
||||
--- a/nscd/initgrcache.c
|
||||
+++ b/nscd/initgrcache.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Cache handling for host lookup.
|
||||
- Copyright (C) 2004-2006, 2008, 2009, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 2004-2006, 2008, 2009, 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
|
||||
|
||||
@@ -202,8 +202,9 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
|
||||
written = TEMP_FAILURE_RETRY (send (fd, ¬found, total,
|
||||
MSG_NOSIGNAL));
|
||||
|
||||
- /* If we cannot permanently store the result, so be it. */
|
||||
- if (__builtin_expect (db->negtimeout == 0, 0))
|
||||
+ /* If we have a transient error or cannot permanently store
|
||||
+ the result, so be it. */
|
||||
+ if (all_tryagain || __builtin_expect (db->negtimeout == 0, 0))
|
||||
{
|
||||
/* Mark the old entry as obsolete. */
|
||||
if (dh != NULL)
|
||||
diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c
|
||||
index 49e130c..e2ba09d 100644
|
||||
--- a/nscd/pwdcache.c
|
||||
+++ b/nscd/pwdcache.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Cache handling for passwd lookup.
|
||||
- Copyright (C) 1998-2008, 2009, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 1998-2008, 2009, 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||
|
||||
@@ -124,8 +124,9 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
|
||||
written = TEMP_FAILURE_RETRY (send (fd, ¬found, total,
|
||||
MSG_NOSIGNAL));
|
||||
|
||||
- /* If we cannot permanently store the result, so be it. */
|
||||
- if (__builtin_expect (db->negtimeout == 0, 0))
|
||||
+ /* If we have a transient error or cannot permanently store
|
||||
+ the result, so be it. */
|
||||
+ if (errno == EAGAIN || __builtin_expect (db->negtimeout == 0, 0))
|
||||
{
|
||||
/* Mark the old entry as obsolete. */
|
||||
if (dh != NULL)
|
||||
diff --git a/nscd/servicescache.c b/nscd/servicescache.c
|
||||
index d3d5dce..a6337e3 100644
|
||||
--- a/nscd/servicescache.c
|
||||
+++ b/nscd/servicescache.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Cache handling for services lookup.
|
||||
- Copyright (C) 2007, 2008, 2009, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 2007, 2008, 2009, 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@drepper.com>, 2007.
|
||||
|
||||
@@ -108,8 +108,9 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req,
|
||||
written = TEMP_FAILURE_RETRY (send (fd, ¬found, total,
|
||||
MSG_NOSIGNAL));
|
||||
|
||||
- /* If we cannot permanently store the result, so be it. */
|
||||
- if (__builtin_expect (db->negtimeout == 0, 0))
|
||||
+ /* If we have a transient error or cannot permanently store
|
||||
+ the result, so be it. */
|
||||
+ if (errval == EAGAIN || __builtin_expect (db->negtimeout == 0, 0))
|
||||
{
|
||||
/* Mark the old entry as obsolete. */
|
||||
if (dh != NULL)
|
|
@ -1,886 +0,0 @@
|
|||
diff --git a/math/w_acos.c b/math/w_acos.c
|
||||
index 3138408..0490933 100644
|
||||
--- a/math/w_acos.c
|
||||
+++ b/math/w_acos.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
double
|
||||
__acos (double x)
|
||||
{
|
||||
- if (__builtin_expect (fabs (x) > 1.0, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreater (fabs (x), 1.0), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
/* acos(|x|>1) */
|
||||
feraiseexcept (FE_INVALID);
|
||||
diff --git a/math/w_acosf.c b/math/w_acosf.c
|
||||
index 0e41a2c..2500a7d 100644
|
||||
--- a/math/w_acosf.c
|
||||
+++ b/math/w_acosf.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
float
|
||||
__acosf (float x)
|
||||
{
|
||||
- if (__builtin_expect (fabsf (x) > 1.0f, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreater (fabsf (x), 1.0f), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
/* acos(|x|>1) */
|
||||
feraiseexcept (FE_INVALID);
|
||||
diff --git a/math/w_acosh.c b/math/w_acosh.c
|
||||
index 0bd2686..d632987 100644
|
||||
--- a/math/w_acosh.c
|
||||
+++ b/math/w_acosh.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
double
|
||||
__acosh (double x)
|
||||
{
|
||||
- if (__builtin_expect (x < 1.0, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isless (x, 1.0), 0) && _LIB_VERSION != _IEEE_)
|
||||
/* acosh(x<1) */
|
||||
return __kernel_standard (x, x, 29);
|
||||
|
||||
diff --git a/math/w_acoshf.c b/math/w_acoshf.c
|
||||
index c59bf94..f77df2b 100644
|
||||
--- a/math/w_acoshf.c
|
||||
+++ b/math/w_acoshf.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
float
|
||||
__acoshf (float x)
|
||||
{
|
||||
- if (__builtin_expect (x < 1.0f, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isless (x, 1.0f), 0) && _LIB_VERSION != _IEEE_)
|
||||
/* acosh(x<1) */
|
||||
return __kernel_standard_f (x, x, 129);
|
||||
|
||||
diff --git a/math/w_acoshl.c b/math/w_acoshl.c
|
||||
index 819bdfc..cc823b8 100644
|
||||
--- a/math/w_acoshl.c
|
||||
+++ b/math/w_acoshl.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
long double
|
||||
__acoshl (long double x)
|
||||
{
|
||||
- if (__builtin_expect (x < 1.0L, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isless (x, 1.0L), 0) && _LIB_VERSION != _IEEE_)
|
||||
/* acosh(x<1) */
|
||||
return __kernel_standard (x, x, 229);
|
||||
|
||||
diff --git a/math/w_acosl.c b/math/w_acosl.c
|
||||
index 6417068..05023b4 100644
|
||||
--- a/math/w_acosl.c
|
||||
+++ b/math/w_acosl.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
long double
|
||||
__acosl (long double x)
|
||||
{
|
||||
- if (__builtin_expect (fabsl (x) > 1.0L, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreater (fabsl (x), 1.0L), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
/* acos(|x|>1) */
|
||||
feraiseexcept (FE_INVALID);
|
||||
diff --git a/math/w_asin.c b/math/w_asin.c
|
||||
index d4e89ce..0fa9487 100644
|
||||
--- a/math/w_asin.c
|
||||
+++ b/math/w_asin.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
double
|
||||
__asin (double x)
|
||||
{
|
||||
- if (__builtin_expect (fabs (x) > 1.0, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreater (fabs (x), 1.0), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
/* asin(|x|>1) */
|
||||
feraiseexcept (FE_INVALID);
|
||||
diff --git a/math/w_asinf.c b/math/w_asinf.c
|
||||
index 270961f..c28edab 100644
|
||||
--- a/math/w_asinf.c
|
||||
+++ b/math/w_asinf.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
float
|
||||
__asinf (float x)
|
||||
{
|
||||
- if (__builtin_expect (fabsf (x) > 1.0f, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreater (fabsf (x), 1.0f), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
/* asin(|x|>1) */
|
||||
feraiseexcept (FE_INVALID);
|
||||
diff --git a/math/w_asinl.c b/math/w_asinl.c
|
||||
index 32e5273..e4036d8 100644
|
||||
--- a/math/w_asinl.c
|
||||
+++ b/math/w_asinl.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
long double
|
||||
__asinl (long double x)
|
||||
{
|
||||
- if (__builtin_expect (fabsl (x) > 1.0L, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreater (fabsl (x), 1.0L), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
/* asin(|x|>1) */
|
||||
feraiseexcept (FE_INVALID);
|
||||
diff --git a/math/w_atanh.c b/math/w_atanh.c
|
||||
index 1022bd5..190d2e9 100644
|
||||
--- a/math/w_atanh.c
|
||||
+++ b/math/w_atanh.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
double
|
||||
__atanh (double x)
|
||||
{
|
||||
- if (__builtin_expect (fabs (x) >= 1.0, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreaterequal (fabs (x), 1.0), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
return __kernel_standard (x, x,
|
||||
fabs (x) > 1.0
|
||||
? 30 /* atanh(|x|>1) */
|
||||
diff --git a/math/w_atanhf.c b/math/w_atanhf.c
|
||||
index 3c8cf83..e0c5dc3 100644
|
||||
--- a/math/w_atanhf.c
|
||||
+++ b/math/w_atanhf.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
float
|
||||
__atanhf (float x)
|
||||
{
|
||||
- if (__builtin_expect (fabsf (x) >= 1.0f, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreaterequal (fabsf (x), 1.0f), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
return __kernel_standard_f (x, x,
|
||||
fabsf (x) > 1.0f
|
||||
? 130 /* atanh(|x|>1) */
|
||||
diff --git a/math/w_atanhl.c b/math/w_atanhl.c
|
||||
index f582acf..319535d 100644
|
||||
--- a/math/w_atanhl.c
|
||||
+++ b/math/w_atanhl.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
long double
|
||||
__atanhl (long double x)
|
||||
{
|
||||
- if (__builtin_expect (fabsl (x) >= 1.0L, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreaterequal (fabsl (x), 1.0L), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
return __kernel_standard (x, x,
|
||||
fabsl (x) > 1.0L
|
||||
? 230 /* atanh(|x|>1) */
|
||||
diff --git a/math/w_exp2.c b/math/w_exp2.c
|
||||
index bf22326..7a3b0af 100644
|
||||
--- a/math/w_exp2.c
|
||||
+++ b/math/w_exp2.c
|
||||
@@ -12,7 +12,8 @@ static const double u_threshold = (double) (DBL_MIN_EXP - DBL_MANT_DIG - 1);
|
||||
double
|
||||
__exp2 (double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= u_threshold || x > o_threshold, 0)
|
||||
+ if (__builtin_expect (islessequal (x, u_threshold)
|
||||
+ || isgreater (x, o_threshold), 0)
|
||||
&& _LIB_VERSION != _IEEE_ && __finite (x))
|
||||
/* exp2 overflow: 44, exp2 underflow: 45 */
|
||||
return __kernel_standard (x, x, 44 + (x <= o_threshold));
|
||||
diff --git a/math/w_exp2f.c b/math/w_exp2f.c
|
||||
index 7215fca..c4e9e94 100644
|
||||
--- a/math/w_exp2f.c
|
||||
+++ b/math/w_exp2f.c
|
||||
@@ -12,7 +12,8 @@ static const float u_threshold = (float) (FLT_MIN_EXP - FLT_MANT_DIG - 1);
|
||||
float
|
||||
__exp2f (float x)
|
||||
{
|
||||
- if (__builtin_expect (x <= u_threshold || x > o_threshold, 0)
|
||||
+ if (__builtin_expect (islessequal (x, u_threshold)
|
||||
+ || isgreater (x, o_threshold), 0)
|
||||
&& _LIB_VERSION != _IEEE_ && __finitef (x))
|
||||
/* exp2 overflow: 144, exp2 underflow: 145 */
|
||||
return __kernel_standard_f (x, x, 144 + (x <= o_threshold));
|
||||
diff --git a/math/w_exp2l.c b/math/w_exp2l.c
|
||||
index ac8d231..442a637 100644
|
||||
--- a/math/w_exp2l.c
|
||||
+++ b/math/w_exp2l.c
|
||||
@@ -13,7 +13,8 @@ static const long double u_threshold
|
||||
long double
|
||||
__exp2l (long double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= u_threshold || x > o_threshold, 0)
|
||||
+ if (__builtin_expect (islessequal (x, u_threshold)
|
||||
+ || isgreater (x, o_threshold), 0)
|
||||
&& _LIB_VERSION != _IEEE_ && __finitel (x))
|
||||
/* exp2 overflow: 244, exp2 underflow: 245 */
|
||||
return __kernel_standard (x, x, 244 + (x <= o_threshold));
|
||||
diff --git a/math/w_j0.c b/math/w_j0.c
|
||||
index 1dff8b4..f8d3724 100644
|
||||
--- a/math/w_j0.c
|
||||
+++ b/math/w_j0.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
double
|
||||
j0 (double x)
|
||||
{
|
||||
- if (__builtin_expect (fabs (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreater (fabs (x), X_TLOSS), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
/* j0(|x|>X_TLOSS) */
|
||||
return __kernel_standard (x, x, 34);
|
||||
|
||||
@@ -40,7 +41,8 @@ strong_alias (j0, j0l)
|
||||
double
|
||||
y0 (double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0 || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0) || isgreater (x, X_TLOSS), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x < 0.0)
|
||||
{
|
||||
diff --git a/math/w_j0f.c b/math/w_j0f.c
|
||||
index fc52f26..cef36aa 100644
|
||||
--- a/math/w_j0f.c
|
||||
+++ b/math/w_j0f.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
float
|
||||
j0f (float x)
|
||||
{
|
||||
- if (__builtin_expect (fabsf (x) > (float) X_TLOSS, 0)
|
||||
+ if (__builtin_expect (isgreater (fabsf (x), (float) X_TLOSS), 0)
|
||||
&& _LIB_VERSION != _IEEE_)
|
||||
/* j0(|x|>X_TLOSS) */
|
||||
return __kernel_standard_f (x, x, 134);
|
||||
@@ -38,7 +38,8 @@ j0f (float x)
|
||||
float
|
||||
y0f (float x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0f || x > (float) X_TLOSS, 0)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0f)
|
||||
+ || isgreater (x, (float) X_TLOSS), 0)
|
||||
&& _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x < 0.0f)
|
||||
diff --git a/math/w_j0l.c b/math/w_j0l.c
|
||||
index 8d72d50..144f33c 100644
|
||||
--- a/math/w_j0l.c
|
||||
+++ b/math/w_j0l.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
long double
|
||||
__j0l (long double x)
|
||||
{
|
||||
- if (__builtin_expect (fabsl (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreater (fabsl (x), X_TLOSS), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
/* j0(|x|>X_TLOSS) */
|
||||
return __kernel_standard (x, x, 234);
|
||||
|
||||
@@ -38,7 +39,8 @@ weak_alias (__j0l, j0l)
|
||||
long double
|
||||
__y0l (long double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0L || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0L) || isgreater (x, X_TLOSS), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x < 0.0L)
|
||||
{
|
||||
diff --git a/math/w_j1.c b/math/w_j1.c
|
||||
index 358e0e1..e9a5357 100644
|
||||
--- a/math/w_j1.c
|
||||
+++ b/math/w_j1.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
double
|
||||
j1 (double x)
|
||||
{
|
||||
- if (__builtin_expect (fabs (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreater (fabs (x), X_TLOSS), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
/* j1(|x|>X_TLOSS) */
|
||||
return __kernel_standard (x, x, 36);
|
||||
|
||||
@@ -40,7 +41,8 @@ strong_alias (j1, j1l)
|
||||
double
|
||||
y1 (double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0 || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0) || isgreater (x, X_TLOSS), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x < 0.0)
|
||||
{
|
||||
diff --git a/math/w_j1f.c b/math/w_j1f.c
|
||||
index 096fdf5..29bd949 100644
|
||||
--- a/math/w_j1f.c
|
||||
+++ b/math/w_j1f.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
float
|
||||
j1f (float x)
|
||||
{
|
||||
- if (__builtin_expect (fabsf (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreater (fabsf (x), X_TLOSS), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
/* j1(|x|>X_TLOSS) */
|
||||
return __kernel_standard_f (x, x, 136);
|
||||
|
||||
@@ -37,7 +38,8 @@ j1f (float x)
|
||||
float
|
||||
y1f (float x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0f || x > (float) X_TLOSS, 0)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0f)
|
||||
+ || isgreater (x, (float) X_TLOSS), 0)
|
||||
&& _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x < 0.0f)
|
||||
diff --git a/math/w_j1l.c b/math/w_j1l.c
|
||||
index 93e4ee4..01b8551 100644
|
||||
--- a/math/w_j1l.c
|
||||
+++ b/math/w_j1l.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
long double
|
||||
__j1l (long double x)
|
||||
{
|
||||
- if (__builtin_expect (fabsl (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreater (fabsl (x), X_TLOSS), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
/* j1(|x|>X_TLOSS) */
|
||||
return __kernel_standard (x, x, 236);
|
||||
|
||||
@@ -38,7 +39,8 @@ weak_alias (__j1l, j1l)
|
||||
long double
|
||||
__y1l (long double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0L || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0L) || isgreater (x, X_TLOSS), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x < 0.0L)
|
||||
{
|
||||
diff --git a/math/w_jn.c b/math/w_jn.c
|
||||
index f0dd8c6..fd3fb16 100644
|
||||
--- a/math/w_jn.c
|
||||
+++ b/math/w_jn.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
double
|
||||
jn (int n, double x)
|
||||
{
|
||||
- if (__builtin_expect (fabs (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isgreater (fabs (x), X_TLOSS), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
/* jn(n,|x|>X_TLOSS) */
|
||||
return __kernel_standard (n, x, 38);
|
||||
|
||||
@@ -40,7 +41,8 @@ strong_alias (jn, jnl)
|
||||
double
|
||||
yn (int n, double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0 || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0) || isgreater (x, X_TLOSS), 0)
|
||||
+ && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x < 0.0)
|
||||
{
|
||||
diff --git a/math/w_jnf.c b/math/w_jnf.c
|
||||
index ef29eb4..36d6f6d 100644
|
||||
--- a/math/w_jnf.c
|
||||
+++ b/math/w_jnf.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
float
|
||||
jnf (int n, float x)
|
||||
{
|
||||
- if (__builtin_expect (fabsf (x) > (float) X_TLOSS, 0)
|
||||
+ if (__builtin_expect (isgreater (fabsf (x), (float) X_TLOSS), 0)
|
||||
&& _LIB_VERSION != _IEEE_)
|
||||
/* jn(n,|x|>X_TLOSS) */
|
||||
return __kernel_standard_f (n, x, 138);
|
||||
@@ -38,7 +38,8 @@ jnf (int n, float x)
|
||||
float
|
||||
ynf (int n, float x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0f || x > (float) X_TLOSS, 0)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0f)
|
||||
+ || isgreater (x, (float) X_TLOSS), 0)
|
||||
&& _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x < 0.0f)
|
||||
diff --git a/math/w_log.c b/math/w_log.c
|
||||
index efc1c4c..ec33605 100644
|
||||
--- a/math/w_log.c
|
||||
+++ b/math/w_log.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
double
|
||||
__log (double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x == 0.0)
|
||||
{
|
||||
diff --git a/math/w_log10.c b/math/w_log10.c
|
||||
index 2717ade..fe799ad 100644
|
||||
--- a/math/w_log10.c
|
||||
+++ b/math/w_log10.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
double
|
||||
__log10 (double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x == 0.0)
|
||||
{
|
||||
diff --git a/math/w_log10f.c b/math/w_log10f.c
|
||||
index 60737ca..4b821f7 100644
|
||||
--- a/math/w_log10f.c
|
||||
+++ b/math/w_log10f.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
float
|
||||
__log10f (float x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0f, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0f), 0) && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x == 0.0f)
|
||||
{
|
||||
diff --git a/math/w_log10l.c b/math/w_log10l.c
|
||||
index b26f18c..0e5a137 100644
|
||||
--- a/math/w_log10l.c
|
||||
+++ b/math/w_log10l.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
long double
|
||||
__log10l (long double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0L, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0L), 0) && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x == 0.0L)
|
||||
{
|
||||
diff --git a/math/w_log2.c b/math/w_log2.c
|
||||
index 998e5d9..e58e109 100644
|
||||
--- a/math/w_log2.c
|
||||
+++ b/math/w_log2.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
double
|
||||
__log2 (double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x == 0.0)
|
||||
{
|
||||
diff --git a/math/w_log2f.c b/math/w_log2f.c
|
||||
index 6d91bf4..6963ed2 100644
|
||||
--- a/math/w_log2f.c
|
||||
+++ b/math/w_log2f.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
float
|
||||
__log2f (float x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0f, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0f), 0) && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x == 0.0)
|
||||
{
|
||||
diff --git a/math/w_log2l.c b/math/w_log2l.c
|
||||
index e51c1bc..eed04ff6c 100644
|
||||
--- a/math/w_log2l.c
|
||||
+++ b/math/w_log2l.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
long double
|
||||
__log2l (long double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0L, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0L), 0) && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x == 0.0L)
|
||||
{
|
||||
diff --git a/math/w_logf.c b/math/w_logf.c
|
||||
index 8aa27c8..38d408f 100644
|
||||
--- a/math/w_logf.c
|
||||
+++ b/math/w_logf.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
float
|
||||
__logf (float x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0f, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0f), 0) && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x == 0.0f)
|
||||
{
|
||||
diff --git a/math/w_logl.c b/math/w_logl.c
|
||||
index a3139ff..593b37d 100644
|
||||
--- a/math/w_logl.c
|
||||
+++ b/math/w_logl.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
long double
|
||||
__logl (long double x)
|
||||
{
|
||||
- if (__builtin_expect (x <= 0.0L, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (islessequal (x, 0.0L), 0) && _LIB_VERSION != _IEEE_)
|
||||
{
|
||||
if (x == 0.0L)
|
||||
{
|
||||
diff --git a/math/w_sqrt.c b/math/w_sqrt.c
|
||||
index 409a6df..f6ba542 100644
|
||||
--- a/math/w_sqrt.c
|
||||
+++ b/math/w_sqrt.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
double
|
||||
__sqrt (double x)
|
||||
{
|
||||
- if (__builtin_expect (x < 0.0, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isless (x, 0.0), 0) && _LIB_VERSION != _IEEE_)
|
||||
return __kernel_standard (x, x, 26); /* sqrt(negative) */
|
||||
|
||||
return __ieee754_sqrt (x);
|
||||
diff --git a/math/w_sqrtf.c b/math/w_sqrtf.c
|
||||
index 3c3d2f8..c128e9b 100644
|
||||
--- a/math/w_sqrtf.c
|
||||
+++ b/math/w_sqrtf.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
float
|
||||
__sqrtf (float x)
|
||||
{
|
||||
- if (__builtin_expect (x < 0.0f, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isless (x, 0.0f), 0) && _LIB_VERSION != _IEEE_)
|
||||
return __kernel_standard_f (x, x, 126); /* sqrt(negative) */
|
||||
|
||||
return __ieee754_sqrtf (x);
|
||||
diff --git a/math/w_sqrtl.c b/math/w_sqrtl.c
|
||||
index 5e18f44..2a4a048 100644
|
||||
--- a/math/w_sqrtl.c
|
||||
+++ b/math/w_sqrtl.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
long double
|
||||
__sqrtl (long double x)
|
||||
{
|
||||
- if (__builtin_expect (x < 0.0L, 0) && _LIB_VERSION != _IEEE_)
|
||||
+ if (__builtin_expect (isless (x, 0.0L), 0) && _LIB_VERSION != _IEEE_)
|
||||
return __kernel_standard (x, x, 226); /* sqrt(negative) */
|
||||
|
||||
return __ieee754_sqrtl (x);
|
||||
diff --git a/sysdeps/ieee754/dbl-64/e_atanh.c b/sysdeps/ieee754/dbl-64/e_atanh.c
|
||||
index 9fc21ab..5f471b1 100644
|
||||
--- a/sysdeps/ieee754/dbl-64/e_atanh.c
|
||||
+++ b/sysdeps/ieee754/dbl-64/e_atanh.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -46,7 +46,7 @@ __ieee754_atanh (double x)
|
||||
{
|
||||
double xa = fabs (x);
|
||||
double t;
|
||||
- if (xa < 0.5)
|
||||
+ if (isless (xa, 0.5))
|
||||
{
|
||||
if (__builtin_expect (xa < 0x1.0p-28, 0))
|
||||
{
|
||||
@@ -57,11 +57,11 @@ __ieee754_atanh (double x)
|
||||
t = xa + xa;
|
||||
t = 0.5 * __log1p (t + t * xa / (1.0 - xa));
|
||||
}
|
||||
- else if (__builtin_expect (xa < 1.0, 1))
|
||||
+ else if (__builtin_expect (isless (xa, 1.0), 1))
|
||||
t = 0.5 * __log1p ((xa + xa) / (1.0 - xa));
|
||||
else
|
||||
{
|
||||
- if (xa > 1.0)
|
||||
+ if (isgreater (xa, 1.0))
|
||||
return (x - x) / (x - x);
|
||||
|
||||
return x / 0.0;
|
||||
diff --git a/sysdeps/ieee754/dbl-64/w_exp.c b/sysdeps/ieee754/dbl-64/w_exp.c
|
||||
index ee42587..b584ed8 100644
|
||||
--- a/sysdeps/ieee754/dbl-64/w_exp.c
|
||||
+++ b/sysdeps/ieee754/dbl-64/w_exp.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -28,12 +28,12 @@ u_threshold= -7.45133219101941108420e+02; /* 0xc0874910, 0xD52D3051 */
|
||||
double
|
||||
__exp (double x)
|
||||
{
|
||||
- if (__builtin_expect (x > o_threshold, 0))
|
||||
+ if (__builtin_expect (isgreater (x, o_threshold), 0))
|
||||
{
|
||||
if (_LIB_VERSION != _IEEE_)
|
||||
return __kernel_standard_f (x, x, 6);
|
||||
}
|
||||
- else if (__builtin_expect (x < u_threshold, 0))
|
||||
+ else if (__builtin_expect (isless (x, u_threshold), 0))
|
||||
{
|
||||
if (_LIB_VERSION != _IEEE_)
|
||||
return __kernel_standard_f (x, x, 7);
|
||||
diff --git a/sysdeps/ieee754/flt-32/e_atanhf.c b/sysdeps/ieee754/flt-32/e_atanhf.c
|
||||
index 75ed691..7af2f6c 100644
|
||||
--- a/sysdeps/ieee754/flt-32/e_atanhf.c
|
||||
+++ b/sysdeps/ieee754/flt-32/e_atanhf.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -46,7 +46,7 @@ __ieee754_atanhf (float x)
|
||||
{
|
||||
float xa = fabsf (x);
|
||||
float t;
|
||||
- if (xa < 0.5f)
|
||||
+ if (isless (xa, 0.5f))
|
||||
{
|
||||
if (__builtin_expect (xa < 0x1.0p-28f, 0))
|
||||
{
|
||||
@@ -57,11 +57,11 @@ __ieee754_atanhf (float x)
|
||||
t = xa + xa;
|
||||
t = 0.5f * __log1pf (t + t * xa / (1.0f - xa));
|
||||
}
|
||||
- else if (__builtin_expect (xa < 1.0f, 1))
|
||||
+ else if (__builtin_expect (isless (xa, 1.0f), 1))
|
||||
t = 0.5f * __log1pf ((xa + xa) / (1.0f - xa));
|
||||
else
|
||||
{
|
||||
- if (xa > 1.0f)
|
||||
+ if (isgreater (xa, 1.0f))
|
||||
return (x - x) / (x - x);
|
||||
|
||||
return x / 0.0f;
|
||||
diff --git a/sysdeps/ieee754/flt-32/w_expf.c b/sysdeps/ieee754/flt-32/w_expf.c
|
||||
index 5500872..bc3b2f6 100644
|
||||
--- a/sysdeps/ieee754/flt-32/w_expf.c
|
||||
+++ b/sysdeps/ieee754/flt-32/w_expf.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -28,12 +28,12 @@ u_threshold= -1.0397208405e+02; /* 0xc2cff1b5 */
|
||||
float
|
||||
__expf (float x)
|
||||
{
|
||||
- if (__builtin_expect (x > o_threshold, 0))
|
||||
+ if (__builtin_expect (isgreater (x, o_threshold), 0))
|
||||
{
|
||||
if (_LIB_VERSION != _IEEE_)
|
||||
return __kernel_standard_f (x, x, 106);
|
||||
}
|
||||
- else if (__builtin_expect (x < u_threshold, 0))
|
||||
+ else if (__builtin_expect (isless (x, u_threshold), 0))
|
||||
{
|
||||
if (_LIB_VERSION != _IEEE_)
|
||||
return __kernel_standard_f (x, x, 107);
|
||||
diff --git a/sysdeps/ieee754/ldbl-96/w_expl.c b/sysdeps/ieee754/ldbl-96/w_expl.c
|
||||
index ec9d8a7..d61c0a3 100644
|
||||
--- a/sysdeps/ieee754/ldbl-96/w_expl.c
|
||||
+++ b/sysdeps/ieee754/ldbl-96/w_expl.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
|
||||
|
||||
@@ -30,12 +30,12 @@ u_threshold= -1.140019167866942050398521670162263001513e4;
|
||||
long double
|
||||
__expl (long double x)
|
||||
{
|
||||
- if (__builtin_expect (x > o_threshold, 0))
|
||||
+ if (__builtin_expect (isgreater (x, o_threshold), 0))
|
||||
{
|
||||
if (_LIB_VERSION != _IEEE_)
|
||||
return __kernel_standard (x, x, 206);
|
||||
}
|
||||
- else if (__builtin_expect (x < u_threshold, 0))
|
||||
+ else if (__builtin_expect (isless (x, u_threshold), 0))
|
||||
{
|
||||
if (_LIB_VERSION != _IEEE_)
|
||||
return __kernel_standard (x, x, 207);
|
|
@ -1,16 +0,0 @@
|
|||
diff --git a/posix/regex_internal.c b/posix/regex_internal.c
|
||||
index bc19243..124f8cc 100644
|
||||
--- a/posix/regex_internal.c
|
||||
+++ b/posix/regex_internal.c
|
||||
@@ -868,7 +868,7 @@ re_string_peek_byte_case (const re_string_t *pstr, int idx)
|
||||
}
|
||||
|
||||
static unsigned char
|
||||
-internal_function __attribute ((pure))
|
||||
+internal_function
|
||||
re_string_fetch_byte_case (re_string_t *pstr)
|
||||
{
|
||||
if (BE (!pstr->mbs_allocated, 1))
|
||||
--
|
||||
1.7.3.4
|
||||
|
|
@ -118,9 +118,9 @@ diff -rup a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysde
|
|||
#include <tcb-offsets.h>
|
||||
#include <pthread-pi-defines.h>
|
||||
-#include <pthread-errnos.h>
|
||||
#include <stap-probe.h>
|
||||
|
||||
#include <kernel-features.h>
|
||||
|
||||
@@ -137,14 +136,11 @@ __pthread_cond_wait:
|
||||
cmpl $PI_BIT, %eax
|
||||
jne 61f
|
||||
|
@ -161,7 +161,7 @@ diff -rup a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysde
|
|||
-#if cond_lock != 0
|
||||
- addq $cond_lock, %rdi
|
||||
-#endif
|
||||
- cmpq $-1, dep_mutex-cond_lock(%rdi)
|
||||
- LP_OP(cmp) $-1, dep_mutex-cond_lock(%rdi)
|
||||
- movl $LLL_PRIVATE, %eax
|
||||
- movl $LLL_SHARED, %esi
|
||||
- cmovne %eax, %esi
|
||||
|
@ -187,7 +187,7 @@ diff -rup a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysde
|
|||
-#if cond_lock != 0
|
||||
- addq $cond_lock, %rdi
|
||||
-#endif
|
||||
- cmpq $-1, dep_mutex-cond_lock(%rdi)
|
||||
- LP_OP(cmp) $-1, dep_mutex-cond_lock(%rdi)
|
||||
- movl $LLL_PRIVATE, %eax
|
||||
- movl $LLL_SHARED, %esi
|
||||
- cmovne %eax, %esi
|
||||
|
@ -199,7 +199,7 @@ diff -rup a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysde
|
|||
-93:
|
||||
- /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */
|
||||
- xorq %r10, %r10
|
||||
- movq dep_mutex(%rdi), %r8
|
||||
- mov dep_mutex(%rdi), %R8_LP
|
||||
- leaq cond_futex(%rdi), %rdi
|
||||
- jmp 90b
|
||||
-.LcleanupEND2:
|
||||
|
@ -224,6 +224,3 @@ diff -rup a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysde
|
|||
+ .uleb128 0
|
||||
.Lcstend:
|
||||
|
||||
|
||||
Only in b/nptl/sysdeps/unix/sysv/linux/x86_64: pthread_cond_wait.S.orig
|
||||
Only in b/nptl/sysdeps/unix/sysv/linux/x86_64: pthread_cond_wait.S.rej
|
||||
|
|
|
@ -1,680 +0,0 @@
|
|||
diff --git a/include/ifaddrs.h b/include/ifaddrs.h
|
||||
index e1c6cac..50e4c48 100644
|
||||
--- a/include/ifaddrs.h
|
||||
+++ b/include/ifaddrs.h
|
||||
@@ -21,13 +21,8 @@ struct in6addrinfo
|
||||
extern void __check_pf (bool *seen_ipv4, bool *seen_ipv6,
|
||||
struct in6addrinfo **in6ai, size_t *in6ailen)
|
||||
attribute_hidden;
|
||||
-extern void __free_in6ai (struct in6addrinfo *in6ai) attribute_hidden;
|
||||
extern void __check_native (uint32_t a1_index, int *a1_native,
|
||||
uint32_t a2_index, int *a2_native)
|
||||
attribute_hidden;
|
||||
|
||||
-#ifdef IS_IN_nscd
|
||||
-extern uint32_t __bump_nl_timestamp (void) attribute_hidden;
|
||||
-#endif
|
||||
-
|
||||
#endif /* ifaddrs.h */
|
||||
diff --git a/inet/check_pf.c b/inet/check_pf.c
|
||||
index 0fa34cc..b015432 100644
|
||||
--- a/inet/check_pf.c
|
||||
+++ b/inet/check_pf.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Determine protocol families for which interfaces exist. Generic version.
|
||||
- Copyright (C) 2003, 2006, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 2003, 2006 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -54,19 +54,3 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6,
|
||||
|
||||
(void) freeifaddrs (ifa);
|
||||
}
|
||||
-
|
||||
-
|
||||
-void
|
||||
-__free_in6ai (struct in6addrinfo *in6ai)
|
||||
-{
|
||||
- /* Nothing to do. */
|
||||
-}
|
||||
-
|
||||
-
|
||||
-#ifdef IS_IN_nscd
|
||||
-uint32_t
|
||||
-__bump_nl_timestamp (void)
|
||||
-{
|
||||
- return 0;
|
||||
-}
|
||||
-#endif
|
||||
diff --git a/nscd/connections.c b/nscd/connections.c
|
||||
index c741996..2b5c7ef 100644
|
||||
--- a/nscd/connections.c
|
||||
+++ b/nscd/connections.c
|
||||
@@ -24,7 +24,6 @@
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <grp.h>
|
||||
-#include <ifaddrs.h>
|
||||
#include <libintl.h>
|
||||
#include <pthread.h>
|
||||
#include <pwd.h>
|
||||
@@ -33,10 +32,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <arpa/inet.h>
|
||||
-#ifdef HAVE_NETLINK
|
||||
-# include <linux/netlink.h>
|
||||
-# include <linux/rtnetlink.h>
|
||||
-#endif
|
||||
#ifdef HAVE_EPOLL
|
||||
# include <sys/epoll.h>
|
||||
#endif
|
||||
@@ -252,11 +247,6 @@ static int sock;
|
||||
int inotify_fd = -1;
|
||||
#endif
|
||||
|
||||
-#ifdef HAVE_NETLINK
|
||||
-/* Descriptor for netlink status updates. */
|
||||
-static int nl_status_fd = -1;
|
||||
-#endif
|
||||
-
|
||||
#ifndef __ASSUME_SOCK_CLOEXEC
|
||||
/* Negative if SOCK_CLOEXEC is not supported, positive if it is, zero
|
||||
before be know the result. */
|
||||
@@ -913,65 +903,6 @@ cannot set socket to close on exec: %s; disabling paranoia mode"),
|
||||
exit (1);
|
||||
}
|
||||
|
||||
-#ifdef HAVE_NETLINK
|
||||
- if (dbs[hstdb].enabled)
|
||||
- {
|
||||
- /* Try to open netlink socket to monitor network setting changes. */
|
||||
- nl_status_fd = socket (AF_NETLINK,
|
||||
- SOCK_RAW | SOCK_CLOEXEC | SOCK_NONBLOCK,
|
||||
- NETLINK_ROUTE);
|
||||
- if (nl_status_fd != -1)
|
||||
- {
|
||||
- struct sockaddr_nl snl;
|
||||
- memset (&snl, '\0', sizeof (snl));
|
||||
- snl.nl_family = AF_NETLINK;
|
||||
- /* XXX Is this the best set to use? */
|
||||
- snl.nl_groups = (RTMGRP_IPV4_IFADDR | RTMGRP_TC | RTMGRP_IPV4_MROUTE
|
||||
- | RTMGRP_IPV4_ROUTE | RTMGRP_IPV4_RULE
|
||||
- | RTMGRP_IPV6_IFADDR | RTMGRP_IPV6_MROUTE
|
||||
- | RTMGRP_IPV6_ROUTE | RTMGRP_IPV6_IFINFO
|
||||
- | RTMGRP_IPV6_PREFIX);
|
||||
-
|
||||
- if (bind (nl_status_fd, (struct sockaddr *) &snl, sizeof (snl)) != 0)
|
||||
- {
|
||||
- close (nl_status_fd);
|
||||
- nl_status_fd = -1;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- /* Start the timestamp process. */
|
||||
- dbs[hstdb].head->extra_data[NSCD_HST_IDX_CONF_TIMESTAMP]
|
||||
- = __bump_nl_timestamp ();
|
||||
-
|
||||
-# ifndef __ASSUME_SOCK_CLOEXEC
|
||||
- if (have_sock_cloexec < 0)
|
||||
- {
|
||||
- /* We don't want to get stuck on accept. */
|
||||
- int fl = fcntl (nl_status_fd, F_GETFL);
|
||||
- if (fl == -1
|
||||
- || fcntl (nl_status_fd, F_SETFL, fl | O_NONBLOCK) == -1)
|
||||
- {
|
||||
- dbg_log (_("\
|
||||
-cannot change socket to nonblocking mode: %s"),
|
||||
- strerror (errno));
|
||||
- exit (1);
|
||||
- }
|
||||
-
|
||||
- /* The descriptor needs to be closed on exec. */
|
||||
- if (paranoia
|
||||
- && fcntl (nl_status_fd, F_SETFD, FD_CLOEXEC) == -1)
|
||||
- {
|
||||
- dbg_log (_("cannot set socket to close on exec: %s"),
|
||||
- strerror (errno));
|
||||
- exit (1);
|
||||
- }
|
||||
- }
|
||||
-# endif
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-#endif
|
||||
-
|
||||
/* Change to unprivileged uid/gid/groups if specified in config file */
|
||||
if (server_user != NULL)
|
||||
finish_drop_privileges ();
|
||||
@@ -1895,18 +1826,6 @@ main_loop_poll (void)
|
||||
}
|
||||
#endif
|
||||
|
||||
-#ifdef HAVE_NETLINK
|
||||
- size_t idx_nl_status_fd = 0;
|
||||
- if (nl_status_fd != -1)
|
||||
- {
|
||||
- idx_nl_status_fd = nused;
|
||||
- conns[nused].fd = nl_status_fd;
|
||||
- conns[nused].events = POLLRDNORM;
|
||||
- ++nused;
|
||||
- firstfree = nused;
|
||||
- }
|
||||
-#endif
|
||||
-
|
||||
while (1)
|
||||
{
|
||||
/* Wait for any event. We wait at most a couple of seconds so
|
||||
@@ -2049,20 +1968,6 @@ disabled inotify after read error %d"),
|
||||
}
|
||||
#endif
|
||||
|
||||
-#ifdef HAVE_NETLINK
|
||||
- if (idx_nl_status_fd != 0 && conns[idx_nl_status_fd].revents != 0)
|
||||
- {
|
||||
- char buf[4096];
|
||||
- /* Read all the data. We do not interpret it here. */
|
||||
- while (TEMP_FAILURE_RETRY (read (nl_status_fd, buf,
|
||||
- sizeof (buf))) != -1)
|
||||
- ;
|
||||
-
|
||||
- dbs[hstdb].head->extra_data[NSCD_HST_IDX_CONF_TIMESTAMP]
|
||||
- = __bump_nl_timestamp ();
|
||||
- }
|
||||
-#endif
|
||||
-
|
||||
for (size_t cnt = first; cnt < nused && n > 0; ++cnt)
|
||||
if (conns[cnt].revents != 0)
|
||||
{
|
||||
@@ -2141,17 +2046,6 @@ main_loop_epoll (int efd)
|
||||
}
|
||||
# endif
|
||||
|
||||
-# ifdef HAVE_NETLINK
|
||||
- if (nl_status_fd != -1)
|
||||
- {
|
||||
- ev.events = EPOLLRDNORM;
|
||||
- ev.data.fd = nl_status_fd;
|
||||
- if (epoll_ctl (efd, EPOLL_CTL_ADD, nl_status_fd, &ev) == -1)
|
||||
- /* We cannot use epoll. */
|
||||
- return;
|
||||
- }
|
||||
-# endif
|
||||
-
|
||||
while (1)
|
||||
{
|
||||
struct epoll_event revs[100];
|
||||
@@ -2268,18 +2162,6 @@ main_loop_epoll (int efd)
|
||||
}
|
||||
}
|
||||
# endif
|
||||
-# ifdef HAVE_NETLINK
|
||||
- else if (revs[cnt].data.fd == nl_status_fd)
|
||||
- {
|
||||
- char buf[4096];
|
||||
- /* Read all the data. We do not interpret it here. */
|
||||
- while (TEMP_FAILURE_RETRY (read (nl_status_fd, buf,
|
||||
- sizeof (buf))) != -1)
|
||||
- ;
|
||||
-
|
||||
- __bump_nl_timestamp ();
|
||||
- }
|
||||
-# endif
|
||||
else
|
||||
{
|
||||
/* Remove the descriptor from the epoll descriptor. */
|
||||
@@ -2303,7 +2185,6 @@ main_loop_epoll (int efd)
|
||||
time_t laststart = now - ACCEPT_TIMEOUT;
|
||||
assert (starttime[sock] == 0);
|
||||
assert (inotify_fd == -1 || starttime[inotify_fd] == 0);
|
||||
- assert (nl_status_fd == -1 || starttime[nl_status_fd] == 0);
|
||||
for (int cnt = highest; cnt > STDERR_FILENO; --cnt)
|
||||
if (starttime[cnt] != 0 && starttime[cnt] < laststart)
|
||||
{
|
||||
diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h
|
||||
index b5cd2d2..caad26a 100644
|
||||
--- a/nscd/nscd-client.h
|
||||
+++ b/nscd/nscd-client.h
|
||||
@@ -260,17 +260,12 @@ struct hashentry
|
||||
|
||||
|
||||
/* Current persistent database version. */
|
||||
-#define DB_VERSION 2
|
||||
+#define DB_VERSION 1
|
||||
|
||||
/* Maximum time allowed between updates of the timestamp. */
|
||||
#define MAPPING_TIMEOUT (5 * 60)
|
||||
|
||||
|
||||
-/* Used indices for the EXTRA_DATA element of 'database_pers_head'.
|
||||
- Each database has its own indices. */
|
||||
-#define NSCD_HST_IDX_CONF_TIMESTAMP 0
|
||||
-
|
||||
-
|
||||
/* Header of persistent database file. */
|
||||
struct database_pers_head
|
||||
{
|
||||
@@ -279,8 +274,6 @@ struct database_pers_head
|
||||
volatile int32_t gc_cycle;
|
||||
volatile int32_t nscd_certainly_running;
|
||||
volatile nscd_time_t timestamp;
|
||||
- /* Room for extensions. */
|
||||
- volatile uint32_t extra_data[4];
|
||||
|
||||
nscd_ssize_t module;
|
||||
nscd_ssize_t data_size;
|
||||
@@ -329,12 +322,6 @@ extern int __nscd_open_socket (const char *key, size_t keylen,
|
||||
request_type type, void *response,
|
||||
size_t responselen) attribute_hidden;
|
||||
|
||||
-/* Try to get a file descriptor for the shared meory segment
|
||||
- containing the database. */
|
||||
-extern struct mapped_database *__nscd_get_mapping (request_type type,
|
||||
- const char *key,
|
||||
- struct mapped_database **mappedp) attribute_hidden;
|
||||
-
|
||||
/* Get reference of mapping. */
|
||||
extern struct mapped_database *__nscd_get_map_ref (request_type type,
|
||||
const char *name,
|
||||
@@ -384,7 +371,4 @@ extern ssize_t writeall (int fd, const void *buf, size_t len)
|
||||
extern ssize_t sendfileall (int tofd, int fromfd, off_t off, size_t len)
|
||||
attribute_hidden;
|
||||
|
||||
-/* Get netlink timestamp counter from mapped area or zero. */
|
||||
-extern uint32_t __nscd_get_nl_timestamp (void);
|
||||
-
|
||||
#endif /* nscd.h */
|
||||
diff --git a/nscd/nscd_gethst_r.c b/nscd/nscd_gethst_r.c
|
||||
index 6ee142d..70631fa 100644
|
||||
--- a/nscd/nscd_gethst_r.c
|
||||
+++ b/nscd/nscd_gethst_r.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 1998-2005, 2006, 2007, 2008, 2009, 2011
|
||||
+/* Copyright (C) 1998-2005, 2006, 2007, 2008, 2009
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
|
||||
@@ -98,27 +98,6 @@ libc_freeres_fn (hst_map_free)
|
||||
}
|
||||
|
||||
|
||||
-uint32_t
|
||||
-__nscd_get_nl_timestamp (void)
|
||||
-{
|
||||
- if (__nss_not_use_nscd_hosts != 0)
|
||||
- return 0;
|
||||
-
|
||||
- struct mapped_database *map = __hst_map_handle.mapped;
|
||||
-
|
||||
- if (map == NULL
|
||||
- || (map != NO_MAPPING
|
||||
- && map->head->nscd_certainly_running == 0
|
||||
- && map->head->timestamp + MAPPING_TIMEOUT < time (NULL)))
|
||||
- map = __nscd_get_mapping (GETFDHST, "hosts", &__hst_map_handle.mapped);
|
||||
-
|
||||
- if (map == NO_MAPPING)
|
||||
- return 0;
|
||||
-
|
||||
- return map->head->extra_data[NSCD_HST_IDX_CONF_TIMESTAMP];
|
||||
-}
|
||||
-
|
||||
-
|
||||
int __nss_have_localdomain attribute_hidden;
|
||||
|
||||
static int
|
||||
diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c
|
||||
index 365b599..fe63f9a 100644
|
||||
--- a/nscd/nscd_helper.c
|
||||
+++ b/nscd/nscd_helper.c
|
||||
@@ -277,9 +277,9 @@ __nscd_unmap (struct mapped_database *mapped)
|
||||
|
||||
/* Try to get a file descriptor for the shared meory segment
|
||||
containing the database. */
|
||||
-struct mapped_database *
|
||||
-__nscd_get_mapping (request_type type, const char *key,
|
||||
- struct mapped_database **mappedp)
|
||||
+static struct mapped_database *
|
||||
+get_mapping (request_type type, const char *key,
|
||||
+ struct mapped_database **mappedp)
|
||||
{
|
||||
struct mapped_database *result = NO_MAPPING;
|
||||
#ifdef SCM_RIGHTS
|
||||
@@ -449,8 +449,8 @@ __nscd_get_map_ref (request_type type, const char *name,
|
||||
|| (cur->head->nscd_certainly_running == 0
|
||||
&& cur->head->timestamp + MAPPING_TIMEOUT < time (NULL))
|
||||
|| cur->head->data_size > cur->datasize)
|
||||
- cur = __nscd_get_mapping (type, name,
|
||||
- (struct mapped_database **) &mapptr->mapped);
|
||||
+ cur = get_mapping (type, name,
|
||||
+ (struct mapped_database **) &mapptr->mapped);
|
||||
|
||||
if (__builtin_expect (cur != NO_MAPPING, 1))
|
||||
{
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index 1a023f9..4979805 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -2386,7 +2386,7 @@ getaddrinfo (const char *name, const char *service,
|
||||
|| (hints->ai_family == PF_INET6 && ! seen_ipv6))
|
||||
{
|
||||
/* We cannot possibly return a valid answer. */
|
||||
- __free_in6ai (in6ai);
|
||||
+ free (in6ai);
|
||||
return EAI_NONAME;
|
||||
}
|
||||
}
|
||||
@@ -2400,7 +2400,7 @@ getaddrinfo (const char *name, const char *service,
|
||||
{
|
||||
if (hints->ai_flags & AI_NUMERICSERV)
|
||||
{
|
||||
- __free_in6ai (in6ai);
|
||||
+ free (in6ai);
|
||||
return EAI_NONAME;
|
||||
}
|
||||
|
||||
@@ -2422,7 +2422,7 @@ getaddrinfo (const char *name, const char *service,
|
||||
if (last_i != 0)
|
||||
{
|
||||
freeaddrinfo (p);
|
||||
- __free_in6ai (in6ai);
|
||||
+ free (in6ai);
|
||||
|
||||
return -(last_i & GAIH_EAI);
|
||||
}
|
||||
@@ -2434,7 +2434,7 @@ getaddrinfo (const char *name, const char *service,
|
||||
}
|
||||
else
|
||||
{
|
||||
- __free_in6ai (in6ai);
|
||||
+ free (in6ai);
|
||||
return EAI_FAMILY;
|
||||
}
|
||||
|
||||
@@ -2622,7 +2622,7 @@ getaddrinfo (const char *name, const char *service,
|
||||
p->ai_canonname = canonname;
|
||||
}
|
||||
|
||||
- __free_in6ai (in6ai);
|
||||
+ free (in6ai);
|
||||
|
||||
if (p)
|
||||
{
|
||||
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
|
||||
index e684b16..c907af4 100644
|
||||
--- a/sysdeps/unix/sysv/linux/Makefile
|
||||
+++ b/sysdeps/unix/sysv/linux/Makefile
|
||||
@@ -173,6 +173,6 @@ CFLAGS-mq_receive.c += -fexceptions
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),nscd)
|
||||
-sysdep-CFLAGS += -DHAVE_EPOLL -DHAVE_SENDFILE -DHAVE_INOTIFY -DHAVE_NETLINK
|
||||
+sysdep-CFLAGS += -DHAVE_EPOLL -DHAVE_SENDFILE -DHAVE_INOTIFY
|
||||
CFLAGS-gai.c += -DNEED_NETLINK
|
||||
endif
|
||||
diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c
|
||||
index 0738a70..d5ad7ea 100644
|
||||
--- a/sysdeps/unix/sysv/linux/check_pf.c
|
||||
+++ b/sysdeps/unix/sysv/linux/check_pf.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Determine protocol families for which interfaces exist. Linux version.
|
||||
- Copyright (C) 2003, 2006-2008, 2010, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 2003, 2006, 2007, 2008, 2010, 2011 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -33,9 +33,6 @@
|
||||
|
||||
#include <not-cancel.h>
|
||||
#include <kernel-features.h>
|
||||
-#include <bits/libc-lock.h>
|
||||
-#include <atomic.h>
|
||||
-#include <nscd/nscd-client.h>
|
||||
|
||||
|
||||
#ifndef IFA_F_HOMEADDRESS
|
||||
@@ -46,42 +43,9 @@
|
||||
#endif
|
||||
|
||||
|
||||
-struct cached_data
|
||||
-{
|
||||
- uint32_t timestamp;
|
||||
- uint32_t usecnt;
|
||||
- bool seen_ipv4;
|
||||
- bool seen_ipv6;
|
||||
- size_t in6ailen;
|
||||
- struct in6addrinfo in6ai[0];
|
||||
-};
|
||||
-
|
||||
-static struct cached_data noai6ai_cached =
|
||||
- {
|
||||
- .usecnt = 1, /* Make sure we never try to delete this entry. */
|
||||
- .in6ailen = 0
|
||||
- };
|
||||
-
|
||||
-static struct cached_data *cache;
|
||||
-__libc_lock_define_initialized (static, lock);
|
||||
-
|
||||
-
|
||||
-#ifdef IS_IN_nscd
|
||||
-static uint32_t nl_timestamp;
|
||||
-
|
||||
-uint32_t
|
||||
-__bump_nl_timestamp (void)
|
||||
-{
|
||||
- if (atomic_increment_val (&nl_timestamp) == 0)
|
||||
- atomic_increment (&nl_timestamp);
|
||||
-
|
||||
- return nl_timestamp;
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
-
|
||||
-static struct cached_data *
|
||||
-make_request (int fd, pid_t pid)
|
||||
+static int
|
||||
+make_request (int fd, pid_t pid, bool *seen_ipv4, bool *seen_ipv6,
|
||||
+ struct in6addrinfo **in6ai, size_t *in6ailen)
|
||||
{
|
||||
struct req
|
||||
{
|
||||
@@ -135,6 +99,9 @@ make_request (int fd, pid_t pid)
|
||||
sizeof (nladdr))) < 0)
|
||||
goto out_fail;
|
||||
|
||||
+ *seen_ipv4 = false;
|
||||
+ *seen_ipv6 = false;
|
||||
+
|
||||
bool done = false;
|
||||
struct in6ailist
|
||||
{
|
||||
@@ -142,8 +109,6 @@ make_request (int fd, pid_t pid)
|
||||
struct in6ailist *next;
|
||||
} *in6ailist = NULL;
|
||||
size_t in6ailistlen = 0;
|
||||
- bool seen_ipv4 = false;
|
||||
- bool seen_ipv6 = false;
|
||||
|
||||
do
|
||||
{
|
||||
@@ -207,12 +172,12 @@ make_request (int fd, pid_t pid)
|
||||
{
|
||||
if (*(const in_addr_t *) address
|
||||
!= htonl (INADDR_LOOPBACK))
|
||||
- seen_ipv4 = true;
|
||||
+ *seen_ipv4 = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!IN6_IS_ADDR_LOOPBACK (address))
|
||||
- seen_ipv6 = true;
|
||||
+ *seen_ipv6 = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -246,47 +211,30 @@ make_request (int fd, pid_t pid)
|
||||
}
|
||||
while (! done);
|
||||
|
||||
- struct cached_data *result;
|
||||
- if (seen_ipv6 && in6ailist != NULL)
|
||||
+ if (*seen_ipv6 && in6ailist != NULL)
|
||||
{
|
||||
- result = malloc (sizeof (*result)
|
||||
- + in6ailistlen * sizeof (struct in6addrinfo));
|
||||
- if (result == NULL)
|
||||
+ *in6ai = malloc (in6ailistlen * sizeof (**in6ai));
|
||||
+ if (*in6ai == NULL)
|
||||
goto out_fail;
|
||||
|
||||
-#ifdef IS_IN_nscd
|
||||
- result->timestamp = nl_timestamp;
|
||||
-#else
|
||||
- result->timestamp = __nscd_get_nl_timestamp ();
|
||||
-#endif
|
||||
- result->usecnt = 2;
|
||||
- result->seen_ipv4 = seen_ipv4;
|
||||
- result->seen_ipv6 = true;
|
||||
- result->in6ailen = in6ailistlen;
|
||||
+ *in6ailen = in6ailistlen;
|
||||
|
||||
do
|
||||
{
|
||||
- result->in6ai[--in6ailistlen] = in6ailist->info;
|
||||
+ (*in6ai)[--in6ailistlen] = in6ailist->info;
|
||||
in6ailist = in6ailist->next;
|
||||
}
|
||||
while (in6ailist != NULL);
|
||||
}
|
||||
- else
|
||||
- {
|
||||
- atomic_add (&noai6ai_cached.usecnt, 2);
|
||||
- noai6ai_cached.seen_ipv4 = seen_ipv4;
|
||||
- noai6ai_cached.seen_ipv6 = seen_ipv6;
|
||||
- result = &noai6ai_cached;
|
||||
- }
|
||||
|
||||
if (use_malloc)
|
||||
free (buf);
|
||||
- return result;
|
||||
+ return 0;
|
||||
|
||||
out_fail:
|
||||
if (use_malloc)
|
||||
free (buf);
|
||||
- return NULL;
|
||||
+ return -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -310,65 +258,28 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6,
|
||||
|
||||
if (! __no_netlink_support)
|
||||
{
|
||||
- struct cached_data *olddata = NULL;
|
||||
- struct cached_data *data = NULL;
|
||||
+ int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
|
||||
|
||||
- __libc_lock_lock (lock);
|
||||
-
|
||||
-#ifdef IS_IN_nscd
|
||||
-# define cache_valid() nl_timestamp != 0 && cache->timestamp == nl_timestamp
|
||||
-#else
|
||||
-# define cache_valid() \
|
||||
- ({ uint32_t val = __nscd_get_nl_timestamp (); \
|
||||
- val != 0 && cache->timestamp == val; })
|
||||
-#endif
|
||||
- if (cache != NULL && cache_valid ())
|
||||
- {
|
||||
- data = cache;
|
||||
- atomic_increment (&cache->usecnt);
|
||||
- }
|
||||
- else
|
||||
+ if (__builtin_expect (fd >= 0, 1))
|
||||
{
|
||||
- int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
|
||||
+ struct sockaddr_nl nladdr;
|
||||
+ memset (&nladdr, '\0', sizeof (nladdr));
|
||||
+ nladdr.nl_family = AF_NETLINK;
|
||||
|
||||
- if (__builtin_expect (fd >= 0, 1))
|
||||
- {
|
||||
- struct sockaddr_nl nladdr;
|
||||
- memset (&nladdr, '\0', sizeof (nladdr));
|
||||
- nladdr.nl_family = AF_NETLINK;
|
||||
-
|
||||
- socklen_t addr_len = sizeof (nladdr);
|
||||
-
|
||||
- if(__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
|
||||
- && __getsockname (fd, (struct sockaddr *) &nladdr,
|
||||
- &addr_len) == 0)
|
||||
- data = make_request (fd, nladdr.nl_pid);
|
||||
-
|
||||
- close_not_cancel_no_status (fd);
|
||||
- }
|
||||
-
|
||||
- if (data != NULL)
|
||||
- {
|
||||
- olddata = cache;
|
||||
- cache = data;
|
||||
- }
|
||||
- }
|
||||
+ socklen_t addr_len = sizeof (nladdr);
|
||||
|
||||
- __libc_lock_unlock (lock);
|
||||
+ bool success
|
||||
+ = (__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
|
||||
+ && __getsockname (fd, (struct sockaddr *) &nladdr,
|
||||
+ &addr_len) == 0
|
||||
+ && make_request (fd, nladdr.nl_pid, seen_ipv4, seen_ipv6,
|
||||
+ in6ai, in6ailen) == 0);
|
||||
|
||||
- if (data != NULL)
|
||||
- {
|
||||
- /* It worked. */
|
||||
- *seen_ipv4 = data->seen_ipv4;
|
||||
- *seen_ipv6 = data->seen_ipv6;
|
||||
- *in6ailen = data->in6ailen;
|
||||
- *in6ai = data->in6ai;
|
||||
-
|
||||
- if (olddata != NULL && olddata->usecnt > 0
|
||||
- && atomic_add_zero (&olddata->usecnt, -1))
|
||||
- free (olddata);
|
||||
+ close_not_cancel_no_status (fd);
|
||||
|
||||
- return;
|
||||
+ if (success)
|
||||
+ /* It worked. */
|
||||
+ return;
|
||||
}
|
||||
|
||||
#if __ASSUME_NETLINK_SUPPORT == 0
|
||||
@@ -407,26 +318,3 @@ __check_pf (bool *seen_ipv4, bool *seen_ipv6,
|
||||
(void) freeifaddrs (ifa);
|
||||
#endif
|
||||
}
|
||||
-
|
||||
-
|
||||
-void
|
||||
-__free_in6ai (struct in6addrinfo *ai)
|
||||
-{
|
||||
- if (ai != NULL)
|
||||
- {
|
||||
- struct cached_data *data =
|
||||
- (struct cached_data *) ((char *) ai
|
||||
- - offsetof (struct cached_data, in6ai));
|
||||
-
|
||||
- if (atomic_add_zero (&data->usecnt, -1))
|
||||
- {
|
||||
- __libc_lock_lock (lock);
|
||||
-
|
||||
- if (data->usecnt == 0)
|
||||
- /* Still unused. */
|
||||
- free (data);
|
||||
-
|
||||
- __libc_lock_unlock (lock);
|
||||
- }
|
||||
- }
|
||||
-}
|
|
@ -1,158 +0,0 @@
|
|||
diff --git a/math/libm-test.inc b/math/libm-test.inc
|
||||
index 6243e1e..c8186c8 100644
|
||||
--- a/math/libm-test.inc
|
||||
+++ b/math/libm-test.inc
|
||||
@@ -5037,6 +5037,22 @@ rint_test (void)
|
||||
TEST_f_f (rint, 262142.75, 262143.0);
|
||||
TEST_f_f (rint, 524286.75, 524287.0);
|
||||
TEST_f_f (rint, 524288.75, 524289.0);
|
||||
+ TEST_f_f (rint, 1048576.75, 1048577.0);
|
||||
+ TEST_f_f (rint, 2097152.75, 2097153.0);
|
||||
+ TEST_f_f (rint, -1048576.75, -1048577.0);
|
||||
+ TEST_f_f (rint, -2097152.75, -2097153.0);
|
||||
+#ifndef TEST_FLOAT
|
||||
+ TEST_f_f (rint, 70368744177664.75, 70368744177665.0);
|
||||
+ TEST_f_f (rint, 140737488355328.75, 140737488355329.0);
|
||||
+ TEST_f_f (rint, 281474976710656.75, 281474976710657.0);
|
||||
+ TEST_f_f (rint, 562949953421312.75, 562949953421313.0);
|
||||
+ TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0);
|
||||
+ TEST_f_f (rint, -70368744177664.75, -70368744177665.0);
|
||||
+ TEST_f_f (rint, -140737488355328.75, -140737488355329.0);
|
||||
+ TEST_f_f (rint, -281474976710656.75, -281474976710657.0);
|
||||
+ TEST_f_f (rint, -562949953421312.75, -562949953421313.0);
|
||||
+ TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0);
|
||||
+#endif
|
||||
#ifdef TEST_LDOUBLE
|
||||
/* The result can only be represented in long double. */
|
||||
TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L);
|
||||
@@ -5137,6 +5153,22 @@ rint_test_tonearest (void)
|
||||
TEST_f_f (rint, -0.1, -0.0);
|
||||
TEST_f_f (rint, -0.25, -0.0);
|
||||
TEST_f_f (rint, -0.625, -1.0);
|
||||
+ TEST_f_f (rint, 1048576.75, 1048577.0);
|
||||
+ TEST_f_f (rint, 2097152.75, 2097153.0);
|
||||
+ TEST_f_f (rint, -1048576.75, -1048577.0);
|
||||
+ TEST_f_f (rint, -2097152.75, -2097153.0);
|
||||
+#ifndef TEST_FLOAT
|
||||
+ TEST_f_f (rint, 70368744177664.75, 70368744177665.0);
|
||||
+ TEST_f_f (rint, 140737488355328.75, 140737488355329.0);
|
||||
+ TEST_f_f (rint, 281474976710656.75, 281474976710657.0);
|
||||
+ TEST_f_f (rint, 562949953421312.75, 562949953421313.0);
|
||||
+ TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0);
|
||||
+ TEST_f_f (rint, -70368744177664.75, -70368744177665.0);
|
||||
+ TEST_f_f (rint, -140737488355328.75, -140737488355329.0);
|
||||
+ TEST_f_f (rint, -281474976710656.75, -281474976710657.0);
|
||||
+ TEST_f_f (rint, -562949953421312.75, -562949953421313.0);
|
||||
+ TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0);
|
||||
+#endif
|
||||
#ifdef TEST_LDOUBLE
|
||||
/* The result can only be represented in long double. */
|
||||
TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L);
|
||||
@@ -5207,6 +5239,22 @@ rint_test_towardzero (void)
|
||||
TEST_f_f (rint, -0.1, -0.0);
|
||||
TEST_f_f (rint, -0.25, -0.0);
|
||||
TEST_f_f (rint, -0.625, -0.0);
|
||||
+ TEST_f_f (rint, 1048576.75, 1048576.0);
|
||||
+ TEST_f_f (rint, 2097152.75, 2097152.0);
|
||||
+ TEST_f_f (rint, -1048576.75, -1048576.0);
|
||||
+ TEST_f_f (rint, -2097152.75, -2097152.0);
|
||||
+#ifndef TEST_FLOAT
|
||||
+ TEST_f_f (rint, 70368744177664.75, 70368744177664.0);
|
||||
+ TEST_f_f (rint, 140737488355328.75, 140737488355328.0);
|
||||
+ TEST_f_f (rint, 281474976710656.75, 281474976710656.0);
|
||||
+ TEST_f_f (rint, 562949953421312.75, 562949953421312.0);
|
||||
+ TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0);
|
||||
+ TEST_f_f (rint, -70368744177664.75, -70368744177664.0);
|
||||
+ TEST_f_f (rint, -140737488355328.75, -140737488355328.0);
|
||||
+ TEST_f_f (rint, -281474976710656.75, -281474976710656.0);
|
||||
+ TEST_f_f (rint, -562949953421312.75, -562949953421312.0);
|
||||
+ TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0);
|
||||
+#endif
|
||||
#ifdef TEST_LDOUBLE
|
||||
/* The result can only be represented in long double. */
|
||||
TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L);
|
||||
@@ -5277,6 +5325,22 @@ rint_test_downward (void)
|
||||
TEST_f_f (rint, -0.1, -1.0);
|
||||
TEST_f_f (rint, -0.25, -1.0);
|
||||
TEST_f_f (rint, -0.625, -1.0);
|
||||
+ TEST_f_f (rint, 1048576.75, 1048576.0);
|
||||
+ TEST_f_f (rint, 2097152.75, 2097152.0);
|
||||
+ TEST_f_f (rint, -1048576.75, -1048577.0);
|
||||
+ TEST_f_f (rint, -2097152.75, -2097153.0);
|
||||
+#ifndef TEST_FLOAT
|
||||
+ TEST_f_f (rint, 70368744177664.75, 70368744177664.0);
|
||||
+ TEST_f_f (rint, 140737488355328.75, 140737488355328.0);
|
||||
+ TEST_f_f (rint, 281474976710656.75, 281474976710656.0);
|
||||
+ TEST_f_f (rint, 562949953421312.75, 562949953421312.0);
|
||||
+ TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0);
|
||||
+ TEST_f_f (rint, -70368744177664.75, -70368744177665.0);
|
||||
+ TEST_f_f (rint, -140737488355328.75, -140737488355329.0);
|
||||
+ TEST_f_f (rint, -281474976710656.75, -281474976710657.0);
|
||||
+ TEST_f_f (rint, -562949953421312.75, -562949953421313.0);
|
||||
+ TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0);
|
||||
+#endif
|
||||
#ifdef TEST_LDOUBLE
|
||||
/* The result can only be represented in long double. */
|
||||
TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L);
|
||||
@@ -5347,6 +5411,22 @@ rint_test_upward (void)
|
||||
TEST_f_f (rint, -0.1, -0.0);
|
||||
TEST_f_f (rint, -0.25, -0.0);
|
||||
TEST_f_f (rint, -0.625, -0.0);
|
||||
+ TEST_f_f (rint, 1048576.75, 1048577.0);
|
||||
+ TEST_f_f (rint, 2097152.75, 2097153.0);
|
||||
+ TEST_f_f (rint, -1048576.75, -1048576.0);
|
||||
+ TEST_f_f (rint, -2097152.75, -2097152.0);
|
||||
+#ifndef TEST_FLOAT
|
||||
+ TEST_f_f (rint, 70368744177664.75, 70368744177665.0);
|
||||
+ TEST_f_f (rint, 140737488355328.75, 140737488355329.0);
|
||||
+ TEST_f_f (rint, 281474976710656.75, 281474976710657.0);
|
||||
+ TEST_f_f (rint, 562949953421312.75, 562949953421313.0);
|
||||
+ TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0);
|
||||
+ TEST_f_f (rint, -70368744177664.75, -70368744177664.0);
|
||||
+ TEST_f_f (rint, -140737488355328.75, -140737488355328.0);
|
||||
+ TEST_f_f (rint, -281474976710656.75, -281474976710656.0);
|
||||
+ TEST_f_f (rint, -562949953421312.75, -562949953421312.0);
|
||||
+ TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0);
|
||||
+#endif
|
||||
#ifdef TEST_LDOUBLE
|
||||
/* The result can only be represented in long double. */
|
||||
TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L);
|
||||
diff --git a/sysdeps/ieee754/flt-32/s_rintf.c b/sysdeps/ieee754/flt-32/s_rintf.c
|
||||
index 9ea9b6f..9ba6b57 100644
|
||||
--- a/sysdeps/ieee754/flt-32/s_rintf.c
|
||||
+++ b/sysdeps/ieee754/flt-32/s_rintf.c
|
||||
@@ -26,34 +26,22 @@ float
|
||||
__rintf(float x)
|
||||
{
|
||||
int32_t i0,j0,sx;
|
||||
- u_int32_t i,i1;
|
||||
float w,t;
|
||||
GET_FLOAT_WORD(i0,x);
|
||||
sx = (i0>>31)&1;
|
||||
j0 = ((i0>>23)&0xff)-0x7f;
|
||||
if(j0<23) {
|
||||
if(j0<0) {
|
||||
- if((i0&0x7fffffff)==0) return x;
|
||||
- i1 = (i0&0x07fffff);
|
||||
- i0 &= 0xfff00000;
|
||||
- i0 |= ((i1|-i1)>>9)&0x400000;
|
||||
- SET_FLOAT_WORD(x,i0);
|
||||
w = TWO23[sx]+x;
|
||||
t = w-TWO23[sx];
|
||||
GET_FLOAT_WORD(i0,t);
|
||||
SET_FLOAT_WORD(t,(i0&0x7fffffff)|(sx<<31));
|
||||
return t;
|
||||
- } else {
|
||||
- i = (0x007fffff)>>j0;
|
||||
- if((i0&i)==0) return x; /* x is integral */
|
||||
- i>>=1;
|
||||
- if((i0&i)!=0) i0 = (i0&(~i))|((0x100000)>>j0);
|
||||
}
|
||||
} else {
|
||||
if(j0==0x80) return x+x; /* inf or NaN */
|
||||
else return x; /* x is integral */
|
||||
}
|
||||
- SET_FLOAT_WORD(x,i0);
|
||||
w = TWO23[sx]+x;
|
||||
return w-TWO23[sx];
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
|
||||
index 0e71deb..e18a6c3 100644
|
||||
--- a/stdio-common/vfscanf.c
|
||||
+++ b/stdio-common/vfscanf.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-/* Copyright (C) 1991-2006, 2007, 2010, 2011 Free Software Foundation, Inc.
|
||||
+/* Copyright (C) 1991-2007, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -274,7 +274,7 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
|
||||
CHAR_T *old = wp; \
|
||||
size_t newsize = (UCHAR_MAX + 1 > 2 * wpmax \
|
||||
? UCHAR_MAX + 1 : 2 * wpmax); \
|
||||
- if (use_malloc || __libc_use_alloca (newsize)) \
|
||||
+ if (use_malloc || !__libc_use_alloca (newsize)) \
|
||||
{ \
|
||||
wp = realloc (use_malloc ? wp : NULL, newsize); \
|
||||
if (wp == NULL) \
|
|
@ -1,48 +0,0 @@
|
|||
diff --git a/sysdeps/x86_64/multiarch/strcmp.S b/sysdeps/x86_64/multiarch/strcmp.S
|
||||
index f93c83d..d8aa889 100644
|
||||
--- a/sysdeps/x86_64/multiarch/strcmp.S
|
||||
+++ b/sysdeps/x86_64/multiarch/strcmp.S
|
||||
@@ -105,11 +105,6 @@ ENTRY(__strcasecmp)
|
||||
jne 1f
|
||||
call __init_cpu_features
|
||||
1:
|
||||
-# ifdef HAVE_AVX_SUPPORT
|
||||
- leaq __strcasecmp_avx(%rip), %rax
|
||||
- testl $bit_AVX, __cpu_features+CPUID_OFFSET+index_AVX(%rip)
|
||||
- jnz 2f
|
||||
-# endif
|
||||
leaq __strcasecmp_sse42(%rip), %rax
|
||||
testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
|
||||
jnz 2f
|
||||
@@ -128,11 +123,6 @@ ENTRY(__strncasecmp)
|
||||
jne 1f
|
||||
call __init_cpu_features
|
||||
1:
|
||||
-# ifdef HAVE_AVX_SUPPORT
|
||||
- leaq __strncasecmp_avx(%rip), %rax
|
||||
- testl $bit_AVX, __cpu_features+CPUID_OFFSET+index_AVX(%rip)
|
||||
- jnz 2f
|
||||
-# endif
|
||||
leaq __strncasecmp_sse42(%rip), %rax
|
||||
testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
|
||||
jnz 2f
|
||||
@@ -152,19 +142,6 @@ weak_alias (__strncasecmp, strncasecmp)
|
||||
# include "strcmp-sse42.S"
|
||||
|
||||
|
||||
-# ifdef HAVE_AVX_SUPPORT
|
||||
-# if defined USE_AS_STRCASECMP_L || defined USE_AS_STRNCASECMP_L
|
||||
-# define LABEL(l) .L##l##_avx
|
||||
-# define GLABEL(l) l##_avx
|
||||
-# define USE_AVX 1
|
||||
-# undef STRCMP_SSE42
|
||||
-# define STRCMP_SSE42 STRCMP_AVX
|
||||
-# define SECTION avx
|
||||
-# include "strcmp-sse42.S"
|
||||
-# endif
|
||||
-# endif
|
||||
-
|
||||
-
|
||||
# undef ENTRY
|
||||
# define ENTRY(name) \
|
||||
.type STRCMP_SSE2, @function; \
|
|
@ -1,109 +0,0 @@
|
|||
From d4c2917fc5091dae7ab1b30c165becb70d3c3453 Mon Sep 17 00:00:00 2001
|
||||
From: Allan McRae <allan@archlinux.org>
|
||||
Date: Mon, 16 Apr 2012 14:06:47 +1000
|
||||
Subject: [PATCH] Fix test-suite failues with -Wl,--as-needed
|
||||
|
||||
Signed-off-by: Allan McRae <allan@archlinux.org>
|
||||
---
|
||||
ChangeLog | 24 ++++++++++++++++++++++++
|
||||
elf/Makefile | 21 ++++++++++++++++++++-
|
||||
nptl/ChangeLog | 5 +++++
|
||||
nptl/Makefile | 3 ++-
|
||||
stdlib/Makefile | 1 +
|
||||
5 files changed, 52 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/elf/Makefile b/elf/Makefile
|
||||
index 57dcab0..47729c3 100644
|
||||
--- a/elf/Makefile
|
||||
+++ b/elf/Makefile
|
||||
@@ -500,6 +500,18 @@ $(objpfx)tst-initordera3.so: $(objpfx)tst-initorderb2.so $(objpfx)tst-initorderb
|
||||
$(objpfx)tst-initordera4.so: $(objpfx)tst-initordera3.so
|
||||
$(objpfx)tst-initorder: $(objpfx)tst-initordera4.so $(objpfx)tst-initordera1.so $(objpfx)tst-initorderb2.so
|
||||
|
||||
+LDFLAGS-nodel2mod3.so = $(no-as-needed)
|
||||
+LDFLAGS-reldepmod5.so = $(no-as-needed)
|
||||
+LDFLAGS-reldep6mod1.so = $(no-as-needed)
|
||||
+LDFLAGS-reldep6mod4.so = $(no-as-needed)
|
||||
+LDFLAGS-reldep8mod3.so = $(no-as-needed)
|
||||
+LDFLAGS-unload4mod1.so = $(no-as-needed)
|
||||
+LDFLAGS-unload4mod2.so = $(no-as-needed)
|
||||
+LDFLAGS-tst-initorder = $(no-as-needed)
|
||||
+LDFLAGS-tst-initordera2.so = $(no-as-needed)
|
||||
+LDFLAGS-tst-initordera3.so = $(no-as-needed)
|
||||
+LDFLAGS-tst-initordera4.so = $(no-as-needed)
|
||||
+LDFLAGS-tst-initorderb2.so = $(no-as-needed)
|
||||
LDFLAGS-tst-tlsmod5.so = -nostdlib
|
||||
LDFLAGS-tst-tlsmod6.so = -nostdlib
|
||||
|
||||
@@ -633,7 +645,7 @@ $(objpfx)vismain.out: $(addprefix $(objpfx),vismod3.so)
|
||||
vismain-ENV = LD_PRELOAD=$(addprefix $(objpfx),vismod3.so)
|
||||
|
||||
$(objpfx)noload: $(objpfx)testobj1.so $(common-objpfx)dlfcn/libdl.so
|
||||
-LDFLAGS-noload = -rdynamic
|
||||
+LDFLAGS-noload = -rdynamic $(no-as-needed)
|
||||
$(objpfx)noload.out: $(objpfx)testobj5.so
|
||||
|
||||
$(objpfx)noload-mem: $(objpfx)noload.out
|
||||
@@ -678,6 +690,7 @@ $(objpfx)reldep4: $(libdl)
|
||||
$(objpfx)reldep4.out: $(objpfx)reldep4mod1.so $(objpfx)reldep4mod2.so
|
||||
|
||||
$(objpfx)next: $(objpfx)nextmod1.so $(objpfx)nextmod2.so $(libdl)
|
||||
+LDFLAGS-next = $(no-as-needed)
|
||||
|
||||
$(objpfx)unload2: $(libdl)
|
||||
$(objpfx)unload2.out: $(objpfx)unload2mod.so $(objpfx)unload2dep.so
|
||||
@@ -1025,6 +1038,8 @@ $(objpfx)order2mod1.so: $(objpfx)order2mod4.so
|
||||
$(objpfx)order2mod4.so: $(objpfx)order2mod3.so
|
||||
$(objpfx)order2mod2.so: $(objpfx)order2mod3.so
|
||||
order2mod2.so-no-z-defs = yes
|
||||
+LDFLAGS-order2mod1.so = $(no-as-needed)
|
||||
+LDFLAGS-order2mod2.so = $(no-as-needed)
|
||||
|
||||
tst-stackguard1-ARGS = --command "$(built-program-cmd) --child"
|
||||
tst-stackguard1-static-ARGS = --command "$(objpfx)tst-stackguard1-static --child"
|
||||
@@ -1113,6 +1128,10 @@ $(objpfx)tst-initorder2: $(objpfx)tst-initorder2a.so $(objpfx)tst-initorder2d.so
|
||||
$(objpfx)tst-initorder2a.so: $(objpfx)tst-initorder2b.so
|
||||
$(objpfx)tst-initorder2b.so: $(objpfx)tst-initorder2c.so
|
||||
$(objpfx)tst-initorder2c.so: $(objpfx)tst-initorder2d.so
|
||||
+LDFLAGS-tst-initorder2 = $(no-as-needed)
|
||||
+LDFLAGS-tst-initorder2a.so = $(no-as-needed)
|
||||
+LDFLAGS-tst-initorder2b.so = $(no-as-needed)
|
||||
+LDFLAGS-tst-initorder2c.so = $(no-as-needed)
|
||||
define o-iterator-doit
|
||||
$(objpfx)tst-initorder2$o.os: tst-initorder2.c; \
|
||||
$$(compile-command.c) -DNAME=\"$o\"
|
||||
diff --git a/nptl/Makefile b/nptl/Makefile
|
||||
index 09acd8a..07a1022 100644
|
||||
--- a/nptl/Makefile
|
||||
+++ b/nptl/Makefile
|
||||
@@ -458,6 +458,7 @@ $(objpfx)tst-tls4: $(libdl) $(shared-thread-library)
|
||||
$(objpfx)tst-tls4.out: $(objpfx)tst-tls4moda.so $(objpfx)tst-tls4modb.so
|
||||
|
||||
$(objpfx)tst-tls5: $(objpfx)tst-tls5mod.so $(shared-thread-library)
|
||||
+LDFLAGS-tst-tls5 = $(no-as-needed)
|
||||
LDFLAGS-tst-tls5mod.so = -Wl,-soname,tst-tls5mod.so
|
||||
|
||||
ifeq ($(build-shared),yes)
|
||||
@@ -503,7 +504,7 @@ $(objpfx)tst-clock2: $(common-objpfx)rt/librt.a
|
||||
$(objpfx)tst-rwlock14: $(common-objpfx)rt/librt.a
|
||||
endif
|
||||
|
||||
-LDFLAGS-tst-cancel24 = -lstdc++
|
||||
+LDFLAGS-tst-cancel24 = $(no-as-needed) -lstdc++
|
||||
|
||||
extra-B-pthread.so = -B$(common-objpfx)nptl/
|
||||
$(objpfx)libpthread.so: $(addprefix $(objpfx),$(crti-objs) $(crtn-objs))
|
||||
diff --git a/stdlib/Makefile b/stdlib/Makefile
|
||||
index 44eb20d..f7811c5 100644
|
||||
--- a/stdlib/Makefile
|
||||
+++ b/stdlib/Makefile
|
||||
@@ -138,6 +138,7 @@ $(objpfx)tst-fmtmsg.out: tst-fmtmsg.sh $(objpfx)tst-fmtmsg
|
||||
$(SHELL) -e $< $(common-objpfx) '$(run-program-prefix)' $(common-objpfx)stdlib/
|
||||
|
||||
$(objpfx)tst-putenv: $(objpfx)tst-putenvmod.so
|
||||
+LDFLAGS-tst-putenv = $(no-as-needed)
|
||||
|
||||
$(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os
|
||||
$(build-module)
|
||||
--
|
||||
1.7.3.4
|
|
@ -1,40 +0,0 @@
|
|||
diff --git a/elf/Makefile b/elf/Makefile
|
||||
index 8234ba7..25ffc57 100644
|
||||
--- a/elf/Makefile
|
||||
+++ b/elf/Makefile
|
||||
@@ -1203,3 +1203,14 @@ $(objpfx)tst-relsort1mod1.so: $(libm) $(objpfx)tst-relsort1mod2.so
|
||||
$(objpfx)tst-relsort1mod2.so: $(libm)
|
||||
$(objpfx)tst-relsort1.out: $(objpfx)tst-relsort1mod1.so \
|
||||
$(objpfx)tst-relsort1mod2.so
|
||||
+
|
||||
+tests: $(objpfx)tst-unused-dep.out
|
||||
+
|
||||
+$(objpfx)tst-unused-dep.out: $(objpfx)testobj1.so
|
||||
+ LD_TRACE_LOADED_OBJECTS=1 \
|
||||
+ LD_DEBUG=unused \
|
||||
+ LD_PRELOAD= \
|
||||
+ $(elf-objpfx)${rtld-installed-name} \
|
||||
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
|
||||
+ $< > $@
|
||||
+ cmp $@ /dev/null > /dev/null
|
||||
diff --git a/elf/rtld.c b/elf/rtld.c
|
||||
index 2e4f97f..3e15447 100644
|
||||
--- a/elf/rtld.c
|
||||
+++ b/elf/rtld.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Run time dynamic linker.
|
||||
- Copyright (C) 1995-2010, 2011 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 1995-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -1375,6 +1375,9 @@ of this helper program; chances are you did not intend to run this program.\n\
|
||||
_dl_setup_hash (l);
|
||||
l->l_relocated = 1;
|
||||
|
||||
+ /* The vDSO is always used. */
|
||||
+ l->l_used = 1;
|
||||
+
|
||||
/* Initialize l_local_scope to contain just this map. This allows
|
||||
the use of dl_lookup_symbol_x to resolve symbols within the vdso.
|
||||
So we create a single entry list pointing to l_real as its only
|
|
@ -1,180 +0,0 @@
|
|||
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
|
||||
index a847b28..080badc 100644
|
||||
--- a/stdio-common/Makefile
|
||||
+++ b/stdio-common/Makefile
|
||||
@@ -59,7 +59,8 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
|
||||
tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \
|
||||
tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \
|
||||
bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \
|
||||
- scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24
|
||||
+ scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 \
|
||||
+ bug-vfprintf-nargs
|
||||
|
||||
test-srcs = tst-unbputc tst-printf
|
||||
|
||||
diff --git a/stdio-common/bug-vfprintf-nargs.c b/stdio-common/bug-vfprintf-nargs.c
|
||||
new file mode 100644
|
||||
index 0000000..13c66c0
|
||||
--- /dev/null
|
||||
+++ b/stdio-common/bug-vfprintf-nargs.c
|
||||
@@ -0,0 +1,78 @@
|
||||
+/* Test for vfprintf nargs allocation overflow (BZ #13656).
|
||||
+ Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+ Contributed by Kees Cook <keescook@chromium.org>, 2012.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, write to the Free
|
||||
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
+ 02111-1307 USA. */
|
||||
+
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <stdint.h>
|
||||
+#include <unistd.h>
|
||||
+#include <inttypes.h>
|
||||
+#include <string.h>
|
||||
+#include <signal.h>
|
||||
+
|
||||
+static int
|
||||
+format_failed (const char *fmt, const char *expected)
|
||||
+{
|
||||
+ char output[80];
|
||||
+
|
||||
+ printf ("%s : ", fmt);
|
||||
+
|
||||
+ memset (output, 0, sizeof output);
|
||||
+ /* Having sprintf itself detect a failure is good. */
|
||||
+ if (sprintf (output, fmt, 1, 2, 3, "test") > 0
|
||||
+ && strcmp (output, expected) != 0)
|
||||
+ {
|
||||
+ printf ("FAIL (output '%s' != expected '%s')\n", output, expected);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ puts ("ok");
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+do_test (void)
|
||||
+{
|
||||
+ int rc = 0;
|
||||
+ char buf[64];
|
||||
+
|
||||
+ /* Regular positionals work. */
|
||||
+ if (format_failed ("%1$d", "1") != 0)
|
||||
+ rc = 1;
|
||||
+
|
||||
+ /* Regular width positionals work. */
|
||||
+ if (format_failed ("%1$*2$d", " 1") != 0)
|
||||
+ rc = 1;
|
||||
+
|
||||
+ /* Positional arguments are constructed via read_int, so nargs can only
|
||||
+ overflow on 32-bit systems. On 64-bit systems, it will attempt to
|
||||
+ allocate a giant amount of memory and possibly crash, which is the
|
||||
+ expected situation. Since the 64-bit behavior is arch-specific, only
|
||||
+ test this on 32-bit systems. */
|
||||
+ if (sizeof (long int) == 4)
|
||||
+ {
|
||||
+ sprintf (buf, "%%1$d %%%" PRIdPTR "$d", UINT32_MAX / sizeof (int));
|
||||
+ if (format_failed (buf, "1 %$d") != 0)
|
||||
+ rc = 1;
|
||||
+ }
|
||||
+
|
||||
+ return rc;
|
||||
+}
|
||||
+
|
||||
+#define TEST_FUNCTION do_test ()
|
||||
+#include "../test-skeleton.c"
|
||||
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
|
||||
index 863cd5d..c802e46 100644
|
||||
--- a/stdio-common/vfprintf.c
|
||||
+++ b/stdio-common/vfprintf.c
|
||||
@@ -235,6 +235,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
|
||||
0 if unknown. */
|
||||
int readonly_format = 0;
|
||||
|
||||
+ /* For the argument descriptions, which may be allocated on the heap. */
|
||||
+ void *args_malloced = NULL;
|
||||
+
|
||||
/* This table maps a character into a number representing a
|
||||
class. In each step there is a destination label for each
|
||||
class. */
|
||||
@@ -1647,9 +1650,10 @@ do_positional:
|
||||
determine the size of the array needed to store the argument
|
||||
attributes. */
|
||||
size_t nargs = 0;
|
||||
- int *args_type;
|
||||
- union printf_arg *args_value = NULL;
|
||||
+ size_t bytes_per_arg;
|
||||
+ union printf_arg *args_value;
|
||||
int *args_size;
|
||||
+ int *args_type;
|
||||
|
||||
/* Positional parameters refer to arguments directly. This could
|
||||
also determine the maximum number of arguments. Track the
|
||||
@@ -1698,13 +1702,38 @@ do_positional:
|
||||
|
||||
/* Determine the number of arguments the format string consumes. */
|
||||
nargs = MAX (nargs, max_ref_arg);
|
||||
+ /* Calculate total size needed to represent a single argument across
|
||||
+ all three argument-related arrays. */
|
||||
+ bytes_per_arg = sizeof (*args_value) + sizeof (*args_size)
|
||||
+ + sizeof (*args_type);
|
||||
+
|
||||
+ /* Check for potential integer overflow. */
|
||||
+ if (__builtin_expect (nargs > SIZE_MAX / bytes_per_arg, 0))
|
||||
+ {
|
||||
+ __set_errno (ERANGE);
|
||||
+ done = -1;
|
||||
+ goto all_done;
|
||||
+ }
|
||||
|
||||
- /* Allocate memory for the argument descriptions. */
|
||||
- args_type = alloca (nargs * sizeof (int));
|
||||
+ /* Allocate memory for all three argument arrays. */
|
||||
+ if (__libc_use_alloca (nargs * bytes_per_arg))
|
||||
+ args_value = alloca (nargs * bytes_per_arg);
|
||||
+ else
|
||||
+ {
|
||||
+ args_value = args_malloced = malloc (nargs * bytes_per_arg);
|
||||
+ if (args_value == NULL)
|
||||
+ {
|
||||
+ done = -1;
|
||||
+ goto all_done;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* Set up the remaining two arrays to each point past the end of the
|
||||
+ prior array, since space for all three has been allocated now. */
|
||||
+ args_size = &args_value[nargs].pa_int;
|
||||
+ args_type = &args_size[nargs];
|
||||
memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0',
|
||||
- nargs * sizeof (int));
|
||||
- args_value = alloca (nargs * sizeof (union printf_arg));
|
||||
- args_size = alloca (nargs * sizeof (int));
|
||||
+ nargs * sizeof (*args_type));
|
||||
|
||||
/* XXX Could do sanity check here: If any element in ARGS_TYPE is
|
||||
still zero after this loop, format is invalid. For now we
|
||||
@@ -1973,8 +2002,8 @@ do_positional:
|
||||
}
|
||||
|
||||
all_done:
|
||||
- if (__builtin_expect (workstart != NULL, 0))
|
||||
- free (workstart);
|
||||
+ free (args_malloced);
|
||||
+ free (workstart);
|
||||
/* Unlock the stream. */
|
||||
_IO_funlockfile (s);
|
||||
_IO_cleanup_region_end (0);
|
|
@ -1,13 +0,0 @@
|
|||
diff -Naur glibc-old//sysdeps/i386/Makefile glibc//sysdeps/i386/Makefile
|
||||
--- glibc-old//sysdeps/i386/Makefile 2010-03-18 11:52:30.000000000 +1000
|
||||
+++ glibc//sysdeps/i386/Makefile 2010-04-16 15:05:50.000000000 +1000
|
||||
@@ -1,6 +1,7 @@
|
||||
# The mpn functions need a #define for asm syntax flavor.
|
||||
-# Every i386 port in use uses gas syntax (I think).
|
||||
-asm-CPPFLAGS += -DGAS_SYNTAX
|
||||
+# Every i386 port in use uses gas syntax (I think). Don't replace
|
||||
+# __i686 in __i686.get_pc_thunk.bx.
|
||||
+asm-CPPFLAGS += -DGAS_SYNTAX -U __i686
|
||||
|
||||
# The i386 `long double' is a distinct type we support.
|
||||
long-double-fcts = yes
|
18
core/glibc/local-soname-hack.diff
Normal file
18
core/glibc/local-soname-hack.diff
Normal file
|
@ -0,0 +1,18 @@
|
|||
diff -urN a/elf/dl-load.c b/elf/dl-load.c
|
||||
--- a/elf/dl-load.c 2012-06-30 13:12:34.000000000 -0600
|
||||
+++ b/elf/dl-load.c 2012-07-06 15:45:51.728813355 -0600
|
||||
@@ -2081,10 +2081,13 @@
|
||||
soname = ((const char *) D_PTR (l, l_info[DT_STRTAB])
|
||||
+ l->l_info[DT_SONAME]->d_un.d_val);
|
||||
if (strcmp (name, soname) != 0)
|
||||
+#ifdef __arm__
|
||||
+ if (strcmp(name, "ld-linux.so.3") || strcmp(soname, "ld-linux-armhf.so.3"))
|
||||
+#endif
|
||||
continue;
|
||||
|
||||
/* We have a match on a new name -- cache it. */
|
||||
- add_name_to_object (l, soname);
|
||||
+ add_name_to_object (l, name);
|
||||
l->l_soname_added = 1;
|
||||
}
|
||||
|
0
core/glibc/nscd.rcd
Normal file → Executable file
0
core/glibc/nscd.rcd
Normal file → Executable file
Loading…
Reference in a new issue