Enable xsi math functions for webrtc (b/25989577)

Change-Id: I7c12103b78bf1a365b2645e9ba45057c47548ff7
diff --git a/Build.Info/0010-enable-uclibc-xsi-math.patch b/Build.Info/0010-enable-uclibc-xsi-math.patch
new file mode 100644
index 0000000..aa63c9d
--- /dev/null
+++ b/Build.Info/0010-enable-uclibc-xsi-math.patch
@@ -0,0 +1,19 @@
+From 40a111215b69331d3c9d3d9a191df8443c7ad52f Mon Sep 17 00:00:00 2001
+From: Jean-Francois Thibert <jfthibert@google.com>
+Date: Tue, 8 Dec 2015 17:19:44 -0500
+Subject: [PATCH] Enable xsi math to fix build of webrtc (b/25989577)
+
+
+diff --git a/package/uclibc/uClibc-0.9.33.config b/package/uclibc/uClibc-0.9.33.config
+index 6b9d2ed..a84155c 100644
+--- a/package/uclibc/uClibc-0.9.33.config
++++ b/package/uclibc/uClibc-0.9.33.config
+@@ -71,7 +71,7 @@ ARCH_USE_MMU=y
+ UCLIBC_HAS_FLOATS=y
+ UCLIBC_HAS_FPU=y
+ DO_C99_MATH=y
+-# DO_XSI_MATH is not set
++DO_XSI_MATH=y
+ # UCLIBC_HAS_FENV is not set
+ UCLIBC_HAS_LONG_DOUBLE_MATH=y
+ KERNEL_HEADERS="/usr/src/linux/include"
diff --git a/Build.Info/0011-disable-resolv-link-warnings.patch b/Build.Info/0011-disable-resolv-link-warnings.patch
new file mode 100644
index 0000000..2317aac
--- /dev/null
+++ b/Build.Info/0011-disable-resolv-link-warnings.patch
@@ -0,0 +1,25 @@
+From 488146b78fc256b0efdbecf19b6cc6dd9c5b8a7d Mon Sep 17 00:00:00 2001
+From: Jean-Francois Thibert <jfthibert@google.com>
+Date: Wed, 9 Dec 2015 13:43:14 -0500
+Subject: [PATCH] Disable link warnings in uclibc resolv.c
+
+
+diff --git a/package/uclibc/0.9.33.2/uclibc-0073-disable-resolv-link-warnings.patch b/package/uclibc/0.9.33.2/uclibc-0073-disable-resolv-link-warnings.patch
+new file mode 100644
+index 0000000..0bd87e9
+--- /dev/null
++++ b/package/uclibc/0.9.33.2/uclibc-0073-disable-resolv-link-warnings.patch
+@@ -0,0 +1,13 @@
++--- a/libc/inet/resolv.c	2015-12-09 13:39:37.762677867 -0500
+++++ b/libc/inet/resolv.c	2015-12-09 12:41:27.866151199 -0500
++@@ -320,6 +320,10 @@
++ #include <bits/uClibc_mutex.h>
++ #include "internal/parse_config.h"
++ 
+++/* TODO(jfthibert) Patch libraries using deprecated functions */
+++#undef link_warning
+++#define link_warning(A,B)
+++
++ /* poll() is not supported in kernel <= 2.0, therefore if __NR_poll is
++  * not available, we assume an old Linux kernel is in use and we will
++  * use select() instead. */
diff --git a/bin/mipsel-buildroot-linux-uclibc-addr2line b/bin/mipsel-buildroot-linux-uclibc-addr2line
index 2773b52..e0d02e6 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-c++ b/bin/mipsel-buildroot-linux-uclibc-c++
index 556fafd..c482a6d 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 c9dced2..ca1d81b 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 cac4ac7..ad0f6a3 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-dwp b/bin/mipsel-buildroot-linux-uclibc-dwp
new file mode 100755
index 0000000..513d9c1
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-dwp
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-elfedit b/bin/mipsel-buildroot-linux-uclibc-elfedit
index 23a91e1..5421f90 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 556fafd..c482a6d 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 e754d2a..6fcd873 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 e754d2a..6fcd873 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-gprof b/bin/mipsel-buildroot-linux-uclibc-gprof
index 89e5597..22fc3b4 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.gold b/bin/mipsel-buildroot-linux-uclibc-ld.gold
new file mode 100755
index 0000000..c74104b
--- /dev/null
+++ b/bin/mipsel-buildroot-linux-uclibc-ld.gold
Binary files differ
diff --git a/bin/mipsel-buildroot-linux-uclibc-readelf b/bin/mipsel-buildroot-linux-uclibc-readelf
index 8815884..dcf6002 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 0909b91..2c88092 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 59bc764..5bf1204 100755
--- a/bin/mipsel-buildroot-linux-uclibc-strings
+++ b/bin/mipsel-buildroot-linux-uclibc-strings
Binary files differ
diff --git a/bin/mipsel-linux-dwp b/bin/mipsel-linux-dwp
new file mode 120000
index 0000000..de02593
--- /dev/null
+++ b/bin/mipsel-linux-dwp
@@ -0,0 +1 @@
+mipsel-buildroot-linux-uclibc-dwp
\ No newline at end of file
diff --git a/bin/mipsel-linux-ld.gold b/bin/mipsel-linux-ld.gold
new file mode 120000
index 0000000..5b2e722
--- /dev/null
+++ b/bin/mipsel-linux-ld.gold
@@ -0,0 +1 @@
+mipsel-buildroot-linux-uclibc-ld.gold
\ No newline at end of file
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 7fccc14..bddff5e 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 5ad10ce..1d2e1dc 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 7e40dda..d4f3edb 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 741a6e8..ab12521 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 a960bd2..ac9e9be 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 793d4bd..3295c7e 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 cb3dfe1..9bb7b5f 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 a8ea3a2..d615b4b 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 02569f5..ee66b2b 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/auto-host.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/include/auto-host.h
index cf9f0f1..00151eb 100644
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/include/auto-host.h
+++ b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/include/auto-host.h
@@ -444,7 +444,7 @@
 
 /* Define if the assembler understands -mnan=. */
 #ifndef USED_FOR_TARGET
-/* #undef HAVE_AS_NAN */
+#define HAVE_AS_NAN 1
 #endif
 
 
diff --git a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/include/tm.h b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/include/tm.h
index fbc6762..a2cac58 100644
--- a/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/include/tm.h
+++ b/lib/gcc/mipsel-buildroot-linux-uclibc/4.9.1/plugin/include/tm.h
@@ -1,6 +1,6 @@
 #ifndef GCC_TM_H
 #define GCC_TM_H
-#define TARGET_CPU_DEFAULT (((MASK_SPLIT_ADDRESSES)|MASK_EXPLICIT_RELOCS)|MASK_RELAX_PIC_CALLS)
+#define TARGET_CPU_DEFAULT ((MASK_SPLIT_ADDRESSES)|MASK_EXPLICIT_RELOCS)
 #ifndef TARGET_ENDIAN_DEFAULT
 # define TARGET_ENDIAN_DEFAULT 0
 #endif
diff --git a/lib/ldscripts/elf32btsmip.x b/lib/ldscripts/elf32btsmip.x
index 41ef321..a157ec0 100644
--- a/lib/ldscripts/elf32btsmip.x
+++ b/lib/ldscripts/elf32btsmip.x
@@ -1,15 +1,20 @@
 /* Default linker script, for normal executables */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0400000)); . = SEGMENT_START("text-segment", 0x0400000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -111,6 +114,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,8 +176,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -180,9 +186,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -241,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -254,16 +262,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32btsmip.xbn b/lib/ldscripts/elf32btsmip.xbn
index e03402b..066f51d 100644
--- a/lib/ldscripts/elf32btsmip.xbn
+++ b/lib/ldscripts/elf32btsmip.xbn
@@ -1,15 +1,20 @@
 /* Script for -N: mix text and data on same page; don't align data */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0400000)); . = SEGMENT_START("text-segment", 0x0400000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -111,6 +114,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = .;
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,7 +176,8 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -179,9 +185,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -193,6 +199,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -214,6 +221,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   /* Stabs debugging sections.  */
@@ -239,7 +247,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -252,16 +260,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32btsmip.xc b/lib/ldscripts/elf32btsmip.xc
index b023a8f..fb58873 100644
--- a/lib/ldscripts/elf32btsmip.xc
+++ b/lib/ldscripts/elf32btsmip.xc
@@ -1,15 +1,20 @@
 /* Script for -z combreloc: combine and sort reloc sections */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0400000)); . = SEGMENT_START("text-segment", 0x0400000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +91,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -114,6 +113,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,8 +175,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -183,9 +185,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,16 +261,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32btsmip.xd b/lib/ldscripts/elf32btsmip.xd
index 4e8b7c4..a5ac689 100644
--- a/lib/ldscripts/elf32btsmip.xd
+++ b/lib/ldscripts/elf32btsmip.xd
@@ -1,15 +1,20 @@
 /* Script for ld -pie: link position independent executable */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -111,6 +114,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,8 +176,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -180,9 +186,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -241,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -254,16 +262,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32btsmip.xdc b/lib/ldscripts/elf32btsmip.xdc
index 3587cd5..40583a7 100644
--- a/lib/ldscripts/elf32btsmip.xdc
+++ b/lib/ldscripts/elf32btsmip.xdc
@@ -1,15 +1,20 @@
 /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +91,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -114,6 +113,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,8 +175,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -183,9 +185,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,16 +261,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32btsmip.xdw b/lib/ldscripts/elf32btsmip.xdw
index 0be4fe0..b6435a5 100644
--- a/lib/ldscripts/elf32btsmip.xdw
+++ b/lib/ldscripts/elf32btsmip.xdw
@@ -1,15 +1,20 @@
 /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +91,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -114,6 +113,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -185,7 +186,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,16 +261,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32btsmip.xn b/lib/ldscripts/elf32btsmip.xn
index 8201428..8e3c228 100644
--- a/lib/ldscripts/elf32btsmip.xn
+++ b/lib/ldscripts/elf32btsmip.xn
@@ -1,15 +1,20 @@
 /* Script for -n: mix text and data on same page */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0400000)); . = SEGMENT_START("text-segment", 0x0400000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -111,6 +114,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,8 +176,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -180,9 +186,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -241,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -254,16 +262,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32btsmip.xr b/lib/ldscripts/elf32btsmip.xr
index 804e051..947c301 100644
--- a/lib/ldscripts/elf32btsmip.xr
+++ b/lib/ldscripts/elf32btsmip.xr
@@ -1,4 +1,8 @@
 /* Script for ld -r: link without relocation */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
@@ -10,7 +14,8 @@
 {
   /* Read-only sections, merged into text segment: */
   .interp       0 : { *(.interp) }
-  .reginfo      0 : { *(.reginfo) }
+  .MIPS.abiflags 0 : { *(.MIPS.abiflags) }
+  .reginfo       0 : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic      0 : { *(.dynamic) }
   .hash         0 : { *(.hash) }
@@ -71,20 +76,18 @@
     }
   .init         0 :
   {
-    KEEP (*(.init))
-  } =0
-  .plt          0 : { *(.plt) }
-  .iplt         0 : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text         0 :
   {
     *(.text .stub)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-  } =0
+  }
   .fini         0 :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   .rodata       0 : { *(.rodata) }
   .rodata1      0 : { *(.rodata1) }
   .sdata2       0 :
@@ -99,6 +102,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt          0 : { *(.plt) }
+  .iplt         0 : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   /* Exception handling  */
@@ -113,12 +118,12 @@
     KEEP (*(.preinit_array))
   }
   .jcr          0 : { KEEP (*(.jcr)) }
+  .got.plt      0 : { *(.got.plt) }
   .data         0 :
   {
     *(.data)
   }
   .data1        0 : { *(.data1) }
-  .got.plt      0 : { *(.got.plt) }
   .got          0 : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -169,7 +174,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -182,15 +187,17 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
 }
diff --git a/lib/ldscripts/elf32btsmip.xs b/lib/ldscripts/elf32btsmip.xs
index e6284e3..4730b68 100644
--- a/lib/ldscripts/elf32btsmip.xs
+++ b/lib/ldscripts/elf32btsmip.xs
@@ -1,14 +1,19 @@
 /* Script for ld --shared: link shared library */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -69,14 +74,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -84,11 +87,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -101,6 +104,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -118,12 +123,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -155,8 +160,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -164,9 +170,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -179,6 +185,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -201,6 +208,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -227,7 +235,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -240,16 +248,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32btsmip.xsc b/lib/ldscripts/elf32btsmip.xsc
index 5488c8b..39f37f0 100644
--- a/lib/ldscripts/elf32btsmip.xsc
+++ b/lib/ldscripts/elf32btsmip.xsc
@@ -1,14 +1,19 @@
 /* Script for --shared -z combreloc: shared library, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -68,14 +73,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -83,11 +86,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -100,6 +103,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -117,12 +122,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -154,8 +159,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -163,9 +169,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -178,6 +184,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -200,6 +207,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -226,7 +234,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -239,16 +247,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32btsmip.xsw b/lib/ldscripts/elf32btsmip.xsw
index 5f55f87..a9b3cc5 100644
--- a/lib/ldscripts/elf32btsmip.xsw
+++ b/lib/ldscripts/elf32btsmip.xsw
@@ -1,14 +1,19 @@
 /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -68,14 +73,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -83,11 +86,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -100,6 +103,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -117,12 +122,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -154,7 +159,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -165,7 +170,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -178,6 +184,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -200,6 +207,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -226,7 +234,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -239,16 +247,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32btsmip.xu b/lib/ldscripts/elf32btsmip.xu
index 7e73c0c..e7e5531 100644
--- a/lib/ldscripts/elf32btsmip.xu
+++ b/lib/ldscripts/elf32btsmip.xu
@@ -1,4 +1,8 @@
 /* Script for ld -Ur: link w/out relocation, do create constructors */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
@@ -10,7 +14,8 @@
 {
   /* Read-only sections, merged into text segment: */
   .interp       0 : { *(.interp) }
-  .reginfo      0 : { *(.reginfo) }
+  .MIPS.abiflags 0 : { *(.MIPS.abiflags) }
+  .reginfo       0 : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic      0 : { *(.dynamic) }
   .hash         0 : { *(.hash) }
@@ -71,20 +76,18 @@
     }
   .init         0 :
   {
-    KEEP (*(.init))
-  } =0
-  .plt          0 : { *(.plt) }
-  .iplt         0 : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text         0 :
   {
     *(.text .stub)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-  } =0
+  }
   .fini         0 :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   .rodata       0 : { *(.rodata) }
   .rodata1      0 : { *(.rodata1) }
   .sdata2       0 :
@@ -99,6 +102,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt          0 : { *(.plt) }
+  .iplt         0 : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   /* Exception handling  */
@@ -113,13 +118,13 @@
     KEEP (*(.preinit_array))
   }
   .jcr          0 : { KEEP (*(.jcr)) }
+  .got.plt      0 : { *(.got.plt) }
   .data         0 :
   {
     *(.data)
     SORT(CONSTRUCTORS)
   }
   .data1        0 : { *(.data1) }
-  .got.plt      0 : { *(.got.plt) }
   .got          0 : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -170,7 +175,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -183,15 +188,17 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
 }
diff --git a/lib/ldscripts/elf32btsmip.xw b/lib/ldscripts/elf32btsmip.xw
index 9773ac4..b1c486b 100644
--- a/lib/ldscripts/elf32btsmip.xw
+++ b/lib/ldscripts/elf32btsmip.xw
@@ -1,15 +1,20 @@
 /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0400000)); . = SEGMENT_START("text-segment", 0x0400000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +91,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -114,6 +113,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -185,7 +186,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,16 +261,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32btsmipn32.x b/lib/ldscripts/elf32btsmipn32.x
index 66908e0..23056e6 100644
--- a/lib/ldscripts/elf32btsmipn32.x
+++ b/lib/ldscripts/elf32btsmipn32.x
@@ -1,14 +1,19 @@
 /* Default linker script, for normal executables */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x10000000)); . = SEGMENT_START("text-segment", 0x10000000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +94,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,7 +176,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -182,7 +187,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -195,6 +201,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -216,6 +223,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -242,7 +250,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -255,6 +263,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32btsmipn32.xbn b/lib/ldscripts/elf32btsmipn32.xbn
index 26f6ed7..4c7c8db 100644
--- a/lib/ldscripts/elf32btsmipn32.xbn
+++ b/lib/ldscripts/elf32btsmipn32.xbn
@@ -1,14 +1,19 @@
 /* Script for -N: mix text and data on same page; don't align data */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x10000000)); . = SEGMENT_START("text-segment", 0x10000000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +94,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,7 +176,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .data           :
   {
     _fdata = . ;
@@ -181,7 +186,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   /* Stabs debugging sections.  */
@@ -240,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -253,6 +261,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32btsmipn32.xc b/lib/ldscripts/elf32btsmipn32.xc
index 473c911..e4bb5c4 100644
--- a/lib/ldscripts/elf32btsmipn32.xc
+++ b/lib/ldscripts/elf32btsmipn32.xc
@@ -1,14 +1,19 @@
 /* Script for -z combreloc: combine and sort reloc sections */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x10000000)); . = SEGMENT_START("text-segment", 0x10000000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -185,7 +186,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -198,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -219,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -245,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -258,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32btsmipn32.xd b/lib/ldscripts/elf32btsmipn32.xd
index 8d4b3e8..bbab0c0 100644
--- a/lib/ldscripts/elf32btsmipn32.xd
+++ b/lib/ldscripts/elf32btsmipn32.xd
@@ -1,14 +1,19 @@
 /* Script for ld -pie: link position independent executable */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +94,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,7 +176,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -182,7 +187,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -195,6 +201,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -216,6 +223,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -242,7 +250,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -255,6 +263,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32btsmipn32.xdc b/lib/ldscripts/elf32btsmipn32.xdc
index 24df1be..1f157e9 100644
--- a/lib/ldscripts/elf32btsmipn32.xdc
+++ b/lib/ldscripts/elf32btsmipn32.xdc
@@ -1,14 +1,19 @@
 /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -185,7 +186,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -198,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -219,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -245,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -258,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32btsmipn32.xdw b/lib/ldscripts/elf32btsmipn32.xdw
index e837b86..b77724d 100644
--- a/lib/ldscripts/elf32btsmipn32.xdw
+++ b/lib/ldscripts/elf32btsmipn32.xdw
@@ -1,14 +1,19 @@
 /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -185,7 +186,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -198,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -219,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -245,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -258,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32btsmipn32.xn b/lib/ldscripts/elf32btsmipn32.xn
index 48ee77c..e9b04c8 100644
--- a/lib/ldscripts/elf32btsmipn32.xn
+++ b/lib/ldscripts/elf32btsmipn32.xn
@@ -1,14 +1,19 @@
 /* Script for -n: mix text and data on same page */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x10000000)); . = SEGMENT_START("text-segment", 0x10000000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +94,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,7 +176,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -182,7 +187,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -195,6 +201,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -216,6 +223,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -242,7 +250,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -255,6 +263,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32btsmipn32.xr b/lib/ldscripts/elf32btsmipn32.xr
index 66bfab1..6fc777c 100644
--- a/lib/ldscripts/elf32btsmipn32.xr
+++ b/lib/ldscripts/elf32btsmipn32.xr
@@ -1,4 +1,8 @@
 /* Script for ld -r: link without relocation */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
@@ -10,6 +14,7 @@
 {
   /* Read-only sections, merged into text segment: */
   .interp       0 : { *(.interp) }
+  .MIPS.abiflags      0 : { *(.MIPS.abiflags) }
   .reginfo      0 : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic      0 : { *(.dynamic) }
@@ -71,8 +76,8 @@
     }
   .init         0 :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt          0 : { *(.plt) }
   .iplt         0 : { *(.iplt) }
   .text         0 :
@@ -80,11 +85,11 @@
     *(.text .stub)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-  } =0
+  }
   .fini         0 :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   .rodata       0 : { *(.rodata) }
   .rodata1      0 : { *(.rodata1) }
   .sdata2       0 :
@@ -170,7 +175,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -183,6 +188,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32btsmipn32.xs b/lib/ldscripts/elf32btsmipn32.xs
index 9af48b9..7f22078 100644
--- a/lib/ldscripts/elf32btsmipn32.xs
+++ b/lib/ldscripts/elf32btsmipn32.xs
@@ -1,13 +1,18 @@
 /* Script for ld --shared: link shared library */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -69,14 +74,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -84,11 +89,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -118,12 +123,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -155,7 +160,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -166,7 +171,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -180,6 +186,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -202,6 +209,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -228,7 +236,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -241,6 +249,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32btsmipn32.xsc b/lib/ldscripts/elf32btsmipn32.xsc
index f8fdb2b..286baf6 100644
--- a/lib/ldscripts/elf32btsmipn32.xsc
+++ b/lib/ldscripts/elf32btsmipn32.xsc
@@ -1,13 +1,18 @@
 /* Script for --shared -z combreloc: shared library, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -68,14 +73,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -83,11 +88,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -117,12 +122,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -154,7 +159,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -165,7 +170,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -179,6 +185,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -201,6 +208,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -227,7 +235,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -240,6 +248,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32btsmipn32.xsw b/lib/ldscripts/elf32btsmipn32.xsw
index e13f7db..6243299 100644
--- a/lib/ldscripts/elf32btsmipn32.xsw
+++ b/lib/ldscripts/elf32btsmipn32.xsw
@@ -1,13 +1,18 @@
 /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -68,14 +73,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -83,11 +88,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -117,12 +122,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -154,7 +159,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -165,7 +170,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -179,6 +185,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -201,6 +208,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -227,7 +235,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -240,6 +248,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32btsmipn32.xu b/lib/ldscripts/elf32btsmipn32.xu
index 4636039..92e4b58 100644
--- a/lib/ldscripts/elf32btsmipn32.xu
+++ b/lib/ldscripts/elf32btsmipn32.xu
@@ -1,4 +1,8 @@
 /* Script for ld -Ur: link w/out relocation, do create constructors */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
@@ -10,6 +14,7 @@
 {
   /* Read-only sections, merged into text segment: */
   .interp       0 : { *(.interp) }
+  .MIPS.abiflags      0 : { *(.MIPS.abiflags) }
   .reginfo      0 : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic      0 : { *(.dynamic) }
@@ -71,8 +76,8 @@
     }
   .init         0 :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt          0 : { *(.plt) }
   .iplt         0 : { *(.iplt) }
   .text         0 :
@@ -80,11 +85,11 @@
     *(.text .stub)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-  } =0
+  }
   .fini         0 :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   .rodata       0 : { *(.rodata) }
   .rodata1      0 : { *(.rodata1) }
   .sdata2       0 :
@@ -171,7 +176,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -184,6 +189,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32btsmipn32.xw b/lib/ldscripts/elf32btsmipn32.xw
index 3c55681..d052620 100644
--- a/lib/ldscripts/elf32btsmipn32.xw
+++ b/lib/ldscripts/elf32btsmipn32.xw
@@ -1,14 +1,19 @@
 /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradbigmips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x10000000)); . = SEGMENT_START("text-segment", 0x10000000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -185,7 +186,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -198,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -219,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -245,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -258,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmip.x b/lib/ldscripts/elf32ltsmip.x
index f5fed59..cac83c3 100644
--- a/lib/ldscripts/elf32ltsmip.x
+++ b/lib/ldscripts/elf32ltsmip.x
@@ -1,15 +1,20 @@
 /* Default linker script, for normal executables */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0400000)); . = SEGMENT_START("text-segment", 0x0400000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -111,6 +114,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,8 +176,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -180,9 +186,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -241,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -254,16 +262,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32ltsmip.xbn b/lib/ldscripts/elf32ltsmip.xbn
index 171d51a..ddf8d45 100644
--- a/lib/ldscripts/elf32ltsmip.xbn
+++ b/lib/ldscripts/elf32ltsmip.xbn
@@ -1,15 +1,20 @@
 /* Script for -N: mix text and data on same page; don't align data */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0400000)); . = SEGMENT_START("text-segment", 0x0400000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -111,6 +114,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = .;
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,7 +176,8 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -179,9 +185,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -193,6 +199,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -214,6 +221,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   /* Stabs debugging sections.  */
@@ -239,7 +247,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -252,16 +260,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32ltsmip.xc b/lib/ldscripts/elf32ltsmip.xc
index e90a1cc..e0da248 100644
--- a/lib/ldscripts/elf32ltsmip.xc
+++ b/lib/ldscripts/elf32ltsmip.xc
@@ -1,15 +1,20 @@
 /* Script for -z combreloc: combine and sort reloc sections */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0400000)); . = SEGMENT_START("text-segment", 0x0400000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +91,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -114,6 +113,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,8 +175,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -183,9 +185,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,16 +261,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32ltsmip.xd b/lib/ldscripts/elf32ltsmip.xd
index e2134c5..07954e6 100644
--- a/lib/ldscripts/elf32ltsmip.xd
+++ b/lib/ldscripts/elf32ltsmip.xd
@@ -1,15 +1,20 @@
 /* Script for ld -pie: link position independent executable */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -111,6 +114,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,8 +176,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -180,9 +186,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -241,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -254,16 +262,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32ltsmip.xdc b/lib/ldscripts/elf32ltsmip.xdc
index 0755003..4d88067 100644
--- a/lib/ldscripts/elf32ltsmip.xdc
+++ b/lib/ldscripts/elf32ltsmip.xdc
@@ -1,15 +1,20 @@
 /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +91,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -114,6 +113,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,8 +175,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -183,9 +185,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,16 +261,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32ltsmip.xdw b/lib/ldscripts/elf32ltsmip.xdw
index 21d7890..041f7d8 100644
--- a/lib/ldscripts/elf32ltsmip.xdw
+++ b/lib/ldscripts/elf32ltsmip.xdw
@@ -1,15 +1,20 @@
 /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +91,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -114,6 +113,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -185,7 +186,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,16 +261,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32ltsmip.xn b/lib/ldscripts/elf32ltsmip.xn
index 7da96e0..6e4d209 100644
--- a/lib/ldscripts/elf32ltsmip.xn
+++ b/lib/ldscripts/elf32ltsmip.xn
@@ -1,15 +1,20 @@
 /* Script for -n: mix text and data on same page */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0400000)); . = SEGMENT_START("text-segment", 0x0400000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -111,6 +114,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,8 +176,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -180,9 +186,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -241,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -254,16 +262,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32ltsmip.xr b/lib/ldscripts/elf32ltsmip.xr
index 47c761f..feb9166 100644
--- a/lib/ldscripts/elf32ltsmip.xr
+++ b/lib/ldscripts/elf32ltsmip.xr
@@ -1,4 +1,8 @@
 /* Script for ld -r: link without relocation */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
@@ -10,7 +14,8 @@
 {
   /* Read-only sections, merged into text segment: */
   .interp       0 : { *(.interp) }
-  .reginfo      0 : { *(.reginfo) }
+  .MIPS.abiflags 0 : { *(.MIPS.abiflags) }
+  .reginfo       0 : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic      0 : { *(.dynamic) }
   .hash         0 : { *(.hash) }
@@ -71,20 +76,18 @@
     }
   .init         0 :
   {
-    KEEP (*(.init))
-  } =0
-  .plt          0 : { *(.plt) }
-  .iplt         0 : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text         0 :
   {
     *(.text .stub)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-  } =0
+  }
   .fini         0 :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   .rodata       0 : { *(.rodata) }
   .rodata1      0 : { *(.rodata1) }
   .sdata2       0 :
@@ -99,6 +102,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt          0 : { *(.plt) }
+  .iplt         0 : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   /* Exception handling  */
@@ -113,12 +118,12 @@
     KEEP (*(.preinit_array))
   }
   .jcr          0 : { KEEP (*(.jcr)) }
+  .got.plt      0 : { *(.got.plt) }
   .data         0 :
   {
     *(.data)
   }
   .data1        0 : { *(.data1) }
-  .got.plt      0 : { *(.got.plt) }
   .got          0 : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -169,7 +174,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -182,15 +187,17 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
 }
diff --git a/lib/ldscripts/elf32ltsmip.xs b/lib/ldscripts/elf32ltsmip.xs
index 512d44a..02b3f6b 100644
--- a/lib/ldscripts/elf32ltsmip.xs
+++ b/lib/ldscripts/elf32ltsmip.xs
@@ -1,14 +1,19 @@
 /* Script for ld --shared: link shared library */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -69,14 +74,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -84,11 +87,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -101,6 +104,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -118,12 +123,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -155,8 +160,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -164,9 +170,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -179,6 +185,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -201,6 +208,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -227,7 +235,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -240,16 +248,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32ltsmip.xsc b/lib/ldscripts/elf32ltsmip.xsc
index db0a251..fb12755 100644
--- a/lib/ldscripts/elf32ltsmip.xsc
+++ b/lib/ldscripts/elf32ltsmip.xsc
@@ -1,14 +1,19 @@
 /* Script for --shared -z combreloc: shared library, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -68,14 +73,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -83,11 +86,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -100,6 +103,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -117,12 +122,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -154,8 +159,9 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
+  .got.plt        : { *(.got.plt) }
   .data           :
   {
     _fdata = . ;
@@ -163,9 +169,9 @@
     SORT(CONSTRUCTORS)
   }
   .data1          : { *(.data1) }
-  .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -178,6 +184,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -200,6 +207,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -226,7 +234,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -239,16 +247,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32ltsmip.xsw b/lib/ldscripts/elf32ltsmip.xsw
index 78c2be4..70122a9 100644
--- a/lib/ldscripts/elf32ltsmip.xsw
+++ b/lib/ldscripts/elf32ltsmip.xsw
@@ -1,14 +1,19 @@
 /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -68,14 +73,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -83,11 +86,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -100,6 +103,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -117,12 +122,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -154,7 +159,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -165,7 +170,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -178,6 +184,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -200,6 +207,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -226,7 +234,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -239,16 +247,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32ltsmip.xu b/lib/ldscripts/elf32ltsmip.xu
index 8ea304f..d801a67 100644
--- a/lib/ldscripts/elf32ltsmip.xu
+++ b/lib/ldscripts/elf32ltsmip.xu
@@ -1,4 +1,8 @@
 /* Script for ld -Ur: link w/out relocation, do create constructors */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
@@ -10,7 +14,8 @@
 {
   /* Read-only sections, merged into text segment: */
   .interp       0 : { *(.interp) }
-  .reginfo      0 : { *(.reginfo) }
+  .MIPS.abiflags 0 : { *(.MIPS.abiflags) }
+  .reginfo       0 : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic      0 : { *(.dynamic) }
   .hash         0 : { *(.hash) }
@@ -71,20 +76,18 @@
     }
   .init         0 :
   {
-    KEEP (*(.init))
-  } =0
-  .plt          0 : { *(.plt) }
-  .iplt         0 : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text         0 :
   {
     *(.text .stub)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-  } =0
+  }
   .fini         0 :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   .rodata       0 : { *(.rodata) }
   .rodata1      0 : { *(.rodata1) }
   .sdata2       0 :
@@ -99,6 +102,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt          0 : { *(.plt) }
+  .iplt         0 : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   /* Exception handling  */
@@ -113,13 +118,13 @@
     KEEP (*(.preinit_array))
   }
   .jcr          0 : { KEEP (*(.jcr)) }
+  .got.plt      0 : { *(.got.plt) }
   .data         0 :
   {
     *(.data)
     SORT(CONSTRUCTORS)
   }
   .data1        0 : { *(.data1) }
-  .got.plt      0 : { *(.got.plt) }
   .got          0 : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -170,7 +175,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -183,15 +188,17 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
 }
diff --git a/lib/ldscripts/elf32ltsmip.xw b/lib/ldscripts/elf32ltsmip.xw
index 291c6d0..21eadee 100644
--- a/lib/ldscripts/elf32ltsmip.xw
+++ b/lib/ldscripts/elf32ltsmip.xw
@@ -1,15 +1,20 @@
 /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
 	      "elf32-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x0400000)); . = SEGMENT_START("text-segment", 0x0400000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
-  .reginfo        : { *(.reginfo) }
+  .MIPS.abiflags   : { *(.MIPS.abiflags) }
+  .reginfo         : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
   .hash           : { *(.hash) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,12 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
-  .plt            : { *(.plt) }
-  .iplt           : { *(.iplt) }
+    KEEP (*(SORT_NONE(.init)))
+  }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +91,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -114,6 +113,8 @@
   /* These sections are generated by the Sun/Oracle C++ compiler.  */
   .exception_ranges   : ONLY_IF_RO { *(.exception_ranges
   .exception_ranges*) }
+  .plt            : { *(.plt) }
+  .iplt           : { *(.iplt) }
   /* Adjust the address for the data segment.  We want to adjust up to
      the same address within the page on the next page up.  */
   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -185,7 +186,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit8           : { *(.lit8) }
   .lit4           : { *(.lit4) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,16 +261,18 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
-  .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
-  .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
-  .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
-  .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
-  .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
-  .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
-  .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
+  .mdebug.abi32 0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32 0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64 0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64 0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32 0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64 0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32 0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64 0 : { KEEP(*(.gcc_compiled_long64)) }
   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
 }
