From 26e2a25d44cef5774787f8e46c72648c761c931b Mon Sep 17 00:00:00 2001 From: Manuel Date: Sat, 8 Oct 2011 18:35:19 +0000 Subject: [PATCH] New tc --- binutils-multilib/PKGBUILD | 55 +++-- gcc-multilib/PKGBUILD | 153 ++++++++----- gcc-multilib/gcc-ada.install | 4 +- gcc-multilib/gcc-fortran.install | 4 +- gcc-multilib/gcc-go.install | 20 ++ gcc-multilib/gcc-hash-style-both.patch | 211 +++++++----------- gcc-multilib/gcc-libs.install | 14 +- gcc-multilib/gcc.install | 4 +- lib32-glibc/PKGBUILD | 79 +++++-- ...ibc-2.12.1-static-shared-getpagesize.patch | 2 +- ...-ignore-origin-of-privileged-program.patch | 26 +++ .../glibc-2.13-dlclose-search-reset.patch | 196 ++++++++++++++++ lib32-glibc/glibc-2.13-futex.patch | 31 +++ ...-avoid-assertion-on-empty-dns-answer.patch | 26 +++ lib32-glibc/glibc-2.14-libdl-crash.patch | 132 +++++++++++ .../glibc-2.14-reexport-rpc-interface.patch | 26 +++ ...glibc-2.14-reinstall-nis-rpc-headers.patch | 28 +++ lib32-glibc/lib32-glibc.install | 11 - libtool-multilib/PKGBUILD | 2 +- 19 files changed, 775 insertions(+), 249 deletions(-) create mode 100644 gcc-multilib/gcc-go.install create mode 100644 lib32-glibc/glibc-2.12.2-ignore-origin-of-privileged-program.patch create mode 100644 lib32-glibc/glibc-2.13-dlclose-search-reset.patch create mode 100644 lib32-glibc/glibc-2.13-futex.patch create mode 100644 lib32-glibc/glibc-2.14-avoid-assertion-on-empty-dns-answer.patch create mode 100644 lib32-glibc/glibc-2.14-libdl-crash.patch create mode 100644 lib32-glibc/glibc-2.14-reexport-rpc-interface.patch create mode 100644 lib32-glibc/glibc-2.14-reinstall-nis-rpc-headers.patch delete mode 100644 lib32-glibc/lib32-glibc.install diff --git a/binutils-multilib/PKGBUILD b/binutils-multilib/PKGBUILD index 9c9621b..229f3bf 100644 --- a/binutils-multilib/PKGBUILD +++ b/binutils-multilib/PKGBUILD @@ -5,49 +5,55 @@ # toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc -pkgname=binutils-multilib _pkgname=binutils -pkgver=2.20.1 -pkgrel=2 -_date=20100908 +pkgname=binutils-multilib +pkgver=2.21.1 +pkgrel=1 +_date=20110627 pkgdesc="A set of programs to assemble and manipulate binary and object files for multilib" arch=('x86_64') url="http://www.gnu.org/software/binutils/" license=('GPL') +groups=('multilib-devel') provides=("binutils=$pkgver-$pkgrel") conflicts=('binutils') -depends=('glibc>=2.12-1' 'zlib') -makedepends=('gcc-multilib') # Make sure we compile this with gcc-multilib +depends=('glibc>=2.14' 'zlib') +makedepends=('dejagnu' 'gcc-multilib') # Make sure we compile this with gcc-multilib options=('!libtool' '!distcc' '!ccache') install=binutils.install source=(http://chakra-project.org/sources/${_pkgname}/${_pkgname}-${pkgver}_${_date}.tar.bz2) -md5sums=('c653cd51d2c23129cb010ac8c9ce0582') +md5sums=('2face559e80d649ba148e42bb2d1fb0f') build() { cd ${srcdir} - mkdir build && cd build + mkdir binutils-build && cd binutils-build - CC="gcc -L`pwd`/bfd/.libs/" - if [ "${CARCH}" = "x86_64" ]; then - ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-64-bit-bfd - else - ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared - fi - # fix man files install path - sed -i -e "s:mandir \= \/usr\/share:mandir \= ${pkgdir}\/usr\/share:" ${srcdir}/build/Makefile || return 1 - # fix info files install path - sed -i -e "s:infodir \= \/usr\/share:infodir \= ${pkgdir}\/usr\/share:" ${srcdir}/build/Makefile || return 1 + ${srcdir}/binutils/configure --prefix=/usr \ + --enable-ld=default --enable-gold \ + --enable-plugins --enable-threads \ + --enable-shared \ + --enable-64-bit-bfd --enable-multilib - # This checks the host environment and makes sure all the necessary tools are available to compile Binutils. - make configure-host || return 1 + # check the host environment and makes sure all the necessary tools are available + make configure-host - make tooldir=${pkgdir}/usr || return 1 + make tooldir=${pkgdir}/usr +} + +check() { + cd ${srcdir}/binutils-build + + # do not abort on errors - manually check log files + make -k -j1 check || true } package() { - cd ${srcdir}/build + cd ${srcdir}/binutils-build make prefix=${pkgdir}/usr tooldir=${pkgdir}/usr install - install -m644 ${srcdir}/include/libiberty.h ${pkgdir}/usr/include + + # Add some useful headers + install -m644 ${srcdir}/binutils/include/libiberty.h ${pkgdir}/usr/include + install -m644 ${srcdir}/binutils/include/demangle.h ${pkgdir}/usr/include # Rebuild libiberty.a with -fPIC make -C libiberty clean @@ -60,9 +66,10 @@ package() { make CFLAGS="$CFLAGS -fPIC -fvisibility=hidden" -C bfd install -m644 bfd/libbfd.a ${pkgdir}/usr/lib + # Remove Windows/Novell specific man pages rm -f ${pkgdir}/usr/share/man/man1/{dlltool,nlmconv,windres,windmc}* - # Remove these symlinks, with binutils prereleases they are not ABI stable. + # Remove these symlinks, they are not ABI stable. # Programs should compile static to the .a file. rm -f ${pkgdir}/usr/lib/lib{bfd,opcodes}.so echo "INPUT ( /usr/lib/libbfd.a -liberty -lz )" >${pkgdir}/usr/lib/libbfd.so diff --git a/gcc-multilib/PKGBUILD b/gcc-multilib/PKGBUILD index 8148621..900cf87 100644 --- a/gcc-multilib/PKGBUILD +++ b/gcc-multilib/PKGBUILD @@ -7,33 +7,28 @@ # NOTE: libtool requires rebuilt with each new gcc version pkgbase='gcc-multilib' -pkgname=('gcc-multilib' 'gcc-libs-multilib' 'lib32-gcc-libs' 'gcc-fortran-multilib' 'gcc-objc-multilib' 'gcc-ada-multilib') -pkgver=4.5.2 +pkgname=('gcc-multilib' 'gcc-libs-multilib' 'lib32-gcc-libs' 'gcc-fortran-multilib' 'gcc-objc-multilib' 'gcc-ada-multilib' 'gcc-go-multilib') +pkgver=4.6.1 pkgrel=1 -#_snapshot=4.5-20100610 -_libstdcppmanver=4.5.2 # Note: check source directory name when updating this +_snapshot=4.6-20110819 +_libstdcppmanver=20110814 # Note: check source directory name when updating this pkgdesc="The GNU Compiler Collection for multilib" arch=('x86_64') -license=('GPL' 'LGPL' 'custom') +license=('GPL' 'LGPL' 'FDL' 'custom') url="http://gcc.gnu.org" -makedepends=('binutils-multilib>=2.20.1' 'libmpc>=0.8.2-1' 'cloog-ppl>=0.15.9-2' 'elfutils' 'gcc-ada-multilib' - 'glibc>=2.11.1-2' 'lib32-glibc>=2.12.1') +makedepends=('binutils-multilib>=2.21.1' 'libmpc' 'cloog' 'ppl' 'gcc-ada-multilib' + 'lib32-glibc>=2.14') +checkdepends=('dejagnu') options=('!libtool' '!emptydirs') -source=(http://gcc.fyxm.net/releases/gcc-${pkgver}/gcc-{core,g++,fortran,objc,ada,testsuite}-${pkgver}.tar.bz2 - #ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-{core,g++,fortran,objc,ada,testsuite}-${_snapshot}.tar.bz2 - ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/libstdc++-api-${_libstdcppmanver}.man.tar.bz2 +source=(#ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2 + ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2 + ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/libstdc++-api.${_libstdcppmanver}.man.tar.bz2 gcc_pure64.patch gcc-hash-style-both.patch) -md5sums=('aa9e36bec080452372bfba793428ee82' - '9821f1c61e43755866861485ff364e90' - '8cc545fda70085c78076d79e0e23962a' - '3561c6585e9062105cc3591a8c39d7dc' - 'ee24023972f337fbc22202d6d219a727' - '29ae615438aba0bd3384b94bac54c235' - '2776eab5ebb7f9cc62dd2199a3a24382' +md5sums=('b14d22730f9085eab7fd927039e68d28' + 'ce920d2550ff7e042b9f091d27764d8f' '22cec272f9cc2801d3cd348feaca888b' - '6fd395bacbd7b6e47c7b74854b478363') - + '4df25b623799b148a0703eaeec8fdf3f') if [ -n "${_snapshot}" ]; then _basedir="${srcdir}/gcc-${_snapshot}" @@ -44,9 +39,6 @@ fi build() { cd ${_basedir} - # "Add" ppl-0.11 compatibility - sed -i "/ppl_minor_version=/s#10#11#" configure - # Do not install libiberty sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in @@ -60,18 +52,26 @@ build() { cd ${srcdir} mkdir gcc-build && cd gcc-build + ${_basedir}/configure --prefix=/usr \ - --enable-languages=c,c++,fortran,objc,obj-c++,ada \ - --enable-shared --enable-threads=posix --enable-__cxa_atexit \ - --enable-clocale=gnu --enable-gnu-unique-object \ - --enable-lto --enable-plugin \ - --enable-gold --with-plugin-ld=ld.gold \ - --enable-multilib --disable-libstdcxx-pch \ - --with-system-zlib --with-ppl \ - --with-cloog --with-cloog-include=/usr/include/cloog-ppl \ --libdir=/usr/lib --libexecdir=/usr/lib \ - --mandir=/usr/share/man --infodir=/usr/share/info + --mandir=/usr/share/man --infodir=/usr/share/info \ + --with-bugurl=https://bugs.archlinux.org/ \ + --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ \ + --enable-shared --enable-threads=posix \ + --with-system-zlib --enable-__cxa_atexit \ + --disable-libunwind-exceptions --enable-clocale=gnu \ + --enable-gnu-unique-object --enable-linker-build-id \ + --with-ppl --enable-cloog-backend=isl \ + --enable-lto --enable-gold --enable-ld=default \ + --enable-plugin --with-plugin-ld=ld.gold \ + --enable-multilib --disable-libssp --disable-libstdcxx-pch \ + --enable-checking=release make +} + +check() { + cd gcc-build # increase stack size to prevent test failures # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31827 @@ -85,24 +85,27 @@ build() { package_gcc-libs-multilib() { pkgdesc="Runtime libraries shipped by GCC for multilib" - depends=('glibc>=2.11.1-2' "lib32-gcc-libs=$pkgver-$pkgrel") + depends=('glibc>=2.14' "lib32-gcc-libs=$pkgver-$pkgrel") provides=("gcc-libs=$pkgver-$pkgrel") conflicts=('gcc-libs') install=gcc-libs.install cd gcc-build make -j1 -C $CHOST/libgcc DESTDIR=${pkgdir} install-shared - for lib in libmudflap libgomp libssp libstdc++-v3/src; do + for lib in libmudflap libgomp libstdc++-v3/src; do make -j1 -C $CHOST/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES done make -j1 -C $CHOST/libstdc++-v3/po DESTDIR=${pkgdir} install make -j1 -C $CHOST/libgomp DESTDIR=${pkgdir} install-info + make -j1 DESTDIR=${pkgdir} install-target-libquadmath make -j1 DESTDIR=${pkgdir} install-target-libgfortran - make -j1 DESTDIR=${pkgdir} install-target-libobjc - # I thought I said to only install the lib... - rm -rf ${pkgdir}/usr/lib/gcc/ + + # remove unnecessary files installed by install-target-{libquadmath,libgfortran,libobjc} + rm -rf ${pkgdir}/usr/lib/{gcc/,libgfortran.spec} + + # remove stuff in lib32-gcc-libs rm -rf ${pkgdir}/usr/lib32 # remove static libraries @@ -116,20 +119,24 @@ package_gcc-libs-multilib() package_lib32-gcc-libs() { pkgdesc="Runtime libraries shipped by GCC (32-bit)" - depends=('lib32-glibc>=2.12.1' "gcc-libs") + depends=('lib32-glibc>=2.14' "gcc-libs>=$pkgver") cd gcc-build make -j1 -C $CHOST/32/libgcc DESTDIR=${pkgdir} install-shared - for lib in libmudflap libgomp libssp libstdc++-v3/src; do + for lib in libmudflap libgomp libstdc++-v3/src; do make -j1 -C $CHOST/32/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES done + make -j1 DESTDIR=${pkgdir} install-target-libquadmath make -j1 DESTDIR=${pkgdir} install-target-libgfortran - make -j1 DESTDIR=${pkgdir} install-target-libobjc - # I thought I said to only install the lib... + # remove unnecessary files installed by install-target-{libquadmath,libgfortran,libobjc} + rm ${pkgdir}/usr/lib32/libgfortran.spec + + # remove stuff in gcc-libs-multilib rm -rf ${pkgdir}/usr/lib + rm -rf ${pkgdir}/usr/share/info # remove static libraries find ${pkgdir} -name *.a -delete @@ -142,8 +149,7 @@ package_lib32-gcc-libs() package_gcc-multilib() { pkgdesc="The GNU Compiler Collection - C and C++ frontends for multilib" - depends=('binutils-multilib>=2.20' 'libmpc>=0.8.1-2' 'cloog-ppl>=0.15.9-2' 'elfutils' \ - "gcc-libs-multilib=$pkgver-$pkgrel") + depends=("gcc-libs-multilib=$pkgver-$pkgrel" 'binutils-multilib>=2.21.1' 'libmpc' 'cloog' 'ppl') groups=('multilib-devel') provides=("gcc=$pkgver-$pkgrel") conflicts=('gcc') @@ -151,15 +157,20 @@ package_gcc-multilib() cd gcc-build - # much, much easier to install the lot and clean-up the mess + # unfortunately it is much, much easier to install the lot and clean-up the mess... make -j1 DESTDIR=${pkgdir} install - rm $pkgdir/usr/bin/{*gfortran,gnat*} - rm $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{{,32/}ada{include,lib},finclude,include/objc}/* - rm $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{cc1obj{,plus},f951,gnat1,{,32/}libgfortranbegin.a} - rm $pkgdir/usr/lib{,32}/{*.so*,lib{gfortran,objc}.a} - rm $pkgdir/usr/share/info/{gfortran,gnat*,libgomp}.info + rm $pkgdir/usr/bin/{{$CHOST-,}gfortran,{$CHOST-,}gccgo,gnat*} + rm $pkgdir/usr/lib{,32}/*.so* + rm $pkgdir/usr/lib{,32}/lib{ffi,gfortran,go{,begin},objc,quadmath}.a + rm $pkgdir/usr/lib{,32}/libgfortran.spec + rm -r $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{{,32/}ada{include,lib},finclude,include/objc} + rm $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/include/{ffi{,target}.h,quadmath{,_weak}.h} + rm $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{cc1obj{,plus},f951,gnat1,go1,{,32/}libgfortranbegin.a} + rm -r $pkgdir/usr/lib{,32}/go + rm $pkgdir/usr/share/info/{gccgo,gfortran,gnat*,libgomp,libquadmath}.info rm $pkgdir/usr/share/locale/{de,fr}/LC_MESSAGES/libstdc++.mo - rm $pkgdir/usr/share/man/man1/gfortran.1 + rm $pkgdir/usr/share/man/man1/{gccgo,gfortran}.1 + rm $pkgdir/usr/share/man/man3/ffi* # many packages require these symlinks install -dm755 ${pkgdir}/lib @@ -167,6 +178,10 @@ package_gcc-multilib() ln -sf gcc ${pkgdir}/usr/bin/cc ln -sf g++ ${pkgdir}/usr/bin/c++ + # install gengtype for plugin support + install -m755 gcc/build/gengtype $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/ + install -m644 gcc/gtype.state $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/ + # POSIX conformance launcher scripts for c89 and c99 cat > $pkgdir/usr/bin/c89 <<"EOF" #!/bin/sh @@ -198,8 +213,7 @@ EOF # install the libstdc++ man pages install -dm755 ${pkgdir}/usr/share/man/man3 - install -m644 ${srcdir}/libstdc++-api-${_libstdcppmanver}.man/man3/* \ - ${pkgdir}/usr/share/man/man3/ + install -m644 ${srcdir}/man/man3/* ${pkgdir}/usr/share/man/man3/ # Install Runtime Library Exception install -Dm644 ${_basedir}/COPYING.RUNTIME \ @@ -215,13 +229,15 @@ package_gcc-fortran-multilib() install=gcc-fortran.install cd gcc-build + make -j1 DESTDIR=${pkgdir} install-target-libquadmath make -j1 DESTDIR=$pkgdir install-target-libgfortran make -j1 -C $CHOST/libgomp DESTDIR=$pkgdir install-nodist_fincludeHEADERS make -j1 -C gcc DESTDIR=$pkgdir fortran.install-{common,man,info} install -Dm755 gcc/f951 $pkgdir/usr/lib/gcc/$CHOST/$pkgver/f951 # remove libraries included in gcc-libs - rm -f ${pkgdir}/usr/lib{,32}/libgfortran.so* + rm ${pkgdir}/usr/lib{,32}/lib{gfortran,quadmath}.so* + rm ${pkgdir}/usr/share/info/libquadmath.info # Install Runtime Library Exception install -Dm644 ${_basedir}/COPYING.RUNTIME \ @@ -241,7 +257,7 @@ package_gcc-objc-multilib() install -m755 gcc/cc1obj{,plus} $pkgdir/usr/lib/gcc/$CHOST/$pkgver/ # remove libraries included in gcc-libs - rm -f ${pkgdir}/usr/lib{,32}/libobjc.so* + rm ${pkgdir}/usr/lib{,32}/libobjc.so* # Install Runtime Library Exception install -Dm644 ${_basedir}/COPYING.RUNTIME \ @@ -256,12 +272,33 @@ package_gcc-ada-multilib() conflicts=('gcc-ada') install=gcc-ada.install - cd gcc-build - make -j1 -C gcc DESTDIR=$pkgdir ada.install-{common,info} - install -m755 gcc/gnat1 $pkgdir/usr/lib/gcc/$CHOST/$pkgver - make -j1 -C $CHOST/32/libada DESTDIR=${pkgdir} install-gnatlib - + cd gcc-build/gcc + make -j1 DESTDIR=$pkgdir ada.install-{common,info} + install -m755 gnat1 $pkgdir/usr/lib/gcc/$CHOST/$pkgver + + cd ../$CHOST/32/libada + make -j1 DESTDIR=${pkgdir} INSTALL="install" \ + INSTALL_DATA="install -m644" install-gnatlib + # Install Runtime Library Exception install -Dm644 ${_basedir}/COPYING.RUNTIME \ ${pkgdir}/usr/share/licenses/gcc-ada-multilib/RUNTIME.LIBRARY.EXCEPTION } + +package_gcc-go-multilib() +{ + pkgdesc="Go front-end for GCC for multilib" + depends=("gcc-multilib=$pkgver-$pkgrel") + provides=("gcc-go=$pkgver-$pkgrel") + conflicts=('gcc-go') + install=gcc-go.install + + cd gcc-build + make -j1 DESTDIR=$pkgdir install-target-libgo + make -j1 -C gcc DESTDIR=$pkgdir go.install-{common,man,info} + install -Dm755 gcc/go1 $pkgdir/usr/lib/gcc/$CHOST/$pkgver/go1 + + # Install Runtime Library Exception + install -Dm644 ${_basedir}/COPYING.RUNTIME \ + ${pkgdir}/usr/share/licenses/gcc-go/RUNTIME.LIBRARY.EXCEPTION +} diff --git a/gcc-multilib/gcc-ada.install b/gcc-multilib/gcc-ada.install index 1c8e086..df0553a 100644 --- a/gcc-multilib/gcc-ada.install +++ b/gcc-multilib/gcc-ada.install @@ -1,4 +1,4 @@ -infodir=/usr/share/info +infodir=usr/share/info filelist=(gnat-style.info gnat_rm.info gnat_ugn.info) post_install() { @@ -18,5 +18,3 @@ pre_remove() { install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null done } - -# vim:set ts=2 sw=2 et: diff --git a/gcc-multilib/gcc-fortran.install b/gcc-multilib/gcc-fortran.install index acffc05..b15d89a 100644 --- a/gcc-multilib/gcc-fortran.install +++ b/gcc-multilib/gcc-fortran.install @@ -1,4 +1,4 @@ -infodir=/usr/share/info +infodir=usr/share/info file="gfortran.info" post_install() { @@ -14,5 +14,3 @@ pre_remove() { [ -x usr/bin/install-info ] || return 0 install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null } - -# vim:set ts=2 sw=2 et: diff --git a/gcc-multilib/gcc-go.install b/gcc-multilib/gcc-go.install new file mode 100644 index 0000000..7dc50de --- /dev/null +++ b/gcc-multilib/gcc-go.install @@ -0,0 +1,20 @@ +infodir=usr/share/info +filelist=(gccgo.info) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info $infodir/$file.gz $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null + done +} diff --git a/gcc-multilib/gcc-hash-style-both.patch b/gcc-multilib/gcc-hash-style-both.patch index fbb2105..8b59f45 100644 --- a/gcc-multilib/gcc-hash-style-both.patch +++ b/gcc-multilib/gcc-hash-style-both.patch @@ -1,47 +1,6 @@ -#! /bin/sh -e - -# DP: Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64, s390, sparc) - -dir= -if [ $# -eq 3 -a "$2" = '-d' ]; then - pdir="-d $3" - dir="$3/" -elif [ $# -ne 1 ]; then - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1 -fi -case "$1" in - -patch) - patch $pdir -f --no-backup-if-mismatch -p0 < $0 - #cd ${dir}gcc && autoconf - ;; - -unpatch) - patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 - #rm ${dir}gcc/configure - ;; - *) - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1 -esac -exit 0 - -2006-07-11 Jakub Jelinek - - * config/i386/linux.h (LINK_SPEC): Add --hash-style=both. - * config/i386/linux64.h (LINK_SPEC): Likewise. - * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. - * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, - LINK_OS_LINUX_SPEC64): Likewise. - * config/s390/linux.h (LINK_SPEC): Likewise. - * config/ia64/linux.h (LINK_SPEC): Likewise. - * config/sparc/linux.h (LINK_SPEC): Likewise. - * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, - LINK_ARCH64_SPEC): Likewise. - * config/alpha/linux-elf.h (LINK_SPEC): Likewise. - ---- gcc/config/alpha/linux-elf.h.orig 2007-08-04 08:55:58.000000000 +0200 -+++ gcc/config/alpha/linux-elf.h 2007-09-01 15:47:26.605865578 +0200 -@@ -39,7 +39,7 @@ +--- gcc/config/alpha/linux-elf.h.orig 2010-12-09 23:27:07.000000000 +1000 ++++ gcc/config/alpha/linux-elf.h 2011-03-11 10:01:47.770000457 +1000 +@@ -41,7 +41,7 @@ #define ELF_DYNAMIC_LINKER LINUX_DYNAMIC_LINKER @@ -50,8 +9,68 @@ exit 0 %{O*:-O3} %{!O*:-O1} \ %{shared:-shared} \ %{!shared: \ ---- gcc/config/s390/linux.h.orig 2007-08-04 08:55:59.000000000 +0200 -+++ gcc/config/s390/linux.h 2007-09-01 15:47:26.605865578 +0200 +--- gcc/config/i386/linux64.h.orig 2011-03-03 08:35:36.000000000 +1000 ++++ gcc/config/i386/linux64.h 2011-03-11 10:01:47.770000457 +1000 +@@ -78,7 +78,7 @@ + %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" + + #undef LINK_SPEC +-#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ ++#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/i386/linux.h.orig 2011-01-15 04:45:06.000000000 +1000 ++++ gcc/config/i386/linux.h 2011-03-11 10:01:47.770000457 +1000 +@@ -104,7 +104,7 @@ + { "dynamic_linker", LINUX_DYNAMIC_LINKER } + + #undef LINK_SPEC +-#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +--- gcc/config/ia64/linux.h.orig 2010-12-09 23:27:07.000000000 +1000 ++++ gcc/config/ia64/linux.h 2011-03-11 10:01:47.770000457 +1000 +@@ -64,7 +64,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC "--hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/rs6000/linux64.h.orig 2011-02-11 03:30:10.000000000 +1000 ++++ gcc/config/rs6000/linux64.h 2011-03-11 10:03:34.280000457 +1000 +@@ -389,11 +389,11 @@ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) + + +-#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}" + +-#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}" + +--- gcc/config/rs6000/sysv4.h.orig 2011-01-28 04:36:03.000000000 +1000 ++++ gcc/config/rs6000/sysv4.h 2011-03-11 10:01:47.773333792 +1000 +@@ -830,7 +830,7 @@ + #define LINUX_DYNAMIC_LINKER \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " LINUX_DYNAMIC_LINKER "}}" + +--- gcc/config/s390/linux.h.orig 2010-12-09 23:27:07.000000000 +1000 ++++ gcc/config/s390/linux.h 2011-03-11 10:01:47.770000457 +1000 @@ -77,7 +77,7 @@ #undef LINK_SPEC @@ -61,103 +80,43 @@ exit 0 %{shared:-shared} \ %{!shared: \ %{static:-static} \ ---- gcc/config/sparc/linux.h.orig 2007-08-04 08:56:01.000000000 +0200 -+++ gcc/config/sparc/linux.h 2007-09-01 15:47:26.605865578 +0200 -@@ -132,7 +132,7 @@ - - - #undef LINK_SPEC --#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ -+#define LINK_SPEC "-m elf32_sparc --hash-style=both -Y P,/usr/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ - %{!shared: \ - %{!ibcs: \ ---- gcc/config/sparc/linux64.h.orig 2007-08-04 08:56:01.000000000 +0200 -+++ gcc/config/sparc/linux64.h 2007-09-01 15:47:26.605865578 +0200 -@@ -166,7 +166,7 @@ +--- gcc/config/sparc/linux64.h.orig 2011-02-17 23:57:21.000000000 +1000 ++++ gcc/config/sparc/linux64.h 2011-03-11 10:01:47.770000457 +1000 +@@ -113,7 +113,7 @@ { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ { "link_arch", LINK_ARCH_SPEC }, -#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,%R/usr/lib %{shared:-shared} \ +#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=both -Y P,%R/usr/lib %{shared:-shared} \ %{!shared: \ - %{!ibcs: \ - %{!static: \ -@@ -175,7 +175,7 @@ - %{static:-static}}} \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +@@ -121,7 +121,7 @@ + %{static:-static}} \ " -#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \ +#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=both -Y P,%R/usr/lib64 %{shared:-shared} \ %{!shared: \ - %{!ibcs: \ - %{!static: \ -@@ -256,7 +256,7 @@ + %{!static: \ + %{rdynamic:-export-dynamic} \ +@@ -193,7 +193,7 @@ #else /* !SPARC_BI_ARCH */ #undef LINK_SPEC -#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \ +#define LINK_SPEC "-m elf64_sparc --hash-style=both -Y P,%R/usr/lib64 %{shared:-shared} \ %{!shared: \ - %{!ibcs: \ - %{!static: \ ---- gcc/config/i386/linux.h.orig 2007-08-04 08:56:07.000000000 +0200 -+++ gcc/config/i386/linux.h 2007-09-01 15:47:26.605865578 +0200 -@@ -108,7 +108,7 @@ - { "dynamic_linker", LINUX_DYNAMIC_LINKER } + %{!static: \ + %{rdynamic:-export-dynamic} \ +--- gcc/config/sparc/linux.h.orig 2011-01-27 06:30:12.000000000 +1000 ++++ gcc/config/sparc/linux.h 2011-03-11 10:01:47.770000457 +1000 +@@ -74,7 +74,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" - #undef LINK_SPEC --#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ -+#define LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ ---- gcc/config/i386/linux64.h.orig 2007-08-04 08:56:07.000000000 +0200 -+++ gcc/config/i386/linux64.h 2007-09-01 15:48:27.336781690 +0200 -@@ -65,7 +65,7 @@ - #endif - - #undef LINK_SPEC --#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ -+#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=both \ - %{shared:-shared} \ + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=both -Y P,/usr/lib %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ %{!shared: \ %{!static: \ ---- gcc/config/ia64/linux.h.orig 2006-12-12 18:59:53.000000000 +0100 -+++ gcc/config/ia64/linux.h 2007-09-01 15:47:26.605865578 +0200 -@@ -40,7 +40,7 @@ - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" - - #undef LINK_SPEC --#define LINK_SPEC "\ -+#define LINK_SPEC "--hash-style=both \ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ ---- gcc/config/rs6000/sysv4.h.orig 2007-08-08 23:37:49.000000000 +0200 -+++ gcc/config/rs6000/sysv4.h 2007-09-01 15:47:26.615865729 +0200 -@@ -901,7 +901,7 @@ - #define LINUX_DYNAMIC_LINKER \ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) - --#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}" - ---- gcc/config/rs6000/linux64.h.orig 2007-08-04 08:56:12.000000000 +0200 -+++ gcc/config/rs6000/linux64.h 2007-09-01 15:47:26.615865729 +0200 -@@ -354,11 +354,11 @@ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) - - --#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ -+#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}}" - --#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ -+#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=both %{!shared: %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}}" - diff --git a/gcc-multilib/gcc-libs.install b/gcc-multilib/gcc-libs.install index bd57efb..23553b8 100644 --- a/gcc-multilib/gcc-libs.install +++ b/gcc-multilib/gcc-libs.install @@ -1,14 +1,16 @@ -infodir=/usr/share/info -file="libgomp.info" +infodir=usr/share/info +filelist=(libgomp.info libquadmath.info) post_upgrade() { [ -x usr/bin/install-info ] || return 0 - install-info $infodir/$file.gz $infodir/dir 2> /dev/null + for file in ${filelist[@]}; do + install-info $infodir/$file.gz $infodir/dir 2> /dev/null + done } pre_remove() { [ -x usr/bin/install-info ] || return 0 - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null + for file in ${filelist[@]}; do + install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null + done } - -# vim:set ts=2 sw=2 et: diff --git a/gcc-multilib/gcc.install b/gcc-multilib/gcc.install index 83d89b0..3407a5e 100644 --- a/gcc-multilib/gcc.install +++ b/gcc-multilib/gcc.install @@ -1,4 +1,4 @@ -infodir=/usr/share/info +infodir=usr/share/info filelist=(cpp.info cppinternals.info gcc.info gccinstall.info gccint.info) post_install() { @@ -18,5 +18,3 @@ pre_remove() { install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null done } - -# vim:set ts=2 sw=2 et: diff --git a/lib32-glibc/PKGBUILD b/lib32-glibc/PKGBUILD index aa58320..4ab7aee 100644 --- a/lib32-glibc/PKGBUILD +++ b/lib32-glibc/PKGBUILD @@ -8,29 +8,42 @@ _pkgbasename=glibc pkgname=lib32-$_pkgbasename -pkgver=2.12.1 -pkgrel=2 -_glibcdate=20101025 +pkgver=2.14 +pkgrel=1 +_glibcdate=20110908 pkgdesc="GNU C Library for multilib" arch=('x86_64') url="http://www.gnu.org/software/libc" license=('GPL' 'LGPL') depends=("glibc>=$pkgver") -makedepends=('gcc-multilib>=4.4') +#makedepends=('gcc-multilib>=4.6') +makedepends=('gcc-multilib') options=('!strip' '!emptydirs') -source=(http://mirrors.kernel.org/archlinux/other/glibc/${_pkgbasename}-${pkgver}_${_glibcdate}.tar.xz +source=(http://chakra-project.org/sources/${pkgbasename}/${pkgbasename}-${pkgver}_${_glibcdate}.tar.xz glibc-2.10-dont-build-timezone.patch glibc-2.10-bz4781.patch glibc-__i686.patch glibc-2.12.1-static-shared-getpagesize.patch - #glibc-2.12.2-ignore-origin-of-privileged-program.patch + glibc-2.12.2-ignore-origin-of-privileged-program.patch + glibc-2.13-futex.patch + glibc-2.13-dlclose-search-reset.patch + glibc-2.14-libdl-crash.patch + glibc-2.14-avoid-assertion-on-empty-dns-answer.patch + glibc-2.14-reexport-rpc-interface.patch + glibc-2.14-reinstall-nis-rpc-headers.patch lib32-glibc.conf) -md5sums=('b12192eff7306f2a6e919641b847e7cf' +md5sums=('069069eb9100cc7affd7ad884cb3c3e9' '4dadb9203b69a3210d53514bb46f41c3' '0c5540efc51c0b93996c51b57a8540ae' '40cd342e21f71f5e49e32622b25acc52' - '597057bfd593d434ed1929596868f11d' - #'b042647ea7d6f22ad319e12e796bd13e' + 'a3ac6f318d680347bb6e2805d42b73b2' + 'b042647ea7d6f22ad319e12e796bd13e' + '7d0154b7e17ea218c9fa953599d24cc4' + '22d09c58718fb3d1d31c3a6c14ca6886' + 'cea62cc6b903d222c5f26e05a3c0e0e6' + '13728807283f111e5d9d38cf38e0a461' + 'c5de2a946215d647c8af5432ec4b0da0' + '55febbb72139ac7b65757df085024b83' '6e052f1cb693d5d3203f50f9d4e8c33b') build() { @@ -52,18 +65,43 @@ build() { # http://www.exploit-db.com/exploits/15274/ # http://sourceware.org/git/?p=glibc.git;a=patch;h=d14e6b09 (only fedora branch...) - #patch -Np1 -i ${srcdir}/glibc-2.12.2-ignore-origin-of-privileged-program.patch + patch -Np1 -i ${srcdir}/glibc-2.12.2-ignore-origin-of-privileged-program.patch + + # http://sourceware.org/bugzilla/show_bug.cgi?id=12403 + patch -Np1 -i ${srcdir}/glibc-2.13-futex.patch + + # https://bugzilla.redhat.com/show_bug.cgi?id=593675 + # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2f811bf8 (only fedora branch...) + patch -Np1 -i ${srcdir}/glibc-2.13-dlclose-search-reset.patch + + # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=675155e9 (only fedora branch...) + # http://sourceware.org/ml/libc-alpha/2011-06/msg00006.html + patch -Np1 -i ${srcdir}/glibc-2.14-libdl-crash.patch + + # http://sourceware.org/bugzilla/show_bug.cgi?id=13013 + # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=032c0ee3 (only fedora branch...) + patch -Np1 -i ${srcdir}/glibc-2.14-avoid-assertion-on-empty-dns-answer.patch + + # re-export RPC interface until libtirpc is ready as a replacement + # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=acee4873 (only fedora branch...) + patch -Np1 -i ${srcdir}/glibc-2.14-reexport-rpc-interface.patch + # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=bdd816a3 (only fedora branch...) + patch -Np1 -i ${srcdir}/glibc-2.14-reinstall-nis-rpc-headers.patch cd ${srcdir} mkdir glibc-build cd glibc-build + export CC="gcc -m32" + # Hack to fix NPTL issues with Xen, only required on 32bit platforms export CFLAGS="${CFLAGS} -mno-tls-direct-seg-refs" echo "slibdir=/usr/lib32" >> configparms - export CC="gcc -m32" + # remove hardening options from CFLAGS for building libraries + CFLAGS=${CFLAGS/-fstack-protector/} + CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/} ${srcdir}/glibc/configure --prefix=/usr \ --libdir=/usr/lib32 --libexecdir=/usr/lib32 \ @@ -74,8 +112,23 @@ build() { --enable-bind-now --without-gd \ --without-cvs --disable-profile \ --disable-multi-arch i686-unknown-linux-gnu - + + # build libraries with hardening disabled + echo "build-programs=no" >> configparms make + + # re-enable hardening for programs + sed -i "s#=no#=yes#" configparms + echo "CC += -fstack-protector -D_FORTIFY_SOURCE=2" >> configparms + echo "CXX += -fstack-protector -D_FORTIFY_SOURCE=2" >> configparms + make + + # remove harding in preparation to run test-suite + sed -i '2,4d' configparms +} + +check() { + cd ${srcdir}/glibc-build # some errors are expected - manually check log files make -k check || true @@ -104,7 +157,7 @@ package() { usr/lib32/libnss_{compat,dns,files,hesiod,nis,nisplus}-${pkgver}.so \ usr/lib32/{libdl,libm,libnsl,libresolv,librt,libutil}-${pkgver}.so \ usr/lib32/{libmemusage,libpcprofile,libSegFault}.so \ - usr/lib32/{pt_chown,gconv/*.so} + usr/lib32/{pt_chown,{audit,gconv}/*.so} # Dynamic linker install -d -m755 ${pkgdir}/lib diff --git a/lib32-glibc/glibc-2.12.1-static-shared-getpagesize.patch b/lib32-glibc/glibc-2.12.1-static-shared-getpagesize.patch index f0c0eb9..e847542 100644 --- a/lib32-glibc/glibc-2.12.1-static-shared-getpagesize.patch +++ b/lib32-glibc/glibc-2.12.1-static-shared-getpagesize.patch @@ -8,4 +8,4 @@ +#if 0 && defined __ASSUME_AT_PAGESIZE assert (GLRO(dl_pagesize) != 0); return GLRO(dl_pagesize); - #else \ No newline at end of file + #else diff --git a/lib32-glibc/glibc-2.12.2-ignore-origin-of-privileged-program.patch b/lib32-glibc/glibc-2.12.2-ignore-origin-of-privileged-program.patch new file mode 100644 index 0000000..ce089b4 --- /dev/null +++ b/lib32-glibc/glibc-2.12.2-ignore-origin-of-privileged-program.patch @@ -0,0 +1,26 @@ +From d14e6b09d60d52cc12f0396c3106b14e1bd0fe8f Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Thu, 9 Dec 2010 15:00:59 +0100 +Subject: [PATCH 1/1] Ignore origin of privileged program + +--- + ChangeLog | 5 +++++ + elf/dl-object.c | 3 +++ + 2 files changed, 8 insertions(+), 0 deletions(-) + +diff --git a/elf/dl-object.c b/elf/dl-object.c +index 22a1635..7674d49 100644 +--- a/elf/dl-object.c ++++ b/elf/dl-object.c +@@ -214,6 +214,9 @@ _dl_new_object (char *realname, const char *libname, int type, + out: + new->l_origin = origin; + } ++ else if (INTUSE(__libc_enable_secure) && type == lt_executable) ++ /* The origin of a privileged program cannot be trusted. */ ++ new->l_origin = (char *) -1; + + return new; + } +-- +1.7.2 diff --git a/lib32-glibc/glibc-2.13-dlclose-search-reset.patch b/lib32-glibc/glibc-2.13-dlclose-search-reset.patch new file mode 100644 index 0000000..3ad8b41 --- /dev/null +++ b/lib32-glibc/glibc-2.13-dlclose-search-reset.patch @@ -0,0 +1,196 @@ +From 2f811bf88bed4a6c0dec8778847ba441736d509d Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Wed, 26 May 2010 18:28:59 +0200 +Subject: [PATCH] Fix scope handling during dl_close + +--- + ChangeLog | 12 ++++++++++++ + elf/Makefile | 10 +++++++++- + elf/dl-close.c | 7 +++++++ + elf/unload8.c | 33 +++++++++++++++++++++++++++++++++ + elf/unload8mod1.c | 7 +++++++ + elf/unload8mod1x.c | 1 + + elf/unload8mod2.c | 7 +++++++ + elf/unload8mod3.c | 27 +++++++++++++++++++++++++++ + 8 files changed, 103 insertions(+), 1 deletions(-) + create mode 100644 elf/unload8.c + create mode 100644 elf/unload8mod1.c + create mode 100644 elf/unload8mod1x.c + create mode 100644 elf/unload8mod2.c + create mode 100644 elf/unload8mod3.c + +diff --git a/elf/Makefile b/elf/Makefile +index 59e835f..65b6deb 100644 +--- a/elf/Makefile ++++ b/elf/Makefile +@@ -89,6 +89,7 @@ distribute := rtld-Rules \ + unload4mod1.c unload4mod2.c unload4mod3.c unload4mod4.c \ + unload6mod1.c unload6mod2.c unload6mod3.c \ + unload7mod1.c unload7mod2.c \ ++ unload8mod1.c unload8mod1x.c unload8mod2.c unload8mod3.c \ + tst-audit1.c tst-audit2.c tst-audit3.c tst-audit4.c \ + tst-auditmod1.c tst-auditmod3a.c tst-auditmod3b.c \ + tst-auditmod4a.c tst-auditmod4b.c \ +@@ -196,7 +197,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ + tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \ + tst-dlmodcount tst-dlopenrpath tst-deep1 \ + tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ +- unload3 unload4 unload5 unload6 unload7 tst-global1 order2 \ ++ unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \ + tst-audit1 tst-audit2 \ + tst-stackguard1 tst-addr1 tst-thrlock \ + tst-unique1 tst-unique2 +@@ -247,6 +248,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ + unload4mod1 unload4mod2 unload4mod3 unload4mod4 \ + unload6mod1 unload6mod2 unload6mod3 \ + unload7mod1 unload7mod2 \ ++ unload8mod1 unload8mod1x unload8mod2 unload8mod3 \ + order2mod1 order2mod2 order2mod3 order2mod4 \ + tst-unique1mod1 tst-unique1mod2 \ + tst-unique2mod1 tst-unique2mod2 +@@ -522,6 +524,9 @@ $(objpfx)unload6mod2.so: $(libdl) + $(objpfx)unload6mod3.so: $(libdl) + $(objpfx)unload7mod1.so: $(libdl) + $(objpfx)unload7mod2.so: $(objpfx)unload7mod1.so ++$(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so ++$(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so ++$(objpfx)unload8mod3.so: $(libdl) + $(objpfx)tst-initordera2.so: $(objpfx)tst-initordera1.so + $(objpfx)tst-initorderb2.so: $(objpfx)tst-initorderb1.so $(objpfx)tst-initordera2.so + $(objpfx)tst-initordera3.so: $(objpfx)tst-initorderb2.so $(objpfx)tst-initorderb1.so +@@ -823,6 +828,9 @@ $(objpfx)unload7: $(libdl) + $(objpfx)unload7.out: $(objpfx)unload7mod1.so $(objpfx)unload7mod2.so + unload7-ENV = MALLOC_PERTURB_=85 + ++$(objpfx)unload8: $(libdl) ++$(objpfx)unload8.out: $(objpfx)unload8mod1.so $(objpfx)unload8mod1x.so ++ + ifdef libdl + $(objpfx)tst-tls9-static: $(common-objpfx)dlfcn/libdl.a + $(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so +diff --git a/elf/dl-close.c b/elf/dl-close.c +index 700e765..f47d5f8 100644 +--- a/elf/dl-close.c ++++ b/elf/dl-close.c +@@ -421,6 +421,13 @@ _dl_close_worker (struct link_map *map) + + imap->l_scope_max = new_size; + } ++ else if (new_list != NULL) ++ { ++ /* We didn't change the scope array, so reset the search ++ list. */ ++ imap->l_searchlist.r_list = NULL; ++ imap->l_searchlist.r_nlist = 0; ++ } + + /* The loader is gone, so mark the object as not having one. + Note: l_idx != IDX_STILL_USED -> object will be removed. */ +diff --git a/elf/unload8.c b/elf/unload8.c +new file mode 100644 +index 0000000..f984a38 +--- /dev/null ++++ b/elf/unload8.c +@@ -0,0 +1,33 @@ ++#include ++#include ++ ++int ++main (void) ++{ ++ void *h = dlopen ("$ORIGIN/unload8mod1.so", RTLD_LAZY); ++ if (h == NULL) ++ { ++ puts ("dlopen unload8mod1.so failed"); ++ return 1; ++ } ++ ++ void *h2 = dlopen ("$ORIGIN/unload8mod1x.so", RTLD_LAZY); ++ if (h2 == NULL) ++ { ++ puts ("dlopen unload8mod1x.so failed"); ++ return 1; ++ } ++ dlclose (h2); ++ ++ int (*mod1) (void) = dlsym (h, "mod1"); ++ if (mod1 == NULL) ++ { ++ puts ("dlsym failed"); ++ return 1; ++ } ++ ++ mod1 (); ++ dlclose (h); ++ ++ return 0; ++} +diff --git a/elf/unload8mod1.c b/elf/unload8mod1.c +new file mode 100644 +index 0000000..fe7e81c +--- /dev/null ++++ b/elf/unload8mod1.c +@@ -0,0 +1,7 @@ ++extern void mod2 (void); ++ ++void ++mod1 (void) ++{ ++ mod2 (); ++} +diff --git a/elf/unload8mod1x.c b/elf/unload8mod1x.c +new file mode 100644 +index 0000000..835b634 +--- /dev/null ++++ b/elf/unload8mod1x.c +@@ -0,0 +1 @@ ++int mod1x; +diff --git a/elf/unload8mod2.c b/elf/unload8mod2.c +new file mode 100644 +index 0000000..2fd8b67 +--- /dev/null ++++ b/elf/unload8mod2.c +@@ -0,0 +1,7 @@ ++extern void mod3 (void); ++ ++void ++mod2 (void) ++{ ++ mod3 (); ++} +diff --git a/elf/unload8mod3.c b/elf/unload8mod3.c +new file mode 100644 +index 0000000..d49e22b +--- /dev/null ++++ b/elf/unload8mod3.c +@@ -0,0 +1,27 @@ ++#include ++#include ++#include ++ ++void ++mod3_fini2 (void) ++{ ++} ++ ++void ++mod3_fini (void) ++{ ++ mod3_fini2 (); ++} ++ ++void ++mod3 (void) ++{ ++ void *h = dlopen ("$ORIGIN/unload8mod2.so", RTLD_LAZY); ++ if (h == NULL) ++ { ++ puts ("dlopen unload8mod2.so failed"); ++ exit (1); ++ } ++ ++ atexit (mod3_fini); ++} +-- +1.7.3.4 + diff --git a/lib32-glibc/glibc-2.13-futex.patch b/lib32-glibc/glibc-2.13-futex.patch new file mode 100644 index 0000000..9b9c3ac --- /dev/null +++ b/lib32-glibc/glibc-2.13-futex.patch @@ -0,0 +1,31 @@ +--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S ++++ a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S +@@ -210,7 +210,7 @@ pthread_rwlock_timedrdlock: + cfi_restore(%r12) + retq + +-#ifdef __ASSUME_PRIVATE_FUTEX ++#ifdef __ASSUME_FUTEX_CLOCK_REALTIME + cfi_adjust_cfa_offset(16) + cfi_rel_offset(%r12, 8) + cfi_rel_offset(%r13, 0) +--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S ++++ a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S +@@ -192,7 +192,7 @@ pthread_rwlock_timedwrlock: + + 7: movq %rdx, %rax + +-#ifndef __ASSUME_PRIVATE_FUTEX ++#ifndef __ASSUME_FUTEX_CLOCK_REALTIME + addq $16, %rsp + cfi_adjust_cfa_offset(-16) + popq %r14 +@@ -207,7 +207,7 @@ pthread_rwlock_timedwrlock: + cfi_restore(%r12) + retq + +-#ifdef __ASSUME_PRIVATE_FUTEX ++#ifdef __ASSUME_FUTEX_CLOCK_REALTIME + cfi_adjust_cfa_offset(16) + cfi_rel_offset(%r12, 8) + cfi_rel_offset(%r13, 0) diff --git a/lib32-glibc/glibc-2.14-avoid-assertion-on-empty-dns-answer.patch b/lib32-glibc/glibc-2.14-avoid-assertion-on-empty-dns-answer.patch new file mode 100644 index 0000000..ef91116 --- /dev/null +++ b/lib32-glibc/glibc-2.14-avoid-assertion-on-empty-dns-answer.patch @@ -0,0 +1,26 @@ +From 032c0ee3ee28841d684950e33a77210118697566 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Thu, 1 Sep 2011 10:46:14 +0200 +Subject: [PATCH] Avoid assertion failure when first DNS answer was empty + +--- + ChangeLog | 4 ++++ + resolv/res_query.c | 2 +- + 2 files changed, 5 insertions(+), 1 deletions(-) + +diff --git a/resolv/res_query.c b/resolv/res_query.c +index 2f7cfaa..2ded9fb 100644 +--- a/resolv/res_query.c ++++ b/resolv/res_query.c +@@ -248,7 +248,7 @@ __libc_res_nquery(res_state statp, + && *resplen2 > (int) sizeof (HEADER)) + { + /* Special case of partial answer. */ +- assert (hp != hp2); ++ assert (n == 0 || hp != hp2); + hp = hp2; + } + else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER) +-- +1.7.3.4 + diff --git a/lib32-glibc/glibc-2.14-libdl-crash.patch b/lib32-glibc/glibc-2.14-libdl-crash.patch new file mode 100644 index 0000000..ee29f8c --- /dev/null +++ b/lib32-glibc/glibc-2.14-libdl-crash.patch @@ -0,0 +1,132 @@ +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 diff --git a/lib32-glibc/glibc-2.14-reexport-rpc-interface.patch b/lib32-glibc/glibc-2.14-reexport-rpc-interface.patch new file mode 100644 index 0000000..e2beea8 --- /dev/null +++ b/lib32-glibc/glibc-2.14-reexport-rpc-interface.patch @@ -0,0 +1,26 @@ +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 diff --git a/lib32-glibc/glibc-2.14-reinstall-nis-rpc-headers.patch b/lib32-glibc/glibc-2.14-reinstall-nis-rpc-headers.patch new file mode 100644 index 0000000..eb0fd82 --- /dev/null +++ b/lib32-glibc/glibc-2.14-reinstall-nis-rpc-headers.patch @@ -0,0 +1,28 @@ +From bdd816a366c4e5bba5de7157d948e0c0737fb4fb Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +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 + diff --git a/lib32-glibc/lib32-glibc.install b/lib32-glibc/lib32-glibc.install deleted file mode 100644 index a9e76ab..0000000 --- a/lib32-glibc/lib32-glibc.install +++ /dev/null @@ -1,11 +0,0 @@ -post_install() { - sbin/ldconfig -r . -} - -post_upgrade() { - post_install -} - -post_remove() { - post_install -} diff --git a/libtool-multilib/PKGBUILD b/libtool-multilib/PKGBUILD index aaa7892..34e28a6 100644 --- a/libtool-multilib/PKGBUILD +++ b/libtool-multilib/PKGBUILD @@ -9,7 +9,7 @@ pkgbase=libtool-multilib _pkgbase=libtool pkgname=(libtool-multilib lib32-libtool) pkgver=2.2.6b -pkgrel=1 +pkgrel=2 pkgdesc="A generic library support script for multilib" arch=('x86_64') url="http://www.gnu.org/software/libtool"