about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-11 11:58:49 +0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-11 11:58:49 +0100
commit2af1cb3aa673102491ffd8cfdeca8ae2dec154b5 (patch)
tree4906c8441c7715a69f3ea17b883d5d19b8111021 /pkgs
parentfabbd0f0f7fdb536f56d73487aec198c24163fd0 (diff)
parenta11a28107120612c0284a19d41b6ffb5750a65ac (diff)
downloadnixlib-2af1cb3aa673102491ffd8cfdeca8ae2dec154b5.tar
nixlib-2af1cb3aa673102491ffd8cfdeca8ae2dec154b5.tar.gz
nixlib-2af1cb3aa673102491ffd8cfdeca8ae2dec154b5.tar.bz2
nixlib-2af1cb3aa673102491ffd8cfdeca8ae2dec154b5.tar.lz
nixlib-2af1cb3aa673102491ffd8cfdeca8ae2dec154b5.tar.xz
nixlib-2af1cb3aa673102491ffd8cfdeca8ae2dec154b5.tar.zst
nixlib-2af1cb3aa673102491ffd8cfdeca8ae2dec154b5.zip
Merge remote-tracking branch 'origin/binutils-2.26' into staging
This still breaks a few packages, but nothing really major:

  http://hydra.nixos.org/eval/1241850?filter=x86_64-linux&compare=1237919&full=#tabs-now-fail
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/build-support/cc-wrapper/ld-wrapper.sh17
-rw-r--r--pkgs/build-support/cc-wrapper/setup-hook.sh12
-rw-r--r--pkgs/build-support/setup-hooks/separate-debug-info.sh15
-rw-r--r--pkgs/development/compilers/go/1.4.nix1
-rw-r--r--pkgs/development/compilers/go/new-binutils.patch194
-rw-r--r--pkgs/development/libraries/glibc/builder.sh4
-rw-r--r--pkgs/development/libraries/glibc/default.nix19
-rw-r--r--pkgs/development/libraries/librdf/redland.nix3
-rw-r--r--pkgs/development/tools/misc/binutils/default.nix13
-rw-r--r--pkgs/development/tools/misc/binutils/fix-bsymbolic.patch47
-rw-r--r--pkgs/development/tools/misc/binutils/pt-pax-flags-20121023.patch1786
-rw-r--r--pkgs/development/tools/misc/binutils/pt-pax-flags.patch233
-rw-r--r--pkgs/stdenv/generic/setup.sh16
-rw-r--r--pkgs/stdenv/linux/default.nix6
14 files changed, 527 insertions, 1839 deletions
diff --git a/pkgs/build-support/cc-wrapper/ld-wrapper.sh b/pkgs/build-support/cc-wrapper/ld-wrapper.sh
index 6ef06eb70348..449a86459045 100644
--- a/pkgs/build-support/cc-wrapper/ld-wrapper.sh
+++ b/pkgs/build-support/cc-wrapper/ld-wrapper.sh
@@ -146,11 +146,26 @@ if [ "$NIX_DONT_SET_RPATH" != 1 ]; then
 
     # Finally, add `-rpath' switches.
     for i in $rpath; do
-        extra=(${extra[@]} -rpath $i)
+        extra+=(-rpath $i)
     done
 fi
 
 
+# Only add --build-id if this is a final link. FIXME: should build gcc
+# with --enable-linker-build-id instead?
+if [ "$NIX_SET_BUILD_ID" = 1 ]; then
+    for p in "${params[@]}"; do
+        if [ "$p" = "-r" -o "$p" = "--relocatable" -o "$p" = "-i" ]; then
+            relocatable=1
+            break
+        fi
+    done
+    if [ -z "$relocatable" ]; then
+        extra+=(--build-id)
+    fi
+fi
+
+
 # Optionally print debug info.
 if [ -n "$NIX_DEBUG" ]; then
   echo "original flags to @prog@:" >&2
diff --git a/pkgs/build-support/cc-wrapper/setup-hook.sh b/pkgs/build-support/cc-wrapper/setup-hook.sh
index 3d0b2fdfe8ae..35620483d2bc 100644
--- a/pkgs/build-support/cc-wrapper/setup-hook.sh
+++ b/pkgs/build-support/cc-wrapper/setup-hook.sh
@@ -22,20 +22,20 @@ envHooks+=(addCVars)
 
 # Note: these come *after* $out in the PATH (see setup.sh).
 
-if [ -n "@cc@" ]; then
-    addToSearchPath PATH @cc@/bin
+if [ -n "@binutils@" ]; then
+    addToSearchPath _PATH @binutils@/bin
 fi
 
-if [ -n "@binutils@" ]; then
-    addToSearchPath PATH @binutils@/bin
+if [ -n "@cc@" ]; then
+    addToSearchPath _PATH @cc@/bin
 fi
 
 if [ -n "@libc@" ]; then
-    addToSearchPath PATH @libc@/bin
+    addToSearchPath _PATH @libc@/bin
 fi
 
 if [ -n "@coreutils@" ]; then
-    addToSearchPath PATH @coreutils@/bin
+    addToSearchPath _PATH @coreutils@/bin
 fi
 
 if [ -z "$crossConfig" ]; then
diff --git a/pkgs/build-support/setup-hooks/separate-debug-info.sh b/pkgs/build-support/setup-hooks/separate-debug-info.sh
index 37753d9ce406..518be9647334 100644
--- a/pkgs/build-support/setup-hooks/separate-debug-info.sh
+++ b/pkgs/build-support/setup-hooks/separate-debug-info.sh
@@ -1,5 +1,6 @@
-export NIX_LDFLAGS+=" --build-id"
-export NIX_CFLAGS_COMPILE+=" -ggdb"
+export NIX_SET_BUILD_ID=1
+export NIX_LDFLAGS+=" --compress-debug-sections=zlib"
+export NIX_CFLAGS_COMPILE+=" -ggdb -Wa,--compress-debug-sections"
 dontStrip=1
 
 fixupOutputHooks+=(_separateDebugInfo)
@@ -25,18 +26,10 @@ _separateDebugInfo() {
         # Extract the debug info.
         header "separating debug info from $i (build ID $id)"
         mkdir -p "$dst/${id:0:2}"
-        objcopy --only-keep-debug "$i" "$dst/${id:0:2}/${id:2}.debug" --compress-debug-sections
+        objcopy --only-keep-debug "$i" "$dst/${id:0:2}/${id:2}.debug"
         strip --strip-debug "$i"
 
         # Also a create a symlink <original-name>.debug.
         ln -sfn ".build-id/${id:0:2}/${id:2}.debug" "$dst/../$(basename "$i")"
     done < <(find "$prefix" -type f -print0)
 }