diff --git a/lib/ldscripts/elf32ltsmipn32.x b/lib/ldscripts/elf32ltsmipn32.x
index 3f7aa37..ef2d00e 100644
--- a/lib/ldscripts/elf32ltsmipn32.x
+++ b/lib/ldscripts/elf32ltsmipn32.x
@@ -1,14 +1,19 @@
 /* Default linker script, for normal executables */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x10000000)); . = SEGMENT_START("text-segment", 0x10000000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +94,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,7 +176,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -182,7 +187,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -195,6 +201,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -216,6 +223,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -242,7 +250,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -255,6 +263,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmipn32.xbn b/lib/ldscripts/elf32ltsmipn32.xbn
index 2b585a4..efc88f4 100644
--- a/lib/ldscripts/elf32ltsmipn32.xbn
+++ b/lib/ldscripts/elf32ltsmipn32.xbn
@@ -1,14 +1,19 @@
 /* Script for -N: mix text and data on same page; don't align data */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x10000000)); . = SEGMENT_START("text-segment", 0x10000000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +94,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,7 +176,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .data           :
   {
     _fdata = . ;
@@ -181,7 +186,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   /* Stabs debugging sections.  */
@@ -240,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -253,6 +261,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmipn32.xc b/lib/ldscripts/elf32ltsmipn32.xc
index aa808f5..98f90a5 100644
--- a/lib/ldscripts/elf32ltsmipn32.xc
+++ b/lib/ldscripts/elf32ltsmipn32.xc
@@ -1,14 +1,19 @@
 /* Script for -z combreloc: combine and sort reloc sections */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x10000000)); . = SEGMENT_START("text-segment", 0x10000000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -185,7 +186,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -198,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -219,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -245,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -258,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmipn32.xd b/lib/ldscripts/elf32ltsmipn32.xd
index 191f55d..7f08d89 100644
--- a/lib/ldscripts/elf32ltsmipn32.xd
+++ b/lib/ldscripts/elf32ltsmipn32.xd
@@ -1,14 +1,19 @@
 /* Script for ld -pie: link position independent executable */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +94,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,7 +176,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -182,7 +187,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -195,6 +201,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -216,6 +223,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -242,7 +250,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -255,6 +263,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmipn32.xdc b/lib/ldscripts/elf32ltsmipn32.xdc
index fc2a808..1e83017 100644
--- a/lib/ldscripts/elf32ltsmipn32.xdc
+++ b/lib/ldscripts/elf32ltsmipn32.xdc
@@ -1,14 +1,19 @@
 /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -185,7 +186,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -198,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -219,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -245,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -258,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmipn32.xdw b/lib/ldscripts/elf32ltsmipn32.xdw
index ae40da9..5c91cee 100644
--- a/lib/ldscripts/elf32ltsmipn32.xdw
+++ b/lib/ldscripts/elf32ltsmipn32.xdw
@@ -1,14 +1,19 @@
 /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -185,7 +186,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -198,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -219,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -245,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -258,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmipn32.xn b/lib/ldscripts/elf32ltsmipn32.xn
index 89af277..6df9260 100644
--- a/lib/ldscripts/elf32ltsmipn32.xn
+++ b/lib/ldscripts/elf32ltsmipn32.xn
@@ -1,14 +1,19 @@
 /* Script for -n: mix text and data on same page */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x10000000)); . = SEGMENT_START("text-segment", 0x10000000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -27,8 +32,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -74,14 +79,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -89,11 +94,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -131,14 +136,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -171,7 +176,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -182,7 +187,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -195,6 +201,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -216,6 +223,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -242,7 +250,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -255,6 +263,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmipn32.xr b/lib/ldscripts/elf32ltsmipn32.xr
index 76cc76b..0742d62 100644
--- a/lib/ldscripts/elf32ltsmipn32.xr
+++ b/lib/ldscripts/elf32ltsmipn32.xr
@@ -1,4 +1,8 @@
 /* Script for ld -r: link without relocation */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
@@ -10,6 +14,7 @@
 {
   /* Read-only sections, merged into text segment: */
   .interp       0 : { *(.interp) }
+  .MIPS.abiflags      0 : { *(.MIPS.abiflags) }
   .reginfo      0 : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic      0 : { *(.dynamic) }
@@ -71,8 +76,8 @@
     }
   .init         0 :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt          0 : { *(.plt) }
   .iplt         0 : { *(.iplt) }
   .text         0 :
@@ -80,11 +85,11 @@
     *(.text .stub)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-  } =0
+  }
   .fini         0 :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   .rodata       0 : { *(.rodata) }
   .rodata1      0 : { *(.rodata1) }
   .sdata2       0 :
@@ -170,7 +175,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -183,6 +188,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmipn32.xs b/lib/ldscripts/elf32ltsmipn32.xs
index 9f172be..3a3f614 100644
--- a/lib/ldscripts/elf32ltsmipn32.xs
+++ b/lib/ldscripts/elf32ltsmipn32.xs
@@ -1,13 +1,18 @@
 /* Script for ld --shared: link shared library */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -69,14 +74,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -84,11 +89,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -118,12 +123,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -155,7 +160,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -166,7 +171,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -180,6 +186,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -202,6 +209,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -228,7 +236,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -241,6 +249,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmipn32.xsc b/lib/ldscripts/elf32ltsmipn32.xsc
index 8ef2d06..1ebd282 100644
--- a/lib/ldscripts/elf32ltsmipn32.xsc
+++ b/lib/ldscripts/elf32ltsmipn32.xsc
@@ -1,13 +1,18 @@
 /* Script for --shared -z combreloc: shared library, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -68,14 +73,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -83,11 +88,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -117,12 +122,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -154,7 +159,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -165,7 +170,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -179,6 +185,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -201,6 +208,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -227,7 +235,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -240,6 +248,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmipn32.xsw b/lib/ldscripts/elf32ltsmipn32.xsw
index d8ee1a8..4a17e7e 100644
--- a/lib/ldscripts/elf32ltsmipn32.xsw
+++ b/lib/ldscripts/elf32ltsmipn32.xsw
@@ -1,13 +1,18 @@
 /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -68,14 +73,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -83,11 +88,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -117,12 +122,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -154,7 +159,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -165,7 +170,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -179,6 +185,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -201,6 +208,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -227,7 +235,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -240,6 +248,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmipn32.xu b/lib/ldscripts/elf32ltsmipn32.xu
index 1aacf49..c1563ea 100644
--- a/lib/ldscripts/elf32ltsmipn32.xu
+++ b/lib/ldscripts/elf32ltsmipn32.xu
@@ -1,4 +1,8 @@
 /* Script for ld -Ur: link w/out relocation, do create constructors */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
@@ -10,6 +14,7 @@
 {
   /* Read-only sections, merged into text segment: */
   .interp       0 : { *(.interp) }
+  .MIPS.abiflags      0 : { *(.MIPS.abiflags) }
   .reginfo      0 : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic      0 : { *(.dynamic) }
@@ -71,8 +76,8 @@
     }
   .init         0 :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt          0 : { *(.plt) }
   .iplt         0 : { *(.iplt) }
   .text         0 :
@@ -80,11 +85,11 @@
     *(.text .stub)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-  } =0
+  }
   .fini         0 :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   .rodata       0 : { *(.rodata) }
   .rodata1      0 : { *(.rodata1) }
   .sdata2       0 :
@@ -171,7 +176,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -184,6 +189,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf32ltsmipn32.xw b/lib/ldscripts/elf32ltsmipn32.xw
index 49a14cb..3363bc9 100644
--- a/lib/ldscripts/elf32ltsmipn32.xw
+++ b/lib/ldscripts/elf32ltsmipn32.xw
@@ -1,14 +1,19 @@
 /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf32-ntradlittlemips", "elf32-ntradbigmips",
 	      "elf32-ntradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib32"); SEARCH_DIR("=/usr/local/lib32"); SEARCH_DIR("=/lib32"); SEARCH_DIR("=/usr/lib32"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x10000000)); . = SEGMENT_START("text-segment", 0x10000000) + SIZEOF_HEADERS;
   .interp         : { *(.interp) }
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .reginfo        : { *(.reginfo) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -25,7 +30,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -41,8 +46,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -61,8 +64,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -77,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -92,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -134,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -174,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -185,7 +186,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -198,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -219,6 +222,7 @@
    . = ALIGN(. != 0 ? 32 / 8 : 1);
   }
   . = ALIGN(32 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(32 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -245,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -258,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.x b/lib/ldscripts/elf64btsmip.x
index d130126..aa55789 100644
--- a/lib/ldscripts/elf64btsmip.x
+++ b/lib/ldscripts/elf64btsmip.x
@@ -1,13 +1,18 @@
 /* Default linker script, for normal executables */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x120000000)); . = SEGMENT_START("text-segment", 0x120000000) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -73,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -88,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -130,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -170,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -181,7 +186,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -241,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -254,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.xbn b/lib/ldscripts/elf64btsmip.xbn
index 3fbec26..4b8cbd7 100644
--- a/lib/ldscripts/elf64btsmip.xbn
+++ b/lib/ldscripts/elf64btsmip.xbn
@@ -1,13 +1,18 @@
 /* Script for -N: mix text and data on same page; don't align data */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x120000000)); . = SEGMENT_START("text-segment", 0x120000000) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -73,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -88,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -130,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -170,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .data           :
   {
     _fdata = . ;
@@ -180,7 +185,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -193,6 +199,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -214,6 +221,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   /* Stabs debugging sections.  */
@@ -239,7 +247,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -252,6 +260,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.xc b/lib/ldscripts/elf64btsmip.xc
index 0999cec..1351fe8 100644
--- a/lib/ldscripts/elf64btsmip.xc
+++ b/lib/ldscripts/elf64btsmip.xc
@@ -1,13 +1,18 @@
 /* Script for -z combreloc: combine and sort reloc sections */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x120000000)); . = SEGMENT_START("text-segment", 0x120000000) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -40,8 +45,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -60,8 +63,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -76,14 +77,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -91,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -133,14 +134,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -173,7 +174,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -184,7 +185,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,6 +261,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.xd b/lib/ldscripts/elf64btsmip.xd
index 2b841c4..da58bdb 100644
--- a/lib/ldscripts/elf64btsmip.xd
+++ b/lib/ldscripts/elf64btsmip.xd
@@ -1,13 +1,18 @@
 /* Script for ld -pie: link position independent executable */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -73,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -88,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -130,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -170,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -181,7 +186,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -241,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -254,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.xdc b/lib/ldscripts/elf64btsmip.xdc
index 80215fc..fb27cdd 100644
--- a/lib/ldscripts/elf64btsmip.xdc
+++ b/lib/ldscripts/elf64btsmip.xdc
@@ -1,13 +1,18 @@
 /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -40,8 +45,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -60,8 +63,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -76,14 +77,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -91,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -133,14 +134,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -173,7 +174,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -184,7 +185,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,6 +261,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.xdw b/lib/ldscripts/elf64btsmip.xdw
index d914795..15528a5 100644
--- a/lib/ldscripts/elf64btsmip.xdw
+++ b/lib/ldscripts/elf64btsmip.xdw
@@ -1,13 +1,18 @@
 /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -40,8 +45,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -60,8 +63,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -76,14 +77,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -91,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -133,14 +134,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -173,7 +174,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -184,7 +185,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,6 +261,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.xn b/lib/ldscripts/elf64btsmip.xn
index b215c1d..3445078 100644
--- a/lib/ldscripts/elf64btsmip.xn
+++ b/lib/ldscripts/elf64btsmip.xn
@@ -1,13 +1,18 @@
 /* Script for -n: mix text and data on same page */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x120000000)); . = SEGMENT_START("text-segment", 0x120000000) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -73,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -88,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -130,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -170,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -181,7 +186,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -241,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -254,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.xr b/lib/ldscripts/elf64btsmip.xr
index 5bc3d48..25340a3 100644
--- a/lib/ldscripts/elf64btsmip.xr
+++ b/lib/ldscripts/elf64btsmip.xr
@@ -1,4 +1,8 @@
 /* Script for ld -r: link without relocation */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
@@ -9,6 +13,7 @@
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
+  .MIPS.abiflags      0 : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic      0 : { *(.dynamic) }
@@ -70,8 +75,8 @@
     }
   .init         0 :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt          0 : { *(.plt) }
   .iplt         0 : { *(.iplt) }
   .text         0 :
@@ -79,11 +84,11 @@
     *(.text .stub)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-  } =0
+  }
   .fini         0 :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   .rodata       0 : { *(.rodata) }
   .rodata1      0 : { *(.rodata1) }
   .sdata2       0 :
@@ -169,7 +174,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -182,6 +187,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.xs b/lib/ldscripts/elf64btsmip.xs
index 179ebeb..52b3d4c 100644
--- a/lib/ldscripts/elf64btsmip.xs
+++ b/lib/ldscripts/elf64btsmip.xs
@@ -1,13 +1,18 @@
 /* Script for ld --shared: link shared library */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -69,14 +74,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -84,11 +89,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -118,12 +123,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -155,7 +160,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -166,7 +171,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -180,6 +186,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -202,6 +209,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -228,7 +236,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -241,6 +249,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.xsc b/lib/ldscripts/elf64btsmip.xsc
index b767afe..665e880 100644
--- a/lib/ldscripts/elf64btsmip.xsc
+++ b/lib/ldscripts/elf64btsmip.xsc
@@ -1,13 +1,18 @@
 /* Script for --shared -z combreloc: shared library, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -68,14 +73,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -83,11 +88,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -117,12 +122,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -154,7 +159,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -165,7 +170,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -179,6 +185,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -201,6 +208,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -227,7 +235,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -240,6 +248,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.xsw b/lib/ldscripts/elf64btsmip.xsw
index 386025c..3224b56 100644
--- a/lib/ldscripts/elf64btsmip.xsw
+++ b/lib/ldscripts/elf64btsmip.xsw
@@ -1,13 +1,18 @@
 /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -68,14 +73,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -83,11 +88,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -117,12 +122,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -154,7 +159,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -165,7 +170,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -179,6 +185,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -201,6 +208,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -227,7 +235,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -240,6 +248,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.xu b/lib/ldscripts/elf64btsmip.xu
index 3b8fc9d..0dca252 100644
--- a/lib/ldscripts/elf64btsmip.xu
+++ b/lib/ldscripts/elf64btsmip.xu
@@ -1,4 +1,8 @@
 /* Script for ld -Ur: link w/out relocation, do create constructors */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
@@ -9,6 +13,7 @@
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
+  .MIPS.abiflags      0 : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic      0 : { *(.dynamic) }
@@ -70,8 +75,8 @@
     }
   .init         0 :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt          0 : { *(.plt) }
   .iplt         0 : { *(.iplt) }
   .text         0 :
@@ -79,11 +84,11 @@
     *(.text .stub)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-  } =0
+  }
   .fini         0 :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   .rodata       0 : { *(.rodata) }
   .rodata1      0 : { *(.rodata1) }
   .sdata2       0 :
@@ -170,7 +175,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -183,6 +188,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64btsmip.xw b/lib/ldscripts/elf64btsmip.xw
index d70a2a5..0386a11 100644
--- a/lib/ldscripts/elf64btsmip.xw
+++ b/lib/ldscripts/elf64btsmip.xw
@@ -1,13 +1,18 @@
 /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x120000000)); . = SEGMENT_START("text-segment", 0x120000000) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -40,8 +45,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -60,8 +63,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -76,14 +77,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -91,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -133,14 +134,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -173,7 +174,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -184,7 +185,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,6 +261,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.x b/lib/ldscripts/elf64ltsmip.x
index 1769123..6b89cb0 100644
--- a/lib/ldscripts/elf64ltsmip.x
+++ b/lib/ldscripts/elf64ltsmip.x
@@ -1,13 +1,18 @@
 /* Default linker script, for normal executables */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x120000000)); . = SEGMENT_START("text-segment", 0x120000000) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -73,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -88,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -130,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -170,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -181,7 +186,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -241,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -254,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.xbn b/lib/ldscripts/elf64ltsmip.xbn
index 99b2a04..1ce0ad8 100644
--- a/lib/ldscripts/elf64ltsmip.xbn
+++ b/lib/ldscripts/elf64ltsmip.xbn
@@ -1,13 +1,18 @@
 /* Script for -N: mix text and data on same page; don't align data */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x120000000)); . = SEGMENT_START("text-segment", 0x120000000) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -73,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -88,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -130,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -170,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .data           :
   {
     _fdata = . ;
@@ -180,7 +185,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -193,6 +199,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -214,6 +221,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   /* Stabs debugging sections.  */
@@ -239,7 +247,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -252,6 +260,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.xc b/lib/ldscripts/elf64ltsmip.xc
index d5c00b7..82b8b36 100644
--- a/lib/ldscripts/elf64ltsmip.xc
+++ b/lib/ldscripts/elf64ltsmip.xc
@@ -1,13 +1,18 @@
 /* Script for -z combreloc: combine and sort reloc sections */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x120000000)); . = SEGMENT_START("text-segment", 0x120000000) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -40,8 +45,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -60,8 +63,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -76,14 +77,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -91,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -133,14 +134,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -173,7 +174,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -184,7 +185,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,6 +261,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.xd b/lib/ldscripts/elf64ltsmip.xd
index 45d9991..6883b48 100644
--- a/lib/ldscripts/elf64ltsmip.xd
+++ b/lib/ldscripts/elf64ltsmip.xd
@@ -1,13 +1,18 @@
 /* Script for ld -pie: link position independent executable */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -73,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -88,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -130,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -170,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -181,7 +186,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -241,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -254,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.xdc b/lib/ldscripts/elf64ltsmip.xdc
index 09c00a0..8380443 100644
--- a/lib/ldscripts/elf64ltsmip.xdc
+++ b/lib/ldscripts/elf64ltsmip.xdc
@@ -1,13 +1,18 @@
 /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -40,8 +45,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -60,8 +63,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -76,14 +77,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -91,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -133,14 +134,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -173,7 +174,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -184,7 +185,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,6 +261,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.xdw b/lib/ldscripts/elf64ltsmip.xdw
index ce6f9d7..46ae67c 100644
--- a/lib/ldscripts/elf64ltsmip.xdw
+++ b/lib/ldscripts/elf64ltsmip.xdw
@@ -1,13 +1,18 @@
 /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
-  . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -40,8 +45,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -60,8 +63,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -76,14 +77,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -91,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -133,14 +134,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -173,7 +174,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -184,7 +185,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,6 +261,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.xn b/lib/ldscripts/elf64ltsmip.xn
index dba3fb1..3c6e257 100644
--- a/lib/ldscripts/elf64ltsmip.xn
+++ b/lib/ldscripts/elf64ltsmip.xn
@@ -1,13 +1,18 @@
 /* Script for -n: mix text and data on same page */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x120000000)); . = SEGMENT_START("text-segment", 0x120000000) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -73,14 +78,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -88,11 +93,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -130,14 +135,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -170,7 +175,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -181,7 +186,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -194,6 +200,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -215,6 +222,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -241,7 +249,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -254,6 +262,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.xr b/lib/ldscripts/elf64ltsmip.xr
index 80556b8..40dea64 100644
--- a/lib/ldscripts/elf64ltsmip.xr
+++ b/lib/ldscripts/elf64ltsmip.xr
@@ -1,4 +1,8 @@
 /* Script for ld -r: link without relocation */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
@@ -9,6 +13,7 @@
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
+  .MIPS.abiflags      0 : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic      0 : { *(.dynamic) }
@@ -70,8 +75,8 @@
     }
   .init         0 :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt          0 : { *(.plt) }
   .iplt         0 : { *(.iplt) }
   .text         0 :
@@ -79,11 +84,11 @@
     *(.text .stub)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-  } =0
+  }
   .fini         0 :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   .rodata       0 : { *(.rodata) }
   .rodata1      0 : { *(.rodata1) }
   .sdata2       0 :
@@ -169,7 +174,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -182,6 +187,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.xs b/lib/ldscripts/elf64ltsmip.xs
index 1d049cc..2806b4a 100644
--- a/lib/ldscripts/elf64ltsmip.xs
+++ b/lib/ldscripts/elf64ltsmip.xs
@@ -1,13 +1,18 @@
 /* Script for ld --shared: link shared library */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -26,8 +31,8 @@
   .rela.fini      : { *(.rela.fini) }
   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
-  .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
-  .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
+  .rel.data.rel.ro   : { *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) }
+  .rela.data.rel.ro   : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
   .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
@@ -69,14 +74,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -84,11 +89,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -118,12 +123,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -155,7 +160,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -166,7 +171,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -180,6 +186,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -202,6 +209,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -228,7 +236,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -241,6 +249,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.xsc b/lib/ldscripts/elf64ltsmip.xsc
index 5fe1593..10606e6 100644
--- a/lib/ldscripts/elf64ltsmip.xsc
+++ b/lib/ldscripts/elf64ltsmip.xsc
@@ -1,13 +1,18 @@
 /* Script for --shared -z combreloc: shared library, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -68,14 +73,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -83,11 +88,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -117,12 +122,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -154,7 +159,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
   {
@@ -165,7 +170,8 @@
   .data1          : { *(.data1) }
   .got.plt        : { *(.got.plt) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -179,6 +185,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -201,6 +208,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -227,7 +235,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -240,6 +248,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.xsw b/lib/ldscripts/elf64ltsmip.xsw
index b6a2188..f040d3b 100644
--- a/lib/ldscripts/elf64ltsmip.xsw
+++ b/lib/ldscripts/elf64ltsmip.xsw
@@ -1,13 +1,18 @@
 /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -68,14 +73,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -83,11 +88,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -117,12 +122,12 @@
   .init_array     :
   {
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
   }
   .fini_array     :
   {
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
   }
   .ctors          :
   {
@@ -154,7 +159,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -165,7 +170,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -179,6 +185,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -201,6 +208,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -227,7 +235,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -240,6 +248,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.xu b/lib/ldscripts/elf64ltsmip.xu
index af54835..9ccfff1 100644
--- a/lib/ldscripts/elf64ltsmip.xu
+++ b/lib/ldscripts/elf64ltsmip.xu
@@ -1,4 +1,8 @@
 /* Script for ld -Ur: link w/out relocation, do create constructors */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
@@ -9,6 +13,7 @@
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
+  .MIPS.abiflags      0 : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic      0 : { *(.dynamic) }
@@ -70,8 +75,8 @@
     }
   .init         0 :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt          0 : { *(.plt) }
   .iplt         0 : { *(.iplt) }
   .text         0 :
@@ -79,11 +84,11 @@
     *(.text .stub)
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
-  } =0
+  }
   .fini         0 :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   .rodata       0 : { *(.rodata) }
   .rodata1      0 : { *(.rodata1) }
   .sdata2       0 :
@@ -170,7 +175,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -183,6 +188,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/ldscripts/elf64ltsmip.xw b/lib/ldscripts/elf64ltsmip.xw
index 4608733..6553e9a 100644
--- a/lib/ldscripts/elf64ltsmip.xw
+++ b/lib/ldscripts/elf64ltsmip.xw
@@ -1,13 +1,18 @@
 /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */
+/* Copyright (C) 2014 Free Software Foundation, Inc.
+   Copying and distribution of this script, with or without modification,
+   are permitted in any medium without royalty provided the copyright
+   notice and this notice are preserved.  */
 OUTPUT_FORMAT("elf64-tradlittlemips", "elf64-tradbigmips",
 	      "elf64-tradlittlemips")
 OUTPUT_ARCH(mips)
 ENTRY(__start)
-SEARCH_DIR("/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
+SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/google/jfthibert/buildroot/buildroot/output/host/usr/mipsel-buildroot-linux-uclibc/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
 SECTIONS
 {
   /* Read-only sections, merged into text segment: */
   PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x120000000)); . = SEGMENT_START("text-segment", 0x120000000) + SIZEOF_HEADERS;
+  .MIPS.abiflags        : { *(.MIPS.abiflags) }
   .MIPS.options : { *(.MIPS.options) }
   .note.gnu.build-id : { *(.note.gnu.build-id) }
   .dynamic        : { *(.dynamic) }
@@ -24,7 +29,7 @@
       *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
       *(.rel.fini)
       *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
-      *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
+      *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*)
       *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
       *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
       *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
@@ -40,8 +45,6 @@
       PROVIDE_HIDDEN (__rel_iplt_start = .);
       *(.rel.iplt)
       PROVIDE_HIDDEN (__rel_iplt_end = .);
-      PROVIDE_HIDDEN (__rela_iplt_start = .);
-      PROVIDE_HIDDEN (__rela_iplt_end = .);
     }
   .rela.dyn       :
     {
@@ -60,8 +63,6 @@
       *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
       *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
       *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
-      PROVIDE_HIDDEN (__rel_iplt_start = .);
-      PROVIDE_HIDDEN (__rel_iplt_end = .);
       PROVIDE_HIDDEN (__rela_iplt_start = .);
       *(.rela.iplt)
       PROVIDE_HIDDEN (__rela_iplt_end = .);
@@ -76,14 +77,14 @@
     }
   .init           :
   {
-    KEEP (*(.init))
-  } =0
+    KEEP (*(SORT_NONE(.init)))
+  }
   .plt            : { *(.plt) }
   .iplt           : { *(.iplt) }
   .text           :
   {
     _ftext = . ;
-    *(.text.unlikely .text.*_unlikely)
+    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
     *(.text.exit .text.exit.*)
     *(.text.startup .text.startup.*)
     *(.text.hot .text.hot.*)
@@ -91,11 +92,11 @@
     /* .gnu.warning sections are handled specially by elf32.em.  */
     *(.gnu.warning)
     *(.mips16.fn.*) *(.mips16.call.*)
-  } =0
+  }
   .fini           :
   {
-    KEEP (*(.fini))
-  } =0
+    KEEP (*(SORT_NONE(.fini)))
+  }
   PROVIDE (__etext = .);
   PROVIDE (_etext = .);
   PROVIDE (etext = .);
@@ -133,14 +134,14 @@
   {
     PROVIDE_HIDDEN (__init_array_start = .);
     KEEP (*(SORT(.init_array.*)))
-    KEEP (*(.init_array))
+    KEEP (*(.init_array ))
     PROVIDE_HIDDEN (__init_array_end = .);
   }
   .fini_array     :
   {
     PROVIDE_HIDDEN (__fini_array_start = .);
     KEEP (*(SORT(.fini_array.*)))
-    KEEP (*(.fini_array))
+    KEEP (*(.fini_array ))
     PROVIDE_HIDDEN (__fini_array_end = .);
   }
   .ctors          :
@@ -173,7 +174,7 @@
     KEEP (*(.dtors))
   }
   .jcr            : { KEEP (*(.jcr)) }
-  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
+  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
   .got.plt        : { *(.got.plt) }
   . = DATA_SEGMENT_RELRO_END (0, .);
   .data           :
@@ -184,7 +185,8 @@
   }
   .data1          : { *(.data1) }
   . = .;
-  _gp = ALIGN(16) + 0x7ff0;
+  . = .;
+  HIDDEN (_gp = ALIGN (16) + 0x7ff0);
   .got            : { *(.got) }
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
@@ -197,6 +199,7 @@
   .lit4           : { *(.lit4) }
   .srdata         : { *(.srdata) }
   _edata = .; PROVIDE (edata = .);
+  . = .;
   __bss_start = .;
   _fbss = .;
   .sbss           :
@@ -218,6 +221,7 @@
    . = ALIGN(. != 0 ? 64 / 8 : 1);
   }
   . = ALIGN(64 / 8);
+  . = SEGMENT_START("ldata-segment", .);
   . = ALIGN(64 / 8);
   _end = .; PROVIDE (end = .);
   . = DATA_SEGMENT_END (.);
@@ -244,7 +248,7 @@
   /* DWARF 2 */
   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
   .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end ) }
   .debug_frame    0 : { *(.debug_frame) }
   .debug_str      0 : { *(.debug_str) }
   .debug_loc      0 : { *(.debug_loc) }
@@ -257,6 +261,8 @@
   /* DWARF 3 */
   .debug_pubtypes 0 : { *(.debug_pubtypes) }
   .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF Extension.  */
+  .debug_macro    0 : { *(.debug_macro) }
   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
diff --git a/lib/libgmp.a b/lib/libgmp.a
index bc441df..ed69d07 100644
--- a/lib/libgmp.a
+++ b/lib/libgmp.a
Binary files differ
diff --git a/lib/libmpc.a b/lib/libmpc.a
index fbc4b81..132906d 100644
--- a/lib/libmpc.a
+++ b/lib/libmpc.a
Binary files differ
diff --git a/lib/libmpfr.a b/lib/libmpfr.a
index cf7d317..9872261 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 58f975c..3e8b140 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 3857088..d1aaede 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/lto1 b/libexec/gcc/mipsel-buildroot-linux-uclibc/4.9.1/lto1
index 81492e4..ce57cf8 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/mipsel-buildroot-linux-uclibc/lib/libatomic.a b/mipsel-buildroot-linux-uclibc/lib/libatomic.a
index 224a724..af2e58f 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/libstdc++.a b/mipsel-buildroot-linux-uclibc/lib/libstdc++.a
index dd66047..4ed21cf 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/libsupc++.a b/mipsel-buildroot-linux-uclibc/lib/libsupc++.a
index 31407e4..83dbf71 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/libm-0.9.33.2.so b/mipsel-buildroot-linux-uclibc/sysroot/lib/libm-0.9.33.2.so
index 739a327..54bccae 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/libuClibc-0.9.33.2.so b/mipsel-buildroot-linux-uclibc/sysroot/lib/libuClibc-0.9.33.2.so
index f1727b9..5207a3f 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/include/bits/uClibc_config.h b/mipsel-buildroot-linux-uclibc/sysroot/usr/include/bits/uClibc_config.h
index 72d5b2e..e5cdafa 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 Nov 11 17:04:34 2015 */
+/* Wed Dec  9 13:55:04 2015 */
 #undef __TARGET_alpha__
 #undef __TARGET_arm__
 #undef __TARGET_avr32__
@@ -61,7 +61,7 @@
 #define __UCLIBC_HAS_FLOATS__ 1
 #define __UCLIBC_HAS_FPU__ 1
 #define __DO_C99_MATH__ 1
-#undef __DO_XSI_MATH__
+#define __DO_XSI_MATH__ 1
 #undef __UCLIBC_HAS_FENV__
 #define __KERNEL_HEADERS__ "/usr/local/google/jfthibert/buildroot/buildroot/output/build/linux-headers-3.2.63/usr/include"
 #define __HAVE_DOT_CONFIG__ 1
diff --git a/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libc.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libc.a
index 36766ae..7d19417 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 4a13f86..4b3dbbd 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 effb530..f3d697d 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 0a9f522..24c480b 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/libm.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libm.a
index 329b7cf..0fd7f99 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 6608d8f..73cadda 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 d2b7846..2517225 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 a2f11e2..4b5e707 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 f763133..1b35b7e 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 cf5dc0d..77e659d 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 dd66047..4ed21cf 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/libthread_db.a b/mipsel-buildroot-linux-uclibc/sysroot/usr/lib/libthread_db.a
index dfdc998..6ecbb03 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 bf1ff7e..7f8fb5c 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 f40a5d2..69d0415 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 f5a54d5..5c791bd 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/as.info b/share/info/as.info
index 1865d08..b3d29d6 100644
--- a/share/info/as.info
+++ b/share/info/as.info
Binary files differ
diff --git a/share/info/bfd.info b/share/info/bfd.info
index bffd41a..2b46faa 100644
--- a/share/info/bfd.info
+++ b/share/info/bfd.info
Binary files differ
diff --git a/share/info/binutils.info b/share/info/binutils.info
index 5146edc..a483f38 100644
--- a/share/info/binutils.info
+++ b/share/info/binutils.info
Binary files differ
diff --git a/share/info/gprof.info b/share/info/gprof.info
index 9667777..5e5c878 100644
--- a/share/info/gprof.info
+++ b/share/info/gprof.info
@@ -7,8 +7,7 @@
 
    This file documents the gprof profiler of the GNU system.
 
-   Copyright (C) 1988, 1992, 1997, 1998, 1999, 2000, 2001, 2003, 2007,
-2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1988-2014 Free Software Foundation, Inc.
 
    Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -28,7 +27,7 @@
 time.  We assume that you know how to write, compile, and execute
 programs.  GNU `gprof' was written by Jay Fenlason.
 
-   This manual is for `gprof' (GNU Binutils) version 2.21.90.
+   This manual is for `gprof' (GNU Binutils) version 2.25.
 
    This document is distributed under the terms of the GNU Free
 Documentation License version 1.3.  A copy of the license is included
@@ -528,6 +527,11 @@
      statistical inaccuracies.  *Note Statistical Sampling Error:
      Sampling Error.
 
+`--inline-file-names'
+     This option causes `gprof' to print the source file after each
+     symbol in both the flat profile and the call graph. The full path
+     to the file is printed if used with the `-L' option.
+
 `-m NUM'
 `--min-count=NUM'
      This option affects execution count output only.  Symbols that are
@@ -2440,35 +2444,35 @@
 
 
 Tag Table:
