Make uClibc (mostly) compatible with the Chromium setuid sandbox (b/24530000)

When in setuid mode, Chromium needs dlopen() to not call into open(),
close(), etc, as these will fail. It assumes instead that the libc will
cache loaded libraries by libname and return early if they match. This
patch adds that behavior to uClibc. For safety, I deal only with
absolute filepaths, since this avoids any concerns about false-positives
from relative filepaths.

There could still be a false-positive match if you did (pseudo-code);

dlopen("/libfoo.so");
move("/libbar.so", "/libfoo.so"); // overwrite libfoo.so
dlopen("/libfoo.so");

But that fails my three basic checks of:

  1. We have a read-only filesystem so it can't really happen.
  2. It fails under glibc anyway (they cache on filename!)
  3. It's insane, and you shouldn't be doing that.

Change-Id: I77e4c0084f3d669b8134f0e08c9211066dc0ebf2
diff --git a/Build.Info/0007-dlopen-use-libname-cache.patch b/Build.Info/0007-dlopen-use-libname-cache.patch
new file mode 100644
index 0000000..7dcb1a0
--- /dev/null
+++ b/Build.Info/0007-dlopen-use-libname-cache.patch
@@ -0,0 +1,48 @@
+From 4b8557ec7a4207a46bcac062c857066e1909ce33 Mon Sep 17 00:00:00 2001
+From: Stephen McGruer <smcgruer@google.com>
+Date: Thu, 29 Oct 2015 18:04:30 -0400
+Subject: [PATCH] dlopen: use libname cache before _dl_open-ing files
+
+---
+ .../uclibc-0071-dlopen-use-libname-cache.patch     | 29 ++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+ create mode 100644 package/uclibc/0.9.33.2/uclibc-0071-dlopen-use-libname-cache.patch
+
+diff --git a/package/uclibc/0.9.33.2/uclibc-0071-dlopen-use-libname-cache.patch b/package/uclibc/0.9.33.2/uclibc-0071-dlopen-use-libname-cache.patch
+new file mode 100644
+index 0000000..5d295cf
+--- /dev/null
++++ b/package/uclibc/0.9.33.2/uclibc-0071-dlopen-use-libname-cache.patch
+@@ -0,0 +1,29 @@
++commit d0b1894a40fff961c44a2e44840882e5e9048abf
++Author: Stephen McGruer <smcgruer@google.com>
++Date:   Thu Oct 29 17:50:44 2015 -0400
++
++    [PATCH] dlopen: use libname cache before _dl_open-ing files
++
++diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c
++index 5631905..282a645 100644
++--- a/ldso/ldso/dl-elf.c
+++++ b/ldso/ldso/dl-elf.c
++@@ -465,6 +465,18 @@ struct elf_resolve *_dl_load_elf_shared_library(unsigned rflags,
++	DL_LOADADDR_TYPE lib_loadaddr;
++	DL_INIT_LOADADDR_EXTRA_DECLS
++ 
+++	/* We can easily pre-check for already loaded absolute-path libraries. */
+++	/* TODO(smcgruer): Determine if we can handle non-absolute paths. */
+++	if (_dl_strlen(libname) && libname[0] == '/') {
+++		for (tpnt = _dl_loaded_modules; tpnt; tpnt = tpnt->next) {
+++			if (_dl_strcmp(tpnt->libname, libname) == 0) {
+++				/* Already loaded */
+++				tpnt->usage_count++;
+++				return tpnt;
+++			}
+++		}
+++	}
+++
++	libaddr = 0;
++	infile = _dl_open(libname, O_RDONLY, 0);
++	if (infile < 0) {
+-- 
+2.6.0.rc2.230.g3dd15c0
+
diff --git a/bin/ldconfig b/bin/ldconfig
index e73d311..6a6d428 100755
--- a/bin/ldconfig
+++ b/bin/ldconfig
Binary files differ
diff --git a/bin/ldd b/bin/ldd
index 23dc709..c3cddf0 100755
--- a/bin/ldd
+++ b/bin/ldd
Binary files differ
diff --git a/bin/m4 b/bin/m4
index 33866d6..bddbc3d 100755
--- a/bin/m4
+++ b/bin/m4
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-addr2line b/bin/mipsel-buildroot-linux-uclibc-addr2line
index 23cc66f..0296eb1 100755
--- a/bin/mipsel-buildroot-linux-uclibc-addr2line
+++ b/bin/mipsel-buildroot-linux-uclibc-addr2line
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-ar b/bin/mipsel-buildroot-linux-uclibc-ar
index 03e5e3a..ad76ebb 100755
--- a/bin/mipsel-buildroot-linux-uclibc-ar
+++ b/bin/mipsel-buildroot-linux-uclibc-ar
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-as b/bin/mipsel-buildroot-linux-uclibc-as
index 31188f4..b6487f9 100755
--- a/bin/mipsel-buildroot-linux-uclibc-as
+++ b/bin/mipsel-buildroot-linux-uclibc-as
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-c++ b/bin/mipsel-buildroot-linux-uclibc-c++
index 2cedd56..0ca860a 100755
--- a/bin/mipsel-buildroot-linux-uclibc-c++
+++ b/bin/mipsel-buildroot-linux-uclibc-c++
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-c++filt b/bin/mipsel-buildroot-linux-uclibc-c++filt
index 98d94e3..84553e3 100755
--- a/bin/mipsel-buildroot-linux-uclibc-c++filt
+++ b/bin/mipsel-buildroot-linux-uclibc-c++filt
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-cpp b/bin/mipsel-buildroot-linux-uclibc-cpp
index 89015f2..3e78e4a 100755
--- a/bin/mipsel-buildroot-linux-uclibc-cpp
+++ b/bin/mipsel-buildroot-linux-uclibc-cpp
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-elfedit b/bin/mipsel-buildroot-linux-uclibc-elfedit
index 63c7770..b997442 100755
--- a/bin/mipsel-buildroot-linux-uclibc-elfedit
+++ b/bin/mipsel-buildroot-linux-uclibc-elfedit
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-g++ b/bin/mipsel-buildroot-linux-uclibc-g++
index 2cedd56..0ca860a 100755
--- a/bin/mipsel-buildroot-linux-uclibc-g++
+++ b/bin/mipsel-buildroot-linux-uclibc-g++
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc b/bin/mipsel-buildroot-linux-uclibc-gcc
index 36cdc5d..8df351a 100755
--- a/bin/mipsel-buildroot-linux-uclibc-gcc
+++ b/bin/mipsel-buildroot-linux-uclibc-gcc
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc-4.9.1 b/bin/mipsel-buildroot-linux-uclibc-gcc-4.9.1
index 36cdc5d..8df351a 100755
--- a/bin/mipsel-buildroot-linux-uclibc-gcc-4.9.1
+++ b/bin/mipsel-buildroot-linux-uclibc-gcc-4.9.1
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc-ar b/bin/mipsel-buildroot-linux-uclibc-gcc-ar
index 711a583..ffc9855 100755
--- a/bin/mipsel-buildroot-linux-uclibc-gcc-ar
+++ b/bin/mipsel-buildroot-linux-uclibc-gcc-ar
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc-nm b/bin/mipsel-buildroot-linux-uclibc-gcc-nm
index 15835de..8608dba 100755
--- a/bin/mipsel-buildroot-linux-uclibc-gcc-nm
+++ b/bin/mipsel-buildroot-linux-uclibc-gcc-nm
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcc-ranlib b/bin/mipsel-buildroot-linux-uclibc-gcc-ranlib
index 58a7e14..d6f74b3 100755
--- a/bin/mipsel-buildroot-linux-uclibc-gcc-ranlib
+++ b/bin/mipsel-buildroot-linux-uclibc-gcc-ranlib
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gcov b/bin/mipsel-buildroot-linux-uclibc-gcov
index 335ae76..ea66a87 100755
--- a/bin/mipsel-buildroot-linux-uclibc-gcov
+++ b/bin/mipsel-buildroot-linux-uclibc-gcov
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-gprof b/bin/mipsel-buildroot-linux-uclibc-gprof
index 404297c..d824c46 100755
--- a/bin/mipsel-buildroot-linux-uclibc-gprof
+++ b/bin/mipsel-buildroot-linux-uclibc-gprof
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-ld b/bin/mipsel-buildroot-linux-uclibc-ld
index 885a43c..1a0d26d 100755
--- a/bin/mipsel-buildroot-linux-uclibc-ld
+++ b/bin/mipsel-buildroot-linux-uclibc-ld
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-ld.bfd b/bin/mipsel-buildroot-linux-uclibc-ld.bfd
index 885a43c..1a0d26d 100755
--- a/bin/mipsel-buildroot-linux-uclibc-ld.bfd
+++ b/bin/mipsel-buildroot-linux-uclibc-ld.bfd
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-nm b/bin/mipsel-buildroot-linux-uclibc-nm
index 1a18529..d7b8930 100755
--- a/bin/mipsel-buildroot-linux-uclibc-nm
+++ b/bin/mipsel-buildroot-linux-uclibc-nm
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-objcopy b/bin/mipsel-buildroot-linux-uclibc-objcopy
index afd3940..b40bbae 100755
--- a/bin/mipsel-buildroot-linux-uclibc-objcopy
+++ b/bin/mipsel-buildroot-linux-uclibc-objcopy
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-objdump b/bin/mipsel-buildroot-linux-uclibc-objdump
index dcd501f..2b0a6d4 100755
--- a/bin/mipsel-buildroot-linux-uclibc-objdump
+++ b/bin/mipsel-buildroot-linux-uclibc-objdump
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-ranlib b/bin/mipsel-buildroot-linux-uclibc-ranlib
index 6f8bc64..3d74d70 100755
--- a/bin/mipsel-buildroot-linux-uclibc-ranlib
+++ b/bin/mipsel-buildroot-linux-uclibc-ranlib
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-readelf b/bin/mipsel-buildroot-linux-uclibc-readelf
index 22b7257..560e7f7 100755
--- a/bin/mipsel-buildroot-linux-uclibc-readelf
+++ b/bin/mipsel-buildroot-linux-uclibc-readelf
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-size b/bin/mipsel-buildroot-linux-uclibc-size
index d797465..432aba4 100755
--- a/bin/mipsel-buildroot-linux-uclibc-size
+++ b/bin/mipsel-buildroot-linux-uclibc-size
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-strings b/bin/mipsel-buildroot-linux-uclibc-strings
index 591b21d..72fec02 100755
--- a/bin/mipsel-buildroot-linux-uclibc-strings
+++ b/bin/mipsel-buildroot-linux-uclibc-strings
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-strip b/bin/mipsel-buildroot-linux-uclibc-strip
index 2bcf088..12c6600 100755
--- a/bin/mipsel-buildroot-linux-uclibc-strip
+++ b/bin/mipsel-buildroot-linux-uclibc-strip
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbegin.o b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbegin.o
index ed905c1..7fccc14 100644
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbegin.o
+++ b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbegin.o
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginS.o b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginS.o
index f22b6ac..5ad10ce 100644
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginS.o
+++ b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginS.o
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginT.o b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginT.o
index 23d0528..7e40dda 100644
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginT.o
+++ b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtbeginT.o
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtend.o b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtend.o
index c8196e9..741a6e8 100644
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtend.o
+++ b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtend.o
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtendS.o b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtendS.o
index 8601689..a960bd2 100644
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtendS.o
+++ b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtendS.o
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtfastmath.o b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtfastmath.o
index e234b22..d8e4d10 100644
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtfastmath.o
+++ b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/crtfastmath.o
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc.a b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc.a
index 7316c65..0727c18 100644
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc.a
+++ b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc.a
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc_eh.a b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc_eh.a
index b43cabd..c01203d 100644
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc_eh.a
+++ b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcc_eh.a
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcov.a b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcov.a
index 1f1d5b0..5817c16 100644
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcov.a
+++ b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/libgcov.a
Binary files differ
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/include/configargs.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/include/configargs.h
index 6ad7d94..2ac4b88 100644
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/include/configargs.h
+++ b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/include/configargs.h
@@ -1,5 +1,5 @@
 /* Generated automatically. */
-static const char configuration_arguments[] = "./configure --prefix=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr --sysconfdir=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/etc --enable-static --target=mipsel-buildroot-linux-uclibc --with-sysroot=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib --with-gmp=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr --with-mpfr=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr --enable-target-optspace --disable-libsanitizer --enable-tls --disable-libmudflap --enable-threads --with-mpc=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr --without-isl --without-cloog --disable-decimal-float --with-arch=mips32 --with-abi=32 --with-pkgversion='Buildroot 2014.11-git-00441-g8145422' --with-bugurl=http://bugs.buildroot.net/ --enable-languages=c,c++ --with-build-time-tools=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/bin --enable-shared --disable-libgomp";
+static const char configuration_arguments[] = "./configure --prefix=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr --sysconfdir=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/etc --enable-static --target=mipsel-buildroot-linux-uclibc --with-sysroot=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/sysroot --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib --with-gmp=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr --with-mpfr=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr --enable-target-optspace --disable-libsanitizer --enable-tls --disable-libmudflap --enable-threads --with-mpc=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr --without-isl --without-cloog --disable-decimal-float --with-arch=mips32 --with-abi=32 --with-pkgversion='Buildroot 2014.11-git-00434-gb354417-dirty' --with-bugurl=http://bugs.buildroot.net/ --enable-languages=c,c++ --with-build-time-tools=/usr/local/google/home/smcgruer/Desktop/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/bin --enable-shared --disable-libgomp";
 static const char thread_model[] = "posix";
 
 static const struct {
diff --git a/lib/libgmp.a b/lib/libgmp.a
index 556e0e5..4f8b54e 100644
--- a/lib/libgmp.a
+++ b/lib/libgmp.a
Binary files differ
diff --git a/lib/libiberty.a b/lib/libiberty.a
index 3dd7045..5d91062 100644
--- a/lib/libiberty.a
+++ b/lib/libiberty.a
Binary files differ
diff --git a/lib/libmpc.a b/lib/libmpc.a
index e2b78b6..0bac6e7 100644
--- a/lib/libmpc.a
+++ b/lib/libmpc.a
Binary files differ
diff --git a/lib/libmpfr.a b/lib/libmpfr.a
index d362e70..c8fcf11 100644
--- a/lib/libmpfr.a
+++ b/lib/libmpfr.a
Binary files differ
diff --git a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/cc1 b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/cc1
index 0bc5cd4..12f1b8d 100755
--- a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/cc1
+++ b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/cc1
Binary files differ
diff --git a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/cc1plus b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/cc1plus
index 9e3eda4..38fd7f6 100755
--- a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/cc1plus
+++ b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/cc1plus
Binary files differ
diff --git a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/collect2 b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/collect2
index 202c105..431e645 100755
--- a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/collect2
+++ b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/collect2
Binary files differ
diff --git a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/install-tools/fixincl b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/install-tools/fixincl
index c6c7a1a..fbf4fb3 100755
--- a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/install-tools/fixincl
+++ b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/install-tools/fixincl
Binary files differ
diff --git a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/liblto_plugin.so.0.0.0 b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/liblto_plugin.so.0.0.0
index 8bfd7fe..a95fe12 100755
--- a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/liblto_plugin.so.0.0.0
+++ b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/liblto_plugin.so.0.0.0
Binary files differ
diff --git a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/lto-wrapper b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/lto-wrapper
index 492a018..a87f2b0 100755
--- a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/lto-wrapper
+++ b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/lto-wrapper
Binary files differ
diff --git a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/lto1 b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/lto1
index 7b7c90b..7d091e1 100755
--- a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/lto1
+++ b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/lto1
Binary files differ
diff --git a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/gengtype b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/gengtype
index 390b2c7..3a73250 100755
--- a/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/gengtype
+++ b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/gengtype
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/bin/ar b/mipsel-buildroot-linux-uclibc/bin/ar
index 03e5e3a..ad76ebb 100755
--- a/mipsel-buildroot-linux-uclibc/bin/ar
+++ b/mipsel-buildroot-linux-uclibc/bin/ar
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/bin/as b/mipsel-buildroot-linux-uclibc/bin/as
index 31188f4..b6487f9 100755
--- a/mipsel-buildroot-linux-uclibc/bin/as
+++ b/mipsel-buildroot-linux-uclibc/bin/as
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/bin/ld b/mipsel-buildroot-linux-uclibc/bin/ld
index 885a43c..1a0d26d 100755
--- a/mipsel-buildroot-linux-uclibc/bin/ld
+++ b/mipsel-buildroot-linux-uclibc/bin/ld
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/bin/ld.bfd b/mipsel-buildroot-linux-uclibc/bin/ld.bfd
index 885a43c..1a0d26d 100755
--- a/mipsel-buildroot-linux-uclibc/bin/ld.bfd
+++ b/mipsel-buildroot-linux-uclibc/bin/ld.bfd
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/bin/nm b/mipsel-buildroot-linux-uclibc/bin/nm
index 1a18529..d7b8930 100755
--- a/mipsel-buildroot-linux-uclibc/bin/nm
+++ b/mipsel-buildroot-linux-uclibc/bin/nm
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/bin/objcopy b/mipsel-buildroot-linux-uclibc/bin/objcopy
index afd3940..b40bbae 100755
--- a/mipsel-buildroot-linux-uclibc/bin/objcopy
+++ b/mipsel-buildroot-linux-uclibc/bin/objcopy
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/bin/objdump b/mipsel-buildroot-linux-uclibc/bin/objdump
index dcd501f..2b0a6d4 100755
--- a/mipsel-buildroot-linux-uclibc/bin/objdump
+++ b/mipsel-buildroot-linux-uclibc/bin/objdump
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/bin/ranlib b/mipsel-buildroot-linux-uclibc/bin/ranlib
index 6f8bc64..3d74d70 100755
--- a/mipsel-buildroot-linux-uclibc/bin/ranlib
+++ b/mipsel-buildroot-linux-uclibc/bin/ranlib
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/bin/strip b/mipsel-buildroot-linux-uclibc/bin/strip
index 2bcf088..12c6600 100755
--- a/mipsel-buildroot-linux-uclibc/bin/strip
+++ b/mipsel-buildroot-linux-uclibc/bin/strip
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/lib/libatomic.a b/mipsel-buildroot-linux-uclibc/lib/libatomic.a
index 22bbba1..2ac05db 100644
--- a/mipsel-buildroot-linux-uclibc/lib/libatomic.a
+++ b/mipsel-buildroot-linux-uclibc/lib/libatomic.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/lib/libatomic.so.1.1.0 b/mipsel-buildroot-linux-uclibc/lib/libatomic.so.1.1.0
index 6e4fa16..6438a10 100755
--- a/mipsel-buildroot-linux-uclibc/lib/libatomic.so.1.1.0
+++ b/mipsel-buildroot-linux-uclibc/lib/libatomic.so.1.1.0
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/lib/libgcc_s.so.1 b/mipsel-buildroot-linux-uclibc/lib/libgcc_s.so.1
index 2033057..9bbaa46 100644
--- a/mipsel-buildroot-linux-uclibc/lib/libgcc_s.so.1
+++ b/mipsel-buildroot-linux-uclibc/lib/libgcc_s.so.1
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/lib/libstdc++.a b/mipsel-buildroot-linux-uclibc/lib/libstdc++.a
index dcc9912..ee57338 100644
--- a/mipsel-buildroot-linux-uclibc/lib/libstdc++.a
+++ b/mipsel-buildroot-linux-uclibc/lib/libstdc++.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/lib/libstdc++.so.6.0.20 b/mipsel-buildroot-linux-uclibc/lib/libstdc++.so.6.0.20
index b54fb10..5820d0d 100755
--- a/mipsel-buildroot-linux-uclibc/lib/libstdc++.so.6.0.20
+++ b/mipsel-buildroot-linux-uclibc/lib/libstdc++.so.6.0.20
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/lib/libsupc++.a b/mipsel-buildroot-linux-uclibc/lib/libsupc++.a
index 1eceaf5..585fdd3 100644
--- a/mipsel-buildroot-linux-uclibc/lib/libsupc++.a
+++ b/mipsel-buildroot-linux-uclibc/lib/libsupc++.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/lib/ld-uClibc-0.9.33.2.so b/mipsel-buildroot-linux-uclibc/sysroot/lib/ld-uClibc-0.9.33.2.so
index 53f1e6e..168a866 100755
--- a/mipsel-buildroot-linux-uclibc/sysroot/lib/ld-uClibc-0.9.33.2.so
+++ b/mipsel-buildroot-linux-uclibc/sysroot/lib/ld-uClibc-0.9.33.2.so
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/lib/libgcc_s.so.1 b/mipsel-buildroot-linux-uclibc/sysroot/lib/libgcc_s.so.1
index 2033057..9bbaa46 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/lib/libgcc_s.so.1
+++ b/mipsel-buildroot-linux-uclibc/sysroot/lib/libgcc_s.so.1
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/lib/libm-0.9.33.2.so b/mipsel-buildroot-linux-uclibc/sysroot/lib/libm-0.9.33.2.so
index 90c34a7..779548e 100755
--- a/mipsel-buildroot-linux-uclibc/sysroot/lib/libm-0.9.33.2.so
+++ b/mipsel-buildroot-linux-uclibc/sysroot/lib/libm-0.9.33.2.so
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/lib/libpthread-0.9.33.2.so b/mipsel-buildroot-linux-uclibc/sysroot/lib/libpthread-0.9.33.2.so
index 6090872..48c2042 100755
--- a/mipsel-buildroot-linux-uclibc/sysroot/lib/libpthread-0.9.33.2.so
+++ b/mipsel-buildroot-linux-uclibc/sysroot/lib/libpthread-0.9.33.2.so
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/lib/libuClibc-0.9.33.2.so b/mipsel-buildroot-linux-uclibc/sysroot/lib/libuClibc-0.9.33.2.so
index 1b05bc7..ca07880 100755
--- a/mipsel-buildroot-linux-uclibc/sysroot/lib/libuClibc-0.9.33.2.so
+++ b/mipsel-buildroot-linux-uclibc/sysroot/lib/libuClibc-0.9.33.2.so
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/bin/envsubst b/mipsel-buildroot-linux-uclibc/sysroot/usr/bin/envsubst
index eb3fe3a..f761fc2 100755
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/bin/envsubst
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/bin/envsubst
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/bin/gettext b/mipsel-buildroot-linux-uclibc/sysroot/usr/bin/gettext
index 9cc51cc..34163c8 100755
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/bin/gettext
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/bin/gettext
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/bin/ngettext b/mipsel-buildroot-linux-uclibc/sysroot/usr/bin/ngettext
index 52d1807..b063dcc 100755
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/bin/ngettext
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/bin/ngettext
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/include/bits/uClibc_config.h b/mipsel-buildroot-linux-uclibc/sysroot/usr/include/bits/uClibc_config.h
index 7a96acf..ad1b8e5 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/include/bits/uClibc_config.h
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/include/bits/uClibc_config.h
@@ -7,7 +7,7 @@
 #define __UCLIBC_SUBLEVEL__ 33
 /* Automatically generated make config: don't edit */
 /* Version: 0.9.33.2 */
-/* Wed Jun 17 14:43:45 2015 */
+/* Sun Nov  1 10:49:28 2015 */
 #undef __TARGET_alpha__
 #undef __TARGET_arm__
 #undef __TARGET_avr32__
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libc.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libc.a
index 059b612..4ccb5ee 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libc.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libc.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libcrypt.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libcrypt.a
index 58d87f6..b4f4d27 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libcrypt.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libcrypt.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libdl.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libdl.a
index 555b1d2..468810a 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libdl.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libdl.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libintl.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libintl.a
index 6d259fc..ec09674 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libintl.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libintl.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libintl.so.8.1.2 b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libintl.so.8.1.2
index adc7f7b..62fbb1e 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libintl.so.8.1.2
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libintl.so.8.1.2
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libm.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libm.a
index 803600d..3facce0 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libm.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libm.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libnsl.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libnsl.a
index ca45ba9..d0f265c 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libnsl.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libnsl.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpthread.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpthread.a
index 04954a1..31db767 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpthread.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpthread.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpthread_nonshared.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpthread_nonshared.a
index 5eafe26..7272cb5 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpthread_nonshared.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libpthread_nonshared.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libresolv.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libresolv.a
index 70c0abe..753ea3b 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libresolv.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libresolv.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/librt.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/librt.a
index ff94974..33d7c7d 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/librt.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/librt.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libstdc++.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libstdc++.a
index dcc9912..ee57338 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libstdc++.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libstdc++.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libstdc++.so.6.0.20 b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libstdc++.so.6.0.20
index b54fb10..5820d0d 100755
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libstdc++.so.6.0.20
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libstdc++.so.6.0.20
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libthread_db.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libthread_db.a
index 1508a40..d4cb24c 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libthread_db.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libthread_db.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libubacktrace.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libubacktrace.a
index c6db527..779f8fb 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libubacktrace.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libubacktrace.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libutil.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libutil.a
index 3263fa4..3581998 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libutil.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libutil.a
Binary files differ
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/uclibc_nonshared.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/uclibc_nonshared.a
index 89560e1..162d424 100644
--- a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/uclibc_nonshared.a
+++ b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/uclibc_nonshared.a
Binary files differ
diff --git a/share/info/dir b/share/info/dir
index 836024b..19a0c8c 100644
--- a/share/info/dir
+++ b/share/info/dir
@@ -57,11 +57,10 @@
 
 Software development
 * As: (as).                     The GNU assembler.
-* Bfd: (bfd).                   The Binary File Descriptor library.
 * Binutils: (binutils).         The GNU binary utilities.
 * Gas: (as).                    The GNU assembler.
 * Ld: (ld).                     The GNU linker.
-* gprof: (gprof).               Profiling your program's execution
+rogram's execution
 
 Software libraries
 * mpfr: (mpfr).                 Multiple Precision Floating-Point Reliable