-
-# - We might prefer to compress the debug info during link-time already,
-#   but our ld doesn't support --compress-debug-sections=zlib (yet).
-# - Debug info may cause problems due to excessive memory usage during linking.
-#   Using -Wa,--compress-debug-sections should help with that;
-#   further interesting information: https://gcc.gnu.org/wiki/DebugFission
-# - Another related tool: https://fedoraproject.org/wiki/Features/DwarfCompressor
-
diff --git a/pkgs/development/compilers/go/1.4.nix b/pkgs/development/compilers/go/1.4.nix
index 9c6bbba24d5d..2a1f437ffdf6 100644
--- a/pkgs/development/compilers/go/1.4.nix
+++ b/pkgs/development/compilers/go/1.4.nix
@@ -87,6 +87,7 @@ stdenv.mkDerivation rec {
 
   patches = [
     ./remove-tools-1.4.patch
+    ./new-binutils.patch
   ];
 
   GOOS = if stdenv.isDarwin then "darwin" else "linux";
diff --git a/pkgs/development/compilers/go/new-binutils.patch b/pkgs/development/compilers/go/new-binutils.patch
new file mode 100644
index 000000000000..a547e3ab9b9a
--- /dev/null
+++ b/pkgs/development/compilers/go/new-binutils.patch
@@ -0,0 +1,194 @@
+https://github.com/golang/go/issues/13114
+https://gnats.netbsd.org/50777
+
+--- a/src/cmd/6l/asm.c	2015-09-23 06:20:05.000000000 +0200
++++ b/src/cmd/6l/asm.c	2016-03-10 21:00:29.032083210 +0100
+@@ -118,6 +118,8 @@
+ 		return;
+ 	
+ 	case 256 + R_X86_64_GOTPCREL:
++	case 256 + R_X86_64_GOTPCRELX:
++	case 256 + R_X86_64_REX_GOTPCRELX:
+ 		if(targ->type != SDYNIMPORT) {
+ 			// have symbol
+ 			if(r->off >= 2 && s->p[r->off-2] == 0x8b) {
+--- a/src/cmd/8l/asm.c	2015-09-23 06:20:05.000000000 +0200
++++ b/src/cmd/8l/asm.c	2016-03-10 21:02:16.702064080 +0100
+@@ -115,6 +115,7 @@
+ 		return;		
+ 	
+ 	case 256 + R_386_GOT32:
++	case 256 + R_386_GOT32X:
+ 		if(targ->type != SDYNIMPORT) {
+ 			// have symbol
+ 			if(r->off >= 2 && s->p[r->off-2] == 0x8b) {
+--- a/src/cmd/ld/elf.h	2015-09-23 06:20:05.000000000 +0200
++++ b/src/cmd/ld/elf.h	2016-03-10 21:00:29.033083211 +0100
+@@ -478,32 +478,47 @@
+  * Relocation types.
+  */
+ 
+-#define	R_X86_64_NONE	0	/* No relocation. */
+-#define	R_X86_64_64	1	/* Add 64 bit symbol value. */
+-#define	R_X86_64_PC32	2	/* PC-relative 32 bit signed sym value. */
+-#define	R_X86_64_GOT32	3	/* PC-relative 32 bit GOT offset. */
+-#define	R_X86_64_PLT32	4	/* PC-relative 32 bit PLT offset. */
+-#define	R_X86_64_COPY	5	/* Copy data from shared object. */
+-#define	R_X86_64_GLOB_DAT 6	/* Set GOT entry to data address. */
+-#define	R_X86_64_JMP_SLOT 7	/* Set GOT entry to code address. */
+-#define	R_X86_64_RELATIVE 8	/* Add load address of shared object. */
+-#define	R_X86_64_GOTPCREL 9	/* Add 32 bit signed pcrel offset to GOT. */
+-#define	R_X86_64_32	10	/* Add 32 bit zero extended symbol value */
+-#define	R_X86_64_32S	11	/* Add 32 bit sign extended symbol value */
+-#define	R_X86_64_16	12	/* Add 16 bit zero extended symbol value */
+-#define	R_X86_64_PC16	13	/* Add 16 bit signed extended pc relative symbol value */
+-#define	R_X86_64_8	14	/* Add 8 bit zero extended symbol value */
+-#define	R_X86_64_PC8	15	/* Add 8 bit signed extended pc relative symbol value */
+-#define	R_X86_64_DTPMOD64 16	/* ID of module containing symbol */
+-#define	R_X86_64_DTPOFF64 17	/* Offset in TLS block */
+-#define	R_X86_64_TPOFF64 18	/* Offset in static TLS block */
+-#define	R_X86_64_TLSGD	19	/* PC relative offset to GD GOT entry */
+-#define	R_X86_64_TLSLD	20	/* PC relative offset to LD GOT entry */
+-#define	R_X86_64_DTPOFF32 21	/* Offset in TLS block */
+-#define	R_X86_64_GOTTPOFF 22	/* PC relative offset to IE GOT entry */
+-#define	R_X86_64_TPOFF32 23	/* Offset in static TLS block */
+-
+-#define	R_X86_64_COUNT	24	/* Count of defined relocation types. */
++#define	R_X86_64_NONE           0
++#define	R_X86_64_64             1
++#define	R_X86_64_PC32           2
++#define	R_X86_64_GOT32          3
++#define	R_X86_64_PLT32          4
++#define	R_X86_64_COPY           5
++#define	R_X86_64_GLOB_DAT       6
++#define	R_X86_64_JMP_SLOT       7
++#define	R_X86_64_RELATIVE       8
++#define	R_X86_64_GOTPCREL       9
++#define	R_X86_64_32             10
++#define	R_X86_64_32S            11
++#define	R_X86_64_16             12
++#define	R_X86_64_PC16           13
++#define	R_X86_64_8              14
++#define	R_X86_64_PC8            15
++#define	R_X86_64_DTPMOD64       16
++#define	R_X86_64_DTPOFF64       17
++#define	R_X86_64_TPOFF64        18
++#define	R_X86_64_TLSGD          19
++#define	R_X86_64_TLSLD          20
++#define	R_X86_64_DTPOFF32       21
++#define	R_X86_64_GOTTPOFF       22
++#define	R_X86_64_TPOFF32        23
++#define	R_X86_64_PC64           24
++#define	R_X86_64_GOTOFF64       25
++#define	R_X86_64_GOTPC32        26
++#define	R_X86_64_GOT64          27
++#define	R_X86_64_GOTPCREL64     28
++#define	R_X86_64_GOTPC64        29
++#define	R_X86_64_GOTPLT64       30
++#define	R_X86_64_PLTOFF64       31
++#define	R_X86_64_SIZE32         32
++#define	R_X86_64_SIZE64         33
++#define	R_X86_64_GOTPC32_TLSDEC 34
++#define	R_X86_64_TLSDESC_CALL   35
++#define	R_X86_64_TLSDESC        36
++#define	R_X86_64_IRELATIVE      37
++#define	R_X86_64_PC32_BND       40
++#define	R_X86_64_GOTPCRELX      41
++#define	R_X86_64_REX_GOTPCRELX  42
+ 
+ 
+ #define	R_ALPHA_NONE		0	/* No reloc */
+@@ -581,39 +596,42 @@
+ #define	R_ARM_COUNT		38	/* Count of defined relocation types. */
+ 
+ 
+-#define	R_386_NONE	0	/* No relocation. */
+-#define	R_386_32	1	/* Add symbol value. */
+-#define	R_386_PC32	2	/* Add PC-relative symbol value. */
+-#define	R_386_GOT32	3	/* Add PC-relative GOT offset. */
+-#define	R_386_PLT32	4	/* Add PC-relative PLT offset. */
+-#define	R_386_COPY	5	/* Copy data from shared object. */
+-#define	R_386_GLOB_DAT	6	/* Set GOT entry to data address. */
+-#define	R_386_JMP_SLOT	7	/* Set GOT entry to code address. */
+-#define	R_386_RELATIVE	8	/* Add load address of shared object. */
+-#define	R_386_GOTOFF	9	/* Add GOT-relative symbol address. */
+-#define	R_386_GOTPC	10	/* Add PC-relative GOT table address. */
+-#define	R_386_TLS_TPOFF	14	/* Negative offset in static TLS block */
+-#define	R_386_TLS_IE	15	/* Absolute address of GOT for -ve static TLS */
+-#define	R_386_TLS_GOTIE	16	/* GOT entry for negative static TLS block */
+-#define	R_386_TLS_LE	17	/* Negative offset relative to static TLS */
+-#define	R_386_TLS_GD	18	/* 32 bit offset to GOT (index,off) pair */
+-#define	R_386_TLS_LDM	19	/* 32 bit offset to GOT (index,zero) pair */
+-#define	R_386_TLS_GD_32	24	/* 32 bit offset to GOT (index,off) pair */
+-#define	R_386_TLS_GD_PUSH 25	/* pushl instruction for Sun ABI GD sequence */
+-#define	R_386_TLS_GD_CALL 26	/* call instruction for Sun ABI GD sequence */
+-#define	R_386_TLS_GD_POP 27	/* popl instruction for Sun ABI GD sequence */
+-#define	R_386_TLS_LDM_32 28	/* 32 bit offset to GOT (index,zero) pair */
+-#define	R_386_TLS_LDM_PUSH 29	/* pushl instruction for Sun ABI LD sequence */
+-#define	R_386_TLS_LDM_CALL 30	/* call instruction for Sun ABI LD sequence */
+-#define	R_386_TLS_LDM_POP 31	/* popl instruction for Sun ABI LD sequence */
+-#define	R_386_TLS_LDO_32 32	/* 32 bit offset from start of TLS block */
+-#define	R_386_TLS_IE_32	33	/* 32 bit offset to GOT static TLS offset entry */
+-#define	R_386_TLS_LE_32	34	/* 32 bit offset within static TLS block */
+-#define	R_386_TLS_DTPMOD32 35	/* GOT entry containing TLS index */
+-#define	R_386_TLS_DTPOFF32 36	/* GOT entry containing TLS offset */
+-#define	R_386_TLS_TPOFF32 37	/* GOT entry of -ve static TLS offset */
+-
+-#define	R_386_COUNT	38	/* Count of defined relocation types. */
++#define	R_386_NONE          0
++#define	R_386_32            1
++#define	R_386_PC32          2
++#define	R_386_GOT32         3
++#define	R_386_PLT32         4
++#define	R_386_COPY          5
++#define	R_386_GLOB_DAT      6
++#define	R_386_JMP_SLOT      7
++#define	R_386_RELATIVE      8
++#define	R_386_GOTOFF        9
++#define	R_386_GOTPC         10
++#define	R_386_TLS_TPOFF     14
++#define	R_386_TLS_IE        15
++#define	R_386_TLS_GOTIE     16
++#define	R_386_TLS_LE        17
++#define	R_386_TLS_GD        18
++#define	R_386_TLS_LDM       19
++#define	R_386_TLS_GD_32     24
++#define	R_386_TLS_GD_PUSH   25
++#define	R_386_TLS_GD_CALL   26
++#define	R_386_TLS_GD_POP    27
++#define	R_386_TLS_LDM_32    28
++#define	R_386_TLS_LDM_PUSH  29
++#define	R_386_TLS_LDM_CALL  30
++#define	R_386_TLS_LDM_POP   31
++#define	R_386_TLS_LDO_32    32
++#define	R_386_TLS_IE_32     33
++#define	R_386_TLS_LE_32     34
++#define	R_386_TLS_DTPMOD32  35
++#define	R_386_TLS_DTPOFF32  36
++#define	R_386_TLS_TPOFF32   37
++#define	R_386_TLS_GOTDESC   39
++#define	R_386_TLS_DESC_CALL 40
++#define	R_386_TLS_DESC      41
++#define	R_386_IRELATIVE     42
++#define	R_386_GOT32X        43
+ 
+ #define	R_PPC_NONE		0	/* No relocation. */
+ #define	R_PPC_ADDR32		1
+--- a/src/cmd/ld/ldelf.c	2015-09-23 06:20:05.000000000 +0200
++++ b/src/cmd/ld/ldelf.c	2016-03-10 21:00:29.033083211 +0100
+@@ -888,12 +888,15 @@
+ 	case R('6', R_X86_64_PC32):
+ 	case R('6', R_X86_64_PLT32):
+ 	case R('6', R_X86_64_GOTPCREL):
++	case R('6', R_X86_64_GOTPCRELX):
++	case R('6', R_X86_64_REX_GOTPCRELX):
+ 	case R('8', R_386_32):
+ 	case R('8', R_386_PC32):
+ 	case R('8', R_386_GOT32):
+ 	case R('8', R_386_PLT32):
+ 	case R('8', R_386_GOTOFF):
+ 	case R('8', R_386_GOTPC):
++	case R('8', R_386_GOT32X):
+ 		*siz = 4;
+ 		break;
+ 	case R('6', R_X86_64_64):
diff --git a/pkgs/development/libraries/glibc/builder.sh b/pkgs/development/libraries/glibc/builder.sh
index d0684d6194d0..d60b143a1eca 100644
--- a/pkgs/development/libraries/glibc/builder.sh
+++ b/pkgs/development/libraries/glibc/builder.sh
@@ -37,6 +37,10 @@ postInstall() {
 
     # Get rid of more unnecessary stuff.
     rm -rf $out/var $out/sbin/sln
+
+    for i in $out/lib/*.a; do
+        strip -S "$i"
+    done
 }
 
 genericBuild
diff --git a/pkgs/development/libraries/glibc/default.nix b/pkgs/development/libraries/glibc/default.nix
index 5e25c2dc8bc8..2630cdb127f7 100644
--- a/pkgs/development/libraries/glibc/default.nix
+++ b/pkgs/development/libraries/glibc/default.nix
@@ -2,7 +2,6 @@
 , installLocales ? true
 , profilingLibraries ? false
 , gccCross ? null
-, debugSymbols ? false
 , withGd ? false, gd ? null, libpng ? null
 }:
 
@@ -13,9 +12,7 @@ let
   cross = if gccCross != null then gccCross.target else null;
 in
   build cross ({
-    name = "glibc"
-      + lib.optionalString debugSymbols "-debug"
-      + lib.optionalString withGd "-gd";
+    name = "glibc" + lib.optionalString withGd "-gd";
 
     inherit lib stdenv fetchurl linuxHeaders installLocales
       profilingLibraries gccCross withGd gd libpng;
@@ -38,23 +35,13 @@ in
       fi
     '';
 
+    separateDebugInfo = true;
+
     meta.description = "The GNU C Library";
   }
 
   //
 
-  (if debugSymbols
-   then {
-     # Build with debugging symbols, but leave optimizations on and don't
-     # attempt to keep the build tree.
-     dontStrip = true;
-     dontCrossStrip = true;
-     NIX_STRIP_DEBUG = 0;
-   }
-   else {})
-
-  //
-
   (if cross != null
    then {
       preConfigure = ''
diff --git a/pkgs/development/libraries/librdf/redland.nix b/pkgs/development/libraries/librdf/redland.nix
index 8ef900493456..34eabfe64732 100644
--- a/pkgs/development/libraries/librdf/redland.nix
+++ b/pkgs/development/libraries/librdf/redland.nix
@@ -30,6 +30,9 @@ stdenv.mkDerivation rec {
     [ "--with-threads" ]
     ++ stdenv.lib.optional withBdb "--with-bdb=${db}";
 
+  # Fix broken DT_NEEDED in lib/redland/librdf_storage_sqlite.so.
+  NIX_CFLAGS_LINK = "-lraptor2";
+
   meta = {
     homepage = http://librdf.org/;
   };
diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix
index 86d69d8da8ce..89dd269b8cc1 100644
--- a/pkgs/development/tools/misc/binutils/default.nix
+++ b/pkgs/development/tools/misc/binutils/default.nix
@@ -2,7 +2,7 @@
 , cross ? null, gold ? true, bison ? null
 }:
 
-let basename = "binutils-2.23.1"; in
+let basename = "binutils-2.26"; in
 
 with { inherit (stdenv.lib) optional optionals optionalString; };
 
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnu/binutils/${basename}.tar.bz2";
-    sha256 = "06bs5v5ndb4g5qx96d52lc818gkbskd1m0sz57314v887sqfbcia";
+    sha256 = "1ngc2h3knhiw8s22l8y6afycfaxr5grviqy7mwvm4bsl14cf9b62";
   };
 
   patches = [
@@ -31,10 +31,15 @@ stdenv.mkDerivation rec {
     # Always add PaX flags section to ELF files.
     # This is needed, for instance, so that running "ldd" on a binary that is
     # PaX-marked to disable mprotect doesn't fail with permission denied.
-    ./pt-pax-flags-20121023.patch
+    ./pt-pax-flags.patch
+
+    # Bug fix backported from binutils master.
+    ./fix-bsymbolic.patch
   ];
 
-  nativeBuildInputs = optional gold bison;
+  outputs = [ "out" "info" ];
+
+  nativeBuildInputs = [ bison ];
   buildInputs = [ zlib ];
 
   inherit noSysDirs;
diff --git a/pkgs/development/tools/misc/binutils/fix-bsymbolic.patch b/pkgs/development/tools/misc/binutils/fix-bsymbolic.patch
new file mode 100644
index 000000000000..afaafc997efb
--- /dev/null
+++ b/pkgs/development/tools/misc/binutils/fix-bsymbolic.patch
@@ -0,0 +1,47 @@
+http://lists.gnu.org/archive/html/bug-binutils/2016-01/msg00193.html
+https://sourceware.org/bugzilla/show_bug.cgi?id=19615
+
+From 1dab972d797c060e17229c2e10da01852ba82629 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Thu, 11 Feb 2016 15:31:15 -0800
+Subject: [PATCH] Enable -Bsymbolic and -Bsymbolic-functions to PIE
+
+Before binutils 2.26, -Bsymbolic and -Bsymbolic-functions were also
+applied to PIE so that "ld -pie -Bsymbolic -E" can be used to export
+symbols in PIE with local binding.  This patch re-enables -Bsymbolic
+and -Bsymbolic-functions for PIE.
+
+diff --git a/ld/lexsup.c b/ld/lexsup.c
+index 4cad209..e2fb212 100644
+--- a/ld/lexsup.c
++++ b/ld/lexsup.c
+@@ -1586,15 +1586,14 @@ parse_args (unsigned argc, char **argv)
+   /* We may have -Bsymbolic, -Bsymbolic-functions, --dynamic-list-data,
+      --dynamic-list-cpp-new, --dynamic-list-cpp-typeinfo and
+      --dynamic-list FILE.  -Bsymbolic and -Bsymbolic-functions are
+-     for shared libraries.  -Bsymbolic overrides all others and vice
+-     versa.  */
++     for PIC outputs.  -Bsymbolic overrides all others and vice versa.  */
+   switch (command_line.symbolic)
+     {
+     case symbolic_unset:
+       break;
+     case symbolic:
+-      /* -Bsymbolic is for shared library only.  */
+-      if (bfd_link_dll (&link_info))
++      /* -Bsymbolic is for PIC output only.  */
++      if (bfd_link_pic (&link_info))
+ 	{
+ 	  link_info.symbolic = TRUE;
+ 	  /* Should we free the unused memory?  */
+@@ -1603,8 +1602,8 @@ parse_args (unsigned argc, char **argv)
+ 	}
+       break;
+     case symbolic_functions:
+-      /* -Bsymbolic-functions is for shared library only.  */
+-      if (bfd_link_dll (&link_info))
++      /* -Bsymbolic-functions is for PIC output only.  */
++      if (bfd_link_pic (&link_info))
+ 	command_line.dynamic_list = dynamic_list_data;
+       break;
+     }
diff --git a/pkgs/development/tools/misc/binutils/pt-pax-flags-20121023.patch b/pkgs/development/tools/misc/binutils/pt-pax-flags-20121023.patch
deleted file mode 100644
index bb0785fe192e..000000000000
--- a/pkgs/development/tools/misc/binutils/pt-pax-flags-20121023.patch
+++ /dev/null
@@ -1,1786 +0,0 @@
---- binutils-2.23/bfd/elf-bfd.h
-+++ binutils-2.23/bfd/elf-bfd.h
-@@ -1577,6 +1577,9 @@ struct elf_obj_tdata
-   /* Segment flags for the PT_GNU_STACK segment.  */
-   unsigned int stack_flags;
- 
-+  /* Segment flags for the PT_PAX_FLAGS segment.  */
-+  unsigned int pax_flags;
-+
-   /* Symbol version definitions in external objects.  */
-   Elf_Internal_Verdef *verdef;
- 
---- binutils-2.23/bfd/elf.c
-+++ binutils-2.23/bfd/elf.c
-@@ -1158,6 +1158,7 @@ get_segment_type (unsigned int p_type)
-     case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break;
-     case PT_GNU_STACK: pt = "STACK"; break;
-     case PT_GNU_RELRO: pt = "RELRO"; break;
-+    case PT_PAX_FLAGS: pt = "PAX_FLAGS"; break;
-     default: pt = NULL; break;
-     }
-   return pt;
-@@ -2477,6 +2478,9 @@ bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int hdr_index)
-     case PT_GNU_RELRO:
-       return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "relro");
- 
-+    case PT_PAX_FLAGS:
-+      return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "pax_flags");
-+
-     default:
-       /* Check for any processor-specific program segment types.  */
-       bed = get_elf_backend_data (abfd);
-@@ -3551,6 +3555,11 @@ get_program_header_size (bfd *abfd, struct bfd_link_info *info)
-       ++segs;
-     }
- 
-+    {
-+      /* We need a PT_PAX_FLAGS segment.  */
-+      ++segs;
-+    }
-+
-   for (s = abfd->sections; s != NULL; s = s->next)
-     {
-       if ((s->flags & SEC_LOAD) != 0
-@@ -4153,6 +4162,20 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)
- 	    }
- 	}
- 
-+    {
-+      amt = sizeof (struct elf_segment_map);
-+      m = bfd_zalloc (abfd, amt);
-+      if (m == NULL)
-+	goto error_return;
-+      m->next = NULL;
-+      m->p_type = PT_PAX_FLAGS;
-+      m->p_flags = elf_tdata (abfd)->pax_flags;
-+      m->p_flags_valid = 1;
-+
-+      *pm = m;
-+      pm = &m->next;
-+    }
-+
-       free (sections);
-       elf_tdata (abfd)->segment_map = mfirst;
-     }
-@@ -5417,7 +5440,8 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
-        6. PT_TLS segment includes only SHF_TLS sections.
-        7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments.
-        8. PT_DYNAMIC should not contain empty sections at the beginning
--	  (with the possible exception of .dynamic).  */
-+	  (with the possible exception of .dynamic).
-+       9. PT_PAX_FLAGS segments do not include any sections.  */
- #define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed)		\
-   ((((segment->p_paddr							\
-       ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr)	\
-@@ -5425,6 +5449,7 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
-      && (section->flags & SEC_ALLOC) != 0)				\
-     || IS_NOTE (segment, section))					\
-    && segment->p_type != PT_GNU_STACK					\
-+   && segment->p_type != PT_PAX_FLAGS					\
-    && (segment->p_type != PT_TLS					\
-        || (section->flags & SEC_THREAD_LOCAL))				\
-    && (segment->p_type == PT_LOAD					\
---- binutils-2.23/bfd/elflink.c
-+++ binutils-2.23/bfd/elflink.c
-@@ -5545,16 +5545,30 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
-     return TRUE;
- 
-   bed = get_elf_backend_data (output_bfd);
-+
-+  elf_tdata (output_bfd)->pax_flags = PF_NORANDEXEC;
-+  if (info->execheap)
-+    elf_tdata (output_bfd)->pax_flags |= PF_NOMPROTECT;
-+  else if (info->noexecheap)
-+    elf_tdata (output_bfd)->pax_flags |= PF_MPROTECT;
-+
-   if (info->execstack)
--    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
-+    {
-+      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
-+      elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
-+    }
-   else if (info->noexecstack)
--    elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
-+    {
-+      elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
-+      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
-+    }
-   else
-     {
-       bfd *inputobj;
-       asection *notesec = NULL;
-       int exec = 0;
- 
-+      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
-       for (inputobj = info->input_bfds;
- 	   inputobj;
- 	   inputobj = inputobj->link_next)
-@@ -5567,7 +5581,11 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
- 	  if (s)
- 	    {
- 	      if (s->flags & SEC_CODE)
--		exec = PF_X;
-+		{
-+		  elf_tdata (output_bfd)->pax_flags &= ~PF_NOEMUTRAMP;
-+		  elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
-+		  exec = PF_X;
-+		}
- 	      notesec = s;
- 	    }
- 	  else if (bed->default_execstack)
---- binutils-2.23/binutils/readelf.c
-+++ binutils-2.23/binutils/readelf.c
-@@ -2740,6 +2740,7 @@ get_segment_type (unsigned long p_type)
- 			return "GNU_EH_FRAME";
-     case PT_GNU_STACK:	return "GNU_STACK";
-     case PT_GNU_RELRO:  return "GNU_RELRO";
-+    case PT_PAX_FLAGS:  return "PAX_FLAGS";
- 
-     default:
-       if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
---- binutils-2.23/include/bfdlink.h
-+++ binutils-2.23/include/bfdlink.h
-@@ -322,6 +322,14 @@ struct bfd_link_info
-   /* TRUE if PT_GNU_RELRO segment should be created.  */
-   unsigned int relro: 1;
- 
-+  /* TRUE if PT_PAX_FLAGS segment should be created with PF_NOMPROTECT
-+     flags.  */
-+  unsigned int execheap: 1;
-+
-+  /* TRUE if PT_PAX_FLAGS segment should be created with PF_MPROTECT
-+     flags.  */
-+  unsigned int noexecheap: 1;
-+
-   /* TRUE if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment
-      should be created.  */
-   unsigned int eh_frame_hdr: 1;
---- binutils-2.23/include/elf/common.h
-+++ binutils-2.23/include/elf/common.h
-@@ -429,6 +429,7 @@
- #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME      /* Solaris uses the same value */
- #define PT_GNU_STACK	(PT_LOOS + 0x474e551) /* Stack flags */
- #define PT_GNU_RELRO	(PT_LOOS + 0x474e552) /* Read-only after relocation */
-+#define PT_PAX_FLAGS	(PT_LOOS + 0x5041580) /* PaX flags */
- 
- /* Program segment permissions, in program header p_flags field.  */
- 
-@@ -439,6 +440,21 @@
- #define PF_MASKOS	0x0FF00000	/* New value, Oct 4, 1999 Draft */
- #define PF_MASKPROC	0xF0000000	/* Processor-specific reserved bits */
- 
-+/* Flags to control PaX behavior.  */
-+
-+#define PF_PAGEEXEC	(1 << 4)	/* Enable  PAGEEXEC */
-+#define PF_NOPAGEEXEC	(1 << 5)	/* Disable PAGEEXEC */
-+#define PF_SEGMEXEC	(1 << 6)	/* Enable  SEGMEXEC */
-+#define PF_NOSEGMEXEC	(1 << 7)	/* Disable SEGMEXEC */
-+#define PF_MPROTECT	(1 << 8)	/* Enable  MPROTECT */
-+#define PF_NOMPROTECT	(1 << 9)	/* Disable MPROTECT */
-+#define PF_RANDEXEC	(1 << 10)	/* Enable  RANDEXEC */
-+#define PF_NORANDEXEC	(1 << 11)	/* Disable RANDEXEC */
-+#define PF_EMUTRAMP	(1 << 12)	/* Enable  EMUTRAMP */
-+#define PF_NOEMUTRAMP	(1 << 13)	/* Disable EMUTRAMP */
-+#define PF_RANDMMAP	(1 << 14)	/* Enable  RANDMMAP */
-+#define PF_NORANDMMAP	(1 << 15)	/* Disable RANDMMAP */
-+
- /* Values for section header, sh_type field.  */
- 
- #define SHT_NULL	0		/* Section header table entry unused */
---- binutils-2.23/ld/emultempl/elf32.em
-+++ binutils-2.23/ld/emultempl/elf32.em
-@@ -2285,6 +2285,16 @@ fragment <<EOF
- 	  link_info.noexecstack = TRUE;
- 	  link_info.execstack = FALSE;
- 	}
-+      else if (strcmp (optarg, "execheap") == 0)
-+	{
-+	  link_info.execheap = TRUE;
-+	  link_info.noexecheap = FALSE;
-+	}
-+      else if (strcmp (optarg, "noexecheap") == 0)
-+	{
-+	  link_info.noexecheap = TRUE;
-+	  link_info.execheap = FALSE;
-+	}
- EOF
- if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
- fragment <<EOF
-@@ -2368,6 +2378,8 @@ fragment <<EOF
-   -z defs                     Report unresolved symbols in object files.\n"));
-   fprintf (file, _("\
-   -z execstack                Mark executable as requiring executable stack\n"));
-+  fprintf (file, _("\
-+  -z execheap                 Mark executable as requiring executable heap\n"));
- EOF
- 
- if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
-@@ -2391,6 +2403,8 @@ fragment <<EOF
- fragment <<EOF
-   fprintf (file, _("\
-   -z noexecstack              Mark executable as not requiring executable stack\n"));
-+  fprintf (file, _("\
-+  -z noexecheap               Mark executable as not requiring executable heap\n"));
- EOF
- if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
- fragment <<EOF
---- binutils-2.23/ld/ldgram.y
-+++ binutils-2.23/ld/ldgram.y
-@@ -1119,6 +1119,8 @@ phdr_type:
- 			    $$ = exp_intop (0x6474e550);
- 			  else if (strcmp (s, "PT_GNU_STACK") == 0)
- 			    $$ = exp_intop (0x6474e551);
-+			  else if (strcmp (s, "PT_PAX_FLAGS") == 0)
-+			    $$ = exp_intop (0x65041580);
- 			  else
- 			    {
- 			      einfo (_("\
---- binutils-2.23/ld/testsuite/ld-alpha/tlsbin.rd
-+++ binutils-2.23/ld/testsuite/ld-alpha/tlsbin.rd
-@@ -35,13 +35,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
- 
- Program Headers:
-   Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
--  PHDR +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+150 R E 0x8
-+  PHDR +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+188 R E 0x8
-   INTERP +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1
- .*Requesting program interpreter.*
-   LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R E 0x10000
-   LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000
-   DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8
-   TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- #...
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 3 entries:
---- binutils-2.23/ld/testsuite/ld-alpha/tlsbinr.rd
-+++ binutils-2.23/ld/testsuite/ld-alpha/tlsbinr.rd
-@@ -42,6 +42,7 @@ Program Headers:
-  +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000
-  +DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8
-  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- #...
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 2 entries:
---- binutils-2.23/ld/testsuite/ld-alpha/tlspic.rd
-+++ binutils-2.23/ld/testsuite/ld-alpha/tlspic.rd
-@@ -38,6 +38,7 @@ Program Headers:
-  +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x10000
-  +DYNAMIC +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ RW +0x8
-  +TLS +0x0+10e0 0x0+110e0 0x0+110e0 0x0+60 0x0+80 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- #...
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 7 entries:
---- binutils-2.23/ld/testsuite/ld-elf/eh1.d
-+++ binutils-2.23/ld/testsuite/ld-elf/eh1.d
-@@ -22,11 +22,11 @@ Contents of the .eh_frame section:
-   DW_CFA_nop
-   DW_CFA_nop
- 
--00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
--  DW_CFA_advance_loc: 0 to 00400078
-+00000018 0000001c 0000001c FDE cie=00000000 pc=([0-9a-f]+)..\1
-+  DW_CFA_advance_loc: 0 to [0-9a-f]+
-   DW_CFA_def_cfa_offset: 16
-   DW_CFA_offset: r6 \(rbp\) at cfa-16
--  DW_CFA_advance_loc: 0 to 00400078
-+  DW_CFA_advance_loc: 0 to [0-9a-f]+
-   DW_CFA_def_cfa_register: r6 \(rbp\)
- 
- 00000038 ZERO terminator
---- binutils-2.23/ld/testsuite/ld-elf/eh2.d
-+++ binutils-2.23/ld/testsuite/ld-elf/eh2.d
-@@ -22,11 +22,11 @@ Contents of the .eh_frame section:
-   DW_CFA_nop
-   DW_CFA_nop
- 
--00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
--  DW_CFA_advance_loc: 0 to 00400078
-+00000018 0000001c 0000001c FDE cie=00000000 pc=([0-9a-f]+)..\1
-+  DW_CFA_advance_loc: 0 to [0-9a-f]+
-   DW_CFA_def_cfa_offset: 16
-   DW_CFA_offset: r6 \(rbp\) at cfa-16
--  DW_CFA_advance_loc: 0 to 00400078
-+  DW_CFA_advance_loc: 0 to [0-9a-f]+
-   DW_CFA_def_cfa_register: r6 \(rbp\)
- 
- 00000038 ZERO terminator
---- binutils-2.23/ld/testsuite/ld-elf/eh3.d
-+++ binutils-2.23/ld/testsuite/ld-elf/eh3.d
-@@ -22,11 +22,11 @@ Contents of the .eh_frame section:
-   DW_CFA_nop
-   DW_CFA_nop
- 
--00000018 0000001c 0000001c FDE cie=00000000 pc=00400078..00400078
--  DW_CFA_advance_loc: 0 to 00400078
-+00000018 0000001c 0000001c FDE cie=00000000 pc=([0-9a-f]+)..\1
-+  DW_CFA_advance_loc: 0 to [0-9a-f]+
-   DW_CFA_def_cfa_offset: 16
-   DW_CFA_offset: r6 \(rbp\) at cfa-16
--  DW_CFA_advance_loc: 0 to 00400078
-+  DW_CFA_advance_loc: 0 to [0-9a-f]+
-   DW_CFA_def_cfa_register: r6 \(rbp\)
- 
- 00000038 ZERO terminator
---- binutils-2.23/ld/testsuite/ld-elf/orphan-region.d
-+++ binutils-2.23/ld/testsuite/ld-elf/orphan-region.d
-@@ -15,7 +15,9 @@
- Program Headers:
-   Type.*
-   LOAD[ \t]+0x[0-9a-f]+ 0x0*40000000 0x0*40000000 0x[0-9a-f]+ 0x[0-9a-f]+ RWE 0x[0-9a-f]+
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-   Segment Sections...
-    00     .text .rodata .moredata *
-+   01 +
---- binutils-2.23/ld/testsuite/ld-i386/tlsbin.rd
-+++ binutils-2.23/ld/testsuite/ld-i386/tlsbin.rd
-@@ -44,6 +44,7 @@ Program Headers:
-  +LOAD.*
-  +DYNAMIC.*
-  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+a0 R +0x1000
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections...
-@@ -53,6 +54,7 @@ Program Headers:
-  +03 +.tdata .dynamic .got .got.plt *
-  +04 +.dynamic *
-  +05 +.tdata .tbss *
-+ +06 +
- 
- Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries:
-  Offset +Info +Type +Sym.Value +Sym. Name
---- binutils-2.23/ld/testsuite/ld-i386/tlsbindesc.rd
-+++ binutils-2.23/ld/testsuite/ld-i386/tlsbindesc.rd
-@@ -42,6 +42,7 @@ Program Headers:
-  +LOAD.*
-  +DYNAMIC.*
-  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+a0 R +0x1000
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections...
-@@ -51,6 +52,7 @@ Program Headers:
-  +03 +.tdata .dynamic .got .got.plt *
-  +04 +.dynamic *
-  +05 +.tdata .tbss *
-+ +06 +
- 
- Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries:
-  Offset +Info +Type +Sym.Value +Sym. Name
---- binutils-2.23/ld/testsuite/ld-i386/tlsdesc.rd
-+++ binutils-2.23/ld/testsuite/ld-i386/tlsdesc.rd
-@@ -39,6 +39,7 @@ Program Headers:
-  +LOAD.*
-  +DYNAMIC.*
-  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+80 R +0x1
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections...
-@@ -46,6 +47,7 @@ Program Headers:
-  +01 +.tdata .dynamic .got .got.plt *
-  +02 +.dynamic *
-  +03 +.tdata .tbss *
-+ +04 +
- 
- Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries:
-  Offset +Info +Type +Sym.Value +Sym. Name
---- binutils-2.23/ld/testsuite/ld-i386/tlsgdesc.rd
-+++ binutils-2.23/ld/testsuite/ld-i386/tlsgdesc.rd
-@@ -36,12 +36,14 @@ Program Headers:
-  +LOAD.*
-  +LOAD.*
-  +DYNAMIC.*
-+ +PAX_FLAGS.*
- 
-  Section to Segment mapping:
-  +Segment Sections...
-  +00 +.hash .dynsym .dynstr .rel.dyn .rel.plt .plt .text *
-  +01 +.dynamic .got .got.plt *
-  +02 +.dynamic *
-+ +03 +
- 
- Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 8 entries:
-  Offset +Info +Type +Sym.Value +Sym. Name
---- binutils-2.23/ld/testsuite/ld-i386/tlsnopic.rd
-+++ binutils-2.23/ld/testsuite/ld-i386/tlsnopic.rd
-@@ -37,6 +37,7 @@ Program Headers:
-  +LOAD.*
-  +DYNAMIC.*
-  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+ 0x0+24 R +0x1
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections...
-@@ -44,6 +45,7 @@ Program Headers:
-  +01 +.dynamic .got .got.plt *
-  +02 +.dynamic *
-  +03 +.tbss *
-+ +04 +
- 
- Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries:
-  Offset +Info +Type +Sym.Value +Sym. Name
---- binutils-2.23/ld/testsuite/ld-i386/tlspic.rd
-+++ binutils-2.23/ld/testsuite/ld-i386/tlspic.rd
-@@ -40,6 +40,7 @@ Program Headers:
-  +LOAD.*
-  +DYNAMIC.*
-  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+80 R +0x1
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections...
-@@ -47,6 +48,7 @@ Program Headers:
-  +01 +.tdata .dynamic .got .got.plt *
-  +02 +.dynamic *
-  +03 +.tdata .tbss *
-+ +04 +
- 
- Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 26 entries:
-  Offset +Info +Type +Sym.Value +Sym. Name
---- binutils-2.23/ld/testsuite/ld-ia64/merge1.d
-+++ binutils-2.23/ld/testsuite/ld-ia64/merge1.d
-@@ -4,7 +4,7 @@
- #objdump: -d
- 
- #...
--0+1e0 <.text>:
-+[a-f0-9]+ <.text>:
- [ 	]*[a-f0-9]+:	0b 60 80 02 00 24 	\[MMI\]       addl r12=32,r1;;
- [ 	]*[a-f0-9]+:	c0 c0 04 00 48 00 	            addl r12=24,r1
- [ 	]*[a-f0-9]+:	00 00 04 00       	            nop.i 0x0;;
---- binutils-2.23/ld/testsuite/ld-ia64/merge2.d
-+++ binutils-2.23/ld/testsuite/ld-ia64/merge2.d
-@@ -4,7 +4,7 @@
- #objdump: -d
- 
- #...
--0+1e0 <.text>:
-+[a-f0-9]+ <.text>:
- [ 	]*[a-f0-9]+:	0b 60 80 02 00 24 	\[MMI\]       addl r12=32,r1;;
- [ 	]*[a-f0-9]+:	c0 c0 04 00 48 00 	            addl r12=24,r1
- [ 	]*[a-f0-9]+:	00 00 04 00       	            nop.i 0x0;;
---- binutils-2.23/ld/testsuite/ld-ia64/merge3.d
-+++ binutils-2.23/ld/testsuite/ld-ia64/merge3.d
-@@ -4,7 +4,7 @@
- #objdump: -d
- 
- #...
--0+210 <.text>:
-+[a-f0-9]+ <.text>:
- [ 	]*[a-f0-9]+:	0b 60 80 02 00 24 	\[MMI\]       addl r12=32,r1;;
- [ 	]*[a-f0-9]+:	c0 40 05 00 48 00 	            addl r12=40,r1
- [ 	]*[a-f0-9]+:	00 00 04 00       	            nop.i 0x0;;
---- binutils-2.23/ld/testsuite/ld-ia64/merge4.d
-+++ binutils-2.23/ld/testsuite/ld-ia64/merge4.d
-@@ -4,7 +4,7 @@
- #objdump: -d
- 
- #...
--0+240 <.text>:
-+[a-f0-9]+ <.text>:
- [ 	]*[a-f0-9]+:	0b 60 80 02 00 24 	\[MMI\]       addl r12=32,r1;;
- [ 	]*[a-f0-9]+:	c0 40 05 00 48 00 	            addl r12=40,r1
- [ 	]*[a-f0-9]+:	00 00 04 00       	            nop.i 0x0;;
---- binutils-2.23/ld/testsuite/ld-ia64/merge5.d
-+++ binutils-2.23/ld/testsuite/ld-ia64/merge5.d
-@@ -4,7 +4,7 @@
- #objdump: -d
- 
- #...
--0+270 <.text>:
-+[a-f0-9]+ <.text>:
- [ 	]*[a-f0-9]+:	0b 60 80 02 00 24 	\[MMI\]       addl r12=32,r1;;
- [ 	]*[a-f0-9]+:	c0 40 05 00 48 00 	            addl r12=40,r1
- [ 	]*[a-f0-9]+:	00 00 04 00       	            nop.i 0x0;;
---- binutils-2.23/ld/testsuite/ld-ia64/tlsbin.rd
-+++ binutils-2.23/ld/testsuite/ld-ia64/tlsbin.rd
-@@ -36,13 +36,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
- 
- Program Headers:
-  +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
-- +PHDR +0x0+40 0x40+40 0x40+40 0x0+188 0x0+188 R E 0x8
-- +INTERP +0x0+1c8 0x40+1c8 0x40+1c8 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1
-+ +PHDR +0x0+40 0x40+40 0x40+40 (0x[0-9a-f]+) \1 R E 0x8
-+ +INTERP +0x0+([0-9a-f]+) (0x40+\1) \2 0x[0-9a-f]+ 0x[0-9a-f]+ R +0x1
- .*Requesting program interpreter.*
-  +LOAD +0x0+ 0x40+ 0x40+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ R E 0x10000
-  +LOAD +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+0[0-9a-f]+ 0x0+0[0-9a-f]+ RW +0x10000
-  +DYNAMIC +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+150 0x0+150 RW +0x8
-  +TLS +0x0+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x60+1[0-9a-f]+ 0x0+60 0x0+a0 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
-  +IA_64_UNWIND .* R +0x8
- #...
- 
---- binutils-2.23/ld/testsuite/ld-ia64/tlspic.rd
-+++ binutils-2.23/ld/testsuite/ld-ia64/tlspic.rd
-@@ -40,6 +40,7 @@ Program Headers:
-  +LOAD +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+0[0-9a-f]+ 0x0+0[0-9a-f]+ RW +0x10000
-  +DYNAMIC +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+140 0x0+140 RW +0x8
-  +TLS +0x0+1[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+11[0-9a-f]+ 0x0+60 0x0+80 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
-  +IA_64_UNWIND +0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ 0x0+1[0-9a-f]+ 0x0+18 0x0+18 R +0x8
- #...
- 
---- binutils-2.23/ld/testsuite/ld-mips-elf/multi-got-no-shared.d
-+++ binutils-2.23/ld/testsuite/ld-mips-elf/multi-got-no-shared.d
-@@ -8,9 +8,9 @@
- .*: +file format.*
- 
- Disassembly of section \.text:
--004000b0 <[^>]*> 3c1c0043 	lui	gp,0x43
--004000b4 <[^>]*> 279c9ff0 	addiu	gp,gp,-24592
--004000b8 <[^>]*> afbc0008 	sw	gp,8\(sp\)
-+004000d0 <[^>]*> 3c1c0043 	lui	gp,0x43
-+004000d4 <[^>]*> 279c9ff0 	addiu	gp,gp,-24592
-+004000d8 <[^>]*> afbc0008 	sw	gp,8\(sp\)
- #...
- 00408d60 <[^>]*> 3c1c0043 	lui	gp,0x43
- 00408d64 <[^>]*> 279c2c98 	addiu	gp,gp,11416
---- binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.sd
-+++ binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-3a.sd
-@@ -1,7 +1,7 @@
- 
- Elf file type is DYN \(Shared object file\)
- Entry point .*
--There are 5 program headers, starting at offset .*
-+There are [0-9] program headers, starting at offset .*
- 
- Program Headers:
-  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
-@@ -9,6 +9,7 @@ Program Headers:
-  * LOAD * [^ ]+ * 0x0+00000 * 0x0+00000 [^ ]+ * [^ ]+ * R E * 0x.*
-  * LOAD * [^ ]+ * 0x0+10000 * 0x0+10000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * DYNAMIC * [^ ]+ * 0x0+00400 * 0x0+00400 .*
-+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
-  * NULL * .*
- 
-  *Section to Segment mapping:
-@@ -18,3 +19,4 @@ Program Headers:
-  *0*2 * \.data \.got *
-  *0*3 * \.dynamic *
-  *0*4 *
-+ *0*5 *
---- binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.sd
-+++ binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.sd
-@@ -1,7 +1,7 @@
- 
- Elf file type is EXEC \(Executable file\)
- Entry point 0x44000
--There are 8 program headers, starting at offset .*
-+There are [0-9] program headers, starting at offset .*
- 
- Program Headers:
-  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
-@@ -13,6 +13,7 @@ Program Headers:
-  * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
-+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
-  * NULL * .*
- 
-  *Section to Segment mapping:
-@@ -25,3 +26,4 @@ Program Headers:
-  *0*5 *\.got \.data *
-  *0*6 *\.dynamic *
-  *0*7 *
-+ *0*8 *
---- binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.sd
-+++ binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.sd
-@@ -1,7 +1,7 @@
- 
- Elf file type is EXEC \(Executable file\)
- Entry point 0x44000
--There are 8 program headers, starting at offset .*
-+There are [0-9] program headers, starting at offset .*
- 
- Program Headers:
-  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
-@@ -13,6 +13,7 @@ Program Headers:
-  * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
-+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
-  * NULL * .*
- 
-  *Section to Segment mapping:
-@@ -25,3 +26,4 @@ Program Headers:
-  *0*5 * \.got \.data \.bss *
-  *0*6 * \.dynamic *
-  *0*7 *
-+ *0*8 *
---- binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.sd
-+++ binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.sd
-@@ -1,7 +1,7 @@
- 
- Elf file type is EXEC \(Executable file\)
- Entry point 0x44000
--There are 8 program headers, starting at offset .*
-+There are [0-9] program headers, starting at offset .*
- 
- Program Headers:
-  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
-@@ -13,6 +13,7 @@ Program Headers:
-  * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
-+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
-  * NULL * .*
- 
-  *Section to Segment mapping:
-@@ -25,3 +26,4 @@ Program Headers:
-  *0*5 * \.got \.data \.bss *
-  *0*6 * \.dynamic *
-  *0*7 *
-+ *0*8 *
---- binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.sd
-+++ binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.sd
-@@ -1,7 +1,7 @@
- 
- Elf file type is EXEC \(Executable file\)
- Entry point 0x44000
--There are 8 program headers, starting at offset .*
-+There are [0-9] program headers, starting at offset .*
- 
- Program Headers:
-  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
-@@ -13,6 +13,7 @@ Program Headers:
-  * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
-+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
-  * NULL * .*
- 
-  *Section to Segment mapping:
-@@ -25,3 +26,4 @@ Program Headers:
-  *0*5 * \.got \.data \.bss *
-  *0*6 * \.dynamic *
-  *0*7 *
-+ *0*8 *
---- binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.sd
-+++ binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.sd
-@@ -1,7 +1,7 @@
- 
- Elf file type is EXEC \(Executable file\)
- Entry point 0x44000
--There are 7 program headers, starting at offset .*
-+There are [0-9] program headers, starting at offset .*
- 
- Program Headers:
-  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
-@@ -12,6 +12,7 @@ Program Headers:
-  * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
-+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
-  * NULL * .*
- 
-  *Section to Segment mapping:
-@@ -23,3 +24,4 @@ Program Headers:
-  *0*4 * \.got \.data \.bss *
-  *0*5 * \.dynamic *
-  *0*6 *
-+ *0*7 *
---- binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.sd
-+++ binutils-2.23/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.sd
-@@ -1,7 +1,7 @@
- 
- Elf file type is EXEC \(Executable file\)
- Entry point 0x44000
--There are 8 program headers, starting at offset .*
-+There are [0-9] program headers, starting at offset .*
- 
- Program Headers:
-  * Type * Offset * VirtAddr * PhysAddr * FileSiz * MemSiz * Flg * Align
-@@ -13,6 +13,7 @@ Program Headers:
-  * LOAD * [^ ]+ * 0x0+80000 * 0x0+80000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * LOAD * [^ ]+ * 0x0+a0000 * 0x0+a0000 [^ ]+ * [^ ]+ * RW  * 0x.*
-  * DYNAMIC * [^ ]+ * 0x0+42000 * 0x0+42000 .*
-+ * PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
-  * NULL * .*
- 
-  *Section to Segment mapping:
-@@ -25,3 +26,4 @@ Program Headers:
-  *0*5 * \.got \.data \.bss *
-  *0*6 * \.dynamic *
-  *0*7 *
-+ *0*8 *
---- binutils-2.23/ld/testsuite/ld-mips-elf/tlsbin-o32.d
-+++ binutils-2.23/ld/testsuite/ld-mips-elf/tlsbin-o32.d
-@@ -2,42 +2,42 @@
- 
- Disassembly of section .text:
- 
--004000d0 <__start>:
--  4000d0:	3c1c0fc0 	lui	gp,0xfc0
--  4000d4:	279c7f30 	addiu	gp,gp,32560
--  4000d8:	0399e021 	addu	gp,gp,t9
--  4000dc:	27bdfff0 	addiu	sp,sp,-16
--  4000e0:	afbe0008 	sw	s8,8\(sp\)
--  4000e4:	03a0f021 	move	s8,sp
--  4000e8:	afbc0000 	sw	gp,0\(sp\)
--  4000ec:	8f998018 	lw	t9,-32744\(gp\)
--  4000f0:	27848028 	addiu	a0,gp,-32728
--  4000f4:	0320f809 	jalr	t9
--  4000f8:	00000000 	nop
--  4000fc:	8fdc0000 	lw	gp,0\(s8\)
--  400100:	00000000 	nop
--  400104:	8f998018 	lw	t9,-32744\(gp\)
--  400108:	27848020 	addiu	a0,gp,-32736
--  40010c:	0320f809 	jalr	t9
--  400110:	00000000 	nop
--  400114:	8fdc0000 	lw	gp,0\(s8\)
--  400118:	00401021 	move	v0,v0
--  40011c:	3c030000 	lui	v1,0x0
--  400120:	24638000 	addiu	v1,v1,-32768
--  400124:	00621821 	addu	v1,v1,v0
--  400128:	7c02283b 	rdhwr	v0,\$5
--  40012c:	8f83801c 	lw	v1,-32740\(gp\)
--  400130:	00000000 	nop
--  400134:	00621821 	addu	v1,v1,v0
--  400138:	7c02283b 	rdhwr	v0,\$5
--  40013c:	3c030000 	lui	v1,0x0
--  400140:	24639004 	addiu	v1,v1,-28668
--  400144:	00621821 	addu	v1,v1,v0
--  400148:	03c0e821 	move	sp,s8
--  40014c:	8fbe0008 	lw	s8,8\(sp\)
--  400150:	03e00008 	jr	ra
--  400154:	27bd0010 	addiu	sp,sp,16
-+00400[0-9a-f]{3} <__start>:
-+  400[0-9a-f]{3}:	3c1c0fc0 	lui	gp,0xfc0
-+  400[0-9a-f]{3}:	279c7f30 	addiu	gp,gp,32560
-+  400[0-9a-f]{3}:	0399e021 	addu	gp,gp,t9
-+  400[0-9a-f]{3}:	27bdfff0 	addiu	sp,sp,-16
-+  400[0-9a-f]{3}:	afbe0008 	sw	s8,8\(sp\)
-+  400[0-9a-f]{3}:	03a0f021 	move	s8,sp
-+  400[0-9a-f]{3}:	afbc0000 	sw	gp,0\(sp\)
-+  400[0-9a-f]{3}:	8f998018 	lw	t9,-32744\(gp\)
-+  400[0-9a-f]{3}:	27848028 	addiu	a0,gp,-32728
-+  400[0-9a-f]{3}:	0320f809 	jalr	t9
-+  400[0-9a-f]{3}:	00000000 	nop
-+  400[0-9a-f]{3}:	8fdc0000 	lw	gp,0\(s8\)
-+  400[0-9a-f]{3}:	00000000 	nop
-+  400[0-9a-f]{3}:	8f998018 	lw	t9,-32744\(gp\)
-+  400[0-9a-f]{3}:	27848020 	addiu	a0,gp,-32736
-+  400[0-9a-f]{3}:	0320f809 	jalr	t9
-+  400[0-9a-f]{3}:	00000000 	nop
-+  400[0-9a-f]{3}:	8fdc0000 	lw	gp,0\(s8\)
-+  400[0-9a-f]{3}:	00401021 	move	v0,v0
-+  400[0-9a-f]{3}:	3c030000 	lui	v1,0x0
-+  400[0-9a-f]{3}:	24638000 	addiu	v1,v1,-32768
-+  400[0-9a-f]{3}:	00621821 	addu	v1,v1,v0
-+  400[0-9a-f]{3}:	7c02283b 	rdhwr	v0,\$5
-+  400[0-9a-f]{3}:	8f83801c 	lw	v1,-32740\(gp\)
-+  400[0-9a-f]{3}:	00000000 	nop
-+  400[0-9a-f]{3}:	00621821 	addu	v1,v1,v0
-+  400[0-9a-f]{3}:	7c02283b 	rdhwr	v0,\$5
-+  400[0-9a-f]{3}:	3c030000 	lui	v1,0x0
-+  400[0-9a-f]{3}:	24639004 	addiu	v1,v1,-28668
-+  400[0-9a-f]{3}:	00621821 	addu	v1,v1,v0
-+  400[0-9a-f]{3}:	03c0e821 	move	sp,s8
-+  400[0-9a-f]{3}:	8fbe0008 	lw	s8,8\(sp\)
-+  400[0-9a-f]{3}:	03e00008 	jr	ra
-+  400[0-9a-f]{3}:	27bd0010 	addiu	sp,sp,16
- 
--00400158 <__tls_get_addr>:
--  400158:	03e00008 	jr	ra
--  40015c:	00000000 	nop
-+00400[0-9a-f]{3} <__tls_get_addr>:
-+  400[0-9a-f]{3}:	03e00008 	jr	ra
-+  400[0-9a-f]{3}:	00000000 	nop
---- binutils-2.23/ld/testsuite/ld-powerpc/tls.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tls.d
-@@ -9,45 +9,45 @@
- 
- Disassembly of section \.text:
- 
--0+100000e8 <_start>:
--    100000e8:	3c 6d 00 00 	addis   r3,r13,0
--    100000ec:	60 00 00 00 	nop
--    100000f0:	38 63 90 78 	addi    r3,r3,-28552
--    100000f4:	3c 6d 00 00 	addis   r3,r13,0
--    100000f8:	60 00 00 00 	nop
--    100000fc:	38 63 10 00 	addi    r3,r3,4096
--    10000100:	3c 6d 00 00 	addis   r3,r13,0
--    10000104:	60 00 00 00 	nop
--    10000108:	38 63 90 40 	addi    r3,r3,-28608
--    1000010c:	3c 6d 00 00 	addis   r3,r13,0
--    10000110:	60 00 00 00 	nop
--    10000114:	38 63 10 00 	addi    r3,r3,4096
--    10000118:	39 23 80 48 	addi    r9,r3,-32696
--    1000011c:	3d 23 00 00 	addis   r9,r3,0
--    10000120:	81 49 80 50 	lwz     r10,-32688\(r9\)
--    10000124:	e9 22 80 10 	ld      r9,-32752\(r2\)
--    10000128:	7d 49 18 2a 	ldx     r10,r9,r3
--    1000012c:	3d 2d 00 00 	addis   r9,r13,0
--    10000130:	a1 49 90 60 	lhz     r10,-28576\(r9\)
--    10000134:	89 4d 90 68 	lbz     r10,-28568\(r13\)
--    10000138:	3d 2d 00 00 	addis   r9,r13,0
--    1000013c:	99 49 90 70 	stb     r10,-28560\(r9\)
--    10000140:	3c 6d 00 00 	addis   r3,r13,0
--    10000144:	60 00 00 00 	nop
--    10000148:	38 63 90 00 	addi    r3,r3,-28672
--    1000014c:	3c 6d 00 00 	addis   r3,r13,0
--    10000150:	60 00 00 00 	nop
--    10000154:	38 63 10 00 	addi    r3,r3,4096
--    10000158:	f9 43 80 08 	std     r10,-32760\(r3\)
--    1000015c:	3d 23 00 00 	addis   r9,r3,0
--    10000160:	91 49 80 10 	stw     r10,-32752\(r9\)
--    10000164:	e9 22 80 08 	ld      r9,-32760\(r2\)
--    10000168:	7d 49 19 2a 	stdx    r10,r9,r3
--    1000016c:	3d 2d 00 00 	addis   r9,r13,0
--    10000170:	b1 49 90 60 	sth     r10,-28576\(r9\)
--    10000174:	e9 4d 90 2a 	lwa     r10,-28632\(r13\)
--    10000178:	3d 2d 00 00 	addis   r9,r13,0
--    1000017c:	a9 49 90 30 	lha     r10,-28624\(r9\)
-+0+10000[0-9a-f]{3} <_start>:
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 90 78 	addi    r3,r3,-28552
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 10 00 	addi    r3,r3,4096
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 90 40 	addi    r3,r3,-28608
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 10 00 	addi    r3,r3,4096
-+    10000[0-9a-f]{3}:	39 23 80 48 	addi    r9,r3,-32696
-+    10000[0-9a-f]{3}:	3d 23 00 00 	addis   r9,r3,0
-+    10000[0-9a-f]{3}:	81 49 80 50 	lwz     r10,-32688\(r9\)
-+    10000[0-9a-f]{3}:	e9 22 80 10 	ld      r9,-32752\(r2\)
-+    10000[0-9a-f]{3}:	7d 49 18 2a 	ldx     r10,r9,r3
-+    10000[0-9a-f]{3}:	3d 2d 00 00 	addis   r9,r13,0
-+    10000[0-9a-f]{3}:	a1 49 90 60 	lhz     r10,-28576\(r9\)
-+    10000[0-9a-f]{3}:	89 4d 90 68 	lbz     r10,-28568\(r13\)
-+    10000[0-9a-f]{3}:	3d 2d 00 00 	addis   r9,r13,0
-+    10000[0-9a-f]{3}:	99 49 90 70 	stb     r10,-28560\(r9\)
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 90 00 	addi    r3,r3,-28672
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 10 00 	addi    r3,r3,4096
-+    10000[0-9a-f]{3}:	f9 43 80 08 	std     r10,-32760\(r3\)
-+    10000[0-9a-f]{3}:	3d 23 00 00 	addis   r9,r3,0
-+    10000[0-9a-f]{3}:	91 49 80 10 	stw     r10,-32752\(r9\)
-+    10000[0-9a-f]{3}:	e9 22 80 08 	ld      r9,-32760\(r2\)
-+    10000[0-9a-f]{3}:	7d 49 19 2a 	stdx    r10,r9,r3
-+    10000[0-9a-f]{3}:	3d 2d 00 00 	addis   r9,r13,0
-+    10000[0-9a-f]{3}:	b1 49 90 60 	sth     r10,-28576\(r9\)
-+    10000[0-9a-f]{3}:	e9 4d 90 2a 	lwa     r10,-28632\(r13\)
-+    10000[0-9a-f]{3}:	3d 2d 00 00 	addis   r9,r13,0
-+    10000[0-9a-f]{3}:	a9 49 90 30 	lha     r10,-28624\(r9\)
- 
--0+10000180 <\.__tls_get_addr>:
--    10000180:	4e 80 00 20 	blr
-+0+10000[0-9a-f]{3} <\.__tls_get_addr>:
-+    10000[0-9a-f]{3}:	4e 80 00 20 	blr
---- binutils-2.23/ld/testsuite/ld-powerpc/tls.g
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tls.g
-@@ -8,5 +8,5 @@
- .*: +file format elf64-powerpc
- 
- Contents of section \.got:
-- 100101e0 00000000 100181e0 ffffffff ffff8018  .*
-- 100101f0 ffffffff ffff8058                    .*
-+ 10010([0-9a-f]{3}) 00000000 10018\1 ffffffff ffff8018  .*
-+ 10010[0-9a-f]{3} ffffffff ffff8058                    .*
---- binutils-2.23/ld/testsuite/ld-powerpc/tls32.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tls32.d
-@@ -9,42 +9,42 @@
- 
- Disassembly of section \.text:
- 
--0+1800094 <_start>:
-- 1800094:	3c 62 00 00 	addis   r3,r2,0
-- 1800098:	38 63 90 3c 	addi    r3,r3,-28612
-- 180009c:	3c 62 00 00 	addis   r3,r2,0
-- 18000a0:	38 63 10 00 	addi    r3,r3,4096
-- 18000a4:	3c 62 00 00 	addis   r3,r2,0
-- 18000a8:	38 63 90 20 	addi    r3,r3,-28640
-- 18000ac:	3c 62 00 00 	addis   r3,r2,0
-- 18000b0:	38 63 10 00 	addi    r3,r3,4096
-- 18000b4:	39 23 80 24 	addi    r9,r3,-32732
-- 18000b8:	3d 23 00 00 	addis   r9,r3,0
-- 18000bc:	81 49 80 28 	lwz     r10,-32728\(r9\)
-- 18000c0:	3d 22 00 00 	addis   r9,r2,0
-- 18000c4:	a1 49 90 30 	lhz     r10,-28624\(r9\)
-- 18000c8:	89 42 90 34 	lbz     r10,-28620\(r2\)
-- 18000cc:	3d 22 00 00 	addis   r9,r2,0
-- 18000d0:	99 49 90 38 	stb     r10,-28616\(r9\)
-- 18000d4:	3c 62 00 00 	addis   r3,r2,0
-- 18000d8:	38 63 90 00 	addi    r3,r3,-28672
-- 18000dc:	3c 62 00 00 	addis   r3,r2,0
-- 18000e0:	38 63 10 00 	addi    r3,r3,4096
-- 18000e4:	91 43 80 04 	stw     r10,-32764\(r3\)
-- 18000e8:	3d 23 00 00 	addis   r9,r3,0
-- 18000ec:	91 49 80 08 	stw     r10,-32760\(r9\)
-- 18000f0:	3d 22 00 00 	addis   r9,r2,0
-- 18000f4:	b1 49 90 30 	sth     r10,-28624\(r9\)
-- 18000f8:	a1 42 90 14 	lhz     r10,-28652\(r2\)
-- 18000fc:	3d 22 00 00 	addis   r9,r2,0
-- 1800100:	a9 49 90 18 	lha     r10,-28648\(r9\)
-+0+1800[0-9a-f]{3} <_start>:
-+ 1800[0-9a-f]{3}:	3c 62 00 00 	addis   r3,r2,0
-+ 1800[0-9a-f]{3}:	38 63 90 3c 	addi    r3,r3,-28612
-+ 1800[0-9a-f]{3}:	3c 62 00 00 	addis   r3,r2,0
-+ 1800[0-9a-f]{3}:	38 63 10 00 	addi    r3,r3,4096
-+ 1800[0-9a-f]{3}:	3c 62 00 00 	addis   r3,r2,0
-+ 1800[0-9a-f]{3}:	38 63 90 20 	addi    r3,r3,-28640
-+ 1800[0-9a-f]{3}:	3c 62 00 00 	addis   r3,r2,0
-+ 1800[0-9a-f]{3}:	38 63 10 00 	addi    r3,r3,4096
-+ 1800[0-9a-f]{3}:	39 23 80 24 	addi    r9,r3,-32732
-+ 1800[0-9a-f]{3}:	3d 23 00 00 	addis   r9,r3,0
-+ 1800[0-9a-f]{3}:	81 49 80 28 	lwz     r10,-32728\(r9\)
-+ 1800[0-9a-f]{3}:	3d 22 00 00 	addis   r9,r2,0
-+ 1800[0-9a-f]{3}:	a1 49 90 30 	lhz     r10,-28624\(r9\)
-+ 1800[0-9a-f]{3}:	89 42 90 34 	lbz     r10,-28620\(r2\)
-+ 1800[0-9a-f]{3}:	3d 22 00 00 	addis   r9,r2,0
-+ 1800[0-9a-f]{3}:	99 49 90 38 	stb     r10,-28616\(r9\)
-+ 1800[0-9a-f]{3}:	3c 62 00 00 	addis   r3,r2,0
-+ 1800[0-9a-f]{3}:	38 63 90 00 	addi    r3,r3,-28672
-+ 1800[0-9a-f]{3}:	3c 62 00 00 	addis   r3,r2,0
-+ 1800[0-9a-f]{3}:	38 63 10 00 	addi    r3,r3,4096
-+ 1800[0-9a-f]{3}:	91 43 80 04 	stw     r10,-32764\(r3\)
-+ 1800[0-9a-f]{3}:	3d 23 00 00 	addis   r9,r3,0
-+ 1800[0-9a-f]{3}:	91 49 80 08 	stw     r10,-32760\(r9\)
-+ 1800[0-9a-f]{3}:	3d 22 00 00 	addis   r9,r2,0
-+ 1800[0-9a-f]{3}:	b1 49 90 30 	sth     r10,-28624\(r9\)
-+ 1800[0-9a-f]{3}:	a1 42 90 14 	lhz     r10,-28652\(r2\)
-+ 1800[0-9a-f]{3}:	3d 22 00 00 	addis   r9,r2,0
-+ 1800[0-9a-f]{3}:	a9 49 90 18 	lha     r10,-28648\(r9\)
- 
--0+1800104 <__tls_get_addr>:
-- 1800104:	4e 80 00 20 	blr
-+0+1800[0-9a-f]{3} <__tls_get_addr>:
-+ 1800[0-9a-f]{3}:	4e 80 00 20 	blr
- Disassembly of section \.got:
- 
--0+1810128 <_GLOBAL_OFFSET_TABLE_-0x4>:
-- 1810128:	4e 80 00 21 	blrl
-+0+1810[0-9a-f]{3} <_GLOBAL_OFFSET_TABLE_-0x4>:
-+ 1810[0-9a-f]{3}:	4e 80 00 21 	blrl
- 
--0+181012c <_GLOBAL_OFFSET_TABLE_>:
-+0+1810[0-9a-f]{3} <_GLOBAL_OFFSET_TABLE_>:
- 	\.\.\.
---- binutils-2.23/ld/testsuite/ld-powerpc/tls32.g
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tls32.g
-@@ -8,4 +8,4 @@
- .*: +file format elf32-powerpc
- 
- Contents of section \.got:
-- 1810128 4e800021 00000000 00000000 00000000  .*
-+ 18101[0-9a-f]{2} 4e800021 00000000 00000000 00000000  .*
---- binutils-2.23/ld/testsuite/ld-powerpc/tls32.t
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tls32.t
-@@ -8,5 +8,5 @@
- .*: +file format elf32-powerpc
- 
- Contents of section \.tdata:
-- 1810108 12345678 23456789 3456789a 456789ab  .*
-- 1810118 56789abc 6789abcd 789abcde 00c0ffee  .*
-+ 18101[0-9a-f]{2} 12345678 23456789 3456789a 456789ab  .*
-+ 18101[0-9a-f]{2} 56789abc 6789abcd 789abcde 00c0ffee  .*
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsexe32.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsexe32.d
-@@ -44,4 +44,4 @@ Disassembly of section \.got:
- .*:	4e 80 00 21 	blrl
- 
- .* <_GLOBAL_OFFSET_TABLE_>:
--.*:	01 81 02 b8 00 00 00 00 00 00 00 00  .*
-+.*:	01 81 02 [bd]8 00 00 00 00 00 00 00 00  .*
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsexe32.g
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsexe32.g
-@@ -8,4 +8,4 @@
- 
- Contents of section \.got:
- .* 00000000 00000000 00000000 4e800021  .*
--.* 018102b8 00000000 00000000           .*
-+.* 018102[bd]8 00000000 00000000           .*
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsexe32.r
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsexe32.r
-@@ -33,13 +33,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
- 
- Program Headers:
-  +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
-- +PHDR +0x000034 0x01800034 0x01800034 0x000c0 0x000c0 R E 0x4
-- +INTERP +0x0000f4 0x018000f4 0x018000f4 0x00011 0x00011 R +0x1
-+ +PHDR +0x000034 0x01800034 0x01800034 (0x000[0-9a-f]{2}) \1 R E 0x4
-+ +INTERP +0x000([0-9a-f]{3}) 0x01800\1 0x01800\1 0x00011 0x00011 R +0x1
-  +\[Requesting program interpreter: .*\]
-  +LOAD .* R E 0x10000
-  +LOAD .* RWE 0x10000
-  +DYNAMIC .* RW +0x4
-  +TLS .* 0x0001c 0x00038 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections\.\.\.
-@@ -49,6 +50,7 @@ Program Headers:
-  +03 +\.tdata \.dynamic \.got \.plt 
-  +04 +\.dynamic 
-  +05 +\.tdata \.tbss 
-+ +06 +
- 
- Relocation section '\.rela\.dyn' at offset .* contains 2 entries:
-  Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsmark.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsmark.d
-@@ -9,29 +9,29 @@
- 
- Disassembly of section \.text:
- 
--0+100000e8 <_start>:
--    100000e8:	48 00 00 18 	b       10000100 <_start\+0x18>
--    100000ec:	60 00 00 00 	nop
--    100000f0:	38 63 90 00 	addi    r3,r3,-28672
--    100000f4:	e8 83 00 00 	ld      r4,0\(r3\)
--    100000f8:	3c 6d 00 00 	addis   r3,r13,0
--    100000fc:	48 00 00 0c 	b       10000108 <_start\+0x20>
--    10000100:	3c 6d 00 00 	addis   r3,r13,0
--    10000104:	4b ff ff e8 	b       100000ec <_start\+0x4>
--    10000108:	60 00 00 00 	nop
--    1000010c:	38 63 10 00 	addi    r3,r3,4096
--    10000110:	e8 83 80 00 	ld      r4,-32768\(r3\)
--    10000114:	3c 6d 00 00 	addis   r3,r13,0
--    10000118:	48 00 00 0c 	b       10000124 <_start\+0x3c>
--    1000011c:	3c 6d 00 00 	addis   r3,r13,0
--    10000120:	48 00 00 14 	b       10000134 <_start\+0x4c>
--    10000124:	60 00 00 00 	nop
--    10000128:	38 63 90 04 	addi    r3,r3,-28668
--    1000012c:	e8 a3 00 00 	ld      r5,0\(r3\)
--    10000130:	4b ff ff ec 	b       1000011c <_start\+0x34>
--    10000134:	60 00 00 00 	nop
--    10000138:	38 63 10 00 	addi    r3,r3,4096
--    1000013c:	e8 a3 80 04 	ld      r5,-32764\(r3\)
-+0+10000[0-9a-f]{3} <_start>:
-+    10000[0-9a-f]{3}:	48 00 00 18 	b       10000[0-9a-f]{3} <_start\+0x18>
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 90 00 	addi    r3,r3,-28672
-+    10000[0-9a-f]{3}:	e8 83 00 00 	ld      r4,0\(r3\)
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	48 00 00 0c 	b       10000[0-9a-f]{3} <_start\+0x20>
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	4b ff ff e8 	b       10000[0-9a-f]{3} <_start\+0x4>
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 10 00 	addi    r3,r3,4096
-+    10000[0-9a-f]{3}:	e8 83 80 00 	ld      r4,-32768\(r3\)
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	48 00 00 0c 	b       10000[0-9a-f]{3} <_start\+0x3c>
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	48 00 00 14 	b       10000[0-9a-f]{3} <_start\+0x4c>
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 90 04 	addi    r3,r3,-28668
-+    10000[0-9a-f]{3}:	e8 a3 00 00 	ld      r5,0\(r3\)
-+    10000[0-9a-f]{3}:	4b ff ff ec 	b       10000[0-9a-f]{3} <_start\+0x34>
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 10 00 	addi    r3,r3,4096
-+    10000[0-9a-f]{3}:	e8 a3 80 04 	ld      r5,-32764\(r3\)
- 
--0+10000140 <\.__tls_get_addr>:
--    10000140:	4e 80 00 20 	blr
-+0+10000[0-9a-f]{3} <\.__tls_get_addr>:
-+    10000[0-9a-f]{3}:	4e 80 00 20 	blr
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsmark32.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsmark32.d
-@@ -9,17 +9,17 @@
- 
- Disassembly of section \.text:
- 
--0+1800094 <_start>:
-- 1800094:	48 00 00 14 	b       18000a8 <_start\+0x14>
-- 1800098:	38 63 90 00 	addi    r3,r3,-28672
-- 180009c:	80 83 00 00 	lwz     r4,0\(r3\)
-- 18000a0:	3c 62 00 00 	addis   r3,r2,0
-- 18000a4:	48 00 00 0c 	b       18000b0 <_start\+0x1c>
-- 18000a8:	3c 62 00 00 	addis   r3,r2,0
-- 18000ac:	4b ff ff ec 	b       1800098 <_start\+0x4>
-- 18000b0:	38 63 10 00 	addi    r3,r3,4096
-- 18000b4:	80 83 80 00 	lwz     r4,-32768\(r3\)
-+0+18000[0-9a-f]{2} <_start>:
-+ 18000[0-9a-f]{2}:	48 00 00 14 	b       18000[0-9a-f]{2} <_start\+0x14>
-+ 18000[0-9a-f]{2}:	38 63 90 00 	addi    r3,r3,-28672
-+ 18000[0-9a-f]{2}:	80 83 00 00 	lwz     r4,0\(r3\)
-+ 18000[0-9a-f]{2}:	3c 62 00 00 	addis   r3,r2,0
-+ 18000[0-9a-f]{2}:	48 00 00 0c 	b       18000[0-9a-f]{2} <_start\+0x1c>
-+ 18000[0-9a-f]{2}:	3c 62 00 00 	addis   r3,r2,0
-+ 18000[0-9a-f]{2}:	4b ff ff ec 	b       18000[0-9a-f]{2} <_start\+0x4>
-+ 18000[0-9a-f]{2}:	38 63 10 00 	addi    r3,r3,4096
-+ 18000[0-9a-f]{2}:	80 83 80 00 	lwz     r4,-32768\(r3\)
- 
--0+18000b8 <__tls_get_addr>:
-- 18000b8:	4e 80 00 20 	blr
--#pass
-\ No newline at end of file
-+0+18000[0-9a-f]{2} <__tls_get_addr>:
-+ 18000[0-9a-f]{2}:	4e 80 00 20 	blr
-+#pass
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsopt1.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsopt1.d
-@@ -9,17 +9,17 @@
- 
- Disassembly of section \.text:
- 
--0+100000e8 <\.__tls_get_addr>:
--    100000e8:	4e 80 00 20 	blr
-+0+10000[0-9a-f]{3} <\.__tls_get_addr>:
-+    10000[0-9a-f]{3}:	4e 80 00 20 	blr
- 
- Disassembly of section \.no_opt1:
- 
--0+100000ec <\.no_opt1>:
--    100000ec:	38 62 80 08 	addi    r3,r2,-32760
--    100000f0:	2c 24 00 00 	cmpdi   r4,0
--    100000f4:	41 82 00 10 	beq-    .*
--    100000f8:	4b ff ff f1 	bl      100000e8 <\.__tls_get_addr>
--    100000fc:	60 00 00 00 	nop
--    10000100:	48 00 00 0c 	b       .*
--    10000104:	4b ff ff e5 	bl      100000e8 <\.__tls_get_addr>
--    10000108:	60 00 00 00 	nop
-+0+10000[0-9a-f]{3} <\.no_opt1>:
-+    10000[0-9a-f]{3}:	38 62 80 08 	addi    r3,r2,-32760
-+    10000[0-9a-f]{3}:	2c 24 00 00 	cmpdi   r4,0
-+    10000[0-9a-f]{3}:	41 82 00 10 	beq-    .*
-+    10000[0-9a-f]{3}:	4b ff ff f1 	bl      10000[0-9a-f]{3} <\.__tls_get_addr>
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	48 00 00 0c 	b       .*
-+    10000[0-9a-f]{3}:	4b ff ff e5 	bl      10000[0-9a-f]{3} <\.__tls_get_addr>
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsopt1_32.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsopt1_32.d
-@@ -9,16 +9,16 @@
- 
- Disassembly of section \.text:
- 
--0+1800094 <__tls_get_addr>:
-- 1800094:	4e 80 00 20 	blr
-+0+18000[0-9a-f]{2} <__tls_get_addr>:
-+ 18000[0-9a-f]{2}:	4e 80 00 20 	blr
- 
- Disassembly of section \.no_opt1:
- 
--0+1800098 <\.no_opt1>:
-- 1800098:	38 6d ff f4 	addi    r3,r13,-12
-- 180009c:	2c 04 00 00 	cmpwi   r4,0
-- 18000a0:	41 82 00 0c 	beq-    .*
-- 18000a4:	4b ff ff f1 	bl      1800094 <__tls_get_addr>
-- 18000a8:	48 00 00 08 	b       .*
-- 18000ac:	4b ff ff e9 	bl      1800094 <__tls_get_addr>
-+0+18000[0-9a-f]{2} <\.no_opt1>:
-+ 18000[0-9a-f]{2}:	38 6d ff f4 	addi    r3,r13,-12
-+ 18000[0-9a-f]{2}:	2c 04 00 00 	cmpwi   r4,0
-+ 18000[0-9a-f]{2}:	41 82 00 0c 	beq-    .*
-+ 18000[0-9a-f]{2}:	4b ff ff f1 	bl      18000[0-9a-f]{2} <__tls_get_addr>
-+ 18000[0-9a-f]{2}:	48 00 00 08 	b       .*
-+ 18000[0-9a-f]{2}:	4b ff ff e9 	bl      18000[0-9a-f]{2} <__tls_get_addr>
- #pass
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsopt2.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsopt2.d
-@@ -9,15 +9,15 @@
- 
- Disassembly of section \.text:
- 
--0+100000e8 <\.__tls_get_addr>:
--    100000e8:	4e 80 00 20 	blr
-+0+10000[0-9a-f]{3} <\.__tls_get_addr>:
-+    10000[0-9a-f]{3}:	4e 80 00 20 	blr
- 
- Disassembly of section \.no_opt2:
- 
--0+100000ec <\.no_opt2>:
--    100000ec:	38 62 80 08 	addi    r3,r2,-32760
--    100000f0:	2c 24 00 00 	cmpdi   r4,0
--    100000f4:	41 82 00 08 	beq-    .*
--    100000f8:	38 62 80 08 	addi    r3,r2,-32760
--    100000fc:	4b ff ff ed 	bl      100000e8 <\.__tls_get_addr>
--    10000100:	60 00 00 00 	nop
-+0+10000[0-9a-f]{3} <\.no_opt2>:
-+    10000[0-9a-f]{3}:	38 62 80 08 	addi    r3,r2,-32760
-+    10000[0-9a-f]{3}:	2c 24 00 00 	cmpdi   r4,0
-+    10000[0-9a-f]{3}:	41 82 00 08 	beq-    .*
-+    10000[0-9a-f]{3}:	38 62 80 08 	addi    r3,r2,-32760
-+    10000[0-9a-f]{3}:	4b ff ff ed 	bl      10000[0-9a-f]{3} <\.__tls_get_addr>
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsopt2_32.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsopt2_32.d
-@@ -9,15 +9,15 @@
- 
- Disassembly of section \.text:
- 
--0+1800094 <__tls_get_addr>:
-- 1800094:	4e 80 00 20 	blr
-+0+18000[0-9a-f]{2} <__tls_get_addr>:
-+ 18000[0-9a-f]{2}:	4e 80 00 20 	blr
- 
- Disassembly of section \.no_opt2:
- 
--0+1800098 <\.no_opt2>:
-- 1800098:	38 6d ff f4 	addi    r3,r13,-12
-- 180009c:	2c 04 00 00 	cmpwi   r4,0
-- 18000a0:	41 82 00 08 	beq-    .*
-- 18000a4:	38 6d ff f4 	addi    r3,r13,-12
-- 18000a8:	4b ff ff ed 	bl      1800094 <__tls_get_addr>
-+0+18000[0-9a-f]{2} <\.no_opt2>:
-+ 18000[0-9a-f]{2}:	38 6d ff f4 	addi    r3,r13,-12
-+ 18000[0-9a-f]{2}:	2c 04 00 00 	cmpwi   r4,0
-+ 18000[0-9a-f]{2}:	41 82 00 08 	beq-    .*
-+ 18000[0-9a-f]{2}:	38 6d ff f4 	addi    r3,r13,-12
-+ 18000[0-9a-f]{2}:	4b ff ff ed 	bl      18000[0-9a-f]{2} <__tls_get_addr>
- #pass
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsopt3.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsopt3.d
-@@ -9,18 +9,18 @@
- 
- Disassembly of section \.text:
- 
--00000000100000e8 <\.__tls_get_addr>:
--    100000e8:	4e 80 00 20 	blr
-+0000000010000[0-9a-f]{3} <\.__tls_get_addr>:
-+    10000[0-9a-f]{3}:	4e 80 00 20 	blr
- 
- Disassembly of section \.no_opt3:
- 
--00000000100000ec <\.no_opt3>:
--    100000ec:	38 62 80 08 	addi    r3,r2,-32760
--    100000f0:	48 00 00 0c 	b       .*
--    100000f4:	38 62 80 18 	addi    r3,r2,-32744
--    100000f8:	48 00 00 10 	b       .*
--    100000fc:	4b ff ff ed 	bl      100000e8 <\.__tls_get_addr>
--    10000100:	60 00 00 00 	nop
--    10000104:	48 00 00 0c 	b       .*
--    10000108:	4b ff ff e1 	bl      100000e8 <\.__tls_get_addr>
--    1000010c:	60 00 00 00 	nop
-+0000000010000[0-9a-f]{3} <\.no_opt3>:
-+    10000[0-9a-f]{3}:	38 62 80 08 	addi    r3,r2,-32760
-+    10000[0-9a-f]{3}:	48 00 00 0c 	b       .*
-+    10000[0-9a-f]{3}:	38 62 80 18 	addi    r3,r2,-32744
-+    10000[0-9a-f]{3}:	48 00 00 10 	b       .*
-+    10000[0-9a-f]{3}:	4b ff ff ed 	bl      10000[0-9a-f]{3} <\.__tls_get_addr>
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	48 00 00 0c 	b       .*
-+    10000[0-9a-f]{3}:	4b ff ff e1 	bl      10000[0-9a-f]{3} <\.__tls_get_addr>
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsopt3_32.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsopt3_32.d
-@@ -9,17 +9,17 @@
- 
- Disassembly of section \.text:
- 
--0+1800094 <__tls_get_addr>:
-- 1800094:	4e 80 00 20 	blr
-+0+18000[0-9a-f]{2} <__tls_get_addr>:
-+ 18000[0-9a-f]{2}:	4e 80 00 20 	blr
- 
- Disassembly of section \.no_opt3:
- 
--0+1800098 <\.no_opt3>:
-- 1800098:	38 6d ff ec 	addi    r3,r13,-20
-- 180009c:	48 00 00 0c 	b       .*
-- 18000a0:	38 6d ff f4 	addi    r3,r13,-12
-- 18000a4:	48 00 00 0c 	b       .*
-- 18000a8:	4b ff ff ed 	bl      1800094 <__tls_get_addr>
-- 18000ac:	48 00 00 08 	b       .*
-- 18000b0:	4b ff ff e5 	bl      1800094 <__tls_get_addr>
-+0+18000[0-9a-f]{2} <\.no_opt3>:
-+ 18000[0-9a-f]{2}:	38 6d ff ec 	addi    r3,r13,-20
-+ 18000[0-9a-f]{2}:	48 00 00 0c 	b       .*
-+ 18000[0-9a-f]{2}:	38 6d ff f4 	addi    r3,r13,-12
-+ 18000[0-9a-f]{2}:	48 00 00 0c 	b       .*
-+ 18000[0-9a-f]{2}:	4b ff ff ed 	bl      18000[0-9a-f]{2} <__tls_get_addr>
-+ 18000[0-9a-f]{2}:	48 00 00 08 	b       .*
-+ 18000[0-9a-f]{2}:	4b ff ff e5 	bl      18000[0-9a-f]{2} <__tls_get_addr>
- #pass
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsopt4.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsopt4.d
-@@ -9,40 +9,40 @@
- 
- Disassembly of section \.text:
- 
--0+100000e8 <\.__tls_get_addr>:
--    100000e8:	4e 80 00 20 	blr
-+0+10000[0-9a-f]{3} <\.__tls_get_addr>:
-+    10000[0-9a-f]{3}:	4e 80 00 20 	blr
- 
- Disassembly of section \.opt1:
- 
--0+100000ec <\.opt1>:
--    100000ec:	3c 6d 00 00 	addis   r3,r13,0
--    100000f0:	2c 24 00 00 	cmpdi   r4,0
--    100000f4:	41 82 00 10 	beq-    .*
--    100000f8:	60 00 00 00 	nop
--    100000fc:	38 63 90 10 	addi    r3,r3,-28656
--    10000100:	48 00 00 0c 	b       .*
--    10000104:	60 00 00 00 	nop
--    10000108:	38 63 90 10 	addi    r3,r3,-28656
-+0+10000[0-9a-f]{3} <\.opt1>:
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	2c 24 00 00 	cmpdi   r4,0
-+    10000[0-9a-f]{3}:	41 82 00 10 	beq-    .*
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 90 10 	addi    r3,r3,-28656
-+    10000[0-9a-f]{3}:	48 00 00 0c 	b       .*
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 90 10 	addi    r3,r3,-28656
- 
- Disassembly of section \.opt2:
- 
--0+1000010c <\.opt2>:
--    1000010c:	3c 6d 00 00 	addis   r3,r13,0
--    10000110:	2c 24 00 00 	cmpdi   r4,0
--    10000114:	41 82 00 08 	beq-    .*
--    10000118:	3c 6d 00 00 	addis   r3,r13,0
--    1000011c:	60 00 00 00 	nop
--    10000120:	38 63 90 10 	addi    r3,r3,-28656
-+0+10000[0-9a-f]{3} <\.opt2>:
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	2c 24 00 00 	cmpdi   r4,0
-+    10000[0-9a-f]{3}:	41 82 00 08 	beq-    .*
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 90 10 	addi    r3,r3,-28656
- 
- Disassembly of section \.opt3:
- 
--0+10000124 <\.opt3>:
--    10000124:	3c 6d 00 00 	addis   r3,r13,0
--    10000128:	48 00 00 0c 	b       .*
--    1000012c:	3c 6d 00 00 	addis   r3,r13,0
--    10000130:	48 00 00 10 	b       .*
--    10000134:	60 00 00 00 	nop
--    10000138:	38 63 90 10 	addi    r3,r3,-28656
--    1000013c:	48 00 00 0c 	b       .*
--    10000140:	60 00 00 00 	nop
--    10000144:	38 63 90 08 	addi    r3,r3,-28664
-+0+10000[0-9a-f]{3} <\.opt3>:
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	48 00 00 0c 	b       .*
-+    10000[0-9a-f]{3}:	3c 6d 00 00 	addis   r3,r13,0
-+    10000[0-9a-f]{3}:	48 00 00 10 	b       .*
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 90 10 	addi    r3,r3,-28656
-+    10000[0-9a-f]{3}:	48 00 00 0c 	b       .*
-+    10000[0-9a-f]{3}:	60 00 00 00 	nop
-+    10000[0-9a-f]{3}:	38 63 90 08 	addi    r3,r3,-28664
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsopt4_32.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsopt4_32.d
-@@ -9,36 +9,36 @@
- 
- Disassembly of section \.text:
- 
--0+1800094 <__tls_get_addr>:
-- 1800094:	4e 80 00 20 	blr
-+0+18000[0-9a-f]{2} <__tls_get_addr>:
-+ 18000[0-9a-f]{2}:	4e 80 00 20 	blr
- 
- Disassembly of section \.opt1:
- 
--0+1800098 <\.opt1>:
-- 1800098:	3c 62 00 00 	addis   r3,r2,0
-- 180009c:	2c 04 00 00 	cmpwi   r4,0
-- 18000a0:	41 82 00 0c 	beq-    .*
-- 18000a4:	38 63 90 10 	addi    r3,r3,-28656
-- 18000a8:	48 00 00 08 	b       .*
-- 18000ac:	38 63 90 10 	addi    r3,r3,-28656
-+0+18000[0-9a-f]{2} <\.opt1>:
-+ 18000[0-9a-f]{2}:	3c 62 00 00 	addis   r3,r2,0
-+ 18000[0-9a-f]{2}:	2c 04 00 00 	cmpwi   r4,0
-+ 18000[0-9a-f]{2}:	41 82 00 0c 	beq-    .*
-+ 18000[0-9a-f]{2}:	38 63 90 10 	addi    r3,r3,-28656
-+ 18000[0-9a-f]{2}:	48 00 00 08 	b       .*
-+ 18000[0-9a-f]{2}:	38 63 90 10 	addi    r3,r3,-28656
- 
- Disassembly of section \.opt2:
- 
--0+18000b0 <\.opt2>:
-- 18000b0:	3c 62 00 00 	addis   r3,r2,0
-- 18000b4:	2c 04 00 00 	cmpwi   r4,0
-- 18000b8:	41 82 00 08 	beq-    .*
-- 18000bc:	3c 62 00 00 	addis   r3,r2,0
-- 18000c0:	38 63 90 10 	addi    r3,r3,-28656
-+0+18000[0-9a-f]{2} <\.opt2>:
-+ 18000[0-9a-f]{2}:	3c 62 00 00 	addis   r3,r2,0
-+ 18000[0-9a-f]{2}:	2c 04 00 00 	cmpwi   r4,0
-+ 18000[0-9a-f]{2}:	41 82 00 08 	beq-    .*
-+ 18000[0-9a-f]{2}:	3c 62 00 00 	addis   r3,r2,0
-+ 18000[0-9a-f]{2}:	38 63 90 10 	addi    r3,r3,-28656
- 
- Disassembly of section \.opt3:
- 
--0+18000c4 <\.opt3>:
-- 18000c4:	3c 62 00 00 	addis   r3,r2,0
-- 18000c8:	48 00 00 0c 	b       .*
-- 18000cc:	3c 62 00 00 	addis   r3,r2,0
-- 18000d0:	48 00 00 0c 	b       .*
-- 18000d4:	38 63 90 10 	addi    r3,r3,-28656
-- 18000d8:	48 00 00 08 	b       .*
-- 18000dc:	38 63 90 08 	addi    r3,r3,-28664
-+0+18000[0-9a-f]{2} <\.opt3>:
-+ 18000[0-9a-f]{2}:	3c 62 00 00 	addis   r3,r2,0
-+ 18000[0-9a-f]{2}:	48 00 00 0c 	b       .*
-+ 18000[0-9a-f]{2}:	3c 62 00 00 	addis   r3,r2,0
-+ 18000[0-9a-f]{2}:	48 00 00 0c 	b       .*
-+ 18000[0-9a-f]{2}:	38 63 90 10 	addi    r3,r3,-28656
-+ 18000[0-9a-f]{2}:	48 00 00 08 	b       .*
-+ 18000[0-9a-f]{2}:	38 63 90 08 	addi    r3,r3,-28664
- #pass
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsso32.d
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsso32.d
-@@ -42,5 +42,5 @@ Disassembly of section \.got:
- #...
- .*:	4e 80 00 21 	blrl
- .* <_GLOBAL_OFFSET_TABLE_>:
--.*:	00 01 03 ec .*
-+.*:	00 01 [0-9a-f]{2} [0-9a-f]{2} .*
- #pass
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsso32.g
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsso32.g
-@@ -9,5 +9,5 @@
- Contents of section \.got:
- .* 00000000 00000000 00000000 00000000  .*
- .* 00000000 00000000 00000000 00000000  .*
--.* 00000000 4e800021 000103ec 00000000  .*
-+.* 00000000 4e800021 00010[0-9a-f]{3} 00000000  .*
- .* 00000000                             .*
---- binutils-2.23/ld/testsuite/ld-powerpc/tlsso32.r
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlsso32.r
-@@ -35,6 +35,7 @@ Program Headers:
-  +LOAD .* RWE 0x10000
-  +DYNAMIC .* RW +0x4
-  +TLS .* 0x0+1c 0x0+38 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections\.\.\.
-@@ -42,6 +43,7 @@ Program Headers:
-  +01 +\.tdata \.dynamic \.got \.plt 
-  +02 +\.dynamic 
-  +03 +\.tdata \.tbss 
-+ +04 +
- 
- Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 18 entries:
-  Offset +Info +Type +Sym\. Value +Symbol's Name \+ Addend
-@@ -52,9 +54,9 @@ Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 18 entries:
- [0-9a-f ]+R_PPC_TPREL16 +0+30 +le0 \+ 0
- [0-9a-f ]+R_PPC_TPREL16_HA +0+34 +le1 \+ 0
- [0-9a-f ]+R_PPC_TPREL16_LO +0+34 +le1 \+ 0
--[0-9a-f ]+R_PPC_TPREL16 +0+103d0 +\.tdata \+ 103e4
--[0-9a-f ]+R_PPC_TPREL16_HA +0+103d0 +\.tdata \+ 103e8
--[0-9a-f ]+R_PPC_TPREL16_LO +0+103d0 +\.tdata \+ 103e8
-+[0-9a-f ]+R_PPC_TPREL16 +0+103[df]0 +\.tdata \+ 10[0-9a-f]{3}
-+[0-9a-f ]+R_PPC_TPREL16_HA +0+103[df]0 +\.tdata \+ 10[0-9a-f]{3}
-+[0-9a-f ]+R_PPC_TPREL16_LO +0+103[df]0 +\.tdata \+ 10[0-9a-f]{3}
- [0-9a-f ]+R_PPC_DTPMOD32 +0
- [0-9a-f ]+R_PPC_DTPREL32 +0
- [0-9a-f ]+R_PPC_DTPMOD32 +0
---- binutils-2.23/ld/testsuite/ld-powerpc/tlstoc.g
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlstoc.g
-@@ -8,8 +8,8 @@
- .*: +file format elf64-powerpc
- 
- Contents of section \.got:
-- 100101a0 00000000 00000001 00000000 00000000  .*
-- 100101b0 00000000 00000001 00000000 00000000  .*
-- 100101c0 00000000 00000001 00000000 00000000  .*
-- 100101d0 00000000 00000001 00000000 00000000  .*
-- 100101e0 ffffffff ffff8060 00000000 00000000  .*
-+ 10010[0-9a-f]{3} 00000000 00000001 00000000 00000000  .*
-+ 10010[0-9a-f]{3} 00000000 00000001 00000000 00000000  .*
-+ 10010[0-9a-f]{3} 00000000 00000001 00000000 00000000  .*
-+ 10010[0-9a-f]{3} 00000000 00000001 00000000 00000000  .*
-+ 10010[0-9a-f]{3} ffffffff ffff8060 00000000 00000000  .*
---- binutils-2.23/ld/testsuite/ld-powerpc/tlstoc.t
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlstoc.t
-@@ -8,7 +8,7 @@
- .*: +file format elf64-powerpc
- 
- Contents of section \.tdata:
-- 10010148 00c0ffee 00000000 12345678 9abcdef0  .*
-- 10010158 23456789 abcdef01 3456789a bcdef012  .*
-- 10010168 456789ab cdef0123 56789abc def01234  .*
-- 10010178 6789abcd ef012345 789abcde f0123456  .*
-+ 10010180 00c0ffee 00000000 12345678 9abcdef0  .*
-+ 10010190 23456789 abcdef01 3456789a bcdef012  .*
-+ 100101a0 456789ab cdef0123 56789abc def01234  .*
-+ 100101b0 6789abcd ef012345 789abcde f0123456  .*
---- binutils-2.23/ld/testsuite/ld-powerpc/tlstocso.g
-+++ binutils-2.23/ld/testsuite/ld-powerpc/tlstocso.g
-@@ -7,7 +7,7 @@
- .*: +file format elf64-powerpc
- 
- Contents of section \.got:
--.* 00000000 000186c0 00000000 00000000  .*
-+.* 00000000 000186f8 00000000 00000000  .*
- .* 00000000 00000000 00000000 00000000  .*
- .* 00000000 00000000 00000000 00000000  .*
- .* 00000000 00000000 00000000 00000000  .*
---- binutils-2.23/ld/testsuite/ld-s390/tlsbin.rd
-+++ binutils-2.23/ld/testsuite/ld-s390/tlsbin.rd
-@@ -36,6 +36,7 @@ There are [0-9]+ program headers, starting at offset [0-9]+
-  +LOAD .* RW +0x1000
-  +DYNAMIC .* RW +0x4
-  +TLS .* 0x0+60 0x0+a0 R +0x20
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections...
-@@ -52,6 +53,7 @@ Program Headers:
-  +03 +.tdata .dynamic .got *
-  +04 +.dynamic *
-  +05 +.tdata .tbss *
-+ +06 +
- 
- Relocation section '.rela.dyn' at offset .* contains 4 entries:
-  Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
---- binutils-2.23/ld/testsuite/ld-s390/tlsbin_64.rd
-+++ binutils-2.23/ld/testsuite/ld-s390/tlsbin_64.rd
-@@ -36,6 +36,7 @@ There are [0-9]+ program headers, starting at offset [0-9]+
-  +LOAD .* RW +0x1000
-  +DYNAMIC .* RW +0x8
-  +TLS .* 0x0+60 0x0+a0 R +0x20
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections...
-@@ -52,6 +53,7 @@ Program Headers:
-  +03 +.tdata .dynamic .got *
-  +04 +.dynamic *
-  +05 +.tdata .tbss *
-+ +06 +
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
-  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
---- binutils-2.23/ld/testsuite/ld-s390/tlspic.rd
-+++ binutils-2.23/ld/testsuite/ld-s390/tlspic.rd
-@@ -39,6 +39,7 @@ Program Headers:
-  +LOAD .* RW +0x1000
-  +DYNAMIC .* RW +0x4
-  +TLS .* 0x0+60 0x0+80 R +0x20
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections...
-@@ -46,6 +47,7 @@ Program Headers:
-  +01 +.tdata .dynamic .got 
-  +02 +.dynamic 
-  +03 +.tdata .tbss 
-+ +04 +
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
-  Offset +Info +Type +Sym.Value +Sym. Name \+ Addend
---- binutils-2.23/ld/testsuite/ld-s390/tlspic_64.rd
-+++ binutils-2.23/ld/testsuite/ld-s390/tlspic_64.rd
-@@ -39,6 +39,7 @@ Program Headers:
-  +LOAD .* RW +0x1000
-  +DYNAMIC .* RW +0x8
-  +TLS .* 0x0+60 0x0+80 R +0x20
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections...
-@@ -46,6 +47,7 @@ Program Headers:
-  +01 +.tdata .dynamic .got *
-  +02 +.dynamic *
-  +03 +.tdata .tbss *
-+ +04 +
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
-  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
---- binutils-2.23/ld/testsuite/ld-scripts/empty-aligned.d
-+++ binutils-2.23/ld/testsuite/ld-scripts/empty-aligned.d
-@@ -8,7 +8,9 @@
- Program Headers:
-  +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg +Align
-  +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ [RWE ]+ +0x[0-9a-f]+
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections\.\.\.
-  +00 +.text 
-+ +01 +
---- binutils-2.23/ld/testsuite/ld-sh/tlsbin-2.d
-+++ binutils-2.23/ld/testsuite/ld-sh/tlsbin-2.d
-@@ -44,6 +44,7 @@ Program Headers:
-  +LOAD.*
-  +DYNAMIC.*
-  +TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+18 0x0+28 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections\.\.\.
-@@ -53,6 +54,7 @@ Program Headers:
-  +03 +\.tdata \.dynamic \.got *
-  +04 +\.dynamic *
-  +05 +\.tdata \.tbss *
-+ +06 +
- 
- Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
-  Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend
---- binutils-2.23/ld/testsuite/ld-sh/tlspic-2.d
-+++ binutils-2.23/ld/testsuite/ld-sh/tlspic-2.d
-@@ -32,7 +32,7 @@ Key to Flags:
- 
- Elf file type is DYN \(Shared object file\)
- Entry point 0x[0-9a-f]+
--There are 4 program headers, starting at offset [0-9]+
-+There are [0-9] program headers, starting at offset [0-9]+
- 
- Program Headers:
-  +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
-@@ -40,6 +40,7 @@ Program Headers:
-  +LOAD.*
-  +DYNAMIC.*
-  +TLS .* 0x0+18 0x0+20 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections\.\.\.
-@@ -47,6 +48,7 @@ Program Headers:
-  +01 +\.tdata \.dynamic \.got *
-  +02 +\.dynamic *
-  +03 +\.tdata \.tbss *
-+ +04 +
- 
- Relocation section '\.rela\.dyn' at offset 0x[0-9a-f]+ contains 10 entries:
-  Offset +Info +Type +Sym\.Value +Sym\. Name \+ Addend
---- binutils-2.23/ld/testsuite/ld-sparc/gotop32.rd
-+++ binutils-2.23/ld/testsuite/ld-sparc/gotop32.rd
-@@ -31,6 +31,7 @@ Program Headers:
-  +LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x10000
-  +LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+2000 0x0+2000 RW +0x10000
-  +DYNAMIC +0x0+2000 0x0+12000 0x0+12000 0x0+70 0x0+70 RW +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- #...
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
---- binutils-2.23/ld/testsuite/ld-sparc/gotop64.rd
-+++ binutils-2.23/ld/testsuite/ld-sparc/gotop64.rd
-@@ -31,6 +31,7 @@ Program Headers:
-  +LOAD +0x0+ 0x0+ 0x0+ 0x0+2000 0x0+2000 R E 0x100000
-  +LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+2000 0x0+2000 RW +0x100000
-  +DYNAMIC +0x0+2000 0x0+102000 0x0+102000 0x0+e0 0x0+e0 RW +0x8
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- #...
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
---- binutils-2.23/ld/testsuite/ld-sparc/tlssunbin32.rd
-+++ binutils-2.23/ld/testsuite/ld-sparc/tlssunbin32.rd
-@@ -30,13 +30,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
- 
- Program Headers:
-  +Type +Offset +VirtAddr +PhysAddr +FileSiz MemSiz +Flg Align
-- +PHDR +0x0+34 0x0+10034 0x0+10034 0x0+c0 0x0+c0 R E 0x4
-- +INTERP +0x0+f4 0x0+100f4 0x0+100f4 0x0+11 0x0+11 R +0x1
-+ +PHDR +0x0+34 0x0+10034 0x0+10034 (0x[0-9a-f]+) \1 R E 0x4
-+ +INTERP +(0x[0-9a-f]+ ){3}0x0+11 0x0+11 R +0x1
- .*Requesting program interpreter.*
-  +LOAD .* R E 0x10000
-  +LOAD .* RW +0x10000
-  +DYNAMIC .* RW +0x4
-  +TLS .* 0x0+1060 0x0+10a0 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- #...
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
---- binutils-2.23/ld/testsuite/ld-sparc/tlssunbin64.rd
-+++ binutils-2.23/ld/testsuite/ld-sparc/tlssunbin64.rd
-@@ -30,13 +30,14 @@ There are [0-9]+ program headers, starting at offset [0-9]+
- 
- Program Headers:
-  +Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
-- +PHDR +0x0+40 0x0+100040 0x0+100040 0x0+150 0x0+150 R E 0x8
-- +INTERP +0x0+190 0x0+100190 0x0+100190 0x0+19 0x0+19 R +0x1
-+ +PHDR +0x0+40 0x0+100040 0x0+100040 (0x[0-9a-f]+) \1 R E 0x8
-+ +INTERP +0x0+([0-9a-f]+) (0x0+10+\1) \2 0x0+19 0x0+19 R +0x1
- .*Requesting program interpreter.*
-  +LOAD .* R E 0x100000
-  +LOAD .* RW +0x100000
-  +DYNAMIC .* RW +0x8
-  +TLS .* 0x0+60 0x0+a0 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- #...
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 4 entries:
---- binutils-2.23/ld/testsuite/ld-sparc/tlssunnopic32.rd
-+++ binutils-2.23/ld/testsuite/ld-sparc/tlssunnopic32.rd
-@@ -32,6 +32,7 @@ Program Headers:
-  +LOAD .* RW +0x10000
-  +DYNAMIC .* RW +0x4
-  +TLS .* 0x0+ 0x0+24 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- #...
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 12 entries:
---- binutils-2.23/ld/testsuite/ld-sparc/tlssunnopic64.rd
-+++ binutils-2.23/ld/testsuite/ld-sparc/tlssunnopic64.rd
-@@ -32,6 +32,7 @@ Program Headers:
-  +LOAD .* RW +0x100000
-  +DYNAMIC .* RW +0x8
-  +TLS .* 0x0+ 0x0+24 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- #...
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
---- binutils-2.23/ld/testsuite/ld-sparc/tlssunpic32.rd
-+++ binutils-2.23/ld/testsuite/ld-sparc/tlssunpic32.rd
-@@ -36,6 +36,7 @@ Program Headers:
-  +LOAD +0x0+2000 0x0+12000 0x0+12000 0x0+184 0x0+184 RWE 0x10000
-  +DYNAMIC +0x0+2060 0x0+12060 0x0+12060 0x0+98 0x0+98 RW +0x4
-  +TLS +0x0+2000 0x0+12000 0x0+12000 0x0+60 0x0+80 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- #...
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
---- binutils-2.23/ld/testsuite/ld-sparc/tlssunpic64.rd
-+++ binutils-2.23/ld/testsuite/ld-sparc/tlssunpic64.rd
-@@ -36,6 +36,7 @@ Program Headers:
-  +LOAD +0x0+2000 0x0+102000 0x0+102000 0x0+3a0 0x0+3a0 RWE 0x100000
-  +DYNAMIC +0x0+2060 0x0+102060 0x0+102060 0x0+130 0x0+130 RW +0x8
-  +TLS +0x0+2000 0x0+102000 0x0+102000 0x0+60 0x0+80 R +0x4
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- #...
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
---- binutils-2.23/ld/testsuite/ld-x86-64/tlsgdesc.rd
-+++ binutils-2.23/ld/testsuite/ld-x86-64/tlsgdesc.rd
-@@ -36,12 +36,14 @@ Program Headers:
-  +LOAD.*
-  +LOAD.*
-  +DYNAMIC.*
-+ +PAX_FLAGS.*
- 
-  Section to Segment mapping:
-  +Segment Sections...
-  +00 +.hash .dynsym .dynstr .rela.dyn .rela.plt .plt .text *
-  +01 +.dynamic .got .got.plt *
-  +02 +.dynamic *
-+ +03 +
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 8 entries:
-  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
---- binutils-2.23/ld/testsuite/ld-x86-64/tlspic.rd
-+++ binutils-2.23/ld/testsuite/ld-x86-64/tlspic.rd
-@@ -40,6 +40,7 @@ Program Headers:
-  +LOAD +0x0+11ac 0x0+2011ac 0x0+2011ac 0x0+244 0x0+244 RW +0x200000
-  +DYNAMIC +0x0+1210 0x0+201210 0x0+201210 0x0+130 0x0+130 RW +0x8
-  +TLS +0x0+11ac 0x0+2011ac 0x0+2011ac 0x0+60 0x0+80 R +0x1
-+ +PAX_FLAGS +0x0+ 0x0+ 0x0+ 0x0+ 0x0+ +0x[48]
- 
-  Section to Segment mapping:
-  +Segment Sections...
-@@ -47,6 +48,7 @@ Program Headers:
-  +01 +.tdata .dynamic .got .got.plt *
-  +02 +.dynamic *
-  +03 +.tdata .tbss *
-+ +04 +
- 
- Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 14 entries:
-  +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
diff --git a/pkgs/development/tools/misc/binutils/pt-pax-flags.patch b/pkgs/development/tools/misc/binutils/pt-pax-flags.patch
new file mode 100644
index 000000000000..3c060012ad0e
--- /dev/null
+++ b/pkgs/development/tools/misc/binutils/pt-pax-flags.patch
@@ -0,0 +1,233 @@
+--- binutils-2.15.94.0.2.2.orig/bfd/elf-bfd.h	2005-02-07 20:42:44.000000000 +0100
++++ binutils-2.15.94.0.2.2/bfd/elf-bfd.h	2005-02-20 13:13:17.362558200 +0100
+@@ -1266,6 +1266,9 @@
+   /* Should the PT_GNU_RELRO segment be emitted?  */
+   bfd_boolean relro;
+ 
++  /* Segment flags for the PT_PAX_FLAGS segment.  */
++  unsigned int pax_flags;
++
+   /* Symbol version definitions in external objects.  */
+   Elf_Internal_Verdef *verdef;
+ 
+--- binutils-2.17.50.0.18/bfd/elf.c.orig	2007-08-01 11:12:02.000000000 -0400
++++ binutils-2.17.50.0.18/bfd/elf.c	2007-08-01 14:27:36.086986774 -0400
+@@ -1085,6 +1085,7 @@
+     case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break;
+     case PT_GNU_STACK: pt = "STACK"; break;
+     case PT_GNU_RELRO: pt = "RELRO"; break;
++    case PT_PAX_FLAGS: pt = "PAX_FLAGS"; break;
+     default: pt = NULL; break;
+     }
+   return pt;
+@@ -2346,6 +2347,9 @@
+     case PT_GNU_RELRO:
+       return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "relro");
+ 
++    case PT_PAX_FLAGS:
++      return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "pax_flags");
++
+     default:
+       /* Check for any processor-specific program segment types.  */
+       bed = get_elf_backend_data (abfd);
+@@ -3326,6 +3330,11 @@
+       ++segs;
+     }
+ 
++    {
++      /* We need a PT_PAX_FLAGS segment.  */
++      ++segs;
++    }
++
+   for (s = abfd->sections; s != NULL; s = s->next)
+     {
+       if ((s->flags & SEC_LOAD) != 0
+@@ -3945,6 +3954,20 @@
+ 	  pm = &m->next;
+ 	}
+ 
++      {
++        amt = sizeof (struct elf_segment_map);
++        m = bfd_zalloc (abfd, amt);
++        if (m == NULL)
++  	goto error_return;
++        m->next = NULL;
++        m->p_type = PT_PAX_FLAGS;
++        m->p_flags = elf_tdata (abfd)->pax_flags;
++        m->p_flags_valid = 1;
++  
++        *pm = m;
++        pm = &m->next;
++      }
++
+       free (sections);
+       elf_tdata (abfd)->segment_map = mfirst;
+     }
+@@ -5129,7 +5152,8 @@
+        5. PT_GNU_STACK segments do not include any sections.
+        6. PT_TLS segment includes only SHF_TLS sections.
+        7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments.
+-       8. PT_DYNAMIC should not contain empty sections at the beginning
++       8. PT_PAX_FLAGS segments do not include any sections.
++       9. PT_DYNAMIC should not contain empty sections at the beginning
+ 	  (with the possible exception of .dynamic).  */
+ #define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed)		\
+   ((((segment->p_paddr							\
+@@ -5138,6 +5162,7 @@
+      && (section->flags & SEC_ALLOC) != 0)				\
+     || IS_COREFILE_NOTE (segment, section))				\
+    && segment->p_type != PT_GNU_STACK					\
++   && segment->p_type != PT_PAX_FLAGS					\
+    && (segment->p_type != PT_TLS					\
+        || (section->flags & SEC_THREAD_LOCAL))				\
+    && (segment->p_type == PT_LOAD					\
+--- binutils-2.23.52.0.1/bfd/elflink.c.orig	2013-02-27 21:28:03.000000000 +0100
++++ binutils-2.23.52.0.1/bfd/elflink.c	2013-03-01 17:32:44.922717879 +0100
+@@ -5764,18 +5764,32 @@
+       && ! (*bed->elf_backend_always_size_sections) (output_bfd, info))
+     return FALSE;
+ 
++  elf_tdata (output_bfd)->pax_flags = PF_NORANDEXEC;
++
++  if (info->execheap)
++    elf_tdata (output_bfd)->pax_flags |= PF_NOMPROTECT;
++  else if (info->noexecheap)
++    elf_tdata (output_bfd)->pax_flags |= PF_MPROTECT;
++
+   /* Determine any GNU_STACK segment requirements, after the backend
+      has had a chance to set a default segment size.  */
+   if (info->execstack)
++  {
+     elf_stack_flags (output_bfd) = PF_R | PF_W | PF_X;
++    elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
++  }
+   else if (info->noexecstack)
++  {
+     elf_stack_flags (output_bfd) = PF_R | PF_W;
++    elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
++  }
+   else
+     {
+       bfd *inputobj;
+       asection *notesec = NULL;
+       int exec = 0;
+ 
++      elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
+       for (inputobj = info->input_bfds;
+ 	   inputobj;
+ 	   inputobj = inputobj->link_next)
+@@ -5789,7 +5803,11 @@
+ 	  if (s)
+ 	    {
+ 	      if (s->flags & SEC_CODE)
+-		exec = PF_X;
++		{
++		  elf_tdata (output_bfd)->pax_flags &= ~PF_NOEMUTRAMP;
++		  elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
++		  exec = PF_X;
++		}
+ 	      notesec = s;
+ 	    }
+ 	  else if (bed->default_execstack)
+--- binutils-2.15.94.0.2.2.orig/binutils/readelf.c	2005-02-18 07:14:30.000000000 +0100
++++ binutils-2.15.94.0.2.2/binutils/readelf.c	2005-02-20 13:13:17.470541784 +0100
+@@ -2293,6 +2293,7 @@
+ 			return "GNU_EH_FRAME";
+     case PT_GNU_STACK:	return "GNU_STACK";
+     case PT_GNU_RELRO:  return "GNU_RELRO";
++    case PT_PAX_FLAGS:	return "PAX_FLAGS";
+ 
+     default:
+       if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
+--- binutils-2.15.94.0.2.2.orig/include/bfdlink.h	2004-11-22 21:33:32.000000000 +0100
++++ binutils-2.15.94.0.2.2/include/bfdlink.h	2005-02-20 13:13:17.476540872 +0100
+@@ -313,6 +313,14 @@
+      flags.  */
+   unsigned int noexecstack: 1;
+ 
++  /* TRUE if PT_PAX_FLAGS segment should be created with PF_NOMPROTECT
++     flags.  */
++  unsigned int execheap: 1;
++
++  /* TRUE if PT_PAX_FLAGS segment should be created with PF_MPROTECT
++     flags.  */
++  unsigned int noexecheap: 1;
++
+   /* TRUE if PT_GNU_RELRO segment should be created.  */
+   unsigned int relro: 1;
+ 
+--- binutils-2.15.94.0.2.2.orig/include/elf/common.h	2004-11-22 21:33:32.000000000 +0100
++++ binutils-2.15.94.0.2.2/include/elf/common.h	2005-02-20 13:13:17.482539960 +0100
+@@ -423,6 +423,7 @@
+ #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME      /* Solaris uses the same value */
+ #define PT_GNU_STACK	(PT_LOOS + 0x474e551) /* Stack flags */
+ #define PT_GNU_RELRO	(PT_LOOS + 0x474e552) /* Read-only after relocation */
++#define PT_PAX_FLAGS   (PT_LOOS + 0x5041580) /* PaX flags */
+ 
+ /* Program segment permissions, in program header p_flags field.  */
+ 
+@@ -433,6 +434,19 @@
+ #define PF_MASKOS	0x0FF00000	/* New value, Oct 4, 1999 Draft */
+ #define PF_MASKPROC	0xF0000000	/* Processor-specific reserved bits */
+ 
++#define PF_PAGEEXEC        (1 << 4)    /* Enable  PAGEEXEC */
++#define PF_NOPAGEEXEC  (1 << 5)    /* Disable PAGEEXEC */
++#define PF_SEGMEXEC        (1 << 6)    /* Enable  SEGMEXEC */
++#define PF_NOSEGMEXEC  (1 << 7)    /* Disable SEGMEXEC */
++#define PF_MPROTECT        (1 << 8)    /* Enable  MPROTECT */
++#define PF_NOMPROTECT  (1 << 9)    /* Disable MPROTECT */
++#define PF_RANDEXEC        (1 << 10)   /* Enable  RANDEXEC */
++#define PF_NORANDEXEC  (1 << 11)   /* Disable RANDEXEC */
++#define PF_EMUTRAMP        (1 << 12)   /* Enable  EMUTRAMP */
++#define PF_NOEMUTRAMP  (1 << 13)   /* Disable EMUTRAMP */
++#define PF_RANDMMAP        (1 << 14)   /* Enable  RANDMMAP */
++#define PF_NORANDMMAP  (1 << 15)   /* Disable RANDMMAP */
++
+ /* Values for section header, sh_type field.  */
+ 
+ #define SHT_NULL	0		/* Section header table entry unused */
+--- binutils-2.18.50.0.1/ld/emultempl/elf32.em.orig	2007-09-08 19:34:12.000000000 +0200
++++ binutils-2.18.50.0.1/ld/emultempl/elf32.em	2007-09-15 21:41:35.688212063 +0200
+@@ -2139,6 +2139,16 @@
+ 	  link_info.noexecstack = TRUE;
+ 	  link_info.execstack = FALSE;
+ 	}
++      else if (strcmp (optarg, "execheap") == 0)
++	{
++	  link_info.execheap = TRUE;
++	  link_info.noexecheap = FALSE;
++	}
++      else if (strcmp (optarg, "noexecheap") == 0)
++	{
++	  link_info.noexecheap = TRUE;
++	  link_info.execheap = FALSE;
++	}
+ EOF
+ 
+   if test -n "$COMMONPAGESIZE"; then
+--- binutils-2.15.94.0.2.2.orig/ld/ldgram.y	2004-11-22 21:33:32.000000000 +0100
++++ binutils-2.15.94.0.2.2/ld/ldgram.y	2005-02-20 13:13:17.499537376 +0100
+@@ -1073,6 +1073,8 @@
+ 			    $$ = exp_intop (0x6474e550);
+ 			  else if (strcmp (s, "PT_GNU_STACK") == 0)
+ 			    $$ = exp_intop (0x6474e551);
++			  else if (strcmp (s, "PT_PAX_FLAGS") == 0)
++			    $$ = exp_intop (0x65041580);
+ 			  else
+ 			    {
+ 			      einfo (_("\
+--- binutils-2.26/ld/lexsup.c.orig	2015-11-13 09:27:42.000000000 +0100
++++ binutils-2.26/ld/lexsup.c	2016-01-26 21:08:41.787138458 +0100
+@@ -1793,8 +1793,12 @@
+   fprintf (file, _("\
+   -z muldefs                  Allow multiple definitions\n"));
+   fprintf (file, _("\
++  -z execheap                 Mark executable as requiring executable heap\n"));
++  fprintf (file, _("\
+   -z execstack                Mark executable as requiring executable stack\n"));
+   fprintf (file, _("\
++  -z noexecheap               Mark executable as not requiring executable heap\n"));
++  fprintf (file, _("\
+   -z noexecstack              Mark executable as not requiring executable stack\n"));
+ }
+ 
diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh
index b49846fa050c..97eb855d3594 100644
--- a/pkgs/stdenv/generic/setup.sh
+++ b/pkgs/stdenv/generic/setup.sh
@@ -214,7 +214,6 @@ PATH=
 for i in $initialPath; do
     if [ "$i" = / ]; then i=; fi
     addToSearchPath PATH $i/bin
-    addToSearchPath PATH $i/sbin
 done
 
 if [ "$NIX_DEBUG" = 1 ]; then
@@ -262,6 +261,10 @@ findInputs() {
         source "$pkg"
     fi
 
+    if [ -d $1/bin ]; then
+        addToSearchPath _PATH $1/bin
+    fi
+
     if [ -f "$pkg/nix-support/setup-hook" ]; then
         source "$pkg/nix-support/setup-hook"
     fi
@@ -289,10 +292,6 @@ done
 _addToNativeEnv() {
     local pkg=$1
 
-    if [ -d $1/bin ]; then
-        addToSearchPath _PATH $1/bin
-    fi
-
     # Run the package-specific hooks set by the setup-hook scripts.
     runHook envHook "$pkg"
 }
@@ -304,13 +303,6 @@ done
 _addToCrossEnv() {
     local pkg=$1
 
-    # Some programs put important build scripts (freetype-config and similar)
-    # into their crossDrv bin path. Intentionally these should go after
-    # the nativePkgs in PATH.
-    if [ -d $1/bin ]; then
-        addToSearchPath _PATH $1/bin
-    fi
-
     # Run the package-specific hooks set by the setup-hook scripts.
     runHook crossEnvHook "$pkg"
 }
diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix
index 59a8636ceace..e4abe724210c 100644
--- a/pkgs/stdenv/linux/default.nix
+++ b/pkgs/stdenv/linux/default.nix
@@ -187,7 +187,7 @@ rec {
     name = "bootstrap-gcc-wrapper";
 
     overrides = pkgs: {
-      inherit (stage1.pkgs) perl binutils paxctl;
+      inherit (stage1.pkgs) perl binutils paxctl gnum4 bison;
       # This also contains the full, dynamically linked, final Glibc.
     };
   };
@@ -204,7 +204,7 @@ rec {
     name = "bootstrap-gcc-wrapper";
 
     overrides = pkgs: rec {
-      inherit (stage2.pkgs) binutils glibc perl patchelf linuxHeaders;
+      inherit (stage2.pkgs) binutils glibc perl patchelf linuxHeaders gnum4 bison;
       # Link GCC statically against GMP etc.  This makes sense because
       # these builds of the libraries are only used by GCC, so it
       # reduces the size of the stdenv closure.
@@ -238,7 +238,7 @@ rec {
       # because gcc (since JAR support) already depends on zlib, and
       # then if we already have a zlib we want to use that for the
       # other purposes (binutils and top-level pkgs) too.
-      inherit (stage3.pkgs) gettext gnum4 gmp perl glibc zlib linuxHeaders;
+      inherit (stage3.pkgs) gettext gnum4 bison gmp perl glibc zlib linuxHeaders;
 
       gcc = lib.makeOverridable (import ../../build-support/cc-wrapper) {
         nativeTools = false;