-Node: Top777
-Node: Introduction2103
-Node: Compiling4595
-Node: Executing8651
-Node: Invoking11439
-Node: Output Options12854
-Node: Analysis Options19943
-Node: Miscellaneous Options23641
-Node: Deprecated Options24896
-Node: Symspecs26965
-Node: Output28791
-Node: Flat Profile29831
-Node: Call Graph34784
-Node: Primary38016
-Node: Callers40604
-Node: Subroutines42721
-Node: Cycles44562
-Node: Line-by-line51339
-Node: Annotated Source55412
-Node: Inaccuracy58411
-Node: Sampling Error58669
-Node: Assumptions61573
-Node: How do I?63043
-Node: Incompatibilities64597
-Node: Details66091
-Node: Implementation66484
-Node: File Format72381
-Node: Internals76671
-Node: Debugging85166
-Node: GNU Free Documentation License86767
+Node: Top722
+Node: Introduction2045
+Node: Compiling4537
+Node: Executing8593
+Node: Invoking11381
+Node: Output Options12796
+Node: Analysis Options19885
+Node: Miscellaneous Options23803
+Node: Deprecated Options25058
+Node: Symspecs27127
+Node: Output28953
+Node: Flat Profile29993
+Node: Call Graph34946
+Node: Primary38178
+Node: Callers40766
+Node: Subroutines42883
+Node: Cycles44724
+Node: Line-by-line51501
+Node: Annotated Source55574
+Node: Inaccuracy58573
+Node: Sampling Error58831
+Node: Assumptions61735
+Node: How do I?63205
+Node: Incompatibilities64759
+Node: Details66253
+Node: Implementation66646
+Node: File Format72543
+Node: Internals76833
+Node: Debugging85328
+Node: GNU Free Documentation License86929
 
 End Tag Table
diff --git a/share/info/ld.info b/share/info/ld.info
index 8d42dde..e85dfe1 100644
--- a/share/info/ld.info
+++ b/share/info/ld.info
Binary files differ
diff --git a/share/locale/bg/LC_MESSAGES/binutils.mo b/share/locale/bg/LC_MESSAGES/binutils.mo
index 91c86a5..00bb378 100644
--- a/share/locale/bg/LC_MESSAGES/binutils.mo
+++ b/share/locale/bg/LC_MESSAGES/binutils.mo
Binary files differ
diff --git a/share/locale/bg/LC_MESSAGES/gprof.mo b/share/locale/bg/LC_MESSAGES/gprof.mo
index 668ad6b..85a5bd7 100644
--- a/share/locale/bg/LC_MESSAGES/gprof.mo
+++ b/share/locale/bg/LC_MESSAGES/gprof.mo
Binary files differ
diff --git a/share/locale/bg/LC_MESSAGES/ld.mo b/share/locale/bg/LC_MESSAGES/ld.mo
index 7562e74..e187f8f 100644
--- a/share/locale/bg/LC_MESSAGES/ld.mo
+++ b/share/locale/bg/LC_MESSAGES/ld.mo
Binary files differ
diff --git a/share/locale/de/LC_MESSAGES/opcodes.mo b/share/locale/de/LC_MESSAGES/opcodes.mo
index acd983f..aeb0fd8 100644
--- a/share/locale/de/LC_MESSAGES/opcodes.mo
+++ b/share/locale/de/LC_MESSAGES/opcodes.mo
Binary files differ
diff --git a/share/locale/es/LC_MESSAGES/bfd.mo b/share/locale/es/LC_MESSAGES/bfd.mo
index 2d9b415..d31fab0 100644
--- a/share/locale/es/LC_MESSAGES/bfd.mo
+++ b/share/locale/es/LC_MESSAGES/bfd.mo
Binary files differ
diff --git a/share/locale/es/LC_MESSAGES/binutils.mo b/share/locale/es/LC_MESSAGES/binutils.mo
index 282a8a8..65268df 100644
--- a/share/locale/es/LC_MESSAGES/binutils.mo
+++ b/share/locale/es/LC_MESSAGES/binutils.mo
Binary files differ
diff --git a/share/locale/es/LC_MESSAGES/gas.mo b/share/locale/es/LC_MESSAGES/gas.mo
index ff8e71a..0b17373 100644
--- a/share/locale/es/LC_MESSAGES/gas.mo
+++ b/share/locale/es/LC_MESSAGES/gas.mo
Binary files differ
diff --git a/share/locale/es/LC_MESSAGES/gold.mo b/share/locale/es/LC_MESSAGES/gold.mo
new file mode 100644
index 0000000..8c231b2
--- /dev/null
+++ b/share/locale/es/LC_MESSAGES/gold.mo
Binary files differ
diff --git a/share/locale/es/LC_MESSAGES/gprof.mo b/share/locale/es/LC_MESSAGES/gprof.mo
index a5f808e..175ae7d 100644
--- a/share/locale/es/LC_MESSAGES/gprof.mo
+++ b/share/locale/es/LC_MESSAGES/gprof.mo
Binary files differ
diff --git a/share/locale/es/LC_MESSAGES/ld.mo b/share/locale/es/LC_MESSAGES/ld.mo
index 0509cbb..feea374 100644
--- a/share/locale/es/LC_MESSAGES/ld.mo
+++ b/share/locale/es/LC_MESSAGES/ld.mo
Binary files differ
diff --git a/share/locale/es/LC_MESSAGES/opcodes.mo b/share/locale/es/LC_MESSAGES/opcodes.mo
index 510536b..4aba3de 100644
--- a/share/locale/es/LC_MESSAGES/opcodes.mo
+++ b/share/locale/es/LC_MESSAGES/opcodes.mo
Binary files differ
diff --git a/share/locale/fi/LC_MESSAGES/bfd.mo b/share/locale/fi/LC_MESSAGES/bfd.mo
index 44bca56..dd99738 100644
--- a/share/locale/fi/LC_MESSAGES/bfd.mo
+++ b/share/locale/fi/LC_MESSAGES/bfd.mo
Binary files differ
diff --git a/share/locale/fi/LC_MESSAGES/binutils.mo b/share/locale/fi/LC_MESSAGES/binutils.mo
index a3aba65..98748b8 100644
--- a/share/locale/fi/LC_MESSAGES/binutils.mo
+++ b/share/locale/fi/LC_MESSAGES/binutils.mo
Binary files differ
diff --git a/share/locale/fi/LC_MESSAGES/gas.mo b/share/locale/fi/LC_MESSAGES/gas.mo
index aaaa271..72df64d 100644
--- a/share/locale/fi/LC_MESSAGES/gas.mo
+++ b/share/locale/fi/LC_MESSAGES/gas.mo
Binary files differ
diff --git a/share/locale/fi/LC_MESSAGES/gold.mo b/share/locale/fi/LC_MESSAGES/gold.mo
new file mode 100644
index 0000000..8e5149d
--- /dev/null
+++ b/share/locale/fi/LC_MESSAGES/gold.mo
Binary files differ
diff --git a/share/locale/fi/LC_MESSAGES/gprof.mo b/share/locale/fi/LC_MESSAGES/gprof.mo
index 082672a..874e405 100644
--- a/share/locale/fi/LC_MESSAGES/gprof.mo
+++ b/share/locale/fi/LC_MESSAGES/gprof.mo
Binary files differ
diff --git a/share/locale/fi/LC_MESSAGES/ld.mo b/share/locale/fi/LC_MESSAGES/ld.mo
index 1d4f6d6..d1b25bb 100644
--- a/share/locale/fi/LC_MESSAGES/ld.mo
+++ b/share/locale/fi/LC_MESSAGES/ld.mo
Binary files differ
diff --git a/share/locale/fi/LC_MESSAGES/opcodes.mo b/share/locale/fi/LC_MESSAGES/opcodes.mo
index e797314..3546623 100644
--- a/share/locale/fi/LC_MESSAGES/opcodes.mo
+++ b/share/locale/fi/LC_MESSAGES/opcodes.mo
Binary files differ
diff --git a/share/locale/fr/LC_MESSAGES/bfd.mo b/share/locale/fr/LC_MESSAGES/bfd.mo
index 2a73a53..176e230 100644
--- a/share/locale/fr/LC_MESSAGES/bfd.mo
+++ b/share/locale/fr/LC_MESSAGES/bfd.mo
Binary files differ
diff --git a/share/locale/fr/LC_MESSAGES/binutils.mo b/share/locale/fr/LC_MESSAGES/binutils.mo
index b4f3a9f..98cb1c5 100644
--- a/share/locale/fr/LC_MESSAGES/binutils.mo
+++ b/share/locale/fr/LC_MESSAGES/binutils.mo
Binary files differ
diff --git a/share/locale/fr/LC_MESSAGES/gas.mo b/share/locale/fr/LC_MESSAGES/gas.mo
index 94fa3ab..c47df47 100644
--- a/share/locale/fr/LC_MESSAGES/gas.mo
+++ b/share/locale/fr/LC_MESSAGES/gas.mo
Binary files differ
diff --git a/share/locale/fr/LC_MESSAGES/ld.mo b/share/locale/fr/LC_MESSAGES/ld.mo
index 24c9ae1..10682ea 100644
--- a/share/locale/fr/LC_MESSAGES/ld.mo
+++ b/share/locale/fr/LC_MESSAGES/ld.mo
Binary files differ
diff --git a/share/locale/hr/LC_MESSAGES/binutils.mo b/share/locale/hr/LC_MESSAGES/binutils.mo
new file mode 100644
index 0000000..14c292d
--- /dev/null
+++ b/share/locale/hr/LC_MESSAGES/binutils.mo
Binary files differ
diff --git a/share/locale/hu/LC_MESSAGES/gprof.mo b/share/locale/hu/LC_MESSAGES/gprof.mo
new file mode 100644
index 0000000..8c770e9
--- /dev/null
+++ b/share/locale/hu/LC_MESSAGES/gprof.mo
Binary files differ
diff --git a/share/locale/id/LC_MESSAGES/gold.mo b/share/locale/id/LC_MESSAGES/gold.mo
new file mode 100644
index 0000000..bd5a800
--- /dev/null
+++ b/share/locale/id/LC_MESSAGES/gold.mo
Binary files differ
diff --git a/share/locale/it/LC_MESSAGES/binutils.mo b/share/locale/it/LC_MESSAGES/binutils.mo
new file mode 100644
index 0000000..6e01870
--- /dev/null
+++ b/share/locale/it/LC_MESSAGES/binutils.mo
Binary files differ
diff --git a/share/locale/it/LC_MESSAGES/gold.mo b/share/locale/it/LC_MESSAGES/gold.mo
new file mode 100644
index 0000000..b79d83a
--- /dev/null
+++ b/share/locale/it/LC_MESSAGES/gold.mo
Binary files differ
diff --git a/share/locale/it/LC_MESSAGES/gprof.mo b/share/locale/it/LC_MESSAGES/gprof.mo
new file mode 100644
index 0000000..832ddde
--- /dev/null
+++ b/share/locale/it/LC_MESSAGES/gprof.mo
Binary files differ
diff --git a/share/locale/it/LC_MESSAGES/ld.mo b/share/locale/it/LC_MESSAGES/ld.mo
new file mode 100644
index 0000000..e6cb2dd
--- /dev/null
+++ b/share/locale/it/LC_MESSAGES/ld.mo
Binary files differ
diff --git a/share/locale/it/LC_MESSAGES/opcodes.mo b/share/locale/it/LC_MESSAGES/opcodes.mo
new file mode 100644
index 0000000..7e18e7a
--- /dev/null
+++ b/share/locale/it/LC_MESSAGES/opcodes.mo
Binary files differ
diff --git a/share/locale/ja/LC_MESSAGES/bfd.mo b/share/locale/ja/LC_MESSAGES/bfd.mo
index d887a71..321f833 100644
--- a/share/locale/ja/LC_MESSAGES/bfd.mo
+++ b/share/locale/ja/LC_MESSAGES/bfd.mo
Binary files differ
diff --git a/share/locale/ja/LC_MESSAGES/binutils.mo b/share/locale/ja/LC_MESSAGES/binutils.mo
index 9a90fa5..0f4f1e2 100644
--- a/share/locale/ja/LC_MESSAGES/binutils.mo
+++ b/share/locale/ja/LC_MESSAGES/binutils.mo
Binary files differ
diff --git a/share/locale/ja/LC_MESSAGES/gas.mo b/share/locale/ja/LC_MESSAGES/gas.mo
new file mode 100644
index 0000000..07f7f92
--- /dev/null
+++ b/share/locale/ja/LC_MESSAGES/gas.mo
Binary files differ
diff --git a/share/locale/ja/LC_MESSAGES/gprof.mo b/share/locale/ja/LC_MESSAGES/gprof.mo
new file mode 100644
index 0000000..f563e64
--- /dev/null
+++ b/share/locale/ja/LC_MESSAGES/gprof.mo
Binary files differ
diff --git a/share/locale/ja/LC_MESSAGES/ld.mo b/share/locale/ja/LC_MESSAGES/ld.mo
index bfbd0c9..703df64 100644
--- a/share/locale/ja/LC_MESSAGES/ld.mo
+++ b/share/locale/ja/LC_MESSAGES/ld.mo
Binary files differ
diff --git a/share/locale/ru/LC_MESSAGES/bfd.mo b/share/locale/ru/LC_MESSAGES/bfd.mo
index 2086367..9dd8b47 100644
--- a/share/locale/ru/LC_MESSAGES/bfd.mo
+++ b/share/locale/ru/LC_MESSAGES/bfd.mo
Binary files differ
diff --git a/share/locale/ru/LC_MESSAGES/binutils.mo b/share/locale/ru/LC_MESSAGES/binutils.mo
index 5d724b0..d1e39e8 100644
--- a/share/locale/ru/LC_MESSAGES/binutils.mo
+++ b/share/locale/ru/LC_MESSAGES/binutils.mo
Binary files differ
diff --git a/share/locale/sr/LC_MESSAGES/binutils.mo b/share/locale/sr/LC_MESSAGES/binutils.mo
new file mode 100644
index 0000000..572ee0a
--- /dev/null
+++ b/share/locale/sr/LC_MESSAGES/binutils.mo
Binary files differ
diff --git a/share/locale/sr/LC_MESSAGES/gprof.mo b/share/locale/sr/LC_MESSAGES/gprof.mo
new file mode 100644
index 0000000..16f76f2
--- /dev/null
+++ b/share/locale/sr/LC_MESSAGES/gprof.mo
Binary files differ
diff --git a/share/locale/sv/LC_MESSAGES/binutils.mo b/share/locale/sv/LC_MESSAGES/binutils.mo
index 0efae30..328c896 100644
--- a/share/locale/sv/LC_MESSAGES/binutils.mo
+++ b/share/locale/sv/LC_MESSAGES/binutils.mo
Binary files differ
diff --git a/share/locale/uk/LC_MESSAGES/bfd.mo b/share/locale/uk/LC_MESSAGES/bfd.mo
new file mode 100644
index 0000000..9c85a90
--- /dev/null
+++ b/share/locale/uk/LC_MESSAGES/bfd.mo
Binary files differ
diff --git a/share/locale/uk/LC_MESSAGES/binutils.mo b/share/locale/uk/LC_MESSAGES/binutils.mo
index 6cd6aa1..5b91ef9 100644
--- a/share/locale/uk/LC_MESSAGES/binutils.mo
+++ b/share/locale/uk/LC_MESSAGES/binutils.mo
Binary files differ
diff --git a/share/locale/uk/LC_MESSAGES/gas.mo b/share/locale/uk/LC_MESSAGES/gas.mo
new file mode 100644
index 0000000..a7dfd92
--- /dev/null
+++ b/share/locale/uk/LC_MESSAGES/gas.mo
Binary files differ
diff --git a/share/locale/uk/LC_MESSAGES/gprof.mo b/share/locale/uk/LC_MESSAGES/gprof.mo
new file mode 100644
index 0000000..b11462d
--- /dev/null
+++ b/share/locale/uk/LC_MESSAGES/gprof.mo
Binary files differ
diff --git a/share/locale/uk/LC_MESSAGES/ld.mo b/share/locale/uk/LC_MESSAGES/ld.mo
new file mode 100644
index 0000000..231915b
--- /dev/null
+++ b/share/locale/uk/LC_MESSAGES/ld.mo
Binary files differ
diff --git a/share/locale/uk/LC_MESSAGES/opcodes.mo b/share/locale/uk/LC_MESSAGES/opcodes.mo
new file mode 100644
index 0000000..c9cbf5b
--- /dev/null
+++ b/share/locale/uk/LC_MESSAGES/opcodes.mo
Binary files differ
diff --git a/share/locale/vi/LC_MESSAGES/bfd.mo b/share/locale/vi/LC_MESSAGES/bfd.mo
index 0c9ed17..0687a74 100644
--- a/share/locale/vi/LC_MESSAGES/bfd.mo
+++ b/share/locale/vi/LC_MESSAGES/bfd.mo
Binary files differ
diff --git a/share/locale/vi/LC_MESSAGES/binutils.mo b/share/locale/vi/LC_MESSAGES/binutils.mo
index c194894..dee68e3 100644
--- a/share/locale/vi/LC_MESSAGES/binutils.mo
+++ b/share/locale/vi/LC_MESSAGES/binutils.mo
Binary files differ
diff --git a/share/locale/vi/LC_MESSAGES/gold.mo b/share/locale/vi/LC_MESSAGES/gold.mo
new file mode 100644
index 0000000..c2d3d96
--- /dev/null
+++ b/share/locale/vi/LC_MESSAGES/gold.mo
Binary files differ
diff --git a/share/locale/vi/LC_MESSAGES/gprof.mo b/share/locale/vi/LC_MESSAGES/gprof.mo
index 91530d6..902b3cd 100644
--- a/share/locale/vi/LC_MESSAGES/gprof.mo
+++ b/share/locale/vi/LC_MESSAGES/gprof.mo
Binary files differ
diff --git a/share/locale/vi/LC_MESSAGES/ld.mo b/share/locale/vi/LC_MESSAGES/ld.mo
index 831bb46..fce15ce 100644
--- a/share/locale/vi/LC_MESSAGES/ld.mo
+++ b/share/locale/vi/LC_MESSAGES/ld.mo
Binary files differ
diff --git a/share/locale/vi/LC_MESSAGES/opcodes.mo b/share/locale/vi/LC_MESSAGES/opcodes.mo
index 28974e4..38a5f5a 100644
--- a/share/locale/vi/LC_MESSAGES/opcodes.mo
+++ b/share/locale/vi/LC_MESSAGES/opcodes.mo
Binary files differ
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-addr2line.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-addr2line.1
index a89767b..08e38a9 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-addr2line.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-addr2line.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "ADDR2LINE 1"
-.TH ADDR2LINE 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH ADDR2LINE 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -165,12 +174,33 @@
 address on standard output.  In this mode, \fBaddr2line\fR may be used
 in a pipe to convert dynamically chosen addresses.
 .PP
-The format of the output is \fB\s-1FILENAME:LINENO\s0\fR.  The file name and
-line number for each address is printed on a separate line.  If the
-\&\fB\-f\fR option is used, then each \fB\s-1FILENAME:LINENO\s0\fR line is
-preceded by a \fB\s-1FUNCTIONNAME\s0\fR line which is the name of the function
-containing the address.  If the \fB\-a\fR option is used, then the
-address read is first printed.
+The format of the output is \fB\s-1FILENAME:LINENO\s0\fR.  By default
+each input address generates one line of output.
+.PP
+Two options can generate additional lines before each
+\&\fB\s-1FILENAME:LINENO\s0\fR line (in that order).
+.PP
+If the \fB\-a\fR option is used then a line with the input address
+is displayed.
+.PP
+If the \fB\-f\fR option is used, then a line with the
+\&\fB\s-1FUNCTIONNAME\s0\fR is displayed.  This is the name of the function
+containing the address.
+.PP
+One option can generate additional lines after the
+\&\fB\s-1FILENAME:LINENO\s0\fR line.
+.PP
+If the \fB\-i\fR option is used and the code at the given address is
+present there because of inlining by the compiler then additional
+lines are displayed afterwards.  One or two extra lines (if the
+\&\fB\-f\fR option is used) are displayed for each inlined function.
+.PP
+Alternatively if the \fB\-p\fR option is used then each input
+address generates a single, long, output line containing the address,
+the function name, the file name and the line number.  If the
+\&\fB\-i\fR option has also been used then any inlined functions will
+be displayed in the same manner, but on separate lines, and prefixed
+by the text \fB(inlined by)\fR.
 .PP
 If the file name or function name can not be determined,
 \&\fBaddr2line\fR will print two question marks in their place.  If the
@@ -185,7 +215,7 @@
 .IP "\fB\-\-addresses\fR" 4
 .IX Item "--addresses"
 .PD
-Display address before function names or file and line number
+Display the address before the function name, file and line number
 information.  The address is printed with a \fB0x\fR prefix to easily
 identify it.
 .IP "\fB\-b\fR \fIbfdname\fR" 4
@@ -275,9 +305,7 @@
 Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-ar.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-ar.1
index 70f1904..a6f91e5 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-ar.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-ar.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "AR 1"
-.TH AR 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH AR 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -133,10 +142,10 @@
 ar \- create, modify, and extract from archives
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
-ar [\fB\-\-plugin\fR \fIname\fR] [\fB\-X32_64\fR] [\fB\-\fR]\fIp\fR[\fImod\fR [\fIrelpos\fR] [\fIcount\fR]] [\fB\-\-target\fR \fIbfdname\fR] \fIarchive\fR [\fImember\fR...]
+ar [\fB\-X32_64\fR] [\fB\-\fR]\fIp\fR[\fImod\fR] [\fB\-\-plugin\fR \fIname\fR] [\fB\-\-target\fR \fIbfdname\fR] [\fIrelpos\fR] [\fIcount\fR] \fIarchive\fR [\fImember\fR...]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
-The \s-1GNU\s0 \fBar\fR program creates, modifies, and extracts from
+The \s-1GNU \s0\fBar\fR program creates, modifies, and extracts from
 archives.  An \fIarchive\fR is a single file holding a collection of
 other files in a structure that makes it possible to retrieve
 the original individual files (called \fImembers\fR of the archive).
@@ -145,7 +154,7 @@
 group are preserved in the archive, and can be restored on
 extraction.
 .PP
-\&\s-1GNU\s0 \fBar\fR can maintain archives whose members have names of any
+\&\s-1GNU \s0\fBar\fR can maintain archives whose members have names of any
 length; however, depending on how \fBar\fR is configured on your
 system, a limit on member-name length may be imposed for compatibility
 with archive formats maintained with other tools.  If it exists, the
@@ -168,26 +177,36 @@
 table.  If an archive lacks the table, another form of \fBar\fR called
 \&\fBranlib\fR can be used to add just the table.
 .PP
-\&\s-1GNU\s0 \fBar\fR can optionally create a \fIthin\fR archive,
+\&\s-1GNU \s0\fBar\fR can optionally create a \fIthin\fR archive,
 which contains a symbol index and references to the original copies
-of the member files of the archives.  Such an archive is useful
-for building libraries for use within a local build, where the
-relocatable objects are expected to remain available, and copying the
-contents of each object would only waste time and space.  Thin archives
-are also \fIflattened\fR, so that adding one or more archives to a
-thin archive will add the elements of the nested archive individually.
-The paths to the elements of the archive are stored relative to the
-archive itself.
+of the member files of the archive.  This is useful for building
+libraries for use within a local build tree, where the relocatable
+objects are expected to remain available, and copying the contents of
+each object would only waste time and space.
 .PP
