summaryrefslogtreecommitdiff
path: root/multilib
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-04-05 00:01:23 +0000
committerroot <root@rshg054.dnsready.net>2012-04-05 00:01:23 +0000
commit608a49084f8c6599f8adef56b6c1480c3e293c04 (patch)
treeb385b78ccb9657030d632f662b68a495286e9a55 /multilib
parent96deddcec133f85220a15d4c435004c577395169 (diff)
Thu Apr 5 00:01:22 UTC 2012
Diffstat (limited to 'multilib')
-rw-r--r--multilib/binutils-multilib/PKGBUILD18
-rw-r--r--multilib/gcc-multilib/PKGBUILD85
-rw-r--r--multilib/gcc-multilib/gcc-4.7.0-cloog-0.17.patch24
-rw-r--r--multilib/gcc-multilib/gcc_pure64-multilib.patch38
-rw-r--r--multilib/lib32-glibc/PKGBUILD49
-rw-r--r--multilib/lib32-glibc/glibc-2.15-confstr-local-buffer-extent.patch297
-rw-r--r--multilib/lib32-glibc/glibc-2.15-do-not-install-timezone-files-2.patch20
-rw-r--r--multilib/lib32-glibc/glibc-2.15-do-not-install-timezone-files.patch124
-rw-r--r--multilib/lib32-glibc/glibc-2.15-vfprintf-nargs.patch16
-rw-r--r--multilib/lib32-glibc/glibc-__i686.patch44
-rw-r--r--multilib/libtool-multilib/PKGBUILD8
11 files changed, 613 insertions, 110 deletions
diff --git a/multilib/binutils-multilib/PKGBUILD b/multilib/binutils-multilib/PKGBUILD
index f80d4cfe9..7716f3f54 100644
--- a/multilib/binutils-multilib/PKGBUILD
+++ b/multilib/binutils-multilib/PKGBUILD
@@ -1,13 +1,13 @@
-# $Id: PKGBUILD 62199 2012-01-18 10:46:41Z heftig $
-# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# $Id: PKGBUILD 68825 2012-04-03 11:10:59Z allan $
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Allan McRae <allan@archlinux.org>
# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
pkgname=binutils-multilib
pkgver=2.22
-pkgrel=4.1
-_date=20111227
+pkgrel=5
+_date=20120323
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/"
@@ -15,12 +15,12 @@ license=('GPL')
groups=('multilib-devel')
provides=("binutils=$pkgver-$pkgrel")
conflicts=('binutils')
-depends=('glibc>=2.14' 'zlib')
+depends=('glibc>=2.15' 'zlib')
makedepends=('dejagnu' 'gcc-multilib') # Make sure we compile this with gcc-multilib
options=('!libtool' '!distcc' '!ccache')
install=binutils.install
source=(http://mirrors.kernel.org/archlinux/other/binutils/binutils-${pkgver}_${_date}.tar.bz2)
-md5sums=('c2377089c15bb1a1bfaeca8d0e59dd4d')
+md5sums=('de2ac4298732827f8af706fc24020330')
build() {
cd ${srcdir}
@@ -47,6 +47,11 @@ build() {
cp -a bfd bfd-pic
make -C bfd-pic clean
make CFLAGS="$CFLAGS -fPIC -fvisibility=hidden" -C bfd-pic
+
+ # Rebuild libopcodes.a with -fPIC
+ cp -a opcodes opcodes-pic
+ make -C opcodes-pic clean
+ make CFLAGS="$CFLAGS -fPIC" -C opcodes-pic
}
check() {
@@ -67,6 +72,7 @@ package() {
# install libraries rebuilt with -fPIC
install -m644 libiberty-pic/libiberty.a ${pkgdir}/usr/lib
install -m644 bfd-pic/libbfd.a ${pkgdir}/usr/lib
+ install -m644 opcodes/libopcodes.a ${pkgdir}/usr/lib
# Remove Windows/Novell specific man pages
rm -f ${pkgdir}/usr/share/man/man1/{dlltool,nlmconv,windres,windmc}*
diff --git a/multilib/gcc-multilib/PKGBUILD b/multilib/gcc-multilib/PKGBUILD
index 35f6feba2..7fa7442b6 100644
--- a/multilib/gcc-multilib/PKGBUILD
+++ b/multilib/gcc-multilib/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 67114 2012-03-04 14:27:51Z allan $
+# $Id: PKGBUILD 68826 2012-04-03 11:11:16Z allan $
# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
# Contributor: Allan McRae <allan@archlinux.org>
@@ -7,10 +7,10 @@
pkgbase='gcc-multilib'
pkgname=('gcc-multilib' 'gcc-libs-multilib' 'lib32-gcc-libs' 'gcc-fortran-multilib' 'gcc-objc-multilib' 'gcc-ada-multilib' 'gcc-go-multilib')
-pkgver=4.6.3
-pkgrel=1
-#_snapshot=4.6-20120120
-_libstdcppmanver=20111215
+pkgver=4.7.0
+pkgrel=3
+_snapshot=4.7-20120324
+_libstdcppmanver=20120307 # Note: check source directory name when updating this
pkgdesc="The GNU Compiler Collection for multilib"
arch=('x86_64')
license=('GPL' 'LGPL' 'FDL' 'custom')
@@ -19,17 +19,16 @@ makedepends=('binutils-multilib>=2.22' 'libmpc' 'cloog' 'ppl' 'gcc-ada-multilib'
'lib32-glibc>=2.14')
checkdepends=('dejagnu')
options=('!libtool' '!emptydirs')
-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++-man.${_libstdcppmanver}.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-multilib.patch
- gcc-hash-style-both.patch
- gcc-4.6.2-cloog-0.17.patch)
-md5sums=('773092fe5194353b02bb0110052a972e'
- '450772ce32daed97d7383199f8797f33'
- '7da5b7ab75b3c29993f953b18bc38579'
- '4df25b623799b148a0703eaeec8fdf3f'
- '6d9939a2e667376031679ac9f9c49263')
+ gcc-4.7.0-cloog-0.17.patch)
+md5sums=('947f9a70dcbb4baaf20b1e95b518048e'
+ '489d2f5311535800a120efd8d18db719'
+ 'ec24c32d3d1030c2bc8cb2ad2d1dc629'
+ '575f7d17b022e609447a590e481b18b5')
+
if [ -n "${_snapshot}" ]; then
_basedir="${srcdir}/gcc-${_snapshot}"
@@ -46,11 +45,10 @@ build() {
# Do not run fixincludes
sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
- patch -Np1 -i ${srcdir}/gcc_pure64-multilib.patch
- patch -Np0 -i ${srcdir}/gcc-hash-style-both.patch
+ patch -p1 -i ${srcdir}/gcc_pure64-multilib.patch
# compatibility with latest cloog
- patch -Np1 -i ${srcdir}/gcc-4.6.2-cloog-0.17.patch
+ patch -p1 -i ${srcdir}/gcc-4.7.0-cloog-0.17.patch
echo ${pkgver} > gcc/BASE-VER
@@ -70,7 +68,9 @@ build() {
--with-ppl --enable-cloog-backend=isl \
--enable-lto --enable-gold --enable-ld=default \
--enable-plugin --with-plugin-ld=ld.gold \
+ --with-linker-hash-style=gnu \
--enable-multilib --disable-libssp \
+ --disable-build-with-cxx --disable-build-poststage1-with-cxx \
--enable-checking=release --with-fpmath=sse
make
}
@@ -90,14 +90,14 @@ check() {
package_gcc-libs-multilib()
{
pkgdesc="Runtime libraries shipped by GCC for multilib"
- depends=('glibc>=2.14' "lib32-gcc-libs=$pkgver-$pkgrel")
+ depends=('glibc>=2.15' "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 libstdc++-v3/src; do
+ for lib in libmudflap libgomp libstdc++-v3/src libitm; do
make -j1 -C $CHOST/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES
done
make -j1 -C $CHOST/libstdc++-v3/po DESTDIR=${pkgdir} install
@@ -108,10 +108,10 @@ package_gcc-libs-multilib()
make -j1 DESTDIR=${pkgdir} install-target-libobjc
# remove unnecessary files installed by install-target-{libquadmath,libgfortran,libobjc}
- rm -rf ${pkgdir}/usr/lib/{gcc/,libgfortran.spec}
+ rm -r ${pkgdir}/usr/lib/{gcc/,libgfortran.spec}
# remove stuff in lib32-gcc-libs
- rm -rf ${pkgdir}/usr/lib32
+ rm -r ${pkgdir}/usr/lib32
# remove static libraries
find ${pkgdir} -name *.a -delete
@@ -124,11 +124,11 @@ package_gcc-libs-multilib()
package_lib32-gcc-libs()
{
pkgdesc="Runtime libraries shipped by GCC (32-bit)"
- depends=('lib32-glibc>=2.14' "gcc-libs>=$pkgver")
+ depends=('lib32-glibc>=2.15' "gcc-libs>=$pkgver")
cd gcc-build
make -j1 -C $CHOST/32/libgcc DESTDIR=${pkgdir} install-shared
- for lib in libmudflap libgomp libstdc++-v3/src; do
+ for lib in libmudflap libgomp libstdc++-v3/src libitm; do
make -j1 -C $CHOST/32/$lib DESTDIR=${pkgdir} install-toolexeclibLTLIBRARIES
done
@@ -140,8 +140,8 @@ package_lib32-gcc-libs()
rm ${pkgdir}/usr/lib32/libgfortran.spec
# remove stuff in gcc-libs-multilib
- rm -rf ${pkgdir}/usr/lib
- rm -rf ${pkgdir}/usr/share/info
+ rm -r ${pkgdir}/usr/lib
+ rm -r ${pkgdir}/usr/share/info
# remove static libraries
find ${pkgdir} -name *.a -delete
@@ -162,35 +162,30 @@ package_gcc-multilib()
cd gcc-build
- # unfortunately it is much, much easier to install the lot and clean-up the mess...
make -j1 DESTDIR=${pkgdir} install
+
+ install -d $pkgdir/usr/share/gdb/auto-load
+ mv $pkgdir/usr/{lib/libstdc++.so.6.0.17-gdb.py,share/gdb/auto-load}
+
+ # unfortunately it is much, much easier to install the lot and clean-up the mess...
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 $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{cc1obj{,plus},f951,gnat1,go1}
+ rm $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/{,32/}{libcaf_single,libgfortranbegin}.a
rm -r $pkgdir/usr/lib{,32}/go
- rm $pkgdir/usr/share/info/{gccgo,gfortran,gnat*,libgomp,libquadmath}.info
+ rm $pkgdir/usr/share/info/{gccgo,gfortran,gnat*,libgomp,libquadmath,libitm}.info
rm $pkgdir/usr/share/locale/{de,fr}/LC_MESSAGES/libstdc++.mo
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
- ln -sf /usr/bin/cpp ${pkgdir}/lib/cpp
- 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}/
-
- # plugin headers are all over the place at the moment...
- for i in common objc pragma pretty-print; do
- ln -sf ../c-$i.h $pkgdir/usr/lib/gcc/$CHOST/${pkgver}/plugin/include/c-family/c-$i.h
- done
+ ln -s /usr/bin/cpp ${pkgdir}/lib/cpp
+ ln -s gcc ${pkgdir}/usr/bin/cc
# POSIX conformance launcher scripts for c89 and c99
cat > $pkgdir/usr/bin/c89 <<"EOF"
@@ -223,7 +218,7 @@ EOF
# install the libstdc++ man pages
install -dm755 ${pkgdir}/usr/share/man/man3
- install -m644 ${srcdir}/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 \
@@ -248,7 +243,9 @@ package_gcc-fortran-multilib()
# remove libraries included in gcc-libs
rm ${pkgdir}/usr/lib{,32}/lib{gfortran,quadmath}.so*
rm ${pkgdir}/usr/share/info/libquadmath.info
-
+
+ ln -s gfortran ${pkgdir}/usr/bin/f95
+
# Install Runtime Library Exception
install -Dm644 ${_basedir}/COPYING.RUNTIME \
${pkgdir}/usr/share/licenses/gcc-fortran-multilib/RUNTIME.LIBRARY.EXCEPTION
@@ -290,6 +287,8 @@ package_gcc-ada-multilib()
make -j1 DESTDIR=${pkgdir} INSTALL="install" \
INSTALL_DATA="install -m644" install-gnatlib
+ ln -s gcc ${pkgdir}/usr/bin/gnatgcc
+
# Install Runtime Library Exception
install -Dm644 ${_basedir}/COPYING.RUNTIME \
${pkgdir}/usr/share/licenses/gcc-ada-multilib/RUNTIME.LIBRARY.EXCEPTION
diff --git a/multilib/gcc-multilib/gcc-4.7.0-cloog-0.17.patch b/multilib/gcc-multilib/gcc-4.7.0-cloog-0.17.patch
new file mode 100644
index 000000000..c7146fa04
--- /dev/null
+++ b/multilib/gcc-multilib/gcc-4.7.0-cloog-0.17.patch
@@ -0,0 +1,24 @@
+diff -Naur gcc-4.6-20120120-orig/configure gcc-4.6-20120120/configure
+--- gcc-4.6-20120120-orig/configure 2011-12-18 20:03:44.000000000 +1000
++++ gcc-4.6-20120120/configure 2012-02-03 17:55:14.885990135 +1000
+@@ -6049,8 +6049,8 @@
+ LDFLAGS="${_cloog_saved_LDFLAGS} ${clooglibs} ${ppllibs}"
+
+ if test "${cloog_org}" = yes ; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.16.1 of CLooG" >&5
+-$as_echo_n "checking for version 0.16.1 of CLooG... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.17 of CLooG" >&5
++$as_echo_n "checking for version 0.17 of CLooG... " >&6; }
+ if test "${gcc_cv_cloog_ct_0_14_0+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+ else
+@@ -6061,8 +6061,7 @@
+ main ()
+ {
+ #if CLOOG_VERSION_MAJOR != 0 \
+- || CLOOG_VERSION_MINOR != 16 \
+- || CLOOG_VERSION_REVISION < 1
++ || CLOOG_VERSION_MINOR != 17
+ choke me
+ #endif
+ ;
diff --git a/multilib/gcc-multilib/gcc_pure64-multilib.patch b/multilib/gcc-multilib/gcc_pure64-multilib.patch
index 73df6b873..b5576ae0e 100644
--- a/multilib/gcc-multilib/gcc_pure64-multilib.patch
+++ b/multilib/gcc-multilib/gcc_pure64-multilib.patch
@@ -1,24 +1,22 @@
-diff -u -r gcc-4.6-20111223/gcc/config/i386/linux64.h gcc-4.6-20111223-pure64/gcc/config/i386/linux64.h
---- gcc-4.6-20111223/gcc/config/i386/linux64.h 2011-09-08 11:12:35.000000000 +0200
-+++ gcc-4.6-20111223-pure64/gcc/config/i386/linux64.h 2012-01-14 19:52:33.688573352 +0100
-@@ -63,7 +63,7 @@
- done. */
+diff -u -r gcc-4.7.0/gcc/config/i386/linux64.h gcc-4.7.0-pure64/gcc/config/i386/linux64.h
+--- gcc-4.7.0/gcc/config/i386/linux64.h 2011-07-07 17:38:34.000000000 +0200
++++ gcc-4.7.0-pure64/gcc/config/i386/linux64.h 2012-03-24 11:52:58.926204014 +0100
+@@ -29,5 +29,5 @@
+ #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2"
-
- #if TARGET_64BIT_DEFAULT
- #define SPEC_32 "m32"
-diff -u -r gcc-4.6-20111223/gcc/config/i386/t-linux64 gcc-4.6-20111223-pure64/gcc/config/i386/t-linux64
---- gcc-4.6-20111223/gcc/config/i386/t-linux64 2009-04-21 21:03:23.000000000 +0200
-+++ gcc-4.6-20111223-pure64/gcc/config/i386/t-linux64 2012-01-14 19:50:27.346242617 +0100
-@@ -25,7 +25,7 @@
-
- MULTILIB_OPTIONS = m64/m32
- MULTILIB_DIRNAMES = 64 32
--MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
-+MULTILIB_OSDIRNAMES = ../lib ../lib32
-
- LIBGCC = stmp-multilib
- INSTALL_LIBGCC = install-multilib
+ #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
+diff -u -r gcc-4.7.0/gcc/config/i386/t-linux64 gcc-4.7.0-pure64/gcc/config/i386/t-linux64
+--- gcc-4.7.0/gcc/config/i386/t-linux64 2011-11-02 16:23:48.000000000 +0100
++++ gcc-4.7.0-pure64/gcc/config/i386/t-linux64 2012-03-24 11:52:44.119651885 +0100
+@@ -34,6 +34,6 @@
+ comma=,
+ MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
+ MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
+-MULTILIB_OSDIRNAMES = m64=../lib64
+-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
++MULTILIB_OSDIRNAMES = m64=../lib
++MULTILIB_OSDIRNAMES+= m32=../lib32
+ MULTILIB_OSDIRNAMES+= mx32=../libx32
diff --git a/multilib/lib32-glibc/PKGBUILD b/multilib/lib32-glibc/PKGBUILD
index b260cafd4..cf034c7d9 100644
--- a/multilib/lib32-glibc/PKGBUILD
+++ b/multilib/lib32-glibc/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 67033 2012-03-03 08:49:11Z allan $
+# $Id: PKGBUILD 68827 2012-04-03 11:11:51Z allan $
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Jan de Groot <jgc@archlinux.org>
# Contributor: Allan McRae <allan@archlinux.org>
@@ -9,7 +9,7 @@
_pkgbasename=glibc
pkgname=lib32-$_pkgbasename
pkgver=2.15
-pkgrel=7
+pkgrel=10
_glibcdate=20111227
pkgdesc="GNU C Library for multilib"
arch=('x86_64')
@@ -19,7 +19,8 @@ depends=("glibc>=$pkgver")
makedepends=('gcc-multilib>=4.6')
options=('!strip' '!emptydirs')
source=(ftp://ftp.archlinux.org/other/glibc/${_pkgbasename}-${pkgver}_${_glibcdate}.tar.xz
- glibc-2.10-dont-build-timezone.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.12.2-ignore-origin-of-privileged-program.patch
glibc-2.14-libdl-crash.patch
@@ -46,10 +47,12 @@ source=(ftp://ftp.archlinux.org/other/glibc/${_pkgbasename}-${pkgver}_${_glibcda
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
lib32-glibc.conf)
md5sums=('6ffdf5832192b92f98bdd125317c0dfc'
- '4dadb9203b69a3210d53514bb46f41c3'
- '40cd342e21f71f5e49e32622b25acc52'
+ '7ef69c530a15106de93e4de2df2d393e'
+ 'b6c619e5cf91829a15ce34dccef676d5'
+ 'addfddd648a4bf832eb126aba944ebae'
'e60e33591c9ec1447e4cddadcbb9cf3a'
'6970bcfeb3bf88913436d5112d16f588'
'c5de2a946215d647c8af5432ec4b0da0'
@@ -69,23 +72,26 @@ md5sums=('6ffdf5832192b92f98bdd125317c0dfc'
'7a2998a04ebfcf8bf820540f490ce714'
'0d77d20fa7fe2f87ad945cb9edb4d91d'
'bfdefac3d705f41fbf84b1de1dc945af'
- 'dded423e264cdd178500f3e8ad62fe66'
+ '3443e89c1e98089cd6c3e3c23f0c3d85'
'340deaa582a95ddde86edb624c3bfea0'
'6bbac50e6ff82187654e6a0a7bd849e7'
'c483504cf404ed0b44480af627813a97'
'1419d61fd1dbc6cdc48bb59da86fa66f'
'7ff501435078b1a2622124fbeaafc921'
+ '8d1023a51e0932681b46440d5f8551ee'
'6e052f1cb693d5d3203f50f9d4e8c33b')
build() {
cd ${srcdir}/glibc
# timezone data is in separate package (tzdata)
- patch -p1 -i ${srcdir}/glibc-2.10-dont-build-timezone.patch
+ # 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 for gcc <= 4.6
- # http://sourceware.org/ml/libc-alpha/2009-07/msg00072.html
- # fix in http://sourceware.org/git/?p=glibc.git;a=commit;h=d4a54ac6 requires additional backporting...
+ # undefine __i686
+ # http://sourceware.org/glibc/wiki/Release/2.15#Build_Failures
patch -p1 -i ${srcdir}/glibc-__i686.patch
# http://www.exploit-db.com/exploits/15274/
@@ -98,9 +104,9 @@ build() {
# 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 -Np1 -i ${srcdir}/glibc-2.14-reexport-rpc-interface.patch
+ 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 -Np1 -i ${srcdir}/glibc-2.14-reinstall-nis-rpc-headers.patch
+ patch -p1 -i ${srcdir}/glibc-2.14-reinstall-nis-rpc-headers.patch
# fix res_query assertion
# http://sourceware.org/bugzilla/show_bug.cgi?id=13013
@@ -108,25 +114,25 @@ build() {
# fix up regcomp/regexec
# http://sourceware.org/git/?p=glibc.git;a=commit;h=2ba92745
- patch -Np1 -i ${srcdir}/glibc-2.15-regex.patch
+ 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 -Np1 -i ${srcdir}/glibc-2.15-lddebug-scopes.patch
+ 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
- patch -Np1 -i ${srcdir}/glibc-2.15-revert-c5a0802a.patch
+ 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 -Np1 -i ${srcdir}/glibc-2.15-scanf.patch
+ patch -p1 -i ${srcdir}/glibc-2.15-scanf.patch
# fix ifunc relocations
# http://sourceware.org/git/?p=glibc.git;a=commit;h=6ee65ed6
- patch -Np1 -i ${srcdir}/glibc-2.15-ifunc.patch
+ patch -p1 -i ${srcdir}/glibc-2.15-ifunc.patch
# fix AVX detection
# http://sourceware.org/git/?p=glibc.git;a=commit;h=afc5ed09
@@ -167,8 +173,7 @@ build() {
patch -p1 -i ${srcdir}/glibc-2.15-feraiseexcept-plt.patch
# vfprintf nargs overflow - CVE-2012-0864
- # http://sourceware.org/bugzilla/show_bug.cgi?id=13656
- # http://sourceware.org/ml/libc-alpha/2012-02/msg00328.html
+ # 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
@@ -191,6 +196,11 @@ build() {
# 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
+
cd ${srcdir}
mkdir glibc-build
cd glibc-build
@@ -198,6 +208,7 @@ build() {
export CC="gcc -m32"
# 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"
echo "slibdir=/usr/lib32" >> configparms
diff --git a/multilib/lib32-glibc/glibc-2.15-confstr-local-buffer-extent.patch b/multilib/lib32-glibc/glibc-2.15-confstr-local-buffer-extent.patch
new file mode 100644
index 000000000..483b28532
--- /dev/null
+++ b/multilib/lib32-glibc/glibc-2.15-confstr-local-buffer-extent.patch
@@ -0,0 +1,297 @@
+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:
diff --git a/multilib/lib32-glibc/glibc-2.15-do-not-install-timezone-files-2.patch b/multilib/lib32-glibc/glibc-2.15-do-not-install-timezone-files-2.patch
new file mode 100644
index 000000000..d28237f85
--- /dev/null
+++ b/multilib/lib32-glibc/glibc-2.15-do-not-install-timezone-files-2.patch
@@ -0,0 +1,20 @@
+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)
diff --git a/multilib/lib32-glibc/glibc-2.15-do-not-install-timezone-files.patch b/multilib/lib32-glibc/glibc-2.15-do-not-install-timezone-files.patch
new file mode 100644
index 000000000..e4f29bc1a
--- /dev/null
+++ b/multilib/lib32-glibc/glibc-2.15-do-not-install-timezone-files.patch
@@ -0,0 +1,124 @@
+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)"' \
diff --git a/multilib/lib32-glibc/glibc-2.15-vfprintf-nargs.patch b/multilib/lib32-glibc/glibc-2.15-vfprintf-nargs.patch
index 6a37bde68..f8dde53f5 100644
--- a/multilib/lib32-glibc/glibc-2.15-vfprintf-nargs.patch
+++ b/multilib/lib32-glibc/glibc-2.15-vfprintf-nargs.patch
@@ -97,7 +97,7 @@ index 0000000..13c66c0
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
-index 863cd5d..022e72b 100644
+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)
@@ -123,22 +123,26 @@ index 863cd5d..022e72b 100644
/* Positional parameters refer to arguments directly. This could
also determine the maximum number of arguments. Track the
-@@ -1698,13 +1702,33 @@ do_positional:
+@@ -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 (nargs > SIZE_MAX / bytes_per_arg)
++ if (__builtin_expect (nargs > SIZE_MAX / bytes_per_arg, 0))
+ {
++ __set_errno (ERANGE);
+ done = -1;
+ goto all_done;
+ }
- /* Allocate memory for the argument descriptions. */
+- /* 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
@@ -151,6 +155,8 @@ index 863cd5d..022e72b 100644
+ }
+ }
+
++ /* 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',
@@ -161,7 +167,7 @@ index 863cd5d..022e72b 100644
/* 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 +1997,8 @@ do_positional:
+@@ -1973,8 +2002,8 @@ do_positional:
}
all_done:
diff --git a/multilib/lib32-glibc/glibc-__i686.patch b/multilib/lib32-glibc/glibc-__i686.patch
index 28d5dd424..16f84c536 100644
--- a/multilib/lib32-glibc/glibc-__i686.patch
+++ b/multilib/lib32-glibc/glibc-__i686.patch
@@ -1,13 +1,31 @@
-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
+diff --git a/nptl/sysdeps/pthread/pt-initfini.c b/nptl/sysdeps/pthread/pt-initfini.c
+index 9c00dc0..f5d4df8 100644
+--- a/nptl/sysdeps/pthread/pt-initfini.c
++++ b/nptl/sysdeps/pthread/pt-initfini.c
+@@ -45,6 +45,11 @@
+ /* Embed an #include to pull in the alignment and .end directives. */
+ asm ("\n#include \"defs.h\"");
+
++asm ("\n#if defined __i686 && defined __ASSEMBLER__");
++asm ("\n#undef __i686");
++asm ("\n#define __i686 __i686");
++asm ("\n#endif");
++
+ /* The initial common code ends here. */
+ asm ("\n/*@HEADER_ENDS*/");
+
+diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
+index 64ef400..726b1df 100644
+--- a/sysdeps/unix/sysv/linux/i386/sysdep.h
++++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
+@@ -29,6 +29,10 @@
+ #include <dl-sysdep.h>
+ #include <tls.h>
+
++#if defined __i686 && defined __ASSEMBLER__
++#undef __i686
++#define __i686 __i686
++#endif
+
+ /* For Linux we can use the system call table in the header file
+ /usr/include/asm/unistd.h
diff --git a/multilib/libtool-multilib/PKGBUILD b/multilib/libtool-multilib/PKGBUILD
index ebcb12a35..39430b959 100644
--- a/multilib/libtool-multilib/PKGBUILD
+++ b/multilib/libtool-multilib/PKGBUILD
@@ -1,5 +1,5 @@
-# $Id: PKGBUILD 67118 2012-03-04 15:55:22Z allan $
-# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# $Id: PKGBUILD 68828 2012-04-03 11:11:54Z allan $
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: judd <jvinet@zeroflux.org>
@@ -8,12 +8,12 @@
pkgbase=libtool-multilib
pkgname=(libtool-multilib lib32-libltdl)
pkgver=2.4.2
-pkgrel=4
+pkgrel=5
pkgdesc="A generic library support script for multilib"
arch=('x86_64')
url="http://www.gnu.org/software/libtool"
license=('GPL')
-_gccver=4.6.3
+_gccver=4.7.0
makedepends=("gcc-multilib=$_gccver")
options=('!libtool')
source=(ftp://ftp.gnu.org/pub/gnu/libtool/libtool-${pkgver}.tar.xz{,.sig})