diff --git a/srcpkgs/cross-i686-pc-linux-gnu/files/fix-glibc-2.26.patch b/srcpkgs/cross-i686-pc-linux-gnu/files/fix-glibc-2.26.patch
new file mode 120000
index 00000000000..3f1aa57333c
--- /dev/null
+++ b/srcpkgs/cross-i686-pc-linux-gnu/files/fix-glibc-2.26.patch
@@ -0,0 +1 @@
+../../gcc/patches/fix-glibc-2.26.patch
\ No newline at end of file
diff --git a/srcpkgs/cross-i686-pc-linux-gnu/template b/srcpkgs/cross-i686-pc-linux-gnu/template
index c23704ac0cc..0efa59ed8e7 100644
--- a/srcpkgs/cross-i686-pc-linux-gnu/template
+++ b/srcpkgs/cross-i686-pc-linux-gnu/template
@@ -1,8 +1,8 @@
 # Template build file for 'cross-i686-pc-linux-gnu'
 #
-_binutils_version=2.28
+_binutils_version=2.29
 _gcc_version=6.3.0
-_glibc_version=2.25
+_glibc_version=2.26
 _linux_version=4.9.8
 
 _triplet=i686-pc-linux-gnu
@@ -11,7 +11,7 @@ _sysroot="/usr/${_triplet}"
 
 pkgname=cross-${_triplet}
 version=0.23
-revision=2
+revision=3
 short_desc="GNU Cross toolchain for the ${_triplet} target (binutils/gcc/glibc)"
 maintainer="Juan RP <xtraeme@voidlinux.eu>"
 homepage="http://www.voidlinux.eu"
@@ -22,9 +22,9 @@ distfiles="
  ${GNU_SITE}/glibc/glibc-${_glibc_version}.tar.xz
  ${KERNEL_SITE}/kernel/v4.x/linux-${_linux_version}.tar.xz"
 checksum="
- 6297433ee120b11b4b0a1c8f3512d7d73501753142ab9e2daa13c5a3edd32a72
+ 29a29549869039aad75fdf507ac30366da5ad0b974fbff4a8e7148dbf4f40ebf
  f06ae7f3f790fbf0f018f6d40e844451e6bc3b7bc96e128e63b09825c1f8b29f
- 067bd9bb3390e79aa45911537d13c3721f1d9d3769931a30c2681bfee66f23a0
+ e54e0a934cd2bc94429be79da5e9385898d2306b9eaf3c92d5a77af96190f6bd
  150bb7f2dd4849b5d21b8ccd8d05294a48229e1fcb93a22e7b806a79ec0b0e45"
 
 only_for_archs="armv6l armv7l x86_64"
@@ -48,6 +48,8 @@ _apply_patch() {
 }
 
 _binutils_build() {
+	local _args
+
 	[ -f ${wrksrc}/.binutils_build_done ] && return 0
 
 	cd ${wrksrc}/binutils-${_binutils_version}
@@ -56,11 +58,16 @@ _binutils_build() {
 
 	[ ! -d ../binutils-build ] && mkdir ../binutils-build
 	cd ../binutils-build
+	_args="--prefix=/usr"
+	_args+=" --target=${_triplet}"
+	_args+=" --with-sysroot=${_sysroot}"
+	_args+=" --disable-nls"
+	_args+=" --disable-shared"
+	_args+=" --disable-multilib"
+	_args+=" --disable-werror"
+	_args+=" --with-system-zlib"
 
-	../binutils-${_binutils_version}/configure \
-		--prefix=/usr --target=${_triplet} \
-		--with-sysroot=${_sysroot} --disable-nls --disable-shared \
-		--disable-multilib --disable-werror
+	../binutils-${_binutils_version}/configure ${_args}
 
 	make configure-host && make ${makejobs}
 	make install
@@ -75,6 +82,7 @@ _gcc_bootstrap() {
 	cd ${wrksrc}/gcc-${_gcc_version}
 	_apply_patch -p0 ${FILESDIR}/libcpp-source_date_epoch.patch
 	_apply_patch -p0 ${FILESDIR}/fix-cxxflags-passing.patch
+	_apply_patch -p0 ${FILESDIR}/fix-glibc-2.26.patch
 
 	msg_normal "Building cross gcc bootstrap\n"
 
@@ -294,6 +302,9 @@ do_install() {
 	cd ${wrksrc}/gcc-build
 	make DESTDIR=${DESTDIR} install
 
+	# move libcc1.so* to the sysroot
+	mv ${DESTDIR}/usr/lib/libcc1.so* ${DESTDIR}/${_sysroot}/usr/lib
+
 	# install linux API headers for x86.
 	cd ${wrksrc}/linux-${_linux_version}
 	make ARCH=x86 INSTALL_HDR_PATH=${DESTDIR}/${_sysroot}/usr headers_install