-\&\s-1GNU\s0 \fBar\fR is designed to be compatible with two different
+An archive can either be \fIthin\fR or it can be normal.  It cannot
+be both at the same time.  Once an archive is created its format
+cannot be changed without first deleting it and then creating a new
+archive in its place.
+.PP
+Thin archives are also \fIflattened\fR, so that adding one thin
+archive to another thin archive does not nest it, as would happen with
+a normal archive.  Instead the elements of the first archive are added
+individually to the second archive.
+.PP
+The paths to the elements of the archive are stored relative to the
+archive itself.  For security reasons absolute paths and paths with a
+\&\f(CW\*(C`/../\*(C'\fR component are not allowed.
+.PP
+\&\s-1GNU \s0\fBar\fR is designed to be compatible with two different
 facilities.  You can control its activity using command-line options,
 like the different varieties of \fBar\fR on Unix systems; or, if you
 specify the single command-line option \fB\-M\fR, you can control it
-with a script supplied via standard input, like the \s-1MRI\s0 \*(L"librarian\*(R"
+with a script supplied via standard input, like the \s-1MRI \s0\*(L"librarian\*(R"
 program.
 .SH "OPTIONS"
 .IX Header "OPTIONS"
-\&\s-1GNU\s0 \fBar\fR allows you to mix the operation code \fIp\fR and modifier
+\&\s-1GNU \s0\fBar\fR allows you to mix the operation code \fIp\fR and modifier
 flags \fImod\fR in any order, within the first command-line argument.
 .PP
 If you wish, you may begin the first command-line argument with a
@@ -233,12 +252,15 @@
 .Sp
 The modifier \fBv\fR makes \fBar\fR list each file as it is appended.
 .Sp
-Since the point of this operation is speed, the archive's symbol table
-index is not updated, even if it already existed; you can use \fBar s\fR or
-\&\fBranlib\fR explicitly to update the symbol table index.
+Since the point of this operation is speed, implementations of
+\&\fBar\fR have the option of not updating the archive's symbol
+table if one exists.  Too many different systems however assume that
+symbol tables are always up-to-date, so \s-1GNU \s0\fBar\fR will
+rebuild the table even with a quick append.
 .Sp
-However, too many different systems assume quick append rebuilds the
-index, so \s-1GNU\s0 \fBar\fR implements \fBq\fR as a synonym for \fBr\fR.
+Note \- \s-1GNU \s0\fBar\fR treats the command \fBqs\fR as a
+synonym for \fBr\fR \- replacing already existing files in the
+archive and appending new ones at the end.
 .IP "\fBr\fR" 4
 .IX Item "r"
 Insert the files \fImember\fR... into \fIarchive\fR (with
@@ -325,9 +347,13 @@
 identical options and identical input files, multiple runs will create
 identical output files regardless of the input files' owners, groups,
 file modes, or modification times.
+.Sp
+If \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by default.
+It can be disabled with the \fBU\fR modifier, below.
 .IP "\fBf\fR" 4
 .IX Item "f"
-Truncate names in the archive.  \s-1GNU\s0 \fBar\fR will normally permit file
+Truncate names in the archive.  \s-1GNU \s0\fBar\fR will normally permit file
 names of any length.  This will cause it to create archives which are
 not compatible with the native \fBar\fR program on some systems.  If
 this is a concern, the \fBf\fR modifier may be used to truncate file
@@ -353,10 +379,10 @@
 are stamped with the time of extraction.
 .IP "\fBP\fR" 4
 .IX Item "P"
-Use the full path name when matching names in the archive.  \s-1GNU\s0
-\&\fBar\fR can not create an archive with a full path name (such archives
+Use the full path name when matching names in the archive.  \s-1GNU
+\&\s0\fBar\fR can not create an archive with a full path name (such archives
 are not \s-1POSIX\s0 complaint), but other archive creators can.  This option
-will cause \s-1GNU\s0 \fBar\fR to match file names using a complete path
+will cause \s-1GNU \s0\fBar\fR to match file names using a complete path
 name, which can be convenient when extracting a single file from an
 archive created by another tool.
 .IP "\fBs\fR" 4
@@ -386,6 +412,14 @@
 operation \fBr\fR (replace).  In particular, the combination \fBqu\fR is
 not allowed, since checking the timestamps would lose any speed
 advantage from the operation \fBq\fR.
+.IP "\fBU\fR" 4
+.IX Item "U"
+Do \fInot\fR operate in \fIdeterministic\fR mode.  This is the inverse
+of the \fBD\fR modifier, above: added files and the archive index will
+get their actual \s-1UID, GID,\s0 timestamp, and file mode values.
+.Sp
+This is the default unless \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR.
 .IP "\fBv\fR" 4
 .IX Item "v"
 This modifier requests the \fIverbose\fR version of an operation.  Many
@@ -396,10 +430,10 @@
 This modifier shows the version number of \fBar\fR.
 .PP
 \&\fBar\fR ignores an initial option spelt \fB\-X32_64\fR, for
-compatibility with \s-1AIX\s0.  The behaviour produced by this option is the
-default for \s-1GNU\s0 \fBar\fR.  \fBar\fR does not support any of the other
+compatibility with \s-1AIX. \s0 The behaviour produced by this option is the
+default for \s-1GNU \s0\fBar\fR.  \fBar\fR does not support any of the other
 \&\fB\-X\fR options; in particular, it does not support \fB\-X32\fR
-which is the default for \s-1AIX\s0 \fBar\fR.
+which is the default for \s-1AIX \s0\fBar\fR.
 .PP
 The optional command line switch \fB\-\-plugin\fR \fIname\fR causes
 \&\fBar\fR to load the plugin called \fIname\fR which adds support
@@ -427,9 +461,7 @@
 \&\fInm\fR\|(1), \fIranlib\fR\|(1), and the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-as.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-as.1
index 282c5d6..88791ed 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-as.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-as.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "AS 1"
-.TH AS 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH AS 1 "2015-07-21" "binutils-2.25.1" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -137,7 +146,8 @@
  [\fB\-\-compress\-debug\-sections\fR]  [\fB\-\-nocompress\-debug\-sections\fR]
  [\fB\-\-debug\-prefix\-map\fR \fIold\fR=\fInew\fR]
  [\fB\-\-defsym\fR \fIsym\fR=\fIval\fR] [\fB\-f\fR] [\fB\-g\fR] [\fB\-\-gstabs\fR]
- [\fB\-\-gstabs+\fR] [\fB\-\-gdwarf\-2\fR] [\fB\-\-help\fR] [\fB\-I\fR \fIdir\fR] [\fB\-J\fR]
+ [\fB\-\-gstabs+\fR] [\fB\-\-gdwarf\-2\fR] [\fB\-\-gdwarf\-sections\fR]
+ [\fB\-\-help\fR] [\fB\-I\fR \fIdir\fR] [\fB\-J\fR]
  [\fB\-K\fR] [\fB\-L\fR] [\fB\-\-listing\-lhs\-width\fR=\fI\s-1NUM\s0\fR]
  [\fB\-\-listing\-lhs\-width2\fR=\fI\s-1NUM\s0\fR] [\fB\-\-listing\-rhs\-width\fR=\fI\s-1NUM\s0\fR]
  [\fB\-\-listing\-cont\-lines\fR=\fI\s-1NUM\s0\fR] [\fB\-\-keep\-locals\fR] [\fB\-o\fR
@@ -148,6 +158,10 @@
  [\fB\-\-target\-help\fR] [\fItarget-options\fR]
  [\fB\-\-\fR|\fIfiles\fR ...]
 .PP
+\&\fITarget AArch64 options:\fR
+   [\fB\-EB\fR|\fB\-EL\fR]
+   [\fB\-mabi\fR=\fI\s-1ABI\s0\fR]
+.PP
 \&\fITarget Alpha options:\fR
    [\fB\-m\fR\fIcpu\fR]
    [\fB\-mdebug\fR | \fB\-no\-mdebug\fR]
@@ -189,11 +203,14 @@
 \&\fITarget D30V options:\fR
    [\fB\-O\fR|\fB\-n\fR|\fB\-N\fR]
 .PP
+\&\fITarget \s-1EPIPHANY\s0 options:\fR
+   [\fB\-mepiphany\fR|\fB\-mepiphany16\fR]
+.PP
 \&\fITarget H8/300 options:\fR
    [\-h\-tick\-hex]
 .PP
 \&\fITarget i386 options:\fR
-   [\fB\-\-32\fR|\fB\-\-n32\fR|\fB\-\-64\fR] [\fB\-n\fR]
+   [\fB\-\-32\fR|\fB\-\-x32\fR|\fB\-\-64\fR] [\fB\-n\fR]
    [\fB\-march\fR=\fI\s-1CPU\s0\fR[+\fI\s-1EXTENSION\s0\fR...]] [\fB\-mtune\fR=\fI\s-1CPU\s0\fR]
 .PP
 \&\fITarget i960 options:\fR
@@ -224,7 +241,7 @@
    [\fB\-l\fR] [\fB\-m68000\fR|\fB\-m68010\fR|\fB\-m68020\fR|...]
 .PP
 \&\fITarget M68HC11 options:\fR
-   [\fB\-m68hc11\fR|\fB\-m68hc12\fR|\fB\-m68hcs12\fR]
+   [\fB\-m68hc11\fR|\fB\-m68hc12\fR|\fB\-m68hcs12\fR|\fB\-mm9s12x\fR|\fB\-mm9s12xg\fR]
    [\fB\-mshort\fR|\fB\-mlong\fR]
    [\fB\-mshort\-double\fR|\fB\-mlong\-double\fR]
    [\fB\-\-force\-long\-branches\fR] [\fB\-\-short\-branches\fR]
@@ -234,6 +251,9 @@
 \&\fITarget \s-1MCORE\s0 options:\fR
    [\fB\-jsri2bsr\fR] [\fB\-sifilter\fR] [\fB\-relax\fR]
    [\fB\-mcpu=[210|340]\fR]
+.PP
+\&\fITarget Meta options:\fR
+   [\fB\-mcpu=\fR\fIcpu\fR] [\fB\-mfpu=\fR\fIcpu\fR] [\fB\-mdsp=\fR\fIcpu\fR]
 \&\fITarget \s-1MICROBLAZE\s0 options:\fR
 .PP
 \&\fITarget \s-1MIPS\s0 options:\fR
@@ -241,10 +261,14 @@
    [\fB\-g\fR[\fIdebug level\fR]] [\fB\-G\fR \fInum\fR] [\fB\-KPIC\fR] [\fB\-call_shared\fR]
    [\fB\-non_shared\fR] [\fB\-xgot\fR [\fB\-mvxworks\-pic\fR]
    [\fB\-mabi\fR=\fI\s-1ABI\s0\fR] [\fB\-32\fR] [\fB\-n32\fR] [\fB\-64\fR] [\fB\-mfp32\fR] [\fB\-mgp32\fR]
+   [\fB\-mfp64\fR] [\fB\-mgp64\fR] [\fB\-mfpxx\fR]
+   [\fB\-modd\-spreg\fR] [\fB\-mno\-odd\-spreg\fR]
    [\fB\-march\fR=\fI\s-1CPU\s0\fR] [\fB\-mtune\fR=\fI\s-1CPU\s0\fR] [\fB\-mips1\fR] [\fB\-mips2\fR]
    [\fB\-mips3\fR] [\fB\-mips4\fR] [\fB\-mips5\fR] [\fB\-mips32\fR] [\fB\-mips32r2\fR]
-   [\fB\-mips64\fR] [\fB\-mips64r2\fR]
+   [\fB\-mips32r3\fR] [\fB\-mips32r5\fR] [\fB\-mips32r6\fR] [\fB\-mips64\fR] [\fB\-mips64r2\fR]
+   [\fB\-mips64r3\fR] [\fB\-mips64r5\fR] [\fB\-mips64r6\fR]
    [\fB\-construct\-floats\fR] [\fB\-no\-construct\-floats\fR]
+   [\fB\-mnan=\fR\fIencoding\fR]
    [\fB\-trap\fR] [\fB\-no\-break\fR] [\fB\-break\fR] [\fB\-no\-trap\fR]
    [\fB\-mips16\fR] [\fB\-no\-mips16\fR]
    [\fB\-mmicromips\fR] [\fB\-mno\-micromips\fR]
@@ -253,9 +277,13 @@
    [\fB\-mdmx\fR] [\fB\-no\-mdmx\fR]
    [\fB\-mdsp\fR] [\fB\-mno\-dsp\fR]
    [\fB\-mdspr2\fR] [\fB\-mno\-dspr2\fR]
+   [\fB\-mmsa\fR] [\fB\-mno\-msa\fR]
+   [\fB\-mxpa\fR] [\fB\-mno\-xpa\fR]
    [\fB\-mmt\fR] [\fB\-mno\-mt\fR]
    [\fB\-mmcu\fR] [\fB\-mno\-mcu\fR]
+   [\fB\-minsn32\fR] [\fB\-mno\-insn32\fR]
    [\fB\-mfix7000\fR] [\fB\-mno\-fix7000\fR]
+   [\fB\-mfix\-rm7000\fR] [\fB\-mno\-fix\-rm7000\fR]
    [\fB\-mfix\-vr4120\fR] [\fB\-mno\-fix\-vr4120\fR]
    [\fB\-mfix\-vr4130\fR] [\fB\-mno\-fix\-vr4130\fR]
    [\fB\-mdebug\fR] [\fB\-no\-mdebug\fR]
@@ -267,6 +295,20 @@
    [\fB\-\-no\-expand\fR] [\fB\-\-no\-merge\-gregs\fR] [\fB\-x\fR]
    [\fB\-\-linker\-allocated\-gregs\fR]
 .PP
+\&\fITarget Nios \s-1II\s0 options:\fR
+   [\fB\-relax\-all\fR] [\fB\-relax\-section\fR] [\fB\-no\-relax\fR]
+   [\fB\-EB\fR] [\fB\-EL\fR]
+.PP
+\&\fITarget \s-1NDS32\s0 options:\fR
+    [\fB\-EL\fR] [\fB\-EB\fR] [\fB\-O\fR] [\fB\-Os\fR] [\fB\-mcpu=\fR\fIcpu\fR]
+    [\fB\-misa=\fR\fIisa\fR] [\fB\-mabi=\fR\fIabi\fR] [\fB\-mall\-ext\fR]
+    [\fB\-m[no\-]16\-bit\fR]  [\fB\-m[no\-]perf\-ext\fR] [\fB\-m[no\-]perf2\-ext\fR]
+    [\fB\-m[no\-]string\-ext\fR] [\fB\-m[no\-]dsp\-ext\fR] [\fB\-m[no\-]mac\fR] [\fB\-m[no\-]div\fR]
+    [\fB\-m[no\-]audio\-isa\-ext\fR] [\fB\-m[no\-]fpu\-sp\-ext\fR] [\fB\-m[no\-]fpu\-dp\-ext\fR]
+    [\fB\-m[no\-]fpu\-fma\fR] [\fB\-mfpu\-freg=\fR\fI\s-1FREG\s0\fR] [\fB\-mreduced\-regs\fR]
+    [\fB\-mfull\-regs\fR] [\fB\-m[no\-]dx\-regs\fR] [\fB\-mpic\fR] [\fB\-mno\-relax\fR]
+    [\fB\-mb2bb\fR]
+.PP
 \&\fITarget \s-1PDP11\s0 options:\fR
    [\fB\-mpic\fR|\fB\-mno\-pic\fR] [\fB\-mall\fR] [\fB\-mno\-extensions\fR]
    [\fB\-m\fR\fIextension\fR|\fB\-mno\-\fR\fIextension\fR]
@@ -279,20 +321,29 @@
    [\fB\-a32\fR|\fB\-a64\fR]
    [\fB\-mpwrx\fR|\fB\-mpwr2\fR|\fB\-mpwr\fR|\fB\-m601\fR|\fB\-mppc\fR|\fB\-mppc32\fR|\fB\-m603\fR|\fB\-m604\fR|\fB\-m403\fR|\fB\-m405\fR|
     \fB\-m440\fR|\fB\-m464\fR|\fB\-m476\fR|\fB\-m7400\fR|\fB\-m7410\fR|\fB\-m7450\fR|\fB\-m7455\fR|\fB\-m750cl\fR|\fB\-mppc64\fR|
-    \fB\-m620\fR|\fB\-me500\fR|\fB\-e500x2\fR|\fB\-me500mc\fR|\fB\-me500mc64\fR|\fB\-mppc64bridge\fR|\fB\-mbooke\fR|
-    \fB\-mpower4\fR|\fB\-mpr4\fR|\fB\-mpower5\fR|\fB\-mpwr5\fR|\fB\-mpwr5x\fR|\fB\-mpower6\fR|\fB\-mpwr6\fR|
-    \fB\-mpower7\fR|\fB\-mpw7\fR|\fB\-ma2\fR|\fB\-mcell\fR|\fB\-mspe\fR|\fB\-mtitan\fR|\fB\-me300\fR|\fB\-mcom\fR]
-   [\fB\-many\fR] [\fB\-maltivec\fR|\fB\-mvsx\fR]
+    \fB\-m620\fR|\fB\-me500\fR|\fB\-e500x2\fR|\fB\-me500mc\fR|\fB\-me500mc64\fR|\fB\-me5500\fR|\fB\-me6500\fR|\fB\-mppc64bridge\fR|
+    \fB\-mbooke\fR|\fB\-mpower4\fR|\fB\-mpwr4\fR|\fB\-mpower5\fR|\fB\-mpwr5\fR|\fB\-mpwr5x\fR|\fB\-mpower6\fR|\fB\-mpwr6\fR|
+    \fB\-mpower7\fR|\fB\-mpwr7\fR|\fB\-mpower8\fR|\fB\-mpwr8\fR|\fB\-ma2\fR|\fB\-mcell\fR|\fB\-mspe\fR|\fB\-mtitan\fR|\fB\-me300\fR|\fB\-mcom\fR]
+   [\fB\-many\fR] [\fB\-maltivec\fR|\fB\-mvsx\fR|\fB\-mhtm\fR|\fB\-mvle\fR]
    [\fB\-mregnames\fR|\fB\-mno\-regnames\fR]
    [\fB\-mrelocatable\fR|\fB\-mrelocatable\-lib\fR|\fB\-K \s-1PIC\s0\fR] [\fB\-memb\fR]
    [\fB\-mlittle\fR|\fB\-mlittle\-endian\fR|\fB\-le\fR|\fB\-mbig\fR|\fB\-mbig\-endian\fR|\fB\-be\fR]
    [\fB\-msolaris\fR|\fB\-mno\-solaris\fR]
    [\fB\-nops=\fR\fIcount\fR]
 .PP
+\&\fITarget \s-1RL78\s0 options:\fR
+   [\fB\-mg10\fR]
+   [\fB\-m32bit\-doubles\fR|\fB\-m64bit\-doubles\fR]
+.PP
 \&\fITarget \s-1RX\s0 options:\fR
    [\fB\-mlittle\-endian\fR|\fB\-mbig\-endian\fR]
-   [\fB\-m32bit\-ints\fR|\fB\-m16bit\-ints\fR]
    [\fB\-m32bit\-doubles\fR|\fB\-m64bit\-doubles\fR]
+   [\fB\-muse\-conventional\-section\-names\fR]
+   [\fB\-msmall\-data\-limit\fR]
+   [\fB\-mpid\fR]
+   [\fB\-mrelax\fR]
+   [\fB\-mint\-register=\fR\fInumber\fR]
+   [\fB\-mgcc\-abi\fR|\fB\-mrx\-abi\fR]
 .PP
 \&\fITarget s390 options:\fR
    [\fB\-m31\fR|\fB\-m64\fR] [\fB\-mesa\fR|\fB\-mzarch\fR] [\fB\-march\fR=\fI\s-1CPU\s0\fR]
@@ -321,13 +372,14 @@
    [\fB\-mpic\fR|\fB\-mno\-pic\fR]
 .PP
 \&\fITarget TILE-Gx options:\fR
-   [\fB\-m32\fR|\fB\-m64\fR]
+   [\fB\-m32\fR|\fB\-m64\fR][\fB\-EB\fR][\fB\-EL\fR]
 .PP
 \&\fITarget Xtensa options:\fR
  [\fB\-\-[no\-]text\-section\-literals\fR] [\fB\-\-[no\-]absolute\-literals\fR]
  [\fB\-\-[no\-]target\-align\fR] [\fB\-\-[no\-]longcalls\fR]
  [\fB\-\-[no\-]transform\fR]
  [\fB\-\-rename\-section\fR \fIoldname\fR=\fInewname\fR]
+ [\fB\-\-[no\-]trampolines\fR]
 .PP
 \&\fITarget Z80 options:\fR
   [\fB\-z80\fR] [\fB\-r800\fR]
@@ -339,7 +391,7 @@
   [ \fB\-forbid\-unportable\-instructions\fR] [\fB\-Fup\fR]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
-\&\s-1GNU\s0 \fBas\fR is really a family of assemblers.
+\&\s-1GNU \s0\fBas\fR is really a family of assemblers.
 If you use (or have used) the \s-1GNU\s0 assembler on one architecture, you
 should find a fairly similar environment when you use it on another
 architecture.  Each version has much in common with the others,
@@ -347,7 +399,7 @@
 \&\fIpseudo-ops\fR) and assembler syntax.
 .PP
 \&\fBas\fR is primarily intended to assemble the output of the
-\&\s-1GNU\s0 C compiler \f(CW\*(C`gcc\*(C'\fR for use by the linker
+\&\s-1GNU C\s0 compiler \f(CW\*(C`gcc\*(C'\fR for use by the linker
 \&\f(CW\*(C`ld\*(C'\fR.  Nevertheless, we've tried to make \fBas\fR
 assemble correctly everything that other assemblers for the same
 machine would assemble.
@@ -382,7 +434,7 @@
 that \fBas\fR could keep assembling a flawed program; errors report a
 grave problem that stops the assembly.
 .PP
-If you are invoking \fBas\fR via the \s-1GNU\s0 C compiler,
+If you are invoking \fBas\fR via the \s-1GNU C\s0 compiler,
 you can use the \fB\-Wa\fR option to pass arguments through to the assembler.
 The assembler arguments must be separated from each other (and the \fB\-Wa\fR)
 by commas.  For example:
@@ -490,8 +542,8 @@
 .IX Item "--gen-debug"
 .PD
 Generate debugging information for each assembler source line using whichever
-debug format is preferred by the target.  This currently means either \s-1STABS\s0,
-\&\s-1ECOFF\s0 or \s-1DWARF2\s0.
+debug format is preferred by the target.  This currently means either \s-1STABS,
+ECOFF\s0 or \s-1DWARF2.\s0
 .IP "\fB\-\-gstabs\fR" 4
 .IX Item "--gstabs"
 Generate stabs debugging information for each assembler line.  This
@@ -508,13 +560,22 @@
 Generate \s-1DWARF2\s0 debugging information for each assembler line.  This
 may help debugging assembler code, if the debugger can handle it.  Note\-\-\-this
 option is only supported by some targets, not all of them.
+.IP "\fB\-\-gdwarf\-sections\fR" 4
+.IX Item "--gdwarf-sections"
+Instead of creating a .debug_line section, create a series of
+\&.debug_line.\fIfoo\fR sections where \fIfoo\fR is the name of the
+corresponding code section.  For example a code section called \fI.text.func\fR
+will have its dwarf line number information placed into a section called
+\&\fI.debug_line.text.func\fR.  If the code section is just called \fI.text\fR
+then debug line section will still be called just \fI.debug_line\fR without any
+suffix.
 .IP "\fB\-\-size\-check=error\fR" 4
 .IX Item "--size-check=error"
 .PD 0
 .IP "\fB\-\-size\-check=warning\fR" 4
 .IX Item "--size-check=warning"
 .PD
-Issue an error or warning for invalid \s-1ELF\s0 .size directive.
+Issue an error or warning for invalid \s-1ELF \s0.size directive.
 .IP "\fB\-\-help\fR" 4
 .IX Item "--help"
 Print a summary of the command line options and exit.
@@ -615,6 +676,67 @@
 .IX Item "-- | files ..."
 Standard input, or source files to assemble.
 .PP
+The following options are available when as is configured for the
+64\-bit mode of the \s-1ARM\s0 Architecture (AArch64).
+.IP "\fB\-EB\fR" 4
+.IX Item "-EB"
+This option specifies that the output generated by the assembler should
+be marked as being encoded for a big-endian processor.
+.IP "\fB\-EL\fR" 4
+.IX Item "-EL"
+This option specifies that the output generated by the assembler should
+be marked as being encoded for a little-endian processor.
+.IP "\fB\-mabi=\fR\fIabi\fR" 4
+.IX Item "-mabi=abi"
+Specify which \s-1ABI\s0 the source code uses.  The recognized arguments
+are: \f(CW\*(C`ilp32\*(C'\fR and \f(CW\*(C`lp64\*(C'\fR, which decides the generated object
+file in \s-1ELF32\s0 and \s-1ELF64\s0 format respectively.  The default is \f(CW\*(C`lp64\*(C'\fR.
+.IP "\fB\-mcpu=\fR\fIprocessor\fR\fB[+\fR\fIextension\fR\fB...]\fR" 4
+.IX Item "-mcpu=processor[+extension...]"
+This option specifies the target processor.  The assembler will issue an error
+message if an attempt is made to assemble an instruction which will not execute
+on the target processor.  The following processor names are recognized:
+\&\f(CW\*(C`cortex\-a53\*(C'\fR,
+\&\f(CW\*(C`cortex\-a57\*(C'\fR,
+\&\f(CW\*(C`cortex\-a72\*(C'\fR,
+\&\f(CW\*(C`exynos\-m1\*(C'\fR,
+\&\f(CW\*(C`xgene1\*(C'\fR,
+and
+\&\f(CW\*(C`xgene2\*(C'\fR.
+The special name \f(CW\*(C`all\*(C'\fR may be used to allow the assembler to accept
+instructions valid for any supported processor, including all optional
+extensions.
+.Sp
+In addition to the basic instruction set, the assembler can be told to
+accept, or restrict, various extension mnemonics that extend the
+processor.
+.Sp
+If some implementations of a particular processor can have an
+extension, then then those extensions are automatically enabled.
+Consequently, you will not normally have to specify any additional
+extensions.
+.IP "\fB\-march=\fR\fIarchitecture\fR\fB[+\fR\fIextension\fR\fB...]\fR" 4
+.IX Item "-march=architecture[+extension...]"
+This option specifies the target architecture.  The assembler will
+issue an error message if an attempt is made to assemble an
+instruction which will not execute on the target architecture.  The
+only value for \fIarchitecture\fR is \f(CW\*(C`armv8\-a\*(C'\fR.
+.Sp
+If both \fB\-mcpu\fR and \fB\-march\fR are specified, the
+assembler will use the setting for \fB\-mcpu\fR.  If neither are
+specified, the assembler will default to \fB\-mcpu=all\fR.
+.Sp
+The architecture option can be extended with the same instruction set
+extension options as the \fB\-mcpu\fR option.  Unlike
+\&\fB\-mcpu\fR, extensions are not always enabled by default,
+.IP "\fB\-mverbose\-error\fR" 4
+.IX Item "-mverbose-error"
+This option enables verbose error messages for AArch64 gas.  This option
+is enabled by default.
+.IP "\fB\-mno\-verbose\-error\fR" 4
+.IX Item "-mno-verbose-error"
+This option disables verbose error messages in AArch64 gas.
+.PP
 The following options are available when as is configured for an Alpha
 processor.
 .IP "\fB\-m\fR\fIcpu\fR" 4
@@ -624,7 +746,7 @@
 the assembler may either expand the instruction as a macro or issue an
 error message.  This option is equivalent to the \f(CW\*(C`.arch\*(C'\fR directive.
 .Sp
-The following processor names are recognized: 
+The following processor names are recognized:
 \&\f(CW21064\fR,
 \&\f(CW\*(C`21064a\*(C'\fR,
 \&\f(CW21066\fR,
@@ -681,7 +803,7 @@
 .IX Item "-g"
 This option is used when the compiler generates debug information.  When
 \&\fBgcc\fR is using \fBmips-tfile\fR to generate debug
-information for \s-1ECOFF\s0, local labels must be passed through to the object
+information for \s-1ECOFF,\s0 local labels must be passed through to the object
 file.  Otherwise this option has no effect.
 .IP "\fB\-G\fR\fIsize\fR" 4
 .IX Item "-Gsize"
@@ -731,6 +853,9 @@
 .IX Item "-mthumb-interwork"
 Specify that the code has been generated with interworking between Thumb and
 \&\s-1ARM\s0 code in mind.
+.IP "\fB\-mccs\fR" 4
+.IX Item "-mccs"
+Turns on CodeComposer Studio assembly syntax compatibility mode.
 .IP "\fB\-k\fR" 4
 .IX Item "-k"
 Specify that \s-1PIC\s0 code has been generated.
@@ -744,7 +869,7 @@
 \&\f(CW\*(C`\-mcpu=\*(C'\fR option.  The assembler will issue an
 error message if an attempt is made to assemble an instruction which
 will not execute on the target processor.  The following processor names are
-recognized: 
+recognized:
 \&\f(CW\*(C`bf504\*(C'\fR,
 \&\f(CW\*(C`bf506\*(C'\fR,
 \&\f(CW\*(C`bf512\*(C'\fR,
@@ -781,7 +906,7 @@
 \&\f(CW\*(C`bf592\*(C'\fR.
 .IP "\fB\-mfdpic\fR" 4
 .IX Item "-mfdpic"
-Assemble for the \s-1FDPIC\s0 \s-1ABI\s0.
+Assemble for the \s-1FDPIC ABI.\s0
 .IP "\fB\-mno\-fdpic\fR" 4
 .IX Item "-mno-fdpic"
 .PD 0
@@ -811,6 +936,27 @@
 Warn when a nop after a 32\-bit multiply instruction is generated.
 .PP
 The following options are available when as is configured for
+an Epiphany processor.
+.IP "\fB\-mepiphany\fR" 4
+.IX Item "-mepiphany"
+Specifies that the both 32 and 16 bit instructions are allowed.  This is the
+default behavior.
+.IP "\fB\-mepiphany16\fR" 4
+.IX Item "-mepiphany16"
+Restricts the permitted instructions to just the 16 bit set.
+.PP
+The following options are available when as is configured for an H8/300
+processor.
+\&\f(CW@chapter\fR H8/300 Dependent Features
+.SS "Options"
+.IX Subsection "Options"
+The Renesas H8/300 version of \f(CW\*(C`as\*(C'\fR has one
+machine-dependent option:
+.IP "\fB\-h\-tick\-hex\fR" 4
+.IX Item "-h-tick-hex"
+Support H'00 style hex constants in addition to 0x00 style.
+.PP
+The following options are available when as is configured for
 an i386 processor.
 .IP "\fB\-\-32 | \-\-x32 | \-\-64\fR" 4
 .IX Item "--32 | --x32 | --64"
@@ -840,7 +986,7 @@
 This option specifies the target processor.  The assembler will
 issue an error message if an attempt is made to assemble an instruction
 which will not execute on the target processor.  The following
-processor names are recognized: 
+processor names are recognized:
 \&\f(CW\*(C`i8086\*(C'\fR,
 \&\f(CW\*(C`i186\*(C'\fR,
 \&\f(CW\*(C`i286\*(C'\fR,
@@ -868,10 +1014,14 @@
 \&\f(CW\*(C`amdfam10\*(C'\fR,
 \&\f(CW\*(C`bdver1\*(C'\fR,
 \&\f(CW\*(C`bdver2\*(C'\fR,
+\&\f(CW\*(C`bdver3\*(C'\fR,
+\&\f(CW\*(C`bdver4\*(C'\fR,
+\&\f(CW\*(C`btver1\*(C'\fR,
+\&\f(CW\*(C`btver2\*(C'\fR,
 \&\f(CW\*(C`generic32\*(C'\fR and
 \&\f(CW\*(C`generic64\*(C'\fR.
 .Sp
-In addition to the basic instruction set, the assembler can be told to 
+In addition to the basic instruction set, the assembler can be told to
 accept various extension mnemonics.  For example,
 \&\f(CW\*(C`\-march=i686+sse4+vmx\*(C'\fR extends \fIi686\fR with \fIsse4\fR and
 \&\fIvmx\fR.  The following extensions are currently supported:
@@ -891,11 +1041,34 @@
 \&\f(CW\*(C`nosse\*(C'\fR,
 \&\f(CW\*(C`avx\*(C'\fR,
 \&\f(CW\*(C`avx2\*(C'\fR,
+\&\f(CW\*(C`adx\*(C'\fR,
+\&\f(CW\*(C`rdseed\*(C'\fR,
+\&\f(CW\*(C`prfchw\*(C'\fR,
+\&\f(CW\*(C`smap\*(C'\fR,
+\&\f(CW\*(C`mpx\*(C'\fR,
+\&\f(CW\*(C`sha\*(C'\fR,
+\&\f(CW\*(C`prefetchwt1\*(C'\fR,
+\&\f(CW\*(C`clflushopt\*(C'\fR,
+\&\f(CW\*(C`se1\*(C'\fR,
+\&\f(CW\*(C`clwb\*(C'\fR,
+\&\f(CW\*(C`pcommit\*(C'\fR,
+\&\f(CW\*(C`avx512f\*(C'\fR,
+\&\f(CW\*(C`avx512cd\*(C'\fR,
+\&\f(CW\*(C`avx512er\*(C'\fR,
+\&\f(CW\*(C`avx512pf\*(C'\fR,
+\&\f(CW\*(C`avx512vl\*(C'\fR,
+\&\f(CW\*(C`avx512bw\*(C'\fR,
+\&\f(CW\*(C`avx512dq\*(C'\fR,
+\&\f(CW\*(C`avx512ifma\*(C'\fR,
+\&\f(CW\*(C`avx512vbmi\*(C'\fR,
 \&\f(CW\*(C`noavx\*(C'\fR,
 \&\f(CW\*(C`vmx\*(C'\fR,
+\&\f(CW\*(C`vmfunc\*(C'\fR,
 \&\f(CW\*(C`smx\*(C'\fR,
 \&\f(CW\*(C`xsave\*(C'\fR,
 \&\f(CW\*(C`xsaveopt\*(C'\fR,
+\&\f(CW\*(C`xsavec\*(C'\fR,
+\&\f(CW\*(C`xsaves\*(C'\fR,
 \&\f(CW\*(C`aes\*(C'\fR,
 \&\f(CW\*(C`pclmul\*(C'\fR,
 \&\f(CW\*(C`fsgsbase\*(C'\fR,
@@ -906,11 +1079,14 @@
 \&\f(CW\*(C`movbe\*(C'\fR,
 \&\f(CW\*(C`ept\*(C'\fR,
 \&\f(CW\*(C`lzcnt\*(C'\fR,
+\&\f(CW\*(C`hle\*(C'\fR,
+\&\f(CW\*(C`rtm\*(C'\fR,
 \&\f(CW\*(C`invpcid\*(C'\fR,
 \&\f(CW\*(C`clflush\*(C'\fR,
 \&\f(CW\*(C`lwp\*(C'\fR,
 \&\f(CW\*(C`fma4\*(C'\fR,
 \&\f(CW\*(C`xop\*(C'\fR,
+\&\f(CW\*(C`cx16\*(C'\fR,
 \&\f(CW\*(C`syscall\*(C'\fR,
 \&\f(CW\*(C`rdtscp\*(C'\fR,
 \&\f(CW\*(C`3dnow\*(C'\fR,
@@ -946,12 +1122,12 @@
 .IP "\fB\-msse\-check=\fR\fIerror\fR" 4
 .IX Item "-msse-check=error"
 .PD
-These options control if the assembler should check \s-1SSE\s0 intructions.
+These options control if the assembler should check \s-1SSE\s0 instructions.
 \&\fB\-msse\-check=\fR\fInone\fR will make the assembler not to check \s-1SSE\s0
 instructions,  which is the default.  \fB\-msse\-check=\fR\fIwarning\fR
-will make the assembler issue a warning for any \s-1SSE\s0 intruction.
+will make the assembler issue a warning for any \s-1SSE\s0 instruction.
 \&\fB\-msse\-check=\fR\fIerror\fR will make the assembler issue an error
-for any \s-1SSE\s0 intruction.
+for any \s-1SSE\s0 instruction.
 .IP "\fB\-mavxscalar=\fR\fI128\fR" 4
 .IX Item "-mavxscalar=128"
 .PD 0
@@ -963,13 +1139,38 @@
 \&\s-1AVX\s0 instructions with 128bit vector length, which is the default.
 \&\fB\-mavxscalar=\fR\fI256\fR will encode scalar \s-1AVX\s0 instructions
 with 256bit vector length.
+.IP "\fB\-mevexlig=\fR\fI128\fR" 4
+.IX Item "-mevexlig=128"
+.PD 0
+.IP "\fB\-mevexlig=\fR\fI256\fR" 4
+.IX Item "-mevexlig=256"
+.IP "\fB\-mevexlig=\fR\fI512\fR" 4
+.IX Item "-mevexlig=512"
+.PD
+These options control how the assembler should encode length-ignored
+(\s-1LIG\s0) \s-1EVEX\s0 instructions.  \fB\-mevexlig=\fR\fI128\fR will encode \s-1LIG
+EVEX\s0 instructions with 128bit vector length, which is the default.
+\&\fB\-mevexlig=\fR\fI256\fR and \fB\-mevexlig=\fR\fI512\fR will
+encode \s-1LIG EVEX\s0 instructions with 256bit and 512bit vector length,
+respectively.
+.IP "\fB\-mevexwig=\fR\fI0\fR" 4
+.IX Item "-mevexwig=0"
+.PD 0
+.IP "\fB\-mevexwig=\fR\fI1\fR" 4
+.IX Item "-mevexwig=1"
+.PD
+These options control how the assembler should encode w\-ignored (\s-1WIG\s0)
+\&\s-1EVEX\s0 instructions.  \fB\-mevexwig=\fR\fI0\fR will encode \s-1WIG
+EVEX\s0 instructions with evex.w = 0, which is the default.
+\&\fB\-mevexwig=\fR\fI1\fR will encode \s-1WIG EVEX\s0 instructions with
+evex.w = 1.
 .IP "\fB\-mmnemonic=\fR\fIatt\fR" 4
 .IX Item "-mmnemonic=att"
 .PD 0
 .IP "\fB\-mmnemonic=\fR\fIintel\fR" 4
 .IX Item "-mmnemonic=intel"
 .PD
-This option specifies instruction mnemonic for matching instructions. 
+This option specifies instruction mnemonic for matching instructions.
 The \f(CW\*(C`.att_mnemonic\*(C'\fR and \f(CW\*(C`.intel_mnemonic\*(C'\fR directives will
 take precedent.
 .IP "\fB\-msyntax=\fR\fIatt\fR" 4
@@ -978,13 +1179,50 @@
 .IP "\fB\-msyntax=\fR\fIintel\fR" 4
 .IX Item "-msyntax=intel"
 .PD
-This option specifies instruction syntax when processing instructions. 
+This option specifies instruction syntax when processing instructions.
 The \f(CW\*(C`.att_syntax\*(C'\fR and \f(CW\*(C`.intel_syntax\*(C'\fR directives will
 take precedent.
 .IP "\fB\-mnaked\-reg\fR" 4
 .IX Item "-mnaked-reg"
 This opetion specifies that registers don't require a \fB%\fR prefix.
 The \f(CW\*(C`.att_syntax\*(C'\fR and \f(CW\*(C`.intel_syntax\*(C'\fR directives will take precedent.
+.IP "\fB\-madd\-bnd\-prefix\fR" 4
+.IX Item "-madd-bnd-prefix"
+This option forces the assembler to add \s-1BND\s0 prefix to all branches, even
+if such prefix was not explicitly specified in the source code.
+.IP "\fB\-mbig\-obj\fR" 4
+.IX Item "-mbig-obj"
+On x86\-64 \s-1PE/COFF\s0 target this option forces the use of big object file
+format, which allows more than 32768 sections.
+.IP "\fB\-momit\-lock\-prefix=\fR\fIno\fR" 4
+.IX Item "-momit-lock-prefix=no"
+.PD 0
+.IP "\fB\-momit\-lock\-prefix=\fR\fIyes\fR" 4
+.IX Item "-momit-lock-prefix=yes"
+.PD
+These options control how the assembler should encode lock prefix.
+This option is intended as a workaround for processors, that fail on
+lock prefix. This option can only be safely used with single-core,
+single-thread computers
+\&\fB\-momit\-lock\-prefix=\fR\fIyes\fR will omit all lock prefixes.
+\&\fB\-momit\-lock\-prefix=\fR\fIno\fR will encode lock prefix as usual,
+which is the default.
+.IP "\fB\-mevexrcig=\fR\fIrne\fR" 4
+.IX Item "-mevexrcig=rne"
+.PD 0
+.IP "\fB\-mevexrcig=\fR\fIrd\fR" 4
+.IX Item "-mevexrcig=rd"
+.IP "\fB\-mevexrcig=\fR\fIru\fR" 4
+.IX Item "-mevexrcig=ru"
+.IP "\fB\-mevexrcig=\fR\fIrz\fR" 4
+.IX Item "-mevexrcig=rz"
+.PD
+These options control how the assembler should encode SAE-only
+\&\s-1EVEX\s0 instructions.  \fB\-mevexrcig=\fR\fIrne\fR will encode \s-1RC\s0 bits
+of \s-1EVEX\s0 instruction with 00, which is the default.
+\&\fB\-mevexrcig=\fR\fIrd\fR, \fB\-mevexrcig=\fR\fIru\fR
+and \fB\-mevexrcig=\fR\fIrz\fR will encode SAE-only \s-1EVEX\s0 instructions
+with 01, 10 and 11 \s-1RC\s0 bits, respectively.
 .PP
 The following options are available when as is configured for the
 Intel 80960 processor.
@@ -1066,397 +1304,191 @@
 The target machine does (or does not) have a memory-management
 unit coprocessor.  The default is to assume an \s-1MMU\s0 for 68020 and up.
 .PP
-For details about the \s-1PDP\-11\s0 machine dependent features options,
-see \fBPDP\-11\-Options\fR.
-.IP "\fB\-mpic | \-mno\-pic\fR" 4
-.IX Item "-mpic | -mno-pic"
-Generate position-independent (or position-dependent) code.  The
-default is \fB\-mpic\fR.
-.IP "\fB\-mall\fR" 4
-.IX Item "-mall"
-.PD 0
-.IP "\fB\-mall\-extensions\fR" 4
-.IX Item "-mall-extensions"
-.PD
-Enable all instruction set extensions.  This is the default.
-.IP "\fB\-mno\-extensions\fR" 4
-.IX Item "-mno-extensions"
-Disable all instruction set extensions.
-.IP "\fB\-m\fR\fIextension\fR \fB| \-mno\-\fR\fIextension\fR" 4
-.IX Item "-mextension | -mno-extension"
-Enable (or disable) a particular instruction set extension.
-.IP "\fB\-m\fR\fIcpu\fR" 4
-.IX Item "-mcpu"
-Enable the instruction set extensions supported by a particular \s-1CPU\s0, and
-disable all other extensions.
-.IP "\fB\-m\fR\fImachine\fR" 4
-.IX Item "-mmachine"
-Enable the instruction set extensions supported by a particular machine
-model, and disable all other extensions.
-.PP
-The following options are available when as is configured for
-a picoJava processor.
-.IP "\fB\-mb\fR" 4
-.IX Item "-mb"
-Generate \*(L"big endian\*(R" format output.
-.IP "\fB\-ml\fR" 4
-.IX Item "-ml"
-Generate \*(L"little endian\*(R" format output.
-.PP
-The following options are available when as is configured for the
-Motorola 68HC11 or 68HC12 series.
-.IP "\fB\-m68hc11 | \-m68hc12 | \-m68hcs12\fR" 4
-.IX Item "-m68hc11 | -m68hc12 | -m68hcs12"
-Specify what processor is the target.  The default is
-defined by the configuration option when building the assembler.
-.IP "\fB\-mshort\fR" 4
-.IX Item "-mshort"
-Specify to use the 16\-bit integer \s-1ABI\s0.
-.IP "\fB\-mlong\fR" 4
-.IX Item "-mlong"
-Specify to use the 32\-bit integer \s-1ABI\s0.
-.IP "\fB\-mshort\-double\fR" 4
-.IX Item "-mshort-double"
-Specify to use the 32\-bit double \s-1ABI\s0.
-.IP "\fB\-mlong\-double\fR" 4
-.IX Item "-mlong-double"
-Specify to use the 64\-bit double \s-1ABI\s0.
-.IP "\fB\-\-force\-long\-branches\fR" 4
-.IX Item "--force-long-branches"
-Relative branches are turned into absolute ones. This concerns
-conditional branches, unconditional branches and branches to a
-sub routine.
-.IP "\fB\-S | \-\-short\-branches\fR" 4
-.IX Item "-S | --short-branches"
-Do not turn relative branches into absolute ones
-when the offset is out of range.
-.IP "\fB\-\-strict\-direct\-mode\fR" 4
-.IX Item "--strict-direct-mode"
-Do not turn the direct addressing mode into extended addressing mode
-when the instruction does not support direct addressing mode.
-.IP "\fB\-\-print\-insn\-syntax\fR" 4
-.IX Item "--print-insn-syntax"
-Print the syntax of instruction in case of error.
-.IP "\fB\-\-print\-opcodes\fR" 4
-.IX Item "--print-opcodes"
-print the list of instructions with syntax and then exit.
-.IP "\fB\-\-generate\-example\fR" 4
-.IX Item "--generate-example"
-print an example of instruction for each possible instruction and then exit.
-This option is only useful for testing \fBas\fR.
-.PP
-The following options are available when \fBas\fR is configured
-for the \s-1SPARC\s0 architecture:
-.IP "\fB\-Av6 | \-Av7 | \-Av8 | \-Asparclet | \-Asparclite\fR" 4
-.IX Item "-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite"
-.PD 0
-.IP "\fB\-Av8plus | \-Av8plusa | \-Av9 | \-Av9a\fR" 4
-.IX Item "-Av8plus | -Av8plusa | -Av9 | -Av9a"
-.PD
-Explicitly select a variant of the \s-1SPARC\s0 architecture.
-.Sp
-\&\fB\-Av8plus\fR and \fB\-Av8plusa\fR select a 32 bit environment.
-\&\fB\-Av9\fR and \fB\-Av9a\fR select a 64 bit environment.
-.Sp
-\&\fB\-Av8plusa\fR and \fB\-Av9a\fR enable the \s-1SPARC\s0 V9 instruction set with
-UltraSPARC extensions.
-.IP "\fB\-xarch=v8plus | \-xarch=v8plusa\fR" 4
-.IX Item "-xarch=v8plus | -xarch=v8plusa"
-For compatibility with the Solaris v9 assembler.  These options are
-equivalent to \-Av8plus and \-Av8plusa, respectively.
-.IP "\fB\-bump\fR" 4
-.IX Item "-bump"
-Warn when the assembler switches to another architecture.
-.PP
-The following options are available when as is configured for the 'c54x
-architecture.
-.IP "\fB\-mfar\-mode\fR" 4
-.IX Item "-mfar-mode"
-Enable extended addressing mode.  All addresses and relocations will assume
-extended addressing (usually 23 bits).
-.IP "\fB\-mcpu=\fR\fI\s-1CPU_VERSION\s0\fR" 4
-.IX Item "-mcpu=CPU_VERSION"
-Sets the \s-1CPU\s0 version being compiled for.
-.IP "\fB\-merrors\-to\-file\fR \fI\s-1FILENAME\s0\fR" 4
-.IX Item "-merrors-to-file FILENAME"
-Redirect error output to a file, for broken systems which don't support such
-behaviour in the shell.
-.PP
-The following options are available when as is configured for
-a \s-1MIPS\s0 processor.
-.IP "\fB\-G\fR \fInum\fR" 4
-.IX Item "-G num"
-This option sets the largest size of an object that can be referenced
-implicitly with the \f(CW\*(C`gp\*(C'\fR register.  It is only accepted for targets that
-use \s-1ECOFF\s0 format, such as a DECstation running Ultrix.  The default value is 8.
+The following options are available when as is configured for an
+Altera Nios \s-1II\s0 processor.
+.IP "\fB\-relax\-section\fR" 4
+.IX Item "-relax-section"
+Replace identified out-of-range branches with PC-relative \f(CW\*(C`jmp\*(C'\fR
+sequences when possible.  The generated code sequences are suitable
+for use in position-independent code, but there is a practical limit
+on the extended branch range because of the length of the sequences.
+This option is the default.
+.IP "\fB\-relax\-all\fR" 4
+.IX Item "-relax-all"
+Replace branch instructions not determinable to be in range
+and all call instructions with \f(CW\*(C`jmp\*(C'\fR and \f(CW\*(C`callr\*(C'\fR sequences
+(respectively).  This option generates absolute relocations against the
+target symbols and is not appropriate for position-independent code.
+.IP "\fB\-no\-relax\fR" 4
+.IX Item "-no-relax"
+Do not replace any branches or calls.
 .IP "\fB\-EB\fR" 4
 .IX Item "-EB"
-Generate \*(L"big endian\*(R" format output.
+Generate big-endian output.
 .IP "\fB\-EL\fR" 4
 .IX Item "-EL"
-Generate \*(L"little endian\*(R" format output.
-.IP "\fB\-mips1\fR" 4
-.IX Item "-mips1"
-.PD 0
-.IP "\fB\-mips2\fR" 4
-.IX Item "-mips2"
-.IP "\fB\-mips3\fR" 4
-.IX Item "-mips3"
-.IP "\fB\-mips4\fR" 4
-.IX Item "-mips4"
-.IP "\fB\-mips5\fR" 4
-.IX Item "-mips5"
-.IP "\fB\-mips32\fR" 4
-.IX Item "-mips32"
-.IP "\fB\-mips32r2\fR" 4
-.IX Item "-mips32r2"
-.IP "\fB\-mips64\fR" 4
-.IX Item "-mips64"
-.IP "\fB\-mips64r2\fR" 4
-.IX Item "-mips64r2"
-.PD
-Generate code for a particular \s-1MIPS\s0 Instruction Set Architecture level.
-\&\fB\-mips1\fR is an alias for \fB\-march=r3000\fR, \fB\-mips2\fR is an
-alias for \fB\-march=r6000\fR, \fB\-mips3\fR is an alias for
-\&\fB\-march=r4000\fR and \fB\-mips4\fR is an alias for \fB\-march=r8000\fR.
-\&\fB\-mips5\fR, \fB\-mips32\fR, \fB\-mips32r2\fR, \fB\-mips64\fR, and
-\&\fB\-mips64r2\fR
-correspond to generic
-\&\fB\s-1MIPS\s0 V\fR, \fB\s-1MIPS32\s0\fR, \fB\s-1MIPS32\s0 Release 2\fR, \fB\s-1MIPS64\s0\fR,
-and \fB\s-1MIPS64\s0 Release 2\fR
-\&\s-1ISA\s0 processors, respectively.
-.IP "\fB\-march=\fR\fI\s-1CPU\s0\fR" 4
-.IX Item "-march=CPU"
-Generate code for a particular \s-1MIPS\s0 cpu.
-.IP "\fB\-mtune=\fR\fIcpu\fR" 4
-.IX Item "-mtune=cpu"
-Schedule and tune for a particular \s-1MIPS\s0 cpu.
-.IP "\fB\-mfix7000\fR" 4
-.IX Item "-mfix7000"
-.PD 0
-.IP "\fB\-mno\-fix7000\fR" 4
-.IX Item "-mno-fix7000"
-.PD
-Cause nops to be inserted if the read of the destination register
-of an mfhi or mflo instruction occurs in the following two instructions.
-.IP "\fB\-mdebug\fR" 4
-.IX Item "-mdebug"
-.PD 0
-.IP "\fB\-no\-mdebug\fR" 4
-.IX Item "-no-mdebug"
-.PD
-Cause stabs-style debugging output to go into an ECOFF-style .mdebug
-section instead of the standard \s-1ELF\s0 .stabs sections.
-.IP "\fB\-mpdr\fR" 4
-.IX Item "-mpdr"
-.PD 0
-.IP "\fB\-mno\-pdr\fR" 4
-.IX Item "-mno-pdr"
-.PD
-Control generation of \f(CW\*(C`.pdr\*(C'\fR sections.
-.IP "\fB\-mgp32\fR" 4
-.IX Item "-mgp32"
-.PD 0
-.IP "\fB\-mfp32\fR" 4
-.IX Item "-mfp32"
-.PD
-The register sizes are normally inferred from the \s-1ISA\s0 and \s-1ABI\s0, but these
-flags force a certain group of registers to be treated as 32 bits wide at
-all times.  \fB\-mgp32\fR controls the size of general-purpose registers
-and \fB\-mfp32\fR controls the size of floating-point registers.
-.IP "\fB\-mips16\fR" 4
-.IX Item "-mips16"
-.PD 0
-.IP "\fB\-no\-mips16\fR" 4
-.IX Item "-no-mips16"
-.PD
-Generate code for the \s-1MIPS\s0 16 processor.  This is equivalent to putting
-\&\f(CW\*(C`.set mips16\*(C'\fR at the start of the assembly file.  \fB\-no\-mips16\fR
-turns off this option.
-.IP "\fB\-mmicromips\fR" 4
-.IX Item "-mmicromips"
-.PD 0
-.IP "\fB\-mno\-micromips\fR" 4
-.IX Item "-mno-micromips"
-.PD
-Generate code for the microMIPS processor.  This is equivalent to putting
-\&\f(CW\*(C`.set micromips\*(C'\fR at the start of the assembly file.  \fB\-mno\-micromips\fR
-turns off this option.  This is equivalent to putting \f(CW\*(C`.set nomicromips\*(C'\fR
-at the start of the assembly file.
-.IP "\fB\-msmartmips\fR" 4
-.IX Item "-msmartmips"
-.PD 0
-.IP "\fB\-mno\-smartmips\fR" 4
-.IX Item "-mno-smartmips"
-.PD
-Enables the SmartMIPS extension to the \s-1MIPS32\s0 instruction set. This is
-equivalent to putting \f(CW\*(C`.set smartmips\*(C'\fR at the start of the assembly file.
-\&\fB\-mno\-smartmips\fR turns off this option.
-.IP "\fB\-mips3d\fR" 4
-.IX Item "-mips3d"
-.PD 0
-.IP "\fB\-no\-mips3d\fR" 4
-.IX Item "-no-mips3d"
-.PD
-Generate code for the \s-1MIPS\-3D\s0 Application Specific Extension.
-This tells the assembler to accept \s-1MIPS\-3D\s0 instructions.
-\&\fB\-no\-mips3d\fR turns off this option.
-.IP "\fB\-mdmx\fR" 4
-.IX Item "-mdmx"
-.PD 0
-.IP "\fB\-no\-mdmx\fR" 4
-.IX Item "-no-mdmx"
-.PD
-Generate code for the \s-1MDMX\s0 Application Specific Extension.
-This tells the assembler to accept \s-1MDMX\s0 instructions.
-\&\fB\-no\-mdmx\fR turns off this option.
-.IP "\fB\-mdsp\fR" 4
-.IX Item "-mdsp"
-.PD 0
-.IP "\fB\-mno\-dsp\fR" 4
-.IX Item "-mno-dsp"
-.PD
-Generate code for the \s-1DSP\s0 Release 1 Application Specific Extension.
-This tells the assembler to accept \s-1DSP\s0 Release 1 instructions.
-\&\fB\-mno\-dsp\fR turns off this option.
-.IP "\fB\-mdspr2\fR" 4
-.IX Item "-mdspr2"
-.PD 0
-.IP "\fB\-mno\-dspr2\fR" 4
-.IX Item "-mno-dspr2"
-.PD
-Generate code for the \s-1DSP\s0 Release 2 Application Specific Extension.
-This option implies \-mdsp.
-This tells the assembler to accept \s-1DSP\s0 Release 2 instructions.
-\&\fB\-mno\-dspr2\fR turns off this option.
-.IP "\fB\-mmt\fR" 4
-.IX Item "-mmt"
-.PD 0
-.IP "\fB\-mno\-mt\fR" 4
-.IX Item "-mno-mt"
-.PD
-Generate code for the \s-1MT\s0 Application Specific Extension.
-This tells the assembler to accept \s-1MT\s0 instructions.
-\&\fB\-mno\-mt\fR turns off this option.
-.IP "\fB\-mmcu\fR" 4
-.IX Item "-mmcu"
-.PD 0
-.IP "\fB\-mno\-mcu\fR" 4
-.IX Item "-mno-mcu"
-.PD
-Generate code for the \s-1MCU\s0 Application Specific Extension.
-This tells the assembler to accept \s-1MCU\s0 instructions.
-\&\fB\-mno\-mcu\fR turns off this option.
-.IP "\fB\-\-construct\-floats\fR" 4
-.IX Item "--construct-floats"
-.PD 0
-.IP "\fB\-\-no\-construct\-floats\fR" 4
-.IX Item "--no-construct-floats"
-.PD
-The \fB\-\-no\-construct\-floats\fR option disables the construction of
-double width floating point constants by loading the two halves of the
-value into the two single width floating point registers that make up
-the double width register.  By default \fB\-\-construct\-floats\fR is
-selected, allowing construction of these floating point constants.
-.IP "\fB\-\-emulation=\fR\fIname\fR" 4
-.IX Item "--emulation=name"
-This option causes \fBas\fR to emulate \fBas\fR configured
-for some other target, in all respects, including output format (choosing
-between \s-1ELF\s0 and \s-1ECOFF\s0 only), handling of pseudo-opcodes which may generate
-debugging information or store symbol table information, and default
-endianness.  The available configuration names are: \fBmipsecoff\fR,
-\&\fBmipself\fR, \fBmipslecoff\fR, \fBmipsbecoff\fR, \fBmipslelf\fR,
-\&\fBmipsbelf\fR.  The first two do not alter the default endianness from that
-of the primary target for which the assembler was configured; the others change
-the default to little\- or big-endian as indicated by the \fBb\fR or \fBl\fR
-in the name.  Using \fB\-EB\fR or \fB\-EL\fR will override the endianness
-selection in any case.
-.Sp
-This option is currently supported only when the primary target
-\&\fBas\fR is configured for is a \s-1MIPS\s0 \s-1ELF\s0 or \s-1ECOFF\s0 target.
-Furthermore, the primary target or others specified with
-\&\fB\-\-enable\-targets=...\fR at configuration time must include support for
-the other format, if both are to be available.  For example, the Irix 5
-configuration includes support for both.
-.Sp
-Eventually, this option will support more configurations, with more
-fine-grained control over the assembler's behavior, and will be supported for
-more processors.
-.IP "\fB\-nocpp\fR" 4
-.IX Item "-nocpp"
-\&\fBas\fR ignores this option.  It is accepted for compatibility with
-the native tools.
-.IP "\fB\-\-trap\fR" 4
-.IX Item "--trap"
-.PD 0
-.IP "\fB\-\-no\-trap\fR" 4
-.IX Item "--no-trap"
-.IP "\fB\-\-break\fR" 4
-.IX Item "--break"
-.IP "\fB\-\-no\-break\fR" 4
-.IX Item "--no-break"
-.PD
-Control how to deal with multiplication overflow and division by zero.
-\&\fB\-\-trap\fR or \fB\-\-no\-break\fR (which are synonyms) take a trap exception
-(and only work for Instruction Set Architecture level 2 and higher);
-\&\fB\-\-break\fR or \fB\-\-no\-trap\fR (also synonyms, and the default) take a
-break exception.
-.IP "\fB\-n\fR" 4
-.IX Item "-n"
-When this option is used, \fBas\fR will issue a warning every
-time it generates a nop instruction from a macro.
+Generate little-endian output.  This is the default.
 .PP
-The following options are available when as is configured for
-an MCore processor.
-.IP "\fB\-jsri2bsr\fR" 4
-.IX Item "-jsri2bsr"
-.PD 0
-.IP "\fB\-nojsri2bsr\fR" 4
-.IX Item "-nojsri2bsr"
-.PD
-Enable or disable the \s-1JSRI\s0 to \s-1BSR\s0 transformation.  By default this is enabled.
-The command line option \fB\-nojsri2bsr\fR can be used to disable it.
-.IP "\fB\-sifilter\fR" 4
-.IX Item "-sifilter"
-.PD 0
-.IP "\fB\-nosifilter\fR" 4
-.IX Item "-nosifilter"
-.PD
-Enable or disable the silicon filter behaviour.  By default this is disabled.
-The default can be overridden by the \fB\-sifilter\fR command line option.
-.IP "\fB\-relax\fR" 4
-.IX Item "-relax"
-Alter jump instructions for long displacements.
-.IP "\fB\-mcpu=[210|340]\fR" 4
-.IX Item "-mcpu=[210|340]"
-Select the cpu type on the target hardware.  This controls which instructions
-can be assembled.
-.IP "\fB\-EB\fR" 4
-.IX Item "-EB"
-Assemble for a big endian target.
-.IP "\fB\-EL\fR" 4
-.IX Item "-EL"
-Assemble for a little endian target.
+The following options are available when as is configured for a
+Meta processor.
+.ie n .IP """\-mcpu=metac11""" 4
+.el .IP "\f(CW\-mcpu=metac11\fR" 4
+.IX Item "-mcpu=metac11"
+Generate code for Meta 1.1.
+.ie n .IP """\-mcpu=metac12""" 4
+.el .IP "\f(CW\-mcpu=metac12\fR" 4
+.IX Item "-mcpu=metac12"
+Generate code for Meta 1.2.
+.ie n .IP """\-mcpu=metac21""" 4
+.el .IP "\f(CW\-mcpu=metac21\fR" 4
+.IX Item "-mcpu=metac21"
+Generate code for Meta 2.1.
+.ie n .IP """\-mfpu=metac21""" 4
+.el .IP "\f(CW\-mfpu=metac21\fR" 4
+.IX Item "-mfpu=metac21"
+Allow code to use \s-1FPU\s0 hardware of Meta 2.1.
 .PP
 See the info pages for documentation of the MMIX-specific options.
 .PP
 The following options are available when as is configured for a
+\&\s-1NDS32\s0 processor.
+.ie n .IP """\-O1""" 4
+.el .IP "\f(CW\-O1\fR" 4
+.IX Item "-O1"
+Optimize for performance.
+.ie n .IP """\-Os""" 4
+.el .IP "\f(CW\-Os\fR" 4
+.IX Item "-Os"
+Optimize for space.
+.ie n .IP """\-EL""" 4
+.el .IP "\f(CW\-EL\fR" 4
+.IX Item "-EL"
+Produce little endian data output.
+.ie n .IP """\-EB""" 4
+.el .IP "\f(CW\-EB\fR" 4
+.IX Item "-EB"
+Produce little endian data output.
+.ie n .IP """\-mpic""" 4
+.el .IP "\f(CW\-mpic\fR" 4
+.IX Item "-mpic"
+Generate \s-1PIC.\s0
+.ie n .IP """\-mno\-fp\-as\-gp\-relax""" 4
+.el .IP "\f(CW\-mno\-fp\-as\-gp\-relax\fR" 4
+.IX Item "-mno-fp-as-gp-relax"
+Suppress fp-as-gp relaxation for this file.
+.ie n .IP """\-mb2bb\-relax""" 4
+.el .IP "\f(CW\-mb2bb\-relax\fR" 4
+.IX Item "-mb2bb-relax"
+Back-to-back branch optimization.
+.ie n .IP """\-mno\-all\-relax""" 4
+.el .IP "\f(CW\-mno\-all\-relax\fR" 4
+.IX Item "-mno-all-relax"
+Suppress all relaxation for this file.
+.ie n .IP """\-march=<arch name>""" 4
+.el .IP "\f(CW\-march=<arch name>\fR" 4
+.IX Item "-march=<arch name>"
+Assemble for architecture <arch name> which could be v3, v3j, v3m, v3f,
+v3s, v2, v2j, v2f, v2s.
+.ie n .IP """\-mbaseline=<baseline>""" 4
+.el .IP "\f(CW\-mbaseline=<baseline>\fR" 4
+.IX Item "-mbaseline=<baseline>"
+Assemble for baseline <baseline> which could be v2, v3, v3m.
+.ie n .IP """\-mfpu\-freg=\f(CIFREG\f(CW""" 4
+.el .IP "\f(CW\-mfpu\-freg=\f(CIFREG\f(CW\fR" 4
+.IX Item "-mfpu-freg=FREG"
+Specify a \s-1FPU\s0 configuration.
+.RS 4
+.ie n .IP """0      8 SP /  4 DP registers""" 4
+.el .IP "\f(CW0      8 SP /  4 DP registers\fR" 4
+.IX Item "0 8 SP / 4 DP registers"
+.PD 0
+.ie n .IP """1     16 SP /  8 DP registers""" 4
+.el .IP "\f(CW1     16 SP /  8 DP registers\fR" 4
+.IX Item "1 16 SP / 8 DP registers"
+.ie n .IP """2     32 SP / 16 DP registers""" 4
+.el .IP "\f(CW2     32 SP / 16 DP registers\fR" 4
+.IX Item "2 32 SP / 16 DP registers"
+.ie n .IP """3     32 SP / 32 DP registers""" 4
+.el .IP "\f(CW3     32 SP / 32 DP registers\fR" 4
+.IX Item "3 32 SP / 32 DP registers"
+.RE
+.RS 4
+.RE
+.ie n .IP """\-mabi=\f(CIabi\f(CW""" 4
+.el .IP "\f(CW\-mabi=\f(CIabi\f(CW\fR" 4
+.IX Item "-mabi=abi"
+.PD
+Specify a abi version <abi> could be v1, v2, v2fp, v2fpp.
+.ie n .IP """\-m[no\-]mac""" 4
+.el .IP "\f(CW\-m[no\-]mac\fR" 4
+.IX Item "-m[no-]mac"
+Enable/Disable Multiply instructions support.
+.ie n .IP """\-m[no\-]div""" 4
+.el .IP "\f(CW\-m[no\-]div\fR" 4
+.IX Item "-m[no-]div"
+Enable/Disable Divide instructions support.
+.ie n .IP """\-m[no\-]16bit\-ext""" 4
+.el .IP "\f(CW\-m[no\-]16bit\-ext\fR" 4
+.IX Item "-m[no-]16bit-ext"
+Enable/Disable 16\-bit extension
+.ie n .IP """\-m[no\-]dx\-regs""" 4
+.el .IP "\f(CW\-m[no\-]dx\-regs\fR" 4
+.IX Item "-m[no-]dx-regs"
+Enable/Disable d0/d1 registers
+.ie n .IP """\-m[no\-]perf\-ext""" 4
+.el .IP "\f(CW\-m[no\-]perf\-ext\fR" 4
+.IX Item "-m[no-]perf-ext"
+Enable/Disable Performance extension
+.ie n .IP """\-m[no\-]perf2\-ext""" 4
+.el .IP "\f(CW\-m[no\-]perf2\-ext\fR" 4
+.IX Item "-m[no-]perf2-ext"
+Enable/Disable Performance extension 2
+.ie n .IP """\-m[no\-]string\-ext""" 4
+.el .IP "\f(CW\-m[no\-]string\-ext\fR" 4
+.IX Item "-m[no-]string-ext"
+Enable/Disable String extension
+.ie n .IP """\-m[no\-]reduced\-regs""" 4
+.el .IP "\f(CW\-m[no\-]reduced\-regs\fR" 4
+.IX Item "-m[no-]reduced-regs"
+Enable/Disable Reduced Register configuration (\s-1GPR16\s0) option
+.ie n .IP """\-m[no\-]audio\-isa\-ext""" 4
+.el .IP "\f(CW\-m[no\-]audio\-isa\-ext\fR" 4
+.IX Item "-m[no-]audio-isa-ext"
+Enable/Disable \s-1AUDIO ISA\s0 extension
+.ie n .IP """\-m[no\-]fpu\-sp\-ext""" 4
+.el .IP "\f(CW\-m[no\-]fpu\-sp\-ext\fR" 4
+.IX Item "-m[no-]fpu-sp-ext"
+Enable/Disable \s-1FPU SP\s0 extension
+.ie n .IP """\-m[no\-]fpu\-dp\-ext""" 4
+.el .IP "\f(CW\-m[no\-]fpu\-dp\-ext\fR" 4
+.IX Item "-m[no-]fpu-dp-ext"
+Enable/Disable \s-1FPU DP\s0 extension
+.ie n .IP """\-m[no\-]fpu\-fma""" 4
+.el .IP "\f(CW\-m[no\-]fpu\-fma\fR" 4
+.IX Item "-m[no-]fpu-fma"
+Enable/Disable \s-1FPU\s0 fused-multiply-add instructions
+.ie n .IP """\-mall\-ext""" 4
+.el .IP "\f(CW\-mall\-ext\fR" 4
+.IX Item "-mall-ext"
+Turn on all extensions and instructions support
+.PP
+The following options are available when as is configured for a
 PowerPC processor.
 .IP "\fB\-a32\fR" 4
 .IX Item "-a32"
-Generate \s-1ELF32\s0 or \s-1XCOFF32\s0.
+Generate \s-1ELF32\s0 or \s-1XCOFF32.\s0
 .IP "\fB\-a64\fR" 4
 .IX Item "-a64"
-Generate \s-1ELF64\s0 or \s-1XCOFF64\s0.
+Generate \s-1ELF64\s0 or \s-1XCOFF64.\s0
 .IP "\fB\-K \s-1PIC\s0\fR" 4
 .IX Item "-K PIC"
 Set \s-1EF_PPC_RELOCATABLE_LIB\s0 in \s-1ELF\s0 flags.
 .IP "\fB\-mpwrx | \-mpwr2\fR" 4
 .IX Item "-mpwrx | -mpwr2"
-Generate code for \s-1POWER/2\s0 (\s-1RIOS2\s0).
+Generate code for \s-1POWER/2 \s0(\s-1RIOS2\s0).
 .IP "\fB\-mpwr\fR" 4
 .IX Item "-mpwr"
-Generate code for \s-1POWER\s0 (\s-1RIOS1\s0)
+Generate code for \s-1POWER \s0(\s-1RIOS1\s0)
 .IP "\fB\-m601\fR" 4
 .IX Item "-m601"
 Generate code for PowerPC 601.
@@ -1481,6 +1513,9 @@
 .IP "\fB\-m750cl\fR" 4
 .IX Item "-m750cl"
 Generate code for PowerPC 750CL.
+.IP "\fB\-m821, \-m850, \-m860\fR" 4
+.IX Item "-m821, -m850, -m860"
+Generate code for PowerPC 821/850/860.
 .IP "\fB\-mppc64, \-m620\fR" 4
 .IX Item "-mppc64, -m620"
 Generate code for PowerPC 620/625/630.
@@ -1493,6 +1528,12 @@
 .IP "\fB\-me500mc64\fR" 4
 .IX Item "-me500mc64"
 Generate code for Freescale e500mc64 core complex.
+.IP "\fB\-me5500\fR" 4
+.IX Item "-me5500"
+Generate code for Freescale e5500 core complex.
+.IP "\fB\-me6500\fR" 4
+.IX Item "-me6500"
+Generate code for Freescale e6500 core complex.
 .IP "\fB\-mspe\fR" 4
 .IX Item "-mspe"
 Generate code for Motorola \s-1SPE\s0 instructions.
@@ -1514,9 +1555,15 @@
 .IP "\fB\-maltivec\fR" 4
 .IX Item "-maltivec"
 Generate code for processors with AltiVec instructions.
+.IP "\fB\-mvle\fR" 4
+.IX Item "-mvle"
+Generate code for Freescale PowerPC \s-1VLE\s0 instructions.
 .IP "\fB\-mvsx\fR" 4
 .IX Item "-mvsx"
 Generate code for processors with Vector-Scalar (\s-1VSX\s0) instructions.
+.IP "\fB\-mhtm\fR" 4
+.IX Item "-mhtm"
+Generate code for processors with Hardware Transactional Memory instructions.
 .IP "\fB\-mpower4, \-mpwr4\fR" 4
 .IX Item "-mpower4, -mpwr4"
 Generate code for Power4 architecture.
@@ -1529,8 +1576,15 @@
 .IP "\fB\-mpower7, \-mpwr7\fR" 4
 .IX Item "-mpower7, -mpwr7"
 Generate code for Power7 architecture.
+.IP "\fB\-mpower8, \-mpwr8\fR" 4
+.IX Item "-mpower8, -mpwr8"
+Generate code for Power8 architecture.
 .IP "\fB\-mcell\fR" 4
 .IX Item "-mcell"
+.PD 0
+.IP "\fB\-mcell\fR" 4
+.IX Item "-mcell"
+.PD
 Generate code for Cell Broadband Engine architecture.
 .IP "\fB\-mcom\fR" 4
 .IX Item "-mcom"
@@ -1592,7 +1646,8 @@
 .IP "\fB\-march=\fR\fIprocessor\fR" 4
 .IX Item "-march=processor"
 Specify which s390 processor variant is the target, \fBg6\fR, \fBg6\fR,
-\&\fBz900\fR, \fBz990\fR, \fBz9\-109\fR, \fBz9\-ec\fR, or \fBz10\fR.
+\&\fBz900\fR, \fBz990\fR, \fBz9\-109\fR, \fBz9\-ec\fR, \fBz10\fR,
+\&\fBz196\fR, or \fBzEC12\fR.
 .IP "\fB\-mregnames\fR" 4
 .IX Item "-mregnames"
 .PD 0
@@ -1670,6 +1725,9 @@
 .IP "\fB\-m32 | \-m64\fR" 4
 .IX Item "-m32 | -m64"
 Select the word size, either 32 bits or 64 bits.
+.IP "\fB\-EB | \-EL\fR" 4
+.IX Item "-EB | -EL"
+Select the endianness, either big-endian (\-EB) or little-endian (\-EL).
 .PP
 The following options are available when as is configured for an
 Xtensa processor.
@@ -1678,7 +1736,7 @@
 Control the treatment of literal pools.  The default is
 \&\fB\-\-no\-text\-section\-literals\fR, which places literals in
 separate sections in the output file.  This allows the literal pool to be
-placed in a data \s-1RAM/ROM\s0.  With \fB\-\-text\-section\-literals\fR, the
+placed in a data \s-1RAM/ROM. \s0 With \fB\-\-text\-section\-literals\fR, the
 literals are interspersed in the text section in order to keep them as
 close as possible to their references.  This may be necessary for large
 assembly files, where the literals would otherwise be out of range of the
@@ -1718,6 +1776,13 @@
 .IX Item "--rename-section oldname=newname"
 Rename the \fIoldname\fR section to \fInewname\fR.  This option can be used
 multiple times to rename multiple sections.
+.IP "\fB\-\-trampolines | \-\-no\-trampolines\fR" 4
+.IX Item "--trampolines | --no-trampolines"
+Enable or disable transformation of jump instructions to allow jumps
+across a greater range of addresses.    This option should be used when jump targets can
+potentially be out of range.  In the absence of such jumps this option
+does not affect code size or performance.  The default is
+\&\fB\-\-trampolines\fR.
 .PP
 The following options are available when as is configured for
 a Z80 family processor.
@@ -1774,9 +1839,7 @@
 \&\fIgcc\fR\|(1), \fIld\fR\|(1), and the Info entries for \fIbinutils\fR and \fIld\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
-Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-c++filt.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-c++filt.1
index 71fff6d..c86f0be 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-c++filt.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-c++filt.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "C++FILT 1"
-.TH C++FILT 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH C++FILT 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -133,8 +142,8 @@
 c++filt \- Demangle C++ and Java symbols.
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
-c++filt [\fB\-_\fR|\fB\-\-strip\-underscores\fR]
-        [\fB\-n\fR|\fB\-\-no\-strip\-underscores\fR]
+c++filt [\fB\-_\fR|\fB\-\-strip\-underscore\fR]
+        [\fB\-n\fR|\fB\-\-no\-strip\-underscore\fR]
         [\fB\-p\fR|\fB\-\-no\-params\fR]
         [\fB\-t\fR|\fB\-\-types\fR]
         [\fB\-i\fR|\fB\-\-no\-verbose\fR]
@@ -207,8 +216,8 @@
 .IP "\fB\-_\fR" 4
 .IX Item "-_"
 .PD 0
-.IP "\fB\-\-strip\-underscores\fR" 4
-.IX Item "--strip-underscores"
+.IP "\fB\-\-strip\-underscore\fR" 4
+.IX Item "--strip-underscore"
 .PD
 On some systems, both the C and \*(C+ compilers put an underscore in front
 of every name.  For example, the C name \f(CW\*(C`foo\*(C'\fR gets the low-level
@@ -217,8 +226,8 @@
 .IP "\fB\-n\fR" 4
 .IX Item "-n"
 .PD 0
-.IP "\fB\-\-no\-strip\-underscores\fR" 4
-.IX Item "--no-strip-underscores"
+.IP "\fB\-\-no\-strip\-underscore\fR" 4
+.IX Item "--no-strip-underscore"
 .PD
 Do not remove the initial underscore.
 .IP "\fB\-p\fR" 4
@@ -265,7 +274,7 @@
 .ie n .IP """gnu""" 4
 .el .IP "\f(CWgnu\fR" 4
 .IX Item "gnu"
-the one used by the \s-1GNU\s0 \*(C+ compiler (g++)
+the one used by the \s-1GNU \*(C+\s0 compiler (g++)
 .ie n .IP """lucid""" 4
 .el .IP "\f(CWlucid\fR" 4
 .IX Item "lucid"
@@ -285,7 +294,7 @@
 .ie n .IP """gnu\-v3""" 4
 .el .IP "\f(CWgnu\-v3\fR" 4
 .IX Item "gnu-v3"
-the one used by the \s-1GNU\s0 \*(C+ compiler (g++) with the V3 \s-1ABI\s0.
+the one used by the \s-1GNU \*(C+\s0 compiler (g++) with the V3 \s-1ABI.\s0
 .ie n .IP """java""" 4
 .el .IP "\f(CWjava\fR" 4
 .IX Item "java"
@@ -326,9 +335,7 @@
 the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-dlltool.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-dlltool.1
index f312a9f..2b9a55a 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-dlltool.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-dlltool.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "DLLTOOL 1"
-.TH DLLTOOL 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH DLLTOOL 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -168,19 +177,19 @@
 \&\fB\-l\fR and \fB\-z\fR options can be present in one invocation of
 dlltool.
 .PP
-When creating a \s-1DLL\s0, along with the source for the \s-1DLL\s0, it is necessary
+When creating a \s-1DLL,\s0 along with the source for the \s-1DLL,\s0 it is necessary
 to have three other files.  \fBdlltool\fR can help with the creation of
 these files.
 .PP
 The first file is a \fI.def\fR file which specifies which functions are
-exported from the \s-1DLL\s0, which functions the \s-1DLL\s0 imports, and so on.  This
+exported from the \s-1DLL,\s0 which functions the \s-1DLL\s0 imports, and so on.  This
 is a text file and can be created by hand, or \fBdlltool\fR can be used
 to create it using the \fB\-z\fR option.  In this case \fBdlltool\fR
 will scan the object files specified on its command line looking for
 those functions which have been specially marked as being exported and
 put entries for them in the \fI.def\fR file it creates.
 .PP
-In order to mark a function as being exported from a \s-1DLL\s0, it needs to
+In order to mark a function as being exported from a \s-1DLL,\s0 it needs to
 have an \fB\-export:<name_of_function>\fR entry in the \fB.drectve\fR
 section of the object file.  This can be done in C by using the
 \&\fIasm()\fR operator:
@@ -199,7 +208,7 @@
 \&\fBdlltool\fR when it is creating or reading in a \fI.def\fR file.
 .PP
 The third file needed for \s-1DLL\s0 creation is the library file that programs
-will link with in order to access the functions in the \s-1DLL\s0 (an `import
+will link with in order to access the functions in the \s-1DLL \s0(an `import
 library').  This file can be created by giving the \fB\-l\fR option to
 dlltool when it is creating or reading in a \fI.def\fR file.
 .PP
@@ -232,7 +241,7 @@
 .Ve
 .PP
 \&\fBdlltool\fR may also be used to query an existing import library
-to determine the name of the \s-1DLL\s0 to which it is associated.  See the 
+to determine the name of the \s-1DLL\s0 to which it is associated.  See the
 description of the \fB\-I\fR or \fB\-\-identify\fR option.
 .SH "OPTIONS"
 .IX Header "OPTIONS"
@@ -338,7 +347,7 @@
 Specifies the name to be stored in the \fI.def\fR file as the name of
 the \s-1DLL\s0 when the \fB\-e\fR option is used.  If this option is not
 present, then the filename given to the \fB\-e\fR option will be
-used as the name of the \s-1DLL\s0.
+used as the name of the \s-1DLL.\s0
 .IP "\fB\-m\fR \fImachine\fR" 4
 .IX Item "-m machine"
 .PD 0
@@ -392,7 +401,7 @@
 Specifies that when \fBdlltool\fR is creating the exports file it
 should not append the string \fB@ <number>\fR.  These numbers are
 called ordinal numbers and they represent another way of accessing the
-function in a \s-1DLL\s0, other than by name.
+function in a \s-1DLL,\s0 other than by name.
 .IP "\fB\-A\fR" 4
 .IX Item "-A"
 .PD 0
@@ -451,7 +460,7 @@
 .IX Item "--identify-strict"
 Modifies the behavior of the \fB\-\-identify\fR option, such
 that an error is reported if \fIfilename\fR is associated with
-more than one \s-1DLL\s0.
+more than one \s-1DLL.\s0
 .IP "\fB\-i\fR" 4
 .IX Item "-i"
 .PD 0
@@ -519,9 +528,7 @@
 The Info pages for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-elfedit.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-elfedit.1
index 1544944..5c51e8a 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-elfedit.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-elfedit.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "ELFEDIT 1"
-.TH ELFEDIT 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH ELFEDIT 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -189,8 +198,8 @@
 \&\fI\s-1NSK\s0\fR, \fI\s-1AROS\s0\fR and \fIFenixOS\fR.
 .IP "\fB\-\-output\-osabi=\fR\fIosabi\fR" 4
 .IX Item "--output-osabi=osabi"
-Change the \s-1ELF\s0 \s-1OSABI\s0 in the \s-1ELF\s0 header to \fIosabi\fR.  The
-supported \s-1ELF\s0 \s-1OSABI\s0 are the same as \fB\-\-input\-osabi\fR.
+Change the \s-1ELF OSABI\s0 in the \s-1ELF\s0 header to \fIosabi\fR.  The
+supported \s-1ELF OSABI\s0 are the same as \fB\-\-input\-osabi\fR.
 .IP "\fB\-v\fR" 4
 .IX Item "-v"
 .PD 0
@@ -223,9 +232,7 @@
 \&\fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-gprof.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-gprof.1
index a6fc4a7..ce56f16 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-gprof.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-gprof.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GPROF 1"
-.TH GPROF 1 "2011-11-21" "binutils-2.21.90" "GNU"
+.TH GPROF 1 "2014-12-23" "binutils-2.25" "GNU"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -143,12 +152,13 @@
  [ \-\-debug[=\fIlevel\fR] ] [ \-\-function\-ordering ] 
  [ \-\-file\-ordering \fImap_file\fR ] [ \-\-directory\-path=\fIdirs\fR ]
  [ \-\-display\-unused\-functions ] [ \-\-file\-format=\fIname\fR ]
- [ \-\-file\-info ] [ \-\-help ] [ \-\-line ] [ \-\-min\-count=\fIn\fR ]
- [ \-\-no\-static ] [ \-\-print\-path ] [ \-\-separate\-files ]
- [ \-\-static\-call\-graph ] [ \-\-sum ] [ \-\-table\-length=\fIlen\fR ]
- [ \-\-traditional ] [ \-\-version ] [ \-\-width=\fIn\fR ]
- [ \-\-ignore\-non\-functions ] [ \-\-demangle[=\fI\s-1STYLE\s0\fR] ]
- [ \-\-no\-demangle ] [\-\-external\-symbol\-table=name] 
+ [ \-\-file\-info ] [ \-\-help ] [ \-\-line ] [ \-\-inline\-file\-names ]
+ [ \-\-min\-count=\fIn\fR ] [ \-\-no\-static ] [ \-\-print\-path ]
+ [ \-\-separate\-files ] [ \-\-static\-call\-graph ] [ \-\-sum ]
+ [ \-\-table\-length=\fIlen\fR ] [ \-\-traditional ] [ \-\-version ]
+ [ \-\-width=\fIn\fR ] [ \-\-ignore\-non\-functions ]
+ [ \-\-demangle[=\fI\s-1STYLE\s0\fR] ] [ \-\-no\-demangle ]
+ [\-\-external\-symbol\-table=name]
  [ \fIimage-file\fR ] [ \fIprofile-file\fR ... ]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
@@ -417,7 +427,7 @@
 \&        ...
 .Ve
 .Sp
-To create a \fImap_file\fR with \s-1GNU\s0 \f(CW\*(C`nm\*(C'\fR, type a command like
+To create a \fImap_file\fR with \s-1GNU \s0\f(CW\*(C`nm\*(C'\fR, type a command like
 \&\f(CW\*(C`nm \-\-extern\-only \-\-defined\-only \-v \-\-print\-file\-name program\-name\*(C'\fR.
 .ie n .IP """\-T""" 4
 .el .IP "\f(CW\-T\fR" 4
@@ -542,6 +552,12 @@
 a program is spending its time, it also significantly increases
 the running time of \f(CW\*(C`gprof\*(C'\fR, and magnifies statistical
 inaccuracies.
+.ie n .IP """\-\-inline\-file\-names""" 4
+.el .IP "\f(CW\-\-inline\-file\-names\fR" 4
+.IX Item "--inline-file-names"
+This option causes \f(CW\*(C`gprof\*(C'\fR to print the source file after each
+symbol in both the flat profile and the call graph. The full path to the
+file is printed if used with the \fB\-L\fR option.
 .ie n .IP """\-m \f(CInum\f(CW""" 4
 .el .IP "\f(CW\-m \f(CInum\f(CW\fR" 4
 .IX Item "-m num"
@@ -742,12 +758,11 @@
 .PP
 \&\*(L"gprof: A Call Graph Execution Profiler\*(R",
 by S. Graham, P. Kessler, M. McKusick;
-Proceedings of the \s-1SIGPLAN\s0 '82 Symposium on Compiler Construction,
+Proceedings of the \s-1SIGPLAN \s0'82 Symposium on Compiler Construction,
 \&\s-1SIGPLAN\s0 Notices, Vol. 17, No  6, pp. 120\-126, June 1982.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1988, 1992, 1997, 1998, 1999, 2000, 2001, 2003,
-2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright (c) 1988\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-ld.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-ld.1
index d59c15e..e7224bb 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-ld.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-ld.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "LD 1"
-.TH LD 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH LD 1 "2015-12-09" "binutils-2.25.1" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -284,7 +293,7 @@
 specified in the library.  If specified multiple times \f(CW\*(C`DT_AUDIT\*(C'\fR
 will contain a colon separated list of audit interfaces to use. If the linker
 finds an object with an audit entry while searching for shared libraries,
-it will add a corresponding \f(CW\*(C`DT_DEPAUDIT\*(C'\fR entry in the output file.  
+it will add a corresponding \f(CW\*(C`DT_DEPAUDIT\*(C'\fR entry in the output file.
 This option is only meaningful on \s-1ELF\s0 platforms supporting the rtld-audit
 interface.
 .IP "\fB\-A\fR \fIarchitecture\fR" 4
@@ -335,7 +344,7 @@
 .IP "\fB\-\-mri\-script=\fR\fIMRI-commandfile\fR" 4
 .IX Item "--mri-script=MRI-commandfile"
 .PD
-For compatibility with linkers produced by \s-1MRI\s0, \fBld\fR accepts script
+For compatibility with linkers produced by \s-1MRI, \s0\fBld\fR accepts script
 files written in an alternate, restricted command language, described in
 the \s-1MRI\s0 Compatible Script Files section of \s-1GNU\s0 ld documentation.
 Introduce \s-1MRI\s0 script files with
@@ -385,7 +394,7 @@
 exported.  The library names may be delimited by commas or colons.  Specifying
 \&\f(CW\*(C`\-\-exclude\-libs ALL\*(C'\fR excludes symbols in all archive libraries from
 automatic export.  This option is available only for the i386 \s-1PE\s0 targeted
-port of the linker and for \s-1ELF\s0 targeted ports.  For i386 \s-1PE\s0, symbols
+port of the linker and for \s-1ELF\s0 targeted ports.  For i386 \s-1PE,\s0 symbols
 explicitly listed in a .def file are still exported, regardless of this
 option.  For \s-1ELF\s0 targeted ports, symbols affected by this option will
 be treated as hidden.
@@ -505,7 +514,7 @@
 .PD
 Set the maximum size of objects to be optimized using the \s-1GP\s0 register to
 \&\fIsize\fR.  This is only meaningful for object file formats such as
-\&\s-1MIPS\s0 \s-1ECOFF\s0 which supports putting large and small objects into different
+\&\s-1MIPS ELF\s0 that support putting large and small objects into different
 sections.  This is ignored for other object file formats.
 .IP "\fB\-h\fR \fIname\fR" 4
 .IX Item "-h name"
@@ -561,7 +570,7 @@
 You may list the same archive multiple times on the command line.
 .Sp
 This type of archive searching is standard for Unix linkers.  However,
-if you are using \fBld\fR on \s-1AIX\s0, note that it is different from the
+if you are using \fBld\fR on \s-1AIX,\s0 note that it is different from the
 behaviour of the \s-1AIX\s0 linker.
 .IP "\fB\-L\fR \fIsearchdir\fR" 4
 .IX Item "-L searchdir"
@@ -580,7 +589,8 @@
 option is specified.
 .Sp
 If \fIsearchdir\fR begins with \f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR will be replaced
-by the \fIsysroot prefix\fR, a path specified when the linker is configured.
+by the \fIsysroot prefix\fR, controlled by the \fB\-\-sysroot\fR option, or
+specified when the linker is configured.
 .Sp
 The default set of paths searched (without being specified with
 \&\fB\-L\fR) depends on which emulation mode \fBld\fR is using, and in
@@ -691,6 +701,30 @@
 the linker may make more use of this option.  Also currently there is
 no difference in the linker's behaviour for different non-zero values
 of this option.  Again this may change with future releases.
+.IP "\fB\-\-push\-state\fR" 4
+.IX Item "--push-state"
+The \fB\-\-push\-state\fR allows to preserve the current state of the
+flags which govern the input file handling so that they can all be
+restored with one corresponding \fB\-\-pop\-state\fR option.
+.Sp
+The option which are covered are: \fB\-Bdynamic\fR, \fB\-Bstatic\fR,
+\&\fB\-dn\fR, \fB\-dy\fR, \fB\-call_shared\fR, \fB\-non_shared\fR,
+\&\fB\-static\fR, \fB\-N\fR, \fB\-n\fR, \fB\-\-whole\-archive\fR,
+\&\fB\-\-no\-whole\-archive\fR, \fB\-r\fR, \fB\-Ur\fR,
+\&\fB\-\-copy\-dt\-needed\-entries\fR, \fB\-\-no\-copy\-dt\-needed\-entries\fR,
+\&\fB\-\-as\-needed\fR, \fB\-\-no\-as\-needed\fR, and \fB\-a\fR.
+.Sp
+One target for this option are specifications for \fIpkg-config\fR.  When
+used with the \fB\-\-libs\fR option all possibly needed libraries are
+listed and then possibly linked with all the time.  It is better to return
+something as follows:
+.Sp
+.Vb 1
+\&        \-Wl,\-\-push\-state,\-\-as\-needed \-libone \-libtwo \-Wl,\-\-pop\-state
+.Ve
+.Sp
+Undoes the effect of \-\-push\-state, restores the previous values of the
+flags governing input file handling.
 .IP "\fB\-q\fR" 4
 .IX Item "-q"
 .PD 0
@@ -880,6 +914,11 @@
 .IP "\fBexecstack\fR" 4
 .IX Item "execstack"
 Marks the object as requiring executable stack.
+.IP "\fBglobal\fR" 4
+.IX Item "global"
+This option is only meaningful when building a shared object.  It makes
+the symbols defined by this shared object available for symbol resolution
+of subsequently loaded libraries.
 .IP "\fBinitfirst\fR" 4
 .IX Item "initfirst"
 This option is only meaningful when building a shared object.
@@ -929,7 +968,7 @@
 Marks the object as not requiring executable stack.
 .IP "\fBnorelro\fR" 4
 .IX Item "norelro"
-Don't create an \s-1ELF\s0 \f(CW\*(C`PT_GNU_RELRO\*(C'\fR segment header in the object.
+Don't create an \s-1ELF \s0\f(CW\*(C`PT_GNU_RELRO\*(C'\fR segment header in the object.
 .IP "\fBnow\fR" 4
 .IX Item "now"
 When generating an executable or shared library, mark it to tell the
@@ -942,13 +981,21 @@
 Marks the object may contain \f(CW$ORIGIN\fR.
 .IP "\fBrelro\fR" 4
 .IX Item "relro"
-Create an \s-1ELF\s0 \f(CW\*(C`PT_GNU_RELRO\*(C'\fR segment header in the object.
+Create an \s-1ELF \s0\f(CW\*(C`PT_GNU_RELRO\*(C'\fR segment header in the object.
 .IP "\fBmax\-page\-size=\fR\fIvalue\fR" 4
 .IX Item "max-page-size=value"
 Set the emulation maximum page size to \fIvalue\fR.
 .IP "\fBcommon\-page\-size=\fR\fIvalue\fR" 4
 .IX Item "common-page-size=value"
 Set the emulation common page size to \fIvalue\fR.
+.IP "\fBstack\-size=\fR\fIvalue\fR" 4
+.IX Item "stack-size=value"
+Specify a stack size for in an \s-1ELF \s0\f(CW\*(C`PT_GNU_STACK\*(C'\fR segment.
+Specifying zero will override any default non-zero sized
+\&\f(CW\*(C`PT_GNU_STACK\*(C'\fR segment creation.
+.IP "\fBbndplt\fR" 4
+.IX Item "bndplt"
+Always generate \s-1BND\s0 prefix in \s-1PLT\s0 entries. Supported for Linux/x86_64.
 .RE
 .RS 4
 .Sp
@@ -994,16 +1041,19 @@
 .IP "\fB\-\-no\-as\-needed\fR" 4
 .IX Item "--no-as-needed"
 .PD
-This option affects \s-1ELF\s0 \s-1DT_NEEDED\s0 tags for dynamic libraries mentioned
+This option affects \s-1ELF DT_NEEDED\s0 tags for dynamic libraries mentioned
 on the command line after the \fB\-\-as\-needed\fR option.  Normally
 the linker will add a \s-1DT_NEEDED\s0 tag for each dynamic library mentioned
 on the command line, regardless of whether the library is actually
 needed or not.  \fB\-\-as\-needed\fR causes a \s-1DT_NEEDED\s0 tag to only be
-emitted for a library that satisfies an undefined symbol reference
-from a regular object file or, if the library is not found in the
-\&\s-1DT_NEEDED\s0 lists of other libraries linked up to that point, an
-undefined symbol reference from another dynamic library.
-\&\fB\-\-no\-as\-needed\fR restores the default behaviour.
+emitted for a library that \fIat that point in the link\fR satisfies a
+non-weak undefined symbol reference from a regular object file or, if
+the library is not found in the \s-1DT_NEEDED\s0 lists of other needed libraries, a
+non-weak undefined symbol reference from another needed dynamic library.
+Object files or libraries appearing on the command line \fIafter\fR
+the library in question do not affect whether the library is seen as
+needed.  This is similar to the rules for extraction of object files
+from archives.  \fB\-\-no\-as\-needed\fR restores the default behaviour.
 .IP "\fB\-\-add\-needed\fR" 4
 .IX Item "--add-needed"
 .PD 0
@@ -1114,7 +1164,7 @@
 .IP "\fB\-\-no\-copy\-dt\-needed\-entries\fR" 4
 .IX Item "--no-copy-dt-needed-entries"
 .PD
-This option affects the treatment of dynamic libraries referred to 
+This option affects the treatment of dynamic libraries referred to
 by \s-1DT_NEEDED\s0 tags \fIinside\fR \s-1ELF\s0 dynamic libraries mentioned on the
 command line.  Normally the linker won't add a \s-1DT_NEEDED\s0 tag to the
 output binary for each library mentioned in a \s-1DT_NEEDED\s0 tag in an
@@ -1141,7 +1191,9 @@
 easily processed by a script if necessary.  The symbols are printed out,
 sorted by name.  For each symbol, a list of file names is given.  If the
 symbol is defined, the first file listed is the location of the
-definition.  The remaining files contain references to the symbol.
+definition.  If the symbol is defined as a common value then any files
+where this happens appear next.  Finally any files that reference the
+symbol are listed.
 .IP "\fB\-\-no\-define\-common\fR" 4
 .IX Item "--no-define-common"
 This option inhibits the assignment of addresses to common symbols.
@@ -1234,7 +1286,7 @@
 relocations.  See \fB\-\-entry\fR and \fB\-\-undefined\fR.
 .Sp
 This option can be set when doing a partial link (enabled with option
-\&\fB\-r\fR).  In this case the root of symbols kept must be explicitly 
+\&\fB\-r\fR).  In this case the root of symbols kept must be explicitly
 specified either by an \fB\-\-entry\fR or \fB\-\-undefined\fR option or by
 a \f(CW\*(C`ENTRY\*(C'\fR command in the linker script.
 .IP "\fB\-\-print\-gc\-sections\fR" 4
@@ -1316,7 +1368,7 @@
 that is available at load time, so the symbol might actually be
 resolvable at load time.
 .IP "\(bu" 4
-There are some operating systems, eg BeOS and \s-1HPPA\s0, where undefined
+There are some operating systems, eg BeOS and \s-1HPPA,\s0 where undefined
 symbols in shared libraries are normal.
 .Sp
 The BeOS kernel for example patches shared libraries at load time to
@@ -1411,7 +1463,7 @@
 global optimizations that become possible when the linker resolves
 addressing in the program, such as relaxing address modes,
 synthesizing new instructions, selecting shorter version of current
-instructions, and combinig constant values.
+instructions, and combining constant values.
 .Sp
 On some platforms these link time global optimizations may make symbolic
 debugging of the resulting executable impossible.
@@ -1501,7 +1553,7 @@
 On SunOS, if the \fB\-rpath\fR option was not used, search any
 directories specified using \fB\-L\fR options.
 .IP "5." 4
-For a native linker, the search the contents of the environment
+For a native linker, search the contents of the environment
 variable \f(CW\*(C`LD_LIBRARY_PATH\*(C'\fR.
 .IP "6." 4
 For a native \s-1ELF\s0 linker, the directories in \f(CW\*(C`DT_RUNPATH\*(C'\fR or
@@ -1525,7 +1577,7 @@
 .IP "\fB\-Bshareable\fR" 4
 .IX Item "-Bshareable"
 .PD
-Create a shared library.  This is currently only supported on \s-1ELF\s0, \s-1XCOFF\s0
+Create a shared library.  This is currently only supported on \s-1ELF, XCOFF\s0
 and SunOS platforms.  On SunOS, the linker will automatically create a
 shared library if the \fB\-e\fR option is not used and there are
 undefined symbols in the link.
@@ -1612,8 +1664,17 @@
 \&\f(CW\*(C`.text\*(C'\fR as the \fIsectionname\fR.
 .IP "\fB\-Ttext\-segment=\fR\fIorg\fR" 4
 .IX Item "-Ttext-segment=org"
-When creating an \s-1ELF\s0 executable or shared object, it will set the address
-of the first byte of the text segment.
+When creating an \s-1ELF\s0 executable, it will set the address of the first
+byte of the text segment.
+.IP "\fB\-Trodata\-segment=\fR\fIorg\fR" 4
+.IX Item "-Trodata-segment=org"
+When creating an \s-1ELF\s0 executable or shared object for a target where
+the read-only data is in its own segment separate from the executable
+text, it will set the address of the first byte of the read-only data segment.
+.IP "\fB\-Tldata\-segment=\fR\fIorg\fR" 4
+.IX Item "-Tldata-segment=org"
+When creating an \s-1ELF\s0 executable or shared object for x86\-64 medium memory
+model, it will set the address of the first byte of the ldata segment.
 .IP "\fB\-\-unresolved\-symbols=\fR\fImethod\fR" 4
 .IX Item "--unresolved-symbols=method"
 Determine how to handle unresolved symbols.  There are four possible
@@ -1668,10 +1729,10 @@
 .IP "\fB\-\-warn\-common\fR" 4
 .IX Item "--warn-common"
 Warn when a common symbol is combined with another common symbol or with
-a symbol definition.  Unix linkers allow this somewhat sloppy practise,
+a symbol definition.  Unix linkers allow this somewhat sloppy practice,
 but linkers on some other operating systems do not.  This option allows
 you to find potential problems from combining global symbols.
-Unfortunately, some C libraries use this practise, so you may get some
+Unfortunately, some C libraries use this practice, so you may get some
 warnings about symbols in the libraries as well as in your programs.
 .Sp
 There are three kinds of global symbols, illustrated here by C examples:
@@ -1752,7 +1813,7 @@
 .IP "\fB\-\-warn\-constructors\fR" 4
 .IX Item "--warn-constructors"
 Warn if any global constructors are used.  This is only useful for a few
-object file formats.  For formats like \s-1COFF\s0 or \s-1ELF\s0, the linker can not
+object file formats.  For formats like \s-1COFF\s0 or \s-1ELF,\s0 the linker can not
 detect the use of global constructors.
 .IP "\fB\-\-warn\-multiple\-gp\fR" 4
 .IX Item "--warn-multiple-gp"
@@ -1842,12 +1903,12 @@
 call before the linker has a chance to wrap it to \f(CW\*(C`malloc\*(C'\fR.
 .IP "\fB\-\-eh\-frame\-hdr\fR" 4
 .IX Item "--eh-frame-hdr"
-Request creation of \f(CW\*(C`.eh_frame_hdr\*(C'\fR section and \s-1ELF\s0
-\&\f(CW\*(C`PT_GNU_EH_FRAME\*(C'\fR segment header.
+Request creation of \f(CW\*(C`.eh_frame_hdr\*(C'\fR section and \s-1ELF
+\&\s0\f(CW\*(C`PT_GNU_EH_FRAME\*(C'\fR segment header.
 .IP "\fB\-\-no\-ld\-generated\-unwind\-info\fR" 4
 .IX Item "--no-ld-generated-unwind-info"
 Request creation of \f(CW\*(C`.eh_frame\*(C'\fR unwind info for linker
-generated code sections like \s-1PLT\s0.  This option is on by default
+generated code sections like \s-1PLT. \s0 This option is on by default
 if linker generated unwind info is supported.
 .IP "\fB\-\-enable\-new\-dtags\fR" 4
 .IX Item "--enable-new-dtags"
@@ -1855,9 +1916,10 @@
 .IP "\fB\-\-disable\-new\-dtags\fR" 4
 .IX Item "--disable-new-dtags"
 .PD
-This linker can create the new dynamic tags in \s-1ELF\s0. But the older \s-1ELF\s0
+This linker can create the new dynamic tags in \s-1ELF.\s0 But the older \s-1ELF\s0
 systems may not understand them. If you specify
-\&\fB\-\-enable\-new\-dtags\fR, the dynamic tags will be created as needed.
+\&\fB\-\-enable\-new\-dtags\fR, the new dynamic tags will be created as needed
+and older dynamic tags will be omitted.
 If you specify \fB\-\-disable\-new\-dtags\fR, no new dynamic tags will be
 created. By default, the new dynamic tags are not created. Note that
 those options are only available for \s-1ELF\s0 systems.
@@ -1871,9 +1933,9 @@
 .IP "\fB\-\-hash\-style=\fR\fIstyle\fR" 4
 .IX Item "--hash-style=style"
 Set the type of linker's hash table(s).  \fIstyle\fR can be either
-\&\f(CW\*(C`sysv\*(C'\fR for classic \s-1ELF\s0 \f(CW\*(C`.hash\*(C'\fR section, \f(CW\*(C`gnu\*(C'\fR for
-new style \s-1GNU\s0 \f(CW\*(C`.gnu.hash\*(C'\fR section or \f(CW\*(C`both\*(C'\fR for both
-the classic \s-1ELF\s0 \f(CW\*(C`.hash\*(C'\fR and new style \s-1GNU\s0 \f(CW\*(C`.gnu.hash\*(C'\fR
+\&\f(CW\*(C`sysv\*(C'\fR for classic \s-1ELF \s0\f(CW\*(C`.hash\*(C'\fR section, \f(CW\*(C`gnu\*(C'\fR for
+new style \s-1GNU \s0\f(CW\*(C`.gnu.hash\*(C'\fR section or \f(CW\*(C`both\*(C'\fR for both
+the classic \s-1ELF \s0\f(CW\*(C`.hash\*(C'\fR and new style \s-1GNU \s0\f(CW\*(C`.gnu.hash\*(C'\fR
 hash tables.  The default is \f(CW\*(C`sysv\*(C'\fR.
 .IP "\fB\-\-reduce\-memory\-overheads\fR" 4
 .IX Item "--reduce-memory-overheads"
@@ -1895,16 +1957,16 @@
 .IP "\fB\-\-build\-id=\fR\fIstyle\fR" 4
 .IX Item "--build-id=style"
 .PD
-Request creation of \f(CW\*(C`.note.gnu.build\-id\*(C'\fR \s-1ELF\s0 note section.
-The contents of the note are unique bits identifying this linked
-file.  \fIstyle\fR can be \f(CW\*(C`uuid\*(C'\fR to use 128 random bits,
-\&\f(CW\*(C`sha1\*(C'\fR to use a 160\-bit \s-1SHA1\s0 hash on the normative
-parts of the output contents, \f(CW\*(C`md5\*(C'\fR to use a 128\-bit
-\&\s-1MD5\s0 hash on the normative parts of the output contents, or
-\&\f(CW\*(C`0x\f(CIhexstring\f(CW\*(C'\fR to use a chosen bit string specified as
-an even number of hexadecimal digits (\f(CW\*(C`\-\*(C'\fR and \f(CW\*(C`:\*(C'\fR
-characters between digit pairs are ignored).  If \fIstyle\fR is
-omitted, \f(CW\*(C`sha1\*(C'\fR is used.
+Request the creation of a \f(CW\*(C`.note.gnu.build\-id\*(C'\fR \s-1ELF\s0 note section
+or a \f(CW\*(C`.build\-id\*(C'\fR \s-1COFF\s0 section.  The contents of the note are
+unique bits identifying this linked file.  \fIstyle\fR can be
+\&\f(CW\*(C`uuid\*(C'\fR to use 128 random bits, \f(CW\*(C`sha1\*(C'\fR to use a 160\-bit
+\&\s-1SHA1\s0 hash on the normative parts of the output contents,
+\&\f(CW\*(C`md5\*(C'\fR to use a 128\-bit \s-1MD5\s0 hash on the normative parts of
+the output contents, or \f(CW\*(C`0x\f(CIhexstring\f(CW\*(C'\fR to use a chosen bit
+string specified as an even number of hexadecimal digits (\f(CW\*(C`\-\*(C'\fR and
+\&\f(CW\*(C`:\*(C'\fR characters between digit pairs are ignored).  If \fIstyle\fR
+is omitted, \f(CW\*(C`sha1\*(C'\fR is used.
 .Sp
 The \f(CW\*(C`md5\*(C'\fR and \f(CW\*(C`sha1\*(C'\fR styles produces an identifier
 that is always the same in an identical output file, but will be
@@ -1915,6 +1977,16 @@
 .Sp
 Passing \f(CW\*(C`none\*(C'\fR for \fIstyle\fR disables the setting from any
 \&\f(CW\*(C`\-\-build\-id\*(C'\fR options earlier on the command line.
+.IP "\fB\-\-no\-poison\-system\-directories\fR" 4
+.IX Item "--no-poison-system-directories"
+Do not warn for \fB\-L\fR options using system directories such as
+\&\fI/usr/lib\fR when cross linking.  This option is intended for use
+in chroot environments when such directories contain the correct
+libraries for the target system rather than the host.
+.IP "\fB\-\-error\-poison\-system\-directories\fR" 4
+.IX Item "--error-poison-system-directories"
+Give an error instead of a warning for \fB\-L\fR options using
+system directories when cross linking.
 .PP
 The i386 \s-1PE\s0 linker supports the \fB\-shared\fR option, which causes
 the output to be a dynamically linked library (\s-1DLL\s0) instead of a
@@ -1961,8 +2033,8 @@
 disallow it in object files, by using these two options.  Executable images
 generated with these long section names are slightly non-standard, carrying
 as they do a string table, and may generate confusing output when examined
-with non-GNU PE-aware tools, such as file viewers and dumpers.  However, 
-\&\s-1GDB\s0 relies on the use of \s-1PE\s0 long section names to find Dwarf\-2 debug 
+with non-GNU PE-aware tools, such as file viewers and dumpers.  However,
+\&\s-1GDB\s0 relies on the use of \s-1PE\s0 long section names to find Dwarf\-2 debug
 information sections in an executable image at runtime, and so if neither
 option is specified on the command-line, \fBld\fR will enable long
 section names, overriding the default and technically correct behaviour,
@@ -2001,7 +2073,7 @@
 .IP "\fB\-\-export\-all\-symbols\fR" 4
 .IX Item "--export-all-symbols"
 If given, all global symbols in the objects used to build a \s-1DLL\s0 will
-be exported by the \s-1DLL\s0.  Note that this is the default if there
+be exported by the \s-1DLL. \s0 Note that this is the default if there
 otherwise wouldn't be any exported symbols.  When symbols are
 explicitly exported via \s-1DEF\s0 files or implicitly exported via function
 attributes, the default is to not export anything else unless this
@@ -2045,7 +2117,7 @@
 .IX Item "--heap reserve,commit"
 .PD
 Specify the number of bytes of memory to reserve (and optionally commit)
-to be used as heap for this program.  The default is 1Mb reserved, 4K
+to be used as heap for this program.  The default is 1MB reserved, 4K
 committed.
 [This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
 .IP "\fB\-\-image\-base\fR \fIvalue\fR" 4
@@ -2068,7 +2140,14 @@
 header is set to indicate that this executable supports virtual addresses
 greater than 2 gigabytes.  This should be used in conjunction with the /3GB
 or /USERVA=\fIvalue\fR megabytes switch in the \*(L"[operating systems]\*(R"
-section of the \s-1BOOT\s0.INI.  Otherwise, this bit has no effect.
+section of the \s-1BOOT.INI. \s0 Otherwise, this bit has no effect.
+[This option is specific to \s-1PE\s0 targeted ports of the linker]
+.IP "\fB\-\-disable\-large\-address\-aware\fR" 4
+.IX Item "--disable-large-address-aware"
+Reverts the effect of a previous \fB\-\-large\-address\-aware\fR option.
+This is useful if \fB\-\-large\-address\-aware\fR is always set by the compiler
+driver (e.g. Cygwin gcc) and the executable does not support virtual
+addresses greater than 2 gigabytes.
 [This option is specific to \s-1PE\s0 targeted ports of the linker]
 .IP "\fB\-\-major\-image\-version\fR \fIvalue\fR" 4
 .IX Item "--major-image-version value"
@@ -2113,11 +2192,15 @@
 [This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
 .IP "\fB\-\-enable\-auto\-image\-base\fR" 4
 .IX Item "--enable-auto-image-base"
-Automatically choose the image base for DLLs, unless one is specified
-using the \f(CW\*(C`\-\-image\-base\*(C'\fR argument.  By using a hash generated
-from the dllname to create unique image bases for each \s-1DLL\s0, in-memory
-collisions and relocations which can delay program execution are
-avoided.
+.PD 0
+.IP "\fB\-\-enable\-auto\-image\-base=\fR\fIvalue\fR" 4
+.IX Item "--enable-auto-image-base=value"
+.PD
+Automatically choose the image base for DLLs, optionally starting with base
+\&\fIvalue\fR, unless one is specified using the \f(CW\*(C`\-\-image\-base\*(C'\fR argument.
+By using a hash generated from the dllname to create unique image bases
+for each \s-1DLL,\s0 in-memory collisions and relocations which can delay program
+execution are avoided.
 [This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
 .IP "\fB\-\-disable\-auto\-image\-base\fR" 4
 .IX Item "--disable-auto-image-base"
@@ -2158,8 +2241,8 @@
 This message occurs when some (sub)expression accesses an address
 ultimately given by the sum of two constants (Win32 import tables only
 allow one).  Instances where this may occur include accesses to member
-fields of struct variables imported from a \s-1DLL\s0, as well as using a
-constant index into an array variable imported from a \s-1DLL\s0.  Any
+fields of struct variables imported from a \s-1DLL,\s0 as well as using a
+constant index into an array variable imported from a \s-1DLL. \s0 Any
 multiword variable (arrays, structs, long long, etc) may trigger
 this error condition.  However, regardless of the exact data type
 of the offending exported variable, ld will always detect it, issue
@@ -2210,9 +2293,9 @@
 .Sp
 A third method of dealing with this difficulty is to abandon
 \&'auto\-import' for the offending symbol and mark it with
-\&\f(CW\*(C`_\|_declspec(dllimport)\*(C'\fR.  However, in practise that
+\&\f(CW\*(C`_\|_declspec(dllimport)\*(C'\fR.  However, in practice that
 requires using compile-time #defines to indicate whether you are
-building a \s-1DLL\s0, building client code that will link to the \s-1DLL\s0, or
+building a \s-1DLL,\s0 building client code that will link to the \s-1DLL,\s0 or
 merely building/linking to a static library.   In making the choice
 between the various methods of resolving the 'direct address with
 constant offset' problem, you should consider typical real-world usage:
@@ -2282,7 +2365,7 @@
 .IP "\fB\-\-disable\-runtime\-pseudo\-reloc\fR" 4
 .IX Item "--disable-runtime-pseudo-reloc"
 Do not create pseudo relocations for non-zero offset \s-1DATA\s0 imports from
-DLLs.  This is the default.
+DLLs.
 [This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
 .IP "\fB\-\-enable\-extra\-pe\-debug\fR" 4
 .IX Item "--enable-extra-pe-debug"
@@ -2300,7 +2383,7 @@
 .IX Item "--stack reserve,commit"
 .PD
 Specify the number of bytes of memory to reserve (and optionally commit)
-to be used as stack for this program.  The default is 2Mb reserved, 4K
+to be used as stack for this program.  The default is 2MB reserved, 4K
 committed.
 [This option is specific to the i386 \s-1PE\s0 targeted port of the linker]
 .IP "\fB\-\-subsystem\fR \fIwhich\fR" 4
@@ -2321,6 +2404,10 @@
 The following options set flags in the \f(CW\*(C`DllCharacteristics\*(C'\fR field
 of the \s-1PE\s0 file header:
 [These options are specific to \s-1PE\s0 targeted ports of the linker]
+.IP "\fB\-\-high\-entropy\-va\fR" 4
+.IX Item "--high-entropy-va"
+Image is compatible with 64\-bit address space layout randomization
+(\s-1ASLR\s0).
 .IP "\fB\-\-dynamicbase\fR" 4
 .IX Item "--dynamicbase"
 The image base address may be relocated using address space layout
@@ -2332,13 +2419,13 @@
 .IP "\fB\-\-nxcompat\fR" 4
 .IX Item "--nxcompat"
 The image is compatible with the Data Execution Prevention.
-This feature was introduced with \s-1MS\s0 Windows \s-1XP\s0 \s-1SP2\s0 for i386 \s-1PE\s0 targets.
+This feature was introduced with \s-1MS\s0 Windows \s-1XP SP2\s0 for i386 \s-1PE\s0 targets.
 .IP "\fB\-\-no\-isolation\fR" 4
 .IX Item "--no-isolation"
 Although the image understands isolation, do not isolate the image.
 .IP "\fB\-\-no\-seh\fR" 4
 .IX Item "--no-seh"
-The image does not use \s-1SEH\s0. No \s-1SE\s0 handler may be called from
+The image does not use \s-1SEH.\s0 No \s-1SE\s0 handler may be called from
 this image.
 .IP "\fB\-\-no\-bind\fR" 4
 .IX Item "--no-bind"
@@ -2349,6 +2436,20 @@
 .IP "\fB\-\-tsaware\fR" 4
 .IX Item "--tsaware"
 The image is Terminal Server aware.
+.IP "\fB\-\-insert\-timestamp\fR" 4
+.IX Item "--insert-timestamp"
+.PD 0
+.IP "\fB\-\-no\-insert\-timestamp\fR" 4
+.IX Item "--no-insert-timestamp"
+.PD
+Insert a real timestamp into the image.  This is the default behaviour
+as it matches legacy code and it means that the image will work with
+other, proprietary tools.  The problem with this default is that it
+will result in slightly different images being produced each tiem the
+same sources are linked.  The option \fB\-\-no\-insert\-timestamp\fR
+can be used to insert a zero value for the timestamp, this ensuring
+that binaries produced from indentical sources will compare
+identically.
 .PP
 The C6X uClinux target uses a binary format called \s-1DSBT\s0 to support shared
 libraries.  Each shared library in the system needs to have a unique index;
@@ -2390,6 +2491,21 @@
 \&\fItype\fR should be one of \fBsingle\fR, \fBnegative\fR,
 \&\fBmultigot\fR or \fBtarget\fR.  For more information refer to the
 Info entry for \fIld\fR.
+.PP
+The following options are supported to control microMIPS instruction
+generation when linking for \s-1MIPS\s0 targets.
+.IP "\fB\-\-insn32\fR" 4
+.IX Item "--insn32"
+.PD 0
+.IP "\fB\-\-no\-insn32\fR" 4
+.IX Item "--no-insn32"
+.PD
+These options control the choice of microMIPS instructions used in code
+generated by the linker, such as that in the \s-1PLT\s0 or lazy binding stubs,
+or in relaxation.  If \fB\-\-insn32\fR is used, then the linker only uses
+32\-bit instruction encodings.  By default or if \fB\-\-no\-insn32\fR is
+used, all instruction encodings are used, including 16\-bit ones where
+possible.
 .SH "ENVIRONMENT"
 .IX Header "ENVIRONMENT"
 You can change the behaviour of \fBld\fR with the environment variables
@@ -2429,9 +2545,7 @@
 \&\fIld\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free
-Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-nlmconv.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-nlmconv.1
index 16e3062..5465ff8 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-nlmconv.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-nlmconv.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "NLMCONV 1"
-.TH NLMCONV 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH NLMCONV 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -147,7 +156,7 @@
 on writing the \s-1NLM\s0 command file language used in header files, see the
 \&\fBlinkers\fR section, \fB\s-1NLMLINK\s0\fR in particular, of the \fI\s-1NLM\s0
 Development and Tools Overview\fR, which is part of the \s-1NLM\s0 Software
-Developer's Kit (\*(L"\s-1NLM\s0 \s-1SDK\s0\*(R"), available from Novell, Inc.
+Developer's Kit (\*(L"\s-1NLM SDK\*(R"\s0), available from Novell, Inc.
 \&\fBnlmconv\fR uses the \s-1GNU\s0 Binary File Descriptor library to read
 \&\fIinfile\fR;
 .PP
@@ -232,9 +241,7 @@
 the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-nm.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-nm.1
index e5941c7..3c338cb 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-nm.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-nm.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "NM 1"
-.TH NM 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH NM 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -133,20 +142,22 @@
 nm \- list symbols from object files
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
-nm [\fB\-a\fR|\fB\-\-debug\-syms\fR]
-   [\fB\-g\fR|\fB\-\-extern\-only\fR][\fB\-\-plugin\fR \fIname\fR]
-   [\fB\-B\fR] [\fB\-C\fR|\fB\-\-demangle\fR[=\fIstyle\fR]] [\fB\-D\fR|\fB\-\-dynamic\fR]
-   [\fB\-S\fR|\fB\-\-print\-size\fR] [\fB\-s\fR|\fB\-\-print\-armap\fR]
-   [\fB\-A\fR|\fB\-o\fR|\fB\-\-print\-file\-name\fR][\fB\-\-special\-syms\fR]
-   [\fB\-n\fR|\fB\-v\fR|\fB\-\-numeric\-sort\fR] [\fB\-p\fR|\fB\-\-no\-sort\fR]
-   [\fB\-r\fR|\fB\-\-reverse\-sort\fR] [\fB\-\-size\-sort\fR] [\fB\-u\fR|\fB\-\-undefined\-only\fR]
-   [\fB\-t\fR \fIradix\fR|\fB\-\-radix=\fR\fIradix\fR] [\fB\-P\fR|\fB\-\-portability\fR]
-   [\fB\-\-target=\fR\fIbfdname\fR] [\fB\-f\fR\fIformat\fR|\fB\-\-format=\fR\fIformat\fR]
-   [\fB\-\-defined\-only\fR] [\fB\-l\fR|\fB\-\-line\-numbers\fR] [\fB\-\-no\-demangle\fR]
-   [\fB\-V\fR|\fB\-\-version\fR] [\fB\-X 32_64\fR] [\fB\-\-help\fR]  [\fIobjfile\fR...]
+nm [\fB\-A\fR|\fB\-o\fR|\fB\-\-print\-file\-name\fR] [\fB\-a\fR|\fB\-\-debug\-syms\fR]
+   [\fB\-B\fR|\fB\-\-format=bsd\fR] [\fB\-C\fR|\fB\-\-demangle\fR[=\fIstyle\fR]]
+   [\fB\-D\fR|\fB\-\-dynamic\fR] [\fB\-f\fR\fIformat\fR|\fB\-\-format=\fR\fIformat\fR]
+   [\fB\-g\fR|\fB\-\-extern\-only\fR] [\fB\-h\fR|\fB\-\-help\fR]
+   [\fB\-l\fR|\fB\-\-line\-numbers\fR] [\fB\-n\fR|\fB\-v\fR|\fB\-\-numeric\-sort\fR]
+   [\fB\-P\fR|\fB\-\-portability\fR] [\fB\-p\fR|\fB\-\-no\-sort\fR]
+   [\fB\-r\fR|\fB\-\-reverse\-sort\fR] [\fB\-S\fR|\fB\-\-print\-size\fR]
+   [\fB\-s\fR|\fB\-\-print\-armap\fR] [\fB\-t\fR \fIradix\fR|\fB\-\-radix=\fR\fIradix\fR]
+   [\fB\-u\fR|\fB\-\-undefined\-only\fR] [\fB\-V\fR|\fB\-\-version\fR]
+   [\fB\-X 32_64\fR] [\fB\-\-defined\-only\fR] [\fB\-\-no\-demangle\fR]
+   [\fB\-\-plugin\fR \fIname\fR] [\fB\-\-size\-sort\fR] [\fB\-\-special\-syms\fR]
+   [\fB\-\-synthetic\fR] [\fB\-\-target=\fR\fIbfdname\fR]
+   [\fIobjfile\fR...]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
-\&\s-1GNU\s0 \fBnm\fR lists the symbols from object files \fIobjfile\fR....
+\&\s-1GNU \s0\fBnm\fR lists the symbols from object files \fIobjfile\fR....
 If no object files are listed as arguments, \fBnm\fR assumes the file
 \&\fIa.out\fR.
 .PP
@@ -212,6 +223,10 @@
 symbol which if referenced by a relocation does not evaluate to its
 address, but instead must be invoked at runtime.  The runtime
 execution will then return the value to be used in the relocation.
+.ie n .IP """I""" 4
+.el .IP "\f(CWI\fR" 4
+.IX Item "I"
+The symbol is an indirect reference to another symbol.
 .ie n .IP """N""" 4
 .el .IP "\f(CWN\fR" 4
 .IX Item "N"
@@ -326,7 +341,7 @@
 listed.
 .IP "\fB\-B\fR" 4
 .IX Item "-B"
-The same as \fB\-\-format=bsd\fR (for compatibility with the \s-1MIPS\s0 \fBnm\fR).
+The same as \fB\-\-format=bsd\fR (for compatibility with the \s-1MIPS \s0\fBnm\fR).
 .IP "\fB\-C\fR" 4
 .IX Item "-C"
 .PD 0
@@ -367,11 +382,13 @@
 .IX Item "--extern-only"
 .PD
 Display only external symbols.
-.IP "\fB\-\-plugin\fR \fIname\fR" 4
-.IX Item "--plugin name"
-Load the plugin called \fIname\fR to add support for extra target
-types.  This option is only available if the toolchain has been built
-with plugin support enabled.
+.IP "\fB\-h\fR" 4
+.IX Item "-h"
+.PD 0
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+.PD
+Show a summary of the options to \fBnm\fR and exit.
 .IP "\fB\-l\fR" 4
 .IX Item "-l"
 .PD 0
@@ -407,8 +424,16 @@
 .IP "\fB\-\-portability\fR" 4
 .IX Item "--portability"
 .PD
-Use the \s-1POSIX\s0.2 standard output format instead of the default format.
+Use the \s-1POSIX.2\s0 standard output format instead of the default format.
 Equivalent to \fB\-f posix\fR.
+.IP "\fB\-r\fR" 4
+.IX Item "-r"
+.PD 0
+.IP "\fB\-\-reverse\-sort\fR" 4
+.IX Item "--reverse-sort"
+.PD
+Reverse the order of the sort (whether numeric or alphabetic); let the
+last come first.
 .IP "\fB\-S\fR" 4
 .IX Item "-S"
 .PD 0
@@ -428,29 +453,6 @@
 When listing symbols from archive members, include the index: a mapping
 (stored in the archive by \fBar\fR or \fBranlib\fR) of which modules
 contain definitions for which names.
-.IP "\fB\-r\fR" 4
-.IX Item "-r"
-.PD 0
-.IP "\fB\-\-reverse\-sort\fR" 4
-.IX Item "--reverse-sort"
-.PD
-Reverse the order of the sort (whether numeric or alphabetic); let the
-last come first.
-.IP "\fB\-\-size\-sort\fR" 4
-.IX Item "--size-sort"
-Sort symbols by size.  The size is computed as the difference between
-the value of the symbol and the value of the symbol with the next higher
-value.  If the \f(CW\*(C`bsd\*(C'\fR output format is used the size of the symbol
-is printed, rather than the value, and \fB\-S\fR must be used in order
-both size and value to be printed.
-.IP "\fB\-\-special\-syms\fR" 4
-.IX Item "--special-syms"
-Display symbols which have a target-specific special meaning.  These
-symbols are usually used by the target for some special processing and
-are not normally helpful when included included in the normal symbol
-lists.  For example for \s-1ARM\s0 targets this option would skip the mapping
-symbols used to mark transitions between \s-1ARM\s0 code, \s-1THUMB\s0 code and
-data.
 .IP "\fB\-t\fR \fIradix\fR" 4
 .IX Item "-t radix"
 .PD 0
@@ -459,9 +461,6 @@
 .PD
 Use \fIradix\fR as the radix for printing the symbol values.  It must be
 \&\fBd\fR for decimal, \fBo\fR for octal, or \fBx\fR for hexadecimal.
-.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
-.IX Item "--target=bfdname"
-Specify an object code format other than your system's default format.
 .IP "\fB\-u\fR" 4
 .IX Item "-u"
 .PD 0
@@ -469,9 +468,6 @@
 .IX Item "--undefined-only"
 .PD
 Display only undefined symbols (those external to each object file).
-.IP "\fB\-\-defined\-only\fR" 4
-.IX Item "--defined-only"
-Display only defined symbols for each object file.
 .IP "\fB\-V\fR" 4
 .IX Item "-V"
 .PD 0
@@ -483,11 +479,38 @@
 .IX Item "-X"
 This option is ignored for compatibility with the \s-1AIX\s0 version of
 \&\fBnm\fR.  It takes one parameter which must be the string
-\&\fB32_64\fR.  The default mode of \s-1AIX\s0 \fBnm\fR corresponds
-to \fB\-X 32\fR, which is not supported by \s-1GNU\s0 \fBnm\fR.
-.IP "\fB\-\-help\fR" 4
-.IX Item "--help"
-Show a summary of the options to \fBnm\fR and exit.
+\&\fB32_64\fR.  The default mode of \s-1AIX \s0\fBnm\fR corresponds
+to \fB\-X 32\fR, which is not supported by \s-1GNU \s0\fBnm\fR.
+.IP "\fB\-\-defined\-only\fR" 4
+.IX Item "--defined-only"
+Display only defined symbols for each object file.
+.IP "\fB\-\-plugin\fR \fIname\fR" 4
+.IX Item "--plugin name"
+Load the plugin called \fIname\fR to add support for extra target
+types.  This option is only available if the toolchain has been built
+with plugin support enabled.
+.IP "\fB\-\-size\-sort\fR" 4
+.IX Item "--size-sort"
+Sort symbols by size.  The size is computed as the difference between
+the value of the symbol and the value of the symbol with the next higher
+value.  If the \f(CW\*(C`bsd\*(C'\fR output format is used the size of the symbol
+is printed, rather than the value, and \fB\-S\fR must be used in order
+both size and value to be printed.
+.IP "\fB\-\-special\-syms\fR" 4
+.IX Item "--special-syms"
+Display symbols which have a target-specific special meaning.  These
+symbols are usually used by the target for some special processing and
+are not normally helpful when included in the normal symbol lists.
+For example for \s-1ARM\s0 targets this option would skip the mapping symbols
+used to mark transitions between \s-1ARM\s0 code, \s-1THUMB\s0 code and data.
+.IP "\fB\-\-synthetic\fR" 4
+.IX Item "--synthetic"
+Include synthetic symbols in the output.  These are special symbols
+created by the linker for various purposes.  They are not shown by
+default since they are not part of the binary's original source code.
+.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
+.IX Item "--target=bfdname"
+Specify an object code format other than your system's default format.
 .IP "\fB@\fR\fIfile\fR" 4
 .IX Item "@file"
 Read command-line options from \fIfile\fR.  The options read are
@@ -506,9 +529,7 @@
 \&\fIar\fR\|(1), \fIobjdump\fR\|(1), \fIranlib\fR\|(1), and the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-objcopy.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-objcopy.1
index 979f85d..141c952 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-objcopy.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-objcopy.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "OBJCOPY 1"
-.TH OBJCOPY 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH OBJCOPY 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -153,21 +162,24 @@
         [\fB\-b\fR \fIbyte\fR|\fB\-\-byte=\fR\fIbyte\fR]
         [\fB\-i\fR [\fIbreadth\fR]|\fB\-\-interleave\fR[=\fIbreadth\fR]]
         [\fB\-\-interleave\-width=\fR\fIwidth\fR]
-        [\fB\-j\fR \fIsectionname\fR|\fB\-\-only\-section=\fR\fIsectionname\fR]
-        [\fB\-R\fR \fIsectionname\fR|\fB\-\-remove\-section=\fR\fIsectionname\fR]
+        [\fB\-j\fR \fIsectionpattern\fR|\fB\-\-only\-section=\fR\fIsectionpattern\fR]
+        [\fB\-R\fR \fIsectionpattern\fR|\fB\-\-remove\-section=\fR\fIsectionpattern\fR]
         [\fB\-p\fR|\fB\-\-preserve\-dates\fR]
+        [\fB\-D\fR|\fB\-\-enable\-deterministic\-archives\fR]
+        [\fB\-U\fR|\fB\-\-disable\-deterministic\-archives\fR]
         [\fB\-\-debugging\fR]
         [\fB\-\-gap\-fill=\fR\fIval\fR]
         [\fB\-\-pad\-to=\fR\fIaddress\fR]
         [\fB\-\-set\-start=\fR\fIval\fR]
         [\fB\-\-adjust\-start=\fR\fIincr\fR]
         [\fB\-\-change\-addresses=\fR\fIincr\fR]
-        [\fB\-\-change\-section\-address\fR \fIsection\fR{=,+,\-}\fIval\fR]
-        [\fB\-\-change\-section\-lma\fR \fIsection\fR{=,+,\-}\fIval\fR]
-        [\fB\-\-change\-section\-vma\fR \fIsection\fR{=,+,\-}\fIval\fR]
+        [\fB\-\-change\-section\-address\fR \fIsectionpattern\fR{=,+,\-}\fIval\fR]
+        [\fB\-\-change\-section\-lma\fR \fIsectionpattern\fR{=,+,\-}\fIval\fR]
+        [\fB\-\-change\-section\-vma\fR \fIsectionpattern\fR{=,+,\-}\fIval\fR]
         [\fB\-\-change\-warnings\fR] [\fB\-\-no\-change\-warnings\fR]
-        [\fB\-\-set\-section\-flags\fR \fIsection\fR=\fIflags\fR]
+        [\fB\-\-set\-section\-flags\fR \fIsectionpattern\fR=\fIflags\fR]
         [\fB\-\-add\-section\fR \fIsectionname\fR=\fIfilename\fR]
+        [\fB\-\-dump\-section\fR \fIsectionname\fR=\fIfilename\fR]
         [\fB\-\-rename\-section\fR \fIoldname\fR=\fInewname\fR[,\fIflags\fR]]
         [\fB\-\-long\-section\-names\fR {enable,disable,keep}]
         [\fB\-\-change\-leading\-char\fR] [\fB\-\-remove\-leading\-char\fR]
@@ -190,6 +202,8 @@
         [\fB\-\-add\-gnu\-debuglink=\fR\fIpath-to-file\fR]
         [\fB\-\-keep\-file\-symbols\fR]
         [\fB\-\-only\-keep\-debug\fR]
+        [\fB\-\-strip\-dwo\fR]
+        [\fB\-\-extract\-dwo\fR]
         [\fB\-\-extract\-symbol\fR]
         [\fB\-\-writable\-text\fR]
         [\fB\-\-readonly\-text\fR]
@@ -211,8 +225,8 @@
         \fIinfile\fR [\fIoutfile\fR]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
-The \s-1GNU\s0 \fBobjcopy\fR utility copies the contents of an object
-file to another.  \fBobjcopy\fR uses the \s-1GNU\s0 \s-1BFD\s0 Library to
+The \s-1GNU \s0\fBobjcopy\fR utility copies the contents of an object
+file to another.  \fBobjcopy\fR uses the \s-1GNU BFD\s0 Library to
 read and write the object files.  It can write the destination object
 file in a format different from that of the source object file.  The
 exact behavior of \fBobjcopy\fR is controlled by command-line options.
@@ -296,24 +310,28 @@
 called _binary_\fIobjfile\fR_start, _binary_\fIobjfile\fR_end and
 _binary_\fIobjfile\fR_size.  e.g. you can transform a picture file into
 an object file and then access it in your code using these symbols.
-.IP "\fB\-j\fR \fIsectionname\fR" 4
-.IX Item "-j sectionname"
+.IP "\fB\-j\fR \fIsectionpattern\fR" 4
+.IX Item "-j sectionpattern"
 .PD 0
-.IP "\fB\-\-only\-section=\fR\fIsectionname\fR" 4
-.IX Item "--only-section=sectionname"
+.IP "\fB\-\-only\-section=\fR\fIsectionpattern\fR" 4
+.IX Item "--only-section=sectionpattern"
 .PD
-Copy only the named section from the input file to the output file.
+Copy only the indicated sections from the input file to the output file.
 This option may be given more than once.  Note that using this option
-inappropriately may make the output file unusable.
-.IP "\fB\-R\fR \fIsectionname\fR" 4
-.IX Item "-R sectionname"
+inappropriately may make the output file unusable.  Wildcard
+characters are accepted in \fIsectionpattern\fR.
+.IP "\fB\-R\fR \fIsectionpattern\fR" 4
+.IX Item "-R sectionpattern"
 .PD 0
-.IP "\fB\-\-remove\-section=\fR\fIsectionname\fR" 4
-.IX Item "--remove-section=sectionname"
+.IP "\fB\-\-remove\-section=\fR\fIsectionpattern\fR" 4
+.IX Item "--remove-section=sectionpattern"
 .PD
-Remove any section named \fIsectionname\fR from the output file.  This
-option may be given more than once.  Note that using this option
-inappropriately may make the output file unusable.
+Remove any section matching \fIsectionpattern\fR from the output file.
+This option may be given more than once.  Note that using this option
+inappropriately may make the output file unusable.  Wildcard
+characters are accepted in \fIsectionpattern\fR.  Using both the
+\&\fB\-j\fR and \fB\-R\fR options together results in undefined
+behaviour.
 .IP "\fB\-S\fR" 4
 .IX Item "-S"
 .PD 0
@@ -440,7 +458,7 @@
 the \fB\-\-byte\fR option.  Select the width of the range with the
 \&\fB\-\-interleave\-width\fR option.
 .Sp
-This option is useful for creating files to program \s-1ROM\s0.  It is
+This option is useful for creating files to program \s-1ROM. \s0 It is
 typically used with an \f(CW\*(C`srec\*(C'\fR output target.  Note that
 \&\fBobjcopy\fR will complain if you do not specify the
 \&\fB\-\-byte\fR option as well.
@@ -472,6 +490,32 @@
 .PD
 Set the access and modification dates of the output file to be the same
 as those of the input file.
+.IP "\fB\-D\fR" 4
+.IX Item "-D"
+.PD 0
+.IP "\fB\-\-enable\-deterministic\-archives\fR" 4
+.IX Item "--enable-deterministic-archives"
+.PD
+Operate in \fIdeterministic\fR mode.  When copying archive members
+and writing the archive index, use zero for UIDs, GIDs, timestamps,
+and use consistent file modes for all files.
+.Sp
+If \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by default.
+It can be disabled with the \fB\-U\fR option, below.
+.IP "\fB\-U\fR" 4
+.IX Item "-U"
+.PD 0
+.IP "\fB\-\-disable\-deterministic\-archives\fR" 4
+.IX Item "--disable-deterministic-archives"
+.PD
+Do \fInot\fR operate in \fIdeterministic\fR mode.  This is the
+inverse of the \fB\-D\fR option, above: when copying archive members
+and writing the archive index, use their actual \s-1UID, GID,\s0 timestamp,
+and file mode values.
+.Sp
+This is the default unless \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR.
 .IP "\fB\-\-debugging\fR" 4
 .IX Item "--debugging"
 Convert debugging information, if possible.  This is not the default
@@ -512,42 +556,45 @@
 relocate the sections; if the program expects sections to be loaded at a
 certain address, and this option is used to change the sections such
 that they are loaded at a different address, the program may fail.
-.IP "\fB\-\-change\-section\-address\fR \fIsection\fR\fB{=,+,\-}\fR\fIval\fR" 4
-.IX Item "--change-section-address section{=,+,-}val"
+.IP "\fB\-\-change\-section\-address\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4
+.IX Item "--change-section-address sectionpattern{=,+,-}val"
 .PD 0
-.IP "\fB\-\-adjust\-section\-vma\fR \fIsection\fR\fB{=,+,\-}\fR\fIval\fR" 4
-.IX Item "--adjust-section-vma section{=,+,-}val"
+.IP "\fB\-\-adjust\-section\-vma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4
+.IX Item "--adjust-section-vma sectionpattern{=,+,-}val"
 .PD
-Set or change both the \s-1VMA\s0 address and the \s-1LMA\s0 address of the named
-\&\fIsection\fR.  If \fB=\fR is used, the section address is set to
-\&\fIval\fR.  Otherwise, \fIval\fR is added to or subtracted from the
-section address.  See the comments under \fB\-\-change\-addresses\fR,
-above. If \fIsection\fR does not exist in the input file, a warning will
-be issued, unless \fB\-\-no\-change\-warnings\fR is used.
-.IP "\fB\-\-change\-section\-lma\fR \fIsection\fR\fB{=,+,\-}\fR\fIval\fR" 4
-.IX Item "--change-section-lma section{=,+,-}val"
-Set or change the \s-1LMA\s0 address of the named \fIsection\fR.  The \s-1LMA\s0
-address is the address where the section will be loaded into memory at
-program load time.  Normally this is the same as the \s-1VMA\s0 address, which
-is the address of the section at program run time, but on some systems,
-especially those where a program is held in \s-1ROM\s0, the two can be
+Set or change both the \s-1VMA\s0 address and the \s-1LMA\s0 address of any section
+matching \fIsectionpattern\fR.  If \fB=\fR is used, the section
+address is set to \fIval\fR.  Otherwise, \fIval\fR is added to or
+subtracted from the section address.  See the comments under
+\&\fB\-\-change\-addresses\fR, above. If \fIsectionpattern\fR does not
+match any sections in the input file, a warning will be issued, unless
+\&\fB\-\-no\-change\-warnings\fR is used.
+.IP "\fB\-\-change\-section\-lma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4
+.IX Item "--change-section-lma sectionpattern{=,+,-}val"
+Set or change the \s-1LMA\s0 address of any sections matching
+\&\fIsectionpattern\fR.  The \s-1LMA\s0 address is the address where the
+section will be loaded into memory at program load time.  Normally
+this is the same as the \s-1VMA\s0 address, which is the address of the
+section at program run time, but on some systems, especially those
+where a program is held in \s-1ROM,\s0 the two can be different.  If \fB=\fR
+is used, the section address is set to \fIval\fR.  Otherwise,
+\&\fIval\fR is added to or subtracted from the section address.  See the
+comments under \fB\-\-change\-addresses\fR, above.  If
+\&\fIsectionpattern\fR does not match any sections in the input file, a
+warning will be issued, unless \fB\-\-no\-change\-warnings\fR is used.
+.IP "\fB\-\-change\-section\-vma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4
+.IX Item "--change-section-vma sectionpattern{=,+,-}val"
+Set or change the \s-1VMA\s0 address of any section matching
+\&\fIsectionpattern\fR.  The \s-1VMA\s0 address is the address where the
+section will be located once the program has started executing.
+Normally this is the same as the \s-1LMA\s0 address, which is the address
+where the section will be loaded into memory, but on some systems,
+especially those where a program is held in \s-1ROM,\s0 the two can be
 different.  If \fB=\fR is used, the section address is set to
 \&\fIval\fR.  Otherwise, \fIval\fR is added to or subtracted from the
 section address.  See the comments under \fB\-\-change\-addresses\fR,
-above.  If \fIsection\fR does not exist in the input file, a warning
-will be issued, unless \fB\-\-no\-change\-warnings\fR is used.
-.IP "\fB\-\-change\-section\-vma\fR \fIsection\fR\fB{=,+,\-}\fR\fIval\fR" 4
-.IX Item "--change-section-vma section{=,+,-}val"
-Set or change the \s-1VMA\s0 address of the named \fIsection\fR.  The \s-1VMA\s0
-address is the address where the section will be located once the
-program has started executing.  Normally this is the same as the \s-1LMA\s0
-address, which is the address where the section will be loaded into
-memory, but on some systems, especially those where a program is held in
-\&\s-1ROM\s0, the two can be different.  If \fB=\fR is used, the section address
-is set to \fIval\fR.  Otherwise, \fIval\fR is added to or subtracted
-from the section address.  See the comments under
-\&\fB\-\-change\-addresses\fR, above.  If \fIsection\fR does not exist in
-the input file, a warning will be issued, unless
+above.  If \fIsectionpattern\fR does not match any sections in the
+input file, a warning will be issued, unless
 \&\fB\-\-no\-change\-warnings\fR is used.
 .IP "\fB\-\-change\-warnings\fR" 4
 .IX Item "--change-warnings"
@@ -556,8 +603,8 @@
 .IX Item "--adjust-warnings"
 .PD
 If \fB\-\-change\-section\-address\fR or \fB\-\-change\-section\-lma\fR or
-\&\fB\-\-change\-section\-vma\fR is used, and the named section does not
-exist, issue a warning.  This is the default.
+\&\fB\-\-change\-section\-vma\fR is used, and the section pattern does not
+match any sections, issue a warning.  This is the default.
 .IP "\fB\-\-no\-change\-warnings\fR" 4
 .IX Item "--no-change-warnings"
 .PD 0
@@ -566,24 +613,35 @@
 .PD
 Do not issue a warning if \fB\-\-change\-section\-address\fR or
 \&\fB\-\-adjust\-section\-lma\fR or \fB\-\-adjust\-section\-vma\fR is used, even
-if the named section does not exist.
-.IP "\fB\-\-set\-section\-flags\fR \fIsection\fR\fB=\fR\fIflags\fR" 4
-.IX Item "--set-section-flags section=flags"
-Set the flags for the named section.  The \fIflags\fR argument is a
-comma separated string of flag names.  The recognized names are
-\&\fBalloc\fR, \fBcontents\fR, \fBload\fR, \fBnoload\fR,
-\&\fBreadonly\fR, \fBcode\fR, \fBdata\fR, \fBrom\fR, \fBshare\fR, and
-\&\fBdebug\fR.  You can set the \fBcontents\fR flag for a section which
-does not have contents, but it is not meaningful to clear the
-\&\fBcontents\fR flag of a section which does have contents\*(--just remove
-the section instead.  Not all flags are meaningful for all object file
-formats.
+if the section pattern does not match any sections.
+.IP "\fB\-\-set\-section\-flags\fR \fIsectionpattern\fR\fB=\fR\fIflags\fR" 4
+.IX Item "--set-section-flags sectionpattern=flags"
+Set the flags for any sections matching \fIsectionpattern\fR.  The
+\&\fIflags\fR argument is a comma separated string of flag names.  The
+recognized names are \fBalloc\fR, \fBcontents\fR, \fBload\fR,
+\&\fBnoload\fR, \fBreadonly\fR, \fBcode\fR, \fBdata\fR, \fBrom\fR,
+\&\fBshare\fR, and \fBdebug\fR.  You can set the \fBcontents\fR flag
+for a section which does not have contents, but it is not meaningful
+to clear the \fBcontents\fR flag of a section which does have
+contents\*(--just remove the section instead.  Not all flags are
+meaningful for all object file formats.
 .IP "\fB\-\-add\-section\fR \fIsectionname\fR\fB=\fR\fIfilename\fR" 4
 .IX Item "--add-section sectionname=filename"
 Add a new section named \fIsectionname\fR while copying the file.  The
 contents of the new section are taken from the file \fIfilename\fR.  The
 size of the section will be the size of the file.  This option only
 works on file formats which can support sections with arbitrary names.
+Note \- it may be necessary to use the \fB\-\-set\-section\-flags\fR
+option to set the attributes of the newly created section.
+.IP "\fB\-\-dump\-section\fR \fIsectionname\fR\fB=\fR\fIfilename\fR" 4
+.IX Item "--dump-section sectionname=filename"
+Place the contents of section named \fIsectionname\fR into the file
+\&\fIfilename\fR, overwriting any contents that may have been there
+previously.  This option is the inverse of \fB\-\-add\-section\fR.
+This option is similar to the \fB\-\-only\-section\fR option except
+that it does not create a formatted file, it just dumps the contents
+as raw binary data, without applying any relocations.  The option can
+be specified more than once.
 .IP "\fB\-\-rename\-section\fR \fIoldname\fR\fB=\fR\fInewname\fR\fB[,\fR\fIflags\fR\fB]\fR" 4
 .IX Item "--rename-section oldname=newname[,flags]"
 Rename a section from \fIoldname\fR to \fInewname\fR, optionally
@@ -612,7 +670,7 @@
 is in effect, any long section names in the input object will be truncated.
 The \fBenable\fR option will only emit long section names if any are
 present in the inputs; this is mostly the same as \fBkeep\fR, but it
-is left undefined whether the \fBenable\fR option might force the 
+is left undefined whether the \fBenable\fR option might force the
 creation of an empty string table in the output file.
 .IP "\fB\-\-change\-leading\-char\fR" 4
 .IX Item "--change-leading-char"
@@ -785,7 +843,7 @@
 to create these files is as follows:
 .RS 4
 .IP "1.<Link the executable as normal.  Assuming that is is called>" 4
-.IX Item "1.<Link the executable as normal.  Assuming that is is called>"
+.IX Item "1.<Link the executable as normal. Assuming that is is called>"
 \&\f(CW\*(C`foo\*(C'\fR then...
 .ie n .IP "1.<Run ""objcopy \-\-only\-keep\-debug foo foo.dbg"" to>" 4
 .el .IP "1.<Run \f(CWobjcopy \-\-only\-keep\-debug foo foo.dbg\fR to>" 4
@@ -810,7 +868,7 @@
 .PD 0
 .ie n .IP "1.<Copy ""foo"" to  ""foo.full"">" 4
 .el .IP "1.<Copy \f(CWfoo\fR to  \f(CWfoo.full\fR>" 4
-.IX Item "1.<Copy foo to  foo.full>"
+.IX Item "1.<Copy foo to foo.full>"
 .ie n .IP "1.<Run ""objcopy \-\-strip\-debug foo"">" 4
 .el .IP "1.<Run \f(CWobjcopy \-\-strip\-debug foo\fR>" 4
 .IX Item "1.<Run objcopy --strip-debug foo>"
@@ -832,6 +890,21 @@
 debugging information, not multiple filenames on a one-per-object-file
 basis.
 .RE
+.IP "\fB\-\-strip\-dwo\fR" 4
+.IX Item "--strip-dwo"
+Remove the contents of all \s-1DWARF \s0.dwo sections, leaving the
+remaining debugging sections and all symbols intact.
+This option is intended for use by the compiler as part of
+the \fB\-gsplit\-dwarf\fR option, which splits debug information
+between the .o file and a separate .dwo file.  The compiler
+generates all debug information in the same file, then uses
+the \fB\-\-extract\-dwo\fR option to copy the .dwo sections to
+the .dwo file, then the \fB\-\-strip\-dwo\fR option to remove
+those sections from the original .o file.
+.IP "\fB\-\-extract\-dwo\fR" 4
+.IX Item "--extract-dwo"
+Extract the contents of all \s-1DWARF \s0.dwo sections.  See the
+\&\fB\-\-strip\-dwo\fR option for more information.
 .IP "\fB\-\-file\-alignment\fR \fInum\fR" 4
 .IX Item "--file-alignment num"
 Specify the file alignment.  Sections in the file will always begin at
@@ -950,9 +1023,7 @@
 \&\fIld\fR\|(1), \fIobjdump\fR\|(1), and the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-objdump.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-objdump.1
index 2eccdef..b752174 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-objdump.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-objdump.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "OBJDUMP 1"
-.TH OBJDUMP 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH OBJDUMP 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -440,9 +449,9 @@
 PowerPC64 disassembly, respectively.  \fBe300\fR selects
 disassembly for the e300 family.  \fB440\fR selects disassembly for
 the PowerPC 440.  \fBppcps\fR selects disassembly for the paired
-single instructions of the \s-1PPC750CL\s0.
+single instructions of the \s-1PPC750CL.\s0
 .Sp
-For \s-1MIPS\s0, this option controls the printing of instruction mnemonic
+For \s-1MIPS,\s0 this option controls the printing of instruction mnemonic
 names and register names in disassembled instructions.  Multiple
 selections from the following may be specified as a comma separated
 string, and invalid options are ignored:
@@ -453,36 +462,48 @@
 Print the 'raw' instruction mnemonic instead of some pseudo
 instruction mnemonic.  I.e., print 'daddu' or 'or' instead of 'move',
 \&'sll' instead of 'nop', etc.
+.ie n .IP """msa""" 4
+.el .IP "\f(CWmsa\fR" 4
+.IX Item "msa"
+Disassemble \s-1MSA\s0 instructions.
+.ie n .IP """virt""" 4
+.el .IP "\f(CWvirt\fR" 4
+.IX Item "virt"
+Disassemble the virtualization \s-1ASE\s0 instructions.
+.ie n .IP """xpa""" 4
+.el .IP "\f(CWxpa\fR" 4
+.IX Item "xpa"
+Disassemble the eXtended Physical Address (\s-1XPA\s0) \s-1ASE\s0 instructions.
 .ie n .IP """gpr\-names=\f(CIABI\f(CW""" 4
 .el .IP "\f(CWgpr\-names=\f(CIABI\f(CW\fR" 4
 .IX Item "gpr-names=ABI"
-Print \s-1GPR\s0 (general-purpose register) names as appropriate
-for the specified \s-1ABI\s0.  By default, \s-1GPR\s0 names are selected according to
+Print \s-1GPR \s0(general-purpose register) names as appropriate
+for the specified \s-1ABI. \s0 By default, \s-1GPR\s0 names are selected according to
 the \s-1ABI\s0 of the binary being disassembled.
 .ie n .IP """fpr\-names=\f(CIABI\f(CW""" 4
 .el .IP "\f(CWfpr\-names=\f(CIABI\f(CW\fR" 4
 .IX Item "fpr-names=ABI"
-Print \s-1FPR\s0 (floating-point register) names as
-appropriate for the specified \s-1ABI\s0.  By default, \s-1FPR\s0 numbers are printed
+Print \s-1FPR \s0(floating-point register) names as
+appropriate for the specified \s-1ABI. \s0 By default, \s-1FPR\s0 numbers are printed
 rather than names.
 .ie n .IP """cp0\-names=\f(CIARCH\f(CW""" 4
 .el .IP "\f(CWcp0\-names=\f(CIARCH\f(CW\fR" 4
 .IX Item "cp0-names=ARCH"
-Print \s-1CP0\s0 (system control coprocessor; coprocessor 0) register names
+Print \s-1CP0 \s0(system control coprocessor; coprocessor 0) register names
 as appropriate for the \s-1CPU\s0 or architecture specified by
 \&\fI\s-1ARCH\s0\fR.  By default, \s-1CP0\s0 register names are selected according to
 the architecture and \s-1CPU\s0 of the binary being disassembled.
 .ie n .IP """hwr\-names=\f(CIARCH\f(CW""" 4
 .el .IP "\f(CWhwr\-names=\f(CIARCH\f(CW\fR" 4
 .IX Item "hwr-names=ARCH"
-Print \s-1HWR\s0 (hardware register, used by the \f(CW\*(C`rdhwr\*(C'\fR instruction) names
+Print \s-1HWR \s0(hardware register, used by the \f(CW\*(C`rdhwr\*(C'\fR instruction) names
 as appropriate for the \s-1CPU\s0 or architecture specified by
 \&\fI\s-1ARCH\s0\fR.  By default, \s-1HWR\s0 names are selected according to
 the architecture and \s-1CPU\s0 of the binary being disassembled.
 .ie n .IP """reg\-names=\f(CIABI\f(CW""" 4
 .el .IP "\f(CWreg\-names=\f(CIABI\f(CW\fR" 4
 .IX Item "reg-names=ABI"
-Print \s-1GPR\s0 and \s-1FPR\s0 names as appropriate for the selected \s-1ABI\s0.
+Print \s-1GPR\s0 and \s-1FPR\s0 names as appropriate for the selected \s-1ABI.\s0
 .ie n .IP """reg\-names=\f(CIARCH\f(CW""" 4
 .el .IP "\f(CWreg\-names=\f(CIARCH\f(CW\fR" 4
 .IX Item "reg-names=ARCH"
@@ -497,7 +518,7 @@
 You can list the available values of \fI\s-1ABI\s0\fR and \fI\s-1ARCH\s0\fR using
 the \fB\-\-help\fR option.
 .Sp
-For \s-1VAX\s0, you can specify function entry addresses with \fB\-M
+For \s-1VAX,\s0 you can specify function entry addresses with \fB\-M
 entry:0xf00ba\fR.  You can use this multiple times to properly
 disassemble \s-1VAX\s0 binary files that don't contain symbol tables (like
 \&\s-1ROM\s0 dumps).  In these cases, the function entry mask would otherwise
@@ -523,10 +544,10 @@
 argument \fIoptions\fR is a comma separated list that depends on the
 format (the lists of options is displayed with the help).
 .Sp
-For \s-1XCOFF\s0, the available options are: \fBheader\fR, \fBaout\fR,
+For \s-1XCOFF,\s0 the available options are: \fBheader\fR, \fBaout\fR,
 \&\fBsections\fR, \fBsyms\fR, \fBrelocs\fR, \fBlineno\fR,
-\&\fBloader\fR, \fBexcept\fR, \fBtypchk\fR, \fBtraceback\fR
-and \fBtoc\fR.
+\&\fBloader\fR, \fBexcept\fR, \fBtypchk\fR, \fBtraceback\fR,
+\&\fBtoc\fR and \fBldinfo\fR.
 .IP "\fB\-r\fR" 4
 .IX Item "-r"
 .PD 0
@@ -598,7 +619,8 @@
 trace sections or .gdb_index.
 .Sp
 Note: the output from the \fB=info\fR option can also be affected
-by the options \fB\-\-dwarf\-depth\fR and \fB\-\-dwarf\-start\fR.
+by the options \fB\-\-dwarf\-depth\fR, the \fB\-\-dwarf\-start\fR and
+the \fB\-\-dwarf\-check\fR.
 .IP "\fB\-\-dwarf\-depth=\fR\fIn\fR" 4
 .IX Item "--dwarf-depth=n"
 Limit the dump of the \f(CW\*(C`.debug_info\*(C'\fR section to \fIn\fR children.
@@ -618,6 +640,9 @@
 siblings and children of the specified \s-1DIE\s0 will be printed.
 .Sp
 This can be used in conjunction with \fB\-\-dwarf\-depth\fR.
+.IP "\fB\-\-dwarf\-check\fR" 4
+.IX Item "--dwarf-check"
+Enable additional checks for consistency of Dwarf information.
 .IP "\fB\-G\fR" 4
 .IX Item "-G"
 .PD 0
@@ -824,9 +849,7 @@
 \&\fInm\fR\|(1), \fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-ranlib.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-ranlib.1
index b99513f..607af53 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-ranlib.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-ranlib.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "RANLIB 1"
-.TH RANLIB 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH RANLIB 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -133,7 +142,7 @@
 ranlib \- generate index to archive.
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
-ranlib [\fB\-vVt\fR] \fIarchive\fR
+ranlib [\fB\-\-plugin\fR \fIname\fR] [\fB\-DhHvVt\fR] \fIarchive\fR
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
 \&\fBranlib\fR generates an index to the contents of an archive and
@@ -146,10 +155,19 @@
 allows routines in the library to call each other without regard to
 their placement in the archive.
 .PP
-The \s-1GNU\s0 \fBranlib\fR program is another form of \s-1GNU\s0 \fBar\fR; running
+The \s-1GNU \s0\fBranlib\fR program is another form of \s-1GNU \s0\fBar\fR; running
 \&\fBranlib\fR is completely equivalent to executing \fBar \-s\fR.
 .SH "OPTIONS"
 .IX Header "OPTIONS"
+.IP "\fB\-h\fR" 4
+.IX Item "-h"
+.PD 0
+.IP "\fB\-H\fR" 4
+.IX Item "-H"
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+.PD
+Show usage information for \fBranlib\fR.
 .IP "\fB\-v\fR" 4
 .IX Item "-v"
 .PD 0
@@ -159,9 +177,28 @@
 .IX Item "--version"
 .PD
 Show the version number of \fBranlib\fR.
+.IP "\fB\-D\fR" 4
+.IX Item "-D"
+Operate in \fIdeterministic\fR mode.  The symbol map archive member's
+header will show zero for the \s-1UID, GID,\s0 and timestamp.  When this
+option is used, multiple runs will produce identical output files.
+.Sp
+If \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by
+default.  It can be disabled with the \fB\-U\fR option, described
+below.
 .IP "\fB\-t\fR" 4
 .IX Item "-t"
 Update the timestamp of the symbol map of an archive.
+.IP "\fB\-U\fR" 4
+.IX Item "-U"
+Do \fInot\fR operate in \fIdeterministic\fR mode.  This is the
+inverse of the \fB\-D\fR option, above: the archive index will get
+actual \s-1UID, GID,\s0 timestamp, and file mode values.
+.Sp
+If \fIbinutils\fR was configured \fIwithout\fR
+\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by
+default.
 .IP "\fB@\fR\fIfile\fR" 4
 .IX Item "@file"
 Read command-line options from \fIfile\fR.  The options read are
@@ -180,9 +217,7 @@
 \&\fIar\fR\|(1), \fInm\fR\|(1), and the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-readelf.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-readelf.1
index cd051ed..71b97b5 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-readelf.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-readelf.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "READELF 1"
-.TH READELF 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH READELF 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -273,7 +282,7 @@
 .IX Item "--unwind"
 .PD
 Displays the contents of the file's unwind section, if it has one.  Only
-the unwind sections for \s-1IA64\s0 \s-1ELF\s0 files, as well as \s-1ARM\s0 unwind tables
+the unwind sections for \s-1IA64 ELF\s0 files, as well as \s-1ARM\s0 unwind tables
 (\f(CW\*(C`.ARM.exidx\*(C'\fR / \f(CW\*(C`.ARM.extab\*(C'\fR) are currently supported.
 .IP "\fB\-d\fR" 4
 .IX Item "-d"
@@ -342,7 +351,7 @@
 .IP "\fB\-\-archive\-index\fR" 4
 .IX Item "--archive-index"
 .PD
-Displays the file symbol index infomation contained in the header part
+Displays the file symbol index information contained in the header part
 of binary archives.  Performs the same function as the \fBt\fR
 command to \fBar\fR, but without using the \s-1BFD\s0 library.
 .IP "\fB\-w[lLiaprmfFsoRt]\fR" 4
@@ -438,9 +447,7 @@
 \&\fIobjdump\fR\|(1), and the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-size.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-size.1
index 79e112f..3b3411a 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-size.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-size.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "SIZE 1"
-.TH SIZE 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH SIZE 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -142,7 +151,7 @@
      [\fIobjfile\fR...]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
-The \s-1GNU\s0 \fBsize\fR utility lists the section sizes\-\-\-and the total
+The \s-1GNU \s0\fBsize\fR utility lists the section sizes\-\-\-and the total
 size\-\-\-for each of the object or archive files \fIobjfile\fR in its
 argument list.  By default, one line of output is generated for each
 object file or each module in an archive.
@@ -160,8 +169,8 @@
 .IP "\fB\-\-format=\fR\fIcompatibility\fR" 4
 .IX Item "--format=compatibility"
 .PD
-Using one of these options, you can choose whether the output from \s-1GNU\s0
-\&\fBsize\fR resembles output from System V \fBsize\fR (using \fB\-A\fR,
+Using one of these options, you can choose whether the output from \s-1GNU
+\&\s0\fBsize\fR resembles output from System V \fBsize\fR (using \fB\-A\fR,
 or \fB\-\-format=sysv\fR), or Berkeley \fBsize\fR (using \fB\-B\fR, or
 \&\fB\-\-format=berkeley\fR).  The default is the one-line format similar to
 Berkeley's.
@@ -256,9 +265,7 @@
 \&\fIar\fR\|(1), \fIobjdump\fR\|(1), \fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-strings.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-strings.1
index 02b0121..516957f 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-strings.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-strings.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "STRINGS 1"
-.TH STRINGS 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH STRINGS 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -139,18 +148,28 @@
         [\fB\-e\fR \fIencoding\fR] [\fB\-\-encoding=\fR\fIencoding\fR]
         [\fB\-\fR] [\fB\-\-all\fR] [\fB\-\-print\-file\-name\fR]
         [\fB\-T\fR \fIbfdname\fR] [\fB\-\-target=\fR\fIbfdname\fR]
+        [\fB\-w\fR] [\fB\-\-include\-all\-whitespace\fR]
         [\fB\-\-help\fR] [\fB\-\-version\fR] \fIfile\fR...
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
-For each \fIfile\fR given, \s-1GNU\s0 \fBstrings\fR prints the printable
-character sequences that are at least 4 characters long (or the number
-given with the options below) and are followed by an unprintable
-character.  By default, it only prints the strings from the initialized
-and loaded sections of object files; for other types of files, it prints
-the strings from the whole file.
+For each \fIfile\fR given, \s-1GNU \s0\fBstrings\fR prints the
+printable character sequences that are at least 4 characters long (or
+the number given with the options below) and are followed by an
+unprintable character.
 .PP
-\&\fBstrings\fR is mainly useful for determining the contents of non-text
-files.
+Depending upon how the strings program was configured it will default
+to either displaying all the printable sequences that it can find in
+each file, or only those sequences that are in loadable, initialized
+data sections.  If the file type in unrecognizable, or if strings is
+reading from stdin then it will always display all of the printable
+sequences that it can find.
+.PP
+For backwards compatibility any file that occurs after a command line
+option of just \fB\-\fR will also be scanned in full, regardless of
+the presence of any \fB\-d\fR option.
+.PP
+\&\fBstrings\fR is mainly useful for determining the contents of
+non-text files.
 .SH "OPTIONS"
 .IX Header "OPTIONS"
 .IP "\fB\-a\fR" 4
@@ -161,8 +180,28 @@
 .IP "\fB\-\fR" 4
 .IX Item "-"
 .PD
-Do not scan only the initialized and loaded sections of object files;
-scan the whole files.
+Scan the whole file, regardless of what sections it contains or
+whether those sections are loaded or initialized.  Normally this is
+the default behaviour, but strings can be configured so that the
+\&\fB\-d\fR is the default instead.
+.Sp
+The \fB\-\fR option is position dependent and forces strings to
+perform full scans of any file that is mentioned after the \fB\-\fR
+on the command line, even if the \fB\-d\fR option has been
+specified.
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+.PD 0
+.IP "\fB\-\-data\fR" 4
+.IX Item "--data"
+.PD
+Only print strings from initialized, loaded data sections in the
+file.  This may reduce the amount of garbage in the output, but it
+also exposes the strings program to any security flaws that may be
+present in the \s-1BFD\s0 library used to scan and load sections.  Strings
+can be configured so that this option is the default behaviour.  In
+such cases the \fB\-a\fR option can be used to avoid using the \s-1BFD\s0
+library and instead just print all of the strings found in the file.
 .IP "\fB\-f\fR" 4
 .IX Item "-f"
 .PD 0
@@ -205,7 +244,7 @@
 .PD
 Select the character encoding of the strings that are to be found.
 Possible values for \fIencoding\fR are: \fBs\fR = single\-7\-bit\-byte
-characters (\s-1ASCII\s0, \s-1ISO\s0 8859, etc., default), \fBS\fR =
+characters (\s-1ASCII, ISO 8859,\s0 etc., default), \fBS\fR =
 single\-8\-bit\-byte characters, \fBb\fR = 16\-bit bigendian, \fBl\fR =
 16\-bit littleendian, \fBB\fR = 32\-bit bigendian, \fBL\fR = 32\-bit
 littleendian.  Useful for finding wide character strings. (\fBl\fR
@@ -226,6 +265,16 @@
 .IX Item "--version"
 .PD
 Print the program version number on the standard output and exit.
+.IP "\fB\-w\fR" 4
+.IX Item "-w"
+.PD 0
+.IP "\fB\-\-include\-all\-whitespace\fR" 4
+.IX Item "--include-all-whitespace"
+.PD
+By default tab and space characters are included in the strings that
+are displayed, but other whitespace characters, such a newlines and
+carriage returns, are not.  The \fB\-w\fR option changes this so
+that all whitespace characters are considered to be part of a string.
 .IP "\fB@\fR\fIfile\fR" 4
 .IX Item "@file"
 Read command-line options from \fIfile\fR.  The options read are
@@ -245,9 +294,7 @@
 and the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-strip.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-strip.1
index 9720925..e42487c 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-strip.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-strip.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "STRIP 1"
-.TH STRIP 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH STRIP 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -138,12 +147,15 @@
       [\fB\-O\fR \fIbfdname\fR |\fB\-\-output\-target=\fR\fIbfdname\fR]
       [\fB\-s\fR|\fB\-\-strip\-all\fR]
       [\fB\-S\fR|\fB\-g\fR|\fB\-d\fR|\fB\-\-strip\-debug\fR]
+      [\fB\-\-strip\-dwo\fR]
       [\fB\-K\fR \fIsymbolname\fR |\fB\-\-keep\-symbol=\fR\fIsymbolname\fR]
       [\fB\-N\fR \fIsymbolname\fR |\fB\-\-strip\-symbol=\fR\fIsymbolname\fR]
       [\fB\-w\fR|\fB\-\-wildcard\fR]
       [\fB\-x\fR|\fB\-\-discard\-all\fR] [\fB\-X\fR |\fB\-\-discard\-locals\fR]
       [\fB\-R\fR \fIsectionname\fR |\fB\-\-remove\-section=\fR\fIsectionname\fR]
       [\fB\-o\fR \fIfile\fR] [\fB\-p\fR|\fB\-\-preserve\-dates\fR]
+      [\fB\-D\fR|\fB\-\-enable\-deterministic\-archives\fR]
+      [\fB\-U\fR|\fB\-\-disable\-deterministic\-archives\fR]
       [\fB\-\-keep\-file\-symbols\fR]
       [\fB\-\-only\-keep\-debug\fR]
       [\fB\-v\fR |\fB\-\-verbose\fR] [\fB\-V\fR|\fB\-\-version\fR]
@@ -151,7 +163,7 @@
       \fIobjfile\fR...
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
-\&\s-1GNU\s0 \fBstrip\fR discards all symbols from object files
+\&\s-1GNU \s0\fBstrip\fR discards all symbols from object files
 \&\fIobjfile\fR.  The list of object files may include archives.
 At least one object file must be given.
 .PP
@@ -196,7 +208,9 @@
 .PD
 Remove any section named \fIsectionname\fR from the output file.  This
 option may be given more than once.  Note that using this option
-inappropriately may make the output file unusable.
+inappropriately may make the output file unusable.  The wildcard
+character \fB*\fR may be given at the end of \fIsectionname\fR.  If
+so, then any section starting with \fIsectionname\fR will be removed.
 .IP "\fB\-s\fR" 4
 .IX Item "-s"
 .PD 0
@@ -215,6 +229,12 @@
 .IX Item "--strip-debug"
 .PD
 Remove debugging symbols only.
+.IP "\fB\-\-strip\-dwo\fR" 4
+.IX Item "--strip-dwo"
+Remove the contents of all \s-1DWARF \s0.dwo sections, leaving the
+remaining debugging sections and all symbols intact.
+See the description of this option in the \fBobjcopy\fR section
+for more information.
 .IP "\fB\-\-strip\-unneeded\fR" 4
 .IX Item "--strip-unneeded"
 Remove all symbols that are not needed for relocation processing.
@@ -247,6 +267,32 @@
 .IX Item "--preserve-dates"
 .PD
 Preserve the access and modification dates of the file.
+.IP "\fB\-D\fR" 4
+.IX Item "-D"
+.PD 0
+.IP "\fB\-\-enable\-deterministic\-archives\fR" 4
+.IX Item "--enable-deterministic-archives"
+.PD
+Operate in \fIdeterministic\fR mode.  When copying archive members
+and writing the archive index, use zero for UIDs, GIDs, timestamps,
+and use consistent file modes for all files.
+.Sp
+If \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by default.
+It can be disabled with the \fB\-U\fR option, below.
+.IP "\fB\-U\fR" 4
+.IX Item "-U"
+.PD 0
+.IP "\fB\-\-disable\-deterministic\-archives\fR" 4
+.IX Item "--disable-deterministic-archives"
+.PD
+Do \fInot\fR operate in \fIdeterministic\fR mode.  This is the
+inverse of the \fB\-D\fR option, above: when copying archive members
+and writing the archive index, use their actual \s-1UID, GID,\s0 timestamp,
+and file mode values.
+.Sp
+This is the default unless \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR.
 .IP "\fB\-w\fR" 4
 .IX Item "-w"
 .PD 0
@@ -300,7 +346,7 @@
 to create these files is as follows:
 .RS 4
 .IP "1.<Link the executable as normal.  Assuming that is is called>" 4
-.IX Item "1.<Link the executable as normal.  Assuming that is is called>"
+.IX Item "1.<Link the executable as normal. Assuming that is is called>"
 \&\f(CW\*(C`foo\*(C'\fR then...
 .ie n .IP "1.<Run ""objcopy \-\-only\-keep\-debug foo foo.dbg"" to>" 4
 .el .IP "1.<Run \f(CWobjcopy \-\-only\-keep\-debug foo foo.dbg\fR to>" 4
@@ -380,9 +426,7 @@
 the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-windmc.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-windmc.1
index 2594315..fca17d6 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-windmc.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-windmc.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "WINDMC 1"
-.TH WINDMC 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH WINDMC 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -171,7 +180,7 @@
 .IP "\fB\-\-ascii_in\fR" 4
 .IX Item "--ascii_in"
 .PD
-Specifies that the input file specified is \s-1ASCII\s0. This is the default
+Specifies that the input file specified is \s-1ASCII.\s0 This is the default
 behaviour.
 .IP "\fB\-A\fR" 4
 .IX Item "-A"
@@ -202,7 +211,7 @@
 .IP "\fB\-\-codepage_in\fR \fIcodepage\fR" 4
 .IX Item "--codepage_in codepage"
 .PD
-Sets the default codepage to be used to convert input file to \s-1UTF16\s0. The
+Sets the default codepage to be used to convert input file to \s-1UTF16.\s0 The
 default is ocdepage 1252.
 .IP "\fB\-d\fR" 4
 .IX Item "-d"
@@ -259,7 +268,7 @@
 .IX Item "--nullterminate"
 .PD
 Terminate message text in \f(CW\*(C`bin\*(C'\fR files by zero. By default they are
-terminated by \s-1CR/LF\s0.
+terminated by \s-1CR/LF.\s0
 .IP "\fB\-o\fR" 4
 .IX Item "-o"
 .PD 0
@@ -292,7 +301,7 @@
 .IP "\fB\-\-unicode_in\fR" 4
 .IX Item "--unicode_in"
 .PD
-Specifies that the input file is \s-1UTF16\s0.
+Specifies that the input file is \s-1UTF16.\s0
 .IP "\fB\-U\fR" 4
 .IX Item "-U"
 .PD 0
@@ -341,9 +350,7 @@
 the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3
diff --git a/share/man/man1/mipsel-buildroot-linux-uclibc-windres.1 b/share/man/man1/mipsel-buildroot-linux-uclibc-windres.1
index b79d239..dafbd56 100644
--- a/share/man/man1/mipsel-buildroot-linux-uclibc-windres.1
+++ b/share/man/man1/mipsel-buildroot-linux-uclibc-windres.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
 .\"
 .\" Standard preamble:
 .\" ========================================================================
@@ -38,6 +38,8 @@
 .    ds PI \(*p
 .    ds L" ``
 .    ds R" ''
+.    ds C`
+.    ds C'
 'br\}
 .\"
 .\" Escape single quotes in literal strings from groff's Unicode transform.
@@ -48,17 +50,24 @@
 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
 .\" entries marked with X<> in POD.  Of course, you'll have to process the
 .\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
 ..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{
+.    if \nF \{
+.        de IX
+.        tm Index:\\$1\t\\n%\t"\\$2"
 ..
+.        if !\nF==2 \{
+.            nr % 0
+.            nr F 2
+.        \}
+.    \}
 .\}
+.rr rF
 .\"
 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
@@ -124,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "WINDRES 1"
-.TH WINDRES 1 "2011-11-21" "binutils-2.21.90" "GNU Development Tools"
+.TH WINDRES 1 "2014-12-23" "binutils-2.25" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -349,9 +358,7 @@
 the Info entries for \fIbinutils\fR.
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-Free Software Foundation, Inc.
+Copyright (c) 1991\-2014 Free Software Foundation, Inc.
 .PP